Deși protocolul CAN în sine are o capacitate puternică de detectare și corectare a erorilor, în locația de control industrial, conexiunea nu este solidă, mediul de transmisie este deteriorat sau driverul de magistrală este deteriorat etc. va distruge comunicarea fiabilă a CAN. În sistemul de aplicații care necesită o fiabilitate ridicată, aceste defecțiuni, dacă nu sunt detectate automat și iau măsuri adecvate pentru a le depăși, vor face ca sistemul să piardă parțial sau chiar complet capacitatea de a comunica. O modalitate eficientă de a rezolva această problemă este utilizarea controlului redundant al comunicațiilor. Acest lucru asigură că principalele funcții ale sistemului de comunicații funcționează normal, îmbunătățind astfel fiabilitatea sistemului.
1 Componente hardware ale sistemului
MB90F543 este un microcontroler pe 16-biți cu două controlere CAN de la Fujitsu. Sistemul folosește două seturi de magistrale (CAN0, CAN1), fiecare dintre ele conține cabluri de magistrală independente, drivere de magistrală și controlere de magistrală, care pot realiza redundanța completă a mediilor fizice, a stratului fizic, a stratului de legătură de date și a stratului de aplicație. Cele două seturi de magistrale funcționează într-un mod de rezervă la cald: un controler CAN servește ca CAN implicit după ce sistemul este pornit (care poate fi numit CAN principal); celălalt servește ca CAN standby al sistemului (care se numește CAN slave) și servește ca redundanță pentru CAN-ul master. Când sistemul funcționează normal, magistrala CAN master (CAN0) este pusă în funcțiune. Când magistrala CAN master eșuează, magistrala CAN slave (CAN1) intră în funcțiune. Dacă-pornirea detectează o defecțiune în magistrala CAN master, magistrala CAN slave este pusă automat în funcțiune. În acest fel, atunci când un set de autobuze eșuează, celălalt set de autobuze va continua să funcționeze automat pentru a asigura funcționarea normală a funcției de comunicație a întregului sistem, ceea ce îmbunătățește foarte mult fiabilitatea sistemului și realizează designul cuprinzător de redundanță al magistralei CAN. În plus, în funcție de nevoile software-ului, poate fi setat și să ia modul redundant sau non-redundant. Pentru modul neredundant, este utilizată numai magistrala CAN principală.
Diagrama bloc arhitectura sistemului
RT este rezistența de potrivire a terminației magistralei, utilizată pentru a suprima interferența emisiei de semnal, RT=100Ω sau 120Ω. Rețeaua folosește ca mijloc de comunicare un cablu ecranat cu perechi răsucite.
Controlerul CAN integrează stratul fizic și funcțiile stratului de legătură de date ale protocolului CAN și poate finaliza procesul de încadrare al comunicației de date, inclusiv umplutura de biți, codificarea blocurilor de date, suma de control CRC și discriminarea priorităților.
Controlerul CAN are următoarele caracteristici principale:
◇ Conform protocoalelor CAN2.0A și CAN2.0B.
◇ Suportă trimiterea și primirea de cadre de date și cadre de la distanță.
◇ 16 buffer-uri de mesaje de trimitere/primire, care acceptă identificatori de 11-biți sau 29-biți și structură de buffer de mesaje cu mai multe-nivele; ◇ Acceptă compararea-biților completi, compararea biților întregi și compararea biților întregi.
◇ Acceptă trei metode de selecție a identificării acceptării: comparație completă-biți, mascare completă-biți și acceptare mascare biți; ◇ Două registre de identificare a acceptării.
◇ Două registre de identificare de acceptare acceptă formatul cadru standard sau cadru extins.
◇ Rata baud este programabilă de la 10Kbps la 1Mbps.
Driverul de magistrală adoptă PCA82C250 ca interfață între controlerul CAN și magistrala fizică pentru a îmbunătăți capacitatea de transmisie și recepție diferențială a magistralei.

2 Proiectare software de sistem
2.1 Realizarea funcției de control dual CAN redundant
În sistemul de redundanță dublu CAN, în comparație cu structura hardware, proiectarea software-ului este relativ mai complexă. Programul general de comunicare CAN bus trebuie să includă trei părți de bază: programul de inițializare CAN, programul de transmisie CAN și programul de recepție CAN. În acest proiect de software de sistem redundant, cele trei părți de mai sus sunt utilizate ca trei module de bază pentru apelarea altor module software ale sistemului.
MB90F543 poate gestiona 256 de tipuri de surse de întrerupere și există patru întreruperi hardware legate de controlerul CAN: CAN0 RX (CAN0 primire întrerupere completă), CAN0 TX /NS (CAN0 trimite întrerupere completă/modificare stare nod), CAN1 RX (CAN1 primire întrerupere completă), CAN1 TX /NS (CAN1 trimite întrerupere completă/modificare stare nod). CAN1 TX /NS (CAN1 transmitere completă/întreruperea schimbării stării nodului). În acest proiect software, sunt utilizate trimiterea interogării și primirea întreruperi. Subrutina de întrerupere a schimbării stării nodului este utilizată pentru procesarea schimbării stării nodului. Acest lucru se datorează faptului că protocolul CAN2.0 specifică faptul că nodul se află în una dintre următoarele trei stări: eroare-stare activată, eroare-stare ignorată și stare-deconectată de magistrală. În seria MB90500, există și o stare de avertizare suplimentară, care indică faptul că valoarea contorului de erori de transmisie/recepție a depășit 96, iar o modificare a stării nodului va provoca o întrerupere corespunzătoare.
Deoarece sistemul funcționează cu dublă redundanță CAN hot standby, ambele controlere CAN trebuie să fie în starea hot standby. Ambele controlere CAN ale tuturor nodurilor din sistem sunt inițializate pentru a fi gata să primească mesaje în orice moment, dar unul și un singur controler CAN trimite mesaje. Cu alte cuvinte, la un moment dat, unul și numai unul dintre canalele CAN este activ, în timp ce celălalt ascultă (în funcționare normală) sau în stare de defecțiune (în cazul unei defecțiuni).
Cheia complexității proiectării software a unui sistem de control dublu CAN redundant în comparație cu un singur sistem de control CAN constă în detectarea defecțiunilor sistemului CAN și comutarea automată a sistemului CAN. Datorită utilizării a două seturi de medii de transmisie complet independente, drivere de magistrală și controlere de magistrală, astfel încât acestea să poată fi detectate independent de propriile defecțiuni ale canalului, cum ar fi scurt-CANH și CANL, deconectarea CANH sau CANL, CANH și scurtcircuit-la masă, CANL și scurtcircuit de alimentare, deteriorarea driverului de magistrală și așa mai departe. În depanarea propriu-zisă, se constată că dacă CANH, CANL este deconectat sau există un singur transmițător pe magistrală, va determina creșterea contorului de erori de transmisie/recepție la 128, ceea ce pune nodul în starea de eroare ignorată; iar un scurt-circuit între CANH și CANL, un scurt-circuit între CANH și masă sau un scurt-circuit între CANL și sursa de alimentare va face ca contorul de erori de transmisie/recepție să crească la 256, ceea ce pune nodul în starea magistrală Deconectat. Prin urmare, apelând modulul de redundanță CAN în subprogramul de întrerupere a schimbării stării nodului, putem atinge scopul de mai sus de detectare automată a defecțiunilor și comutare automată a sistemului CAN. Subrutina de întrerupere a schimbării stării nodului CAN0 este după cum urmează:
__interrupt void NodeStateTransmitInt0 (void)
{
if (CSR0_NT) /* schimbarea stării nodului */
{
CSR0_NT=0; /*Resetarea steagului de întrerupere */
if ( (CSR0_NS==2 ) (CSR0_NS==3 ) ) ) /* întrerupere sau scurtcircuit cauzat */
{
NoWaitFlg=1; /* un steag care se exclude reciproc */
Bus0Error(); /* Bus0Error( ) oprește CAN0 și pornește subrutina redundantă CAN1 */ { NoWaitFlg=1; /* un steag mutex */
}
}
ICR00 =3; /* schimbă prioritatea întreruperii în Timer0 prioritatea întreruperii */ }
ICR03 =2; /* Schimbați prioritatea întreruperii pentru a prioritiza întreruperea temporizatorului 0 */ }
}
În plus, în procesul de comunicare cu magistrala CAN, când transmisia de date a unui anumit buffer de informații este finalizată, bitul corespunzător din registrul de finalizare a transmisiei va fi setat la 1. În procesul de interogare a transmisiei, judecând acest registru, puteți ști dacă transmisia este finalizată sau nu. Cu toate acestea, dacă trimiterea nu reușește, sistemul va face să aștepte tot timpul și va cauza blocarea sistemului. Prin urmare, software-ul trebuie să seteze aici o perioadă de așteptare, dincolo de care sistemul de redundanță CAN va fi apelat pentru a opri canalul CAN master și a activa canalul CAN slave.
Designul software-ului ar trebui să acorde atenție, de asemenea, problemei modului de restabilire a sarcinii de comunicare inițială după finalizarea comutării CAN de rezervă. Soluția este să pregătiți o listă de steaguri de sarcini, comutare CAN standby, citiți tabelul pentru a obține sarcina originală a sistemului, pentru a realiza sarcina de comunicare originală de comutare fiabilă.
2.2 Realizarea functiei de management al busului
În proiectarea software a acestui sistem, pe lângă programul de-comunicare de date în timp real pentru transmiterea și recepția datelor, include și programul de management al comunicațiilor pentru gestionarea fiecărui nod. Toate nodurile sunt împărțite în noduri master și noduri slave. Diferența dintre ele este că nodul master are o funcție de gestionare a magistralei, care îi permite să efectueze statistici online ale nodurilor, să recunoască nodurile offline și să ia măsuri pentru a le trata; în timp ce nodul slave nu are această funcție. Există un singur nod master, în timp ce mai multe noduri slave sunt permise. Programul de funcție de gestionare a magistralei pentru nodul master apelat din când în când, pentru a determina dacă toate nodurile sunt online: dacă toate nodurile sunt online, magistrala este considerată normală; în caz contrar, identificați nodurile offline și tratați-le în consecință. Ideea de proiectare este că nodul master al sistemului trimite un cadru la distanță către toate nodurile slave de pe magistrală la intervale regulate și fiecare nod slave îl primește, își pune propriul număr de nod într-un cadru de date și îl trimite la nodul master, iar nodul master determină dacă există o defecțiune a nodului offline în funcție de numărul nodului pe care îl primește. În acest sistem, numărul nodului (adresa modulului) este setat de un comutator DIP de pe modul.
În procesul de depanare software, deși structura hardware a fiecărui nod este aceeași, din cauza diferenței de cablare a plăcii de circuite și de dispersia componentelor, este adesea cazul ca nu toate nodurile slave pot primi informațiile trimise de nodul master sau nodul master nu primește toate informațiile trimise de nodurile slave, adică există o problemă de pierdere a cadrelor. Această problemă a fost rezolvată prin întârzierea software-ului și optimizarea programului de întrerupere a recepției.
3 Mediul de dezvoltare și aplicația ar trebui să acorde atenție mai multor probleme
Softune V3 software workbench este un mediu de dezvoltare software integrat pentru dezvoltarea programelor de microcontrolere din seria Fujitsu FFMC-8L, FFMC-16L/LX și FR, inclusiv managementul dezvoltării, depanarea emulatorului, simularea soft și un mediu de dezvoltare integrat. Setul său de instrumente de dezvoltare include Softune Workbench, compilator C, Assembler, Linker, C Checker, C Analyzer. Softune V3 acceptă atât limbajele C, cât și limbajele de asamblare.
În timpul utilizării efective a MB90F543, trebuie remarcate următoarele probleme.
① Setarea Registrului de selecție a mărcii de acceptare (AMSR). Fiecare buffer de mesaje poate selecta o metodă de marcare a acceptării: comparație de biți complet, mască de biți completă sau acceptare de mască de biți. Compararea completă-biților înseamnă că ID-ul informațiilor primite de nod trebuie să fie exact același cu ID-ul setat de tamponul de informații pentru ca informațiile să treacă identificatorul de acceptare; mascarea completă-biților nu trebuie să compare ID-ul informațiilor, care poate fi interpretat ca transmiterea necondiționată a identificatorului de acceptare; Biți-acceptarea de mascare poate specifica biții ID care trebuie comparați și biții ID care trebuie mascați, adică, comparând parțial acceptarea. În practică, această metodă de identificare de acceptare este folosită cel mai des, astfel încât două astfel de metode sunt setate în controlerul CAN al chipului MB90F543. setarea AMSR oferă dezvoltatorului o mare flexibilitate pentru a procesa informațiile tampon.
② Setarea Registrului de marcare a acceptării (AMR). După ce AMSR este setat la metoda de acceptare a biților-mascat, AMR trebuie setat pentru a seta ce biți ai ID-ului trebuie să fie comparați și ce biți trebuie să fie mascați. AMR are un total de patru octeți și acceptă caractere ID pe 29 de biți. Cu toate acestea, este de remarcat faptul că pentru caracterul ID pe 29 de biți este utilizat AM28~AM0; în timp ce pentru caracterul ID pe 11 biți se utilizează AM28~AM18. prin urmare, utilizatorul trebuie să fie atent când setează AMR, altfel va avea ca rezultat o eroare de recepție. Autorul a suferit aici.
③ Una dintre caracteristicile controlerului CAN Fujitsu este că acceptă utilizarea bufferelor de mesaje pe mai multe-nivele. În cazul în care recepția are loc frecvent sau în care sunt recepționate mai multe cadre de informații ID diferite, este posibil ca CPU să nu aibă suficient timp pentru a procesa informațiile primite, astfel încât mai multe buffere de informații pot fi formate într-un buffer de informații pe mai multe-niveluri pentru a se asigura că informațiile pot fi procesate în timp util și eficient. În acest fel, informațiile mai mari de 8 octeți pot fi trimise într-un cadru. Un alt avantaj al acestui aranjament este că CPU poate citi informațiile unui anumit buffer de informații fără a fi nevoit să vă faceți griji că informațiile din buffer sunt rescrise și pierdute imediat.
4 Concluzie
În procesul de dezvoltare a protocolului de nivel de aplicație CAN, sunt împrumutate unele mecanisme ale specificației DeviceNet, cum ar fi suportarea mai multor forme de transmisie a datelor (pasare selectivă, sondaj, schimbare de stare etc.); cu toate acestea, din cauza limitărilor multor factori, cum ar fi ciclul de dezvoltare, funcția de diagnosticare a dispozitivului, precum și interoperabilitatea cu produse similare trebuie îmbunătățite și extinse. Sistemul de comunicație redundant dublu CAN funcționează stabil în etapa experimentală, transmisia datelor este fiabilă, comutarea redundanței este practicabilă și fiabilitatea gestionării magistralei este bună; poate fi aplicat sistemului de control al locomotivei sau altor site-uri de control industrial care necesită o fiabilitate ridicată.




