Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Pomoc oko dizajna
#1
Pozdrav svima,
Zamolio bih vas za pomoc oko jednog projekta.

Rec je o elektronici koja treba da kontrolise masinu za graviranje.
Sa jedne strane je povezana na PC preko USB porta a sa druge sa masinom preko 5 GPIO-a (dva koracna kotora step/dir + signal za graviranje)

Pic je 24fj64gb002 i na plocici ima 128kb SPI ram

Masina radi tako sto gravira liniju po liniju.
Ideja mi je da logicki napravim strukturu koja ima ovakav oblik
  • XY koordinata pocetka linije
  • Smer
  • Brzina
  • Broj tacaka
  • Niz sa podacima za grviranje (max 8KB)

Kada masina zavrsi liniju trazi od PC-a podatke za sledecu.

Niza sa podacima za graviranje bih smestio u spi ram.

Onaj deo koji me zanima je kako organizovati komunikaciju I proveru iste, tj kako da znam gde pocinje niz za podatke itd..

Usb modul na PIC-u ima CRC check tako da o tome bar ne treba voditi racuna.

Sta je pametno za ovaj drugi deo problema ? Bit stuffing ili nesto drugo … .?

Hvala
Reply
#2
Ukoliko su svi podaci u strukturi fiksne dužine (osim niza za graviranje) onda nemaš nikakav problem sa početkom niza. Sve ovo ispred ti je heder poznate dužine. Ja bih posle ovoga:
  • XY koordinata pocetka linije
  • Smer
  • Brzina
  • Broj tacaka
    Dodao još jedno polje koje bi predstavljalo ukupan broj bajtova niza podataka za graviranje (korisni deo informacije). Na kraju ide tvoj CRC nad celim paketom podataka. Kad PIC sračuna da je taj CRC dobar šalje odgovor da je sve OK i da može da ide nova linija.
Reply
#3
Da li je u pitanju CNC za graviranje slika na granitu ?
Reply
#4
(12-09-2017, 08:35 AM)Želja Wrote: Da li je u pitanju CNC za graviranje slika na granitu ?

Jeste
Reply
#5
(12-09-2017, 08:29 AM)gorankg Wrote: Ukoliko su svi podaci u strukturi fiksne dužine (osim niza za graviranje) onda nemaš nikakav problem sa početkom niza. Sve ovo ispred ti je heder poznate dužine. Ja bih posle ovoga:
  • XY koordinata pocetka linije
  • Smer
  • Brzina
  • Broj tacaka
    Dodao još jedno polje koje bi predstavljalo ukupan broj bajtova niza podataka za graviranje (korisni deo informacije). Na kraju ide tvoj CRC nad celim paketom podataka. Kad PIC sračuna da je taj CRC dobar šalje odgovor da je sve OK i da može da ide nova linija.

Hvala na pomoci,
ono sta me jos muci je to sto ce pored te naredbe za graviranje linije biti i komande tipa vrati se na pocetak, pauza, nastavi, podesi brzinu itd.
Reply
#6
Milane,

tebi treba custom protokol izmedju racunara i uredjaja. Goran ti je lepo rekao kako to da uradis. Na osnovu tog primera mozes da implementiras bilo koju komandu. Npr.:
> Komanda BrojBajtovaKojiSeSalje Bajtovi CRC <
Svaka poruka ti pocinje sa >, a zavrsava se sa manje. To ti definise header. Unutar header-a imas naziv komande (prvi bajt), ukupan broj bajtova koji se salje (i ocekuje na prijemnoj strani), korisni bajtovi i CRC na kraju. Mozes da pogledas i MODBUS, pa na uzoru na njega da napravis svoj protokol.

Evo ti primera:
1. > P 0x00 CRC < - Pauza. Poruka pocinje sa P, broj korisnih bajtova koji se salje je 0 (moze da bude i podatak, tj. trajanje pause u ms ili s) i CRC. Poruka se zavrsava sa <.

2. > S 0x02 0x00 0xFF CRC < - Posesi brzinu. S-speed. Salju se dva korisna koji predstavljaju brzinu u um/s ili nekim drugim jedinicama i CRC na kraju.

3......

Svaka poruka mora da ima i odgovor. Npr. Ako si ispravno primio i parsirao neku poruku, onda vratis >OK;P< - ovo je primer za OK ispravno primljene poruke za pauzu. >OK;S< ispravno primljena poruka za podesavanje brzine itd. Ili, >ERR;P< pogresno primljena ili parsirana poruka za pauzu.
Pored ovoga moras da imas i time-out komunikacije. Sva poruka mora da ti stigne za odredjeno vreme inace terminises poruku i cekas novu. Sve poruke smestas u kruzni bafer i parsiras.
To je ukratko. Ukoliko treba jos nesto pojasniti, javi.
Reply
#7
Imam dovoljno za pocetak,
javicu ako nesto zapne.

Hvala puno
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)