Utilizarea rețelei și poate stivă CANopen

Odată ce am confruntat cu sarcina de a dezvolta un sistem integrat în care datele pot fi transferate între noduri c fiabilitate maximă. Apoi, când am aflat în primul CAN.

În acest articol, aș dori să vă spun pe scurt ne spui despre ce poate și despre experiențele lor cu el. Poate că oamenii care sunt implicați în dezvoltarea sistemelor integrate, după ce a citit articolul meu, să fie interesat de acest standard, în cazul în care nu este luat în câmpul lor vizual. Mai ales pentru că controlorii CAN sunt în prezent prezente în multe microcontrolere.

CAN (Controller Area Network) - un standard creat de compania Bosch pentru rețele utilizate în automatizare și industrie. Standardul este utilizat pe scară largă în producție industrială, tehnologie, „casa inteligentă“, precum și în industria de automobile. Foarte potrivit pentru lipirea o varietate de senzori și dispozitive de control într-o singură rețea.
De obicei, CAN-rețea este o rețea de „autobuz“, în care toate nodurile pot transmite și primi date.
Are o viteză mică, dar o fiabilitate ridicată.

În continuare, vreau să descrie suprafața standard și a vorbi despre modul de utilizare a rețelei în practică.

Standardul descrie stratul de link-ul și cerințele de bază pentru stratul fizic.
Principalul lucru în nivelul fizic - această cerință este capacitatea de a trimite biți ca „dominantă“ și „recesiv“. Semnalul dominant este considerat a fi o unitate, iar recesive - zero. Cerința principală - în semnalul dominantă și recesivă de transmitere în același timp, toate nodurile trebuie să ajungă la un semnal de poziție dominantă. Se bazează pe acest principiu al mecanismului de arbitraj. Din aceasta rezultă că transmisia poate utiliza diferite medii, dar, în practică, de multe ori folosesc pereche diferențial.

transmisie de rețea are loc cadre. În standard există două tipuri de cadru: de bază și avansate.
Cadrul de bază include identificator de 11 biți, și avansat - 29 biți. Cadrul include, de asemenea, cererea de transfer de biți, informații cu privire la lungimea datelor transmise și datele propriu-zise. Ei pot lua de la 0 la 8 octeți din cadru. Doar cadru conține unele informații de proprietate, dar pentru programatori nu este esențial, așa cum este pus în aplicare în hardware-ul pentru a adăuga la controlerul de rețea.
Inițial, ID-uri nu sunt legate de orice nod și se caracterizează printr-un mesaj, mai degrabă decât expeditorul și destinatarul. ID-urile indică, de asemenea, prioritatea mesajului. Prioritatea este determinată de biți dominante în identificatorul. Deci, o prioritate mai mare decât 10000000000 01000000000.

Principalul avantaj al CAN este fiabilitatea. Acesta folosește un mecanism de soluționare a conflictelor (în contrast cu mecanismul de detectare a coliziunilor în Ethernet), permițându-vă pentru a salva lățime de bandă din cauza coliziunilor.
Esența ei constă în faptul că fiecare nod ascultă rețea și, dacă este liber, poate începe transmite. În același timp, el continuă să asculte la rețea. Dacă trimiteți un pic recesivă este primit dominant, apoi simultan cu această unitate a început să transmită un alt nod cu o prioritate mai mare. În acest caz, transmisia este oprită.

In afara de aceasta eroare sunt folosite mecanisme de detectare, cum ar fi controlul transmisiei, completând biții, utilizarea sumei de control și de verificare a valorilor câmpurilor. Dezvoltatorii estimează probabilitatea de a nu detecta o eroare de transmisie ca 4.7 × 10-11.

Acest standard nu acoperă protocoalele de strat superior, astfel încât acesta a fost creat câteva implementări, atât comerciale, cât și deschise.
Cel mai renumit dintre ele:
- CANopen
- DeviceNet
- CAN Britanie

Acest lucru și chiar mai multe informații despre standardul ușor de găsit pe Internet, așa că în cele din urmă am ajuns jos la caietul de sarcini CANopen.

Așa cum am scris, într-o zi mi-a luat pentru a crea o rețea de încredere de microcontrolere. După examinarea opțiunilor, sa decis să se oprească pe rețeaua CAN. Deoarece protocolul de nivel superior CANopen a fost ales și punerea sa în aplicare - CANopenNode, pentru că este o portare deschisă și ușor de mine dispozitiv de dreapta. CANopenNode sub licența LGPL.

Repere ale protocolului CANopen:
- protocol funcționează cu identificatori standard. Rețeaua poate conține până la 127 de noduri.
- fiecare nod este dat un număr unic în rețea.
- protocolul nu necesită prezența unui vrăjitor de rețea (cu toate acestea, există posibilități care sunt disponibile pentru un singur nod din rețea, care poate fi numit un maestru)
- OD (Dicționar Object) - dicționar de obiect. Acesta conține o listă sortată de variabile, accesul la care pot fi accesate printr-o rețea prin intermediul SDO.
- (obiecte de date Service) SDO - mecanismul de acces la dicționarul obiect. SDO-numit serverul trebuie să fie pornit pentru rețeaua obiectelor nod de acces pe acel nod. Rețeaua poate avea doar un singur SDO client-conditionat numit maestru, care poate primi date de la oricare dintre serverele.
- (Process Data Objects) DOP - facilități pentru comunicarea rapidă între noduri. Poate conține până la 8 octeți de date și sunt transmise într-un singur cadru. identitatea (într-o anumită recepție bandă) este alocată pentru fiecare DOP. DOP sunt împărțite în intrare (RPDO) și de ieșire (TPDO). Inițial, se presupune că fiecare nod va avea la TPDO 4 și 4 RPDO, dar pot fi realocate între noduri în măsura în care un nod va fi capabil de a transmite și primi până la 512 DOP. Cu toate acestea, în acest caz, pe ceilalți identificatori noduri nu sunt suficiente.
DOP pot fi trimise la timer-ul, la apariția unor evenimente sau prin cerere directă la trimiterea programului de control.
- NMT (Network Management) - un manager de rețea. Mesajele de acest tip se pot traduce site-uri din diferite state (inițializarea, afaceri, predrabochee, oprit), precum și cu controlul lor ajutorul rețelei - mecanismul bătăilor inimii.
- Heartbeat - tradus ca ritmul cardiac. Mecanismul este că fiecare nod din rețeaua transmite un mesaj specific, unic pentru fiecare nod (ID obținut prin adăugarea numărului de nod în rețea la un anumit număr). Orice nod care vrea să știe dacă el este încă disponibil pentru anumite noduri id-ul este pur și simplu pentru a primi și procesa aceste mesaje. Mesaje publicate de neinteresante pentru el noduri pot fi ignorate.
- Mesajul de urgență - protocolul prevede trimiterea unui mesaj de urgență.
- (Foi de date electronice) - EDS fișiere text special, puteți personaliza dicționarul obiect. Există programe pentru a ajuta la generarea de astfel de fișiere.

CANopenNode

CANopenNode - implementarea open source a protocolului CANopen, scris în C pură pentru utilizare în microcontrolere.

Ca o concluzie

În final, am ajuns la concluzia că acest protocol nu este destul de bine se potrivește la problema mea și că am nevoie pentru a scrie punerea în aplicare a mea. Cu toate acestea, pentru timpul petrecut în timp ce se ocupă cu acest protocol, eu sunt mult mai bine să înțeleagă cum să lucreze cu rețea poate. Dacă aveți nevoie pentru a obține rapid o aplicație de lucru care utilizează toate avantajele de livrare de încredere, dacă doriți ca aplicația să fie compatibilă cu multe sisteme existente, în cazul în care aveți nevoie pentru a găti depanare CAN-rețea, CANopen - aceasta este o alegere foarte buna.

Link-uri la unele dintre resursele asociate cu CAN