Čeprav ima sam protokol CAN močno zmožnost odkrivanja in odpravljanja napak, na mestu industrijskega nadzora vtična povezava ni trdna, prenosni medij je poškodovan ali gonilnik vodila itd. uničijo zanesljivo komunikacijo CAN. V aplikacijskem sistemu, ki zahteva visoko zanesljivost, bodo te napake, če ne bodo samodejno zaznane in sprejeti ustrezni ukrepi za odpravo, povzročile, da bo sistem delno ali celo popolnoma izgubil zmožnost komuniciranja. Učinkovit način za rešitev te težave je uporaba redundantnega nadzora komunikacije. To zagotavlja, da glavne funkcije komunikacijskega sistema delujejo normalno, s čimer se izboljša zanesljivost sistema.
1 Komponente sistemske strojne opreme
MB90F543 je 16-bitni mikrokrmilnik z dvema krmilnikoma CAN podjetja Fujitsu. Sistem uporablja dva sklopa vodil (CAN0, CAN1), od katerih vsak vsebuje neodvisne kable vodila, gonilnike vodil in krmilnike vodil, ki lahko realizirajo popolno redundanco fizičnega medija, fizične plasti, plasti podatkovne povezave in aplikacijske plasti. Dva niza vodil delujeta v vročem rezervnem načinu: en krmilnik CAN služi kot privzeti CAN po vklopu sistema (ki ga lahko imenujemo glavni CAN); drugi služi kot rezervni CAN sistema (ki se imenuje podrejeni CAN) in služi kot redundanca za glavni CAN. Ko sistem deluje normalno, se vključi glavno vodilo CAN (CAN0). Ko glavno vodilo CAN odpove, začne delovati podrejeno vodilo CAN (CAN1). Če vklop-zazna napako v glavnem vodilu CAN, se samodejno vključi podrejeno vodilo CAN. Na ta način, ko ena skupina vodil odpove, bo druga skupina vodil samodejno nadaljevala z delom, da zagotovi normalno delovanje komunikacijske funkcije celotnega sistema, kar močno izboljša zanesljivost sistema in uresniči celovito zasnovo redundance vodila CAN. Poleg tega je glede na potrebe programske opreme mogoče nastaviti tudi na redundantni ali ne-redundantni način. Za neredundančni način se uporablja samo glavno vodilo CAN.
Blokovni diagram sistemske arhitekture
RT je usklajevalni upor za zaključek vodila, ki se uporablja za zatiranje motenj oddajanja signala, RT=100Ω ali 120Ω. Omrežje kot komunikacijski medij uporablja oklopljen kabel z dvojno parico.
Krmilnik CAN združuje funkcije fizičnega sloja in sloja podatkovne povezave protokola CAN in lahko dokonča proces okvirjanja podatkovne komunikacije, vključno z bitnim polnjenjem, kodiranjem podatkovnega bloka, kontrolno vsoto CRC in prednostnim razlikovanjem.
Krmilnik CAN ima naslednje glavne lastnosti:
◇ Ustreza protokoloma CAN2.0A in CAN2.0B.
◇ Podpira pošiljanje in prejemanje podatkovnih okvirjev in oddaljenih okvirjev.
◇ 16 medpomnilnikov za pošiljanje/prejemanje sporočil, ki podpirajo 11-bitne ali 29-bitne identifikatorje in več-nivojsko strukturo medpomnilnika sporočil; ◇ Podpira polno-bitno primerjavo, polnobitno primerjavo in polnobitno primerjavo.
◇ Podpira tri metode izbire identifikacije sprejemljivosti: polno-bitno primerjavo, polno-bitno maskiranje in sprejemanje bitnega maskiranja; ◇ Dva sprejemna identifikacijska registra.
◇ Dva sprejemna identifikacijska registra podpirata standardni okvir ali razširjen format okvirja.
◇ Hitrost prenosa je mogoče programirati od 10Kbps do 1Mbps.
Gonilnik vodila sprejme PCA82C250 kot vmesnik med krmilnikom CAN in fizičnim vodilom za izboljšanje zmožnosti diferencialnega prenosa in sprejema vodila.

2 Oblikovanje sistemske programske opreme
2.1 Realizacija dvojne redundantne krmilne funkcije CAN
V sistemu dvojne redundance CAN je zasnova programske opreme v primerjavi s strukturo strojne opreme relativno bolj zapletena. Splošni komunikacijski program vodila CAN mora vsebovati tri osnovne dele: inicializacijski program CAN, program prenosa CAN in program sprejema CAN. V tej zasnovi redundantne sistemske programske opreme se zgornji trije deli uporabljajo kot trije najosnovnejši moduli za klicanje drugih programskih modulov sistema.
MB90F543 lahko obravnava 256 vrst virov prekinitev in obstajajo štiri prekinitve strojne opreme, povezane s krmilnikom CAN: CAN0 RX (CAN0 prejme popolno prekinitev), CAN0 TX /NS (CAN0 pošlje popolno/prekinitev spremembe stanja vozlišča), CAN1 RX (CAN1 prejme popolno prekinitev), CAN1 TX /NS (CAN1 pošlje popolno/prekinitev spremembe stanja vozlišča). CAN1 TX /NS (CAN1 prenos dokončan/prekinitev spremembe stanja vozlišča). V tej zasnovi programske opreme se uporablja pošiljanje poizvedb in prejemanje prekinitev. Podprogram za prekinitev spremembe stanja vozlišča se uporablja za obdelavo spremembe stanja vozlišča. To je zato, ker protokol CAN2.0 določa, da je vozlišče v enem od naslednjih treh stanj: napaka-aktivirano stanje, napaka-prezrto stanje in izključeno-stanje vodila. V seriji MB90500 obstaja tudi dodatno opozorilno stanje, ki označuje, da je vrednost števca oddajnih/sprejemnih napak presegla 96, sprememba stanja vozlišča pa bo povzročila ustrezno prekinitev.
Ker sistem deluje z dvojno redundančno vročo pripravljenostjo CAN, morata biti oba krmilnika CAN v stanju vroče pripravljenosti. Oba CAN krmilnika vseh vozlišč v sistemu sta inicializirana, da sta kadar koli pripravljena na sprejem sporočil, vendar pošilja sporočila en in samo en CAN krmilnik. Z drugimi besedami, v določenem trenutku je aktiven en in samo eden od CAN kanalov, medtem ko drugi posluša (v normalnem delovanju) ali v stanju napake (v primeru okvare).
Ključ do kompleksnosti zasnove programske opreme dvojnega redundantnega krmilnega sistema CAN v primerjavi z enojnim krmilnim sistemom CAN je v zaznavanju napak sistema CAN in samodejnem preklopu sistema CAN. Zaradi uporabe dveh sklopov popolnoma neodvisnih prenosnih medijev, gonilnikov vodila in krmilnikov vodila, tako da jih je mogoče zaznati neodvisno od lastnih napak na kanalu, kot so kratki-vez CANH in CANL, prekinitev povezave CANH ali CANL, kratki{2}}vezje CANH in ozemljitev, kratki-vezje CANL in napajanje, poškodba gonilnika vodila itd. Pri dejanskem odpravljanju napak je ugotovljeno, da če sta CANH, CANL prekinjena ali je na vodilu samo en oddajnik, bo to povzročilo povečanje števca napak pri oddaji/sprejemu na 128, kar postavi vozlišče v stanje prezrte napake; in kratek-vez med CANH in CANL, kratek-vez med CANH in zemljo ali kratek-vez med CANL in napajalnikom bo povzročil, da se števec napak pri oddaji/sprejemu poveča na 256, kar postavi vozlišče v stanje Odklopljeno vodilo. Zato lahko s klicem redundantnega modula CAN v podprogramu prekinitve za spremembo stanja vozlišča dosežemo zgornji namen samodejnega zaznavanja napak in samodejnega preklopa sistema CAN. Podprogram za prekinitev spremembe stanja vozlišča CAN0 je naslednji:
__interrupt void NodeStateTransmitInt0 (void)
{
if (CSR0_NT) /* sprememba stanja vozlišča */
{
CSR0_NT=0; /*Ponastavitev zastavice za prekinitev */
if ( (CSR0_NS==2 ) (CSR0_NS==3 ) ) /* povzročena prekinitev ali kratek stik */
{
NoWaitFlg=1; /* medsebojno izključujoča se zastavica */
Bus0Error( ); /* Bus0Error( ) ustavi CAN0 in zažene redundantni podprogram CAN1 */ { NoWaitFlg=1; /* zastavica mutex */
}
}
ICR00 =3; /* spremeni prednost prekinitve v prednost prekinitve Timer0 */ }
ICR03 =2; /* Spremeni prioriteto prekinitve za prednostno prekinitev časovnika 0 */ }
}
Poleg tega bo v komunikacijskem procesu vodila CAN, ko je prenos podatkov določenega informacijskega medpomnilnika končan, ustrezen bit v registru zaključka prenosa nastavljen na 1. V procesu poizvedovanja prenosa lahko s presojo tega registra veste, ali je prenos končan ali ne. Če pa pošiljanje ni uspešno, bo sistem ves čas čakal in povzročilo sesutje sistema. Zato mora programska oprema tukaj nastaviti čakalno dobo, po kateri bo sistem redundance CAN poklican, da zaustavi glavni kanal CAN in omogoči podrejeni kanal CAN.
Zasnova programske opreme mora biti pozorna tudi na problem, kako obnoviti prvotno komunikacijsko nalogo po zaključku rezervnega preklapljanja CAN. Rešitev je pripraviti seznam zastavic nalog, preklapljanje CAN v stanju pripravljenosti, prebrati tabelo, da dobite prvotno nalogo sistema, da dosežete prvotno komunikacijsko nalogo zanesljivega preklapljanja.
2.2 Realizacija funkcije upravljanja vodila
V programski zasnovi tega sistema je poleg-programa podatkovne komunikacije v realnem času za prenos in sprejem podatkov vključen tudi program za upravljanje komunikacije za upravljanje vsakega vozlišča. Vsa vozlišča so razdeljena na glavna in podrejena vozlišča. Razlika med njima je v tem, da ima glavno vozlišče funkcijo upravljanja vodila, ki mu omogoča izvajanje statistike spletnih vozlišč, prepoznavanje vozlišč brez povezave in sprejemanje ukrepov za njihovo obravnavo; medtem ko podrejeno vozlišče nima te funkcije. Obstaja samo eno glavno vozlišče, medtem ko je dovoljenih več podrejenih vozlišč. Funkcijski program za upravljanje vodila za glavno vozlišče se občasno kliče, da ugotovi, ali so vsa vozlišča povezana: če so vsa vozlišča povezana, se vodilo šteje za normalno; v nasprotnem primeru identificirajte vozlišča brez povezave in jih ustrezno obravnavajte. Ideja zasnove je, da glavno vozlišče sistema pošlje oddaljeni okvir vsem podrejenim vozliščem na vodilu v rednih intervalih in vsako podrejeno vozlišče ga prejme, vnese svojo številko vozlišča v podatkovni okvir in ga pošlje glavnemu vozlišču, glavno vozlišče pa glede na številko vozlišča, ki ga prejme, določi, ali je prišlo do napake vozlišča brez povezave. V tem sistemu se številka vozlišča (naslov modula) nastavi z DIP stikalom na modulu.
V procesu razhroščevanja programske opreme, čeprav je struktura strojne opreme vsakega vozlišča enaka, se zaradi razlik v ožičenju vezja in razpršenosti komponent pogosto zgodi, da vsa podrejena vozlišča ne morejo prejeti informacij, ki jih pošlje glavno vozlišče, ali pa glavno vozlišče ne prejme vseh informacij, ki jih pošljejo podrejena vozlišča, kar pomeni, da pride do težave z izgubo okvirja. Ta problem je bil rešen s programsko zakasnitvijo in optimizacijo sprejema prekinitvenega programa.
3 Razvojno okolje in aplikacija morata biti pozorni na več vprašanj
Delovna miza programske opreme Softune V3 je integrirano razvojno okolje programske opreme za razvoj mikrokrmilniških programov serije Fujitsu FFMC-8L, FFMC-16L/LX in FR, vključno z upravljanjem razvoja, razhroščevanjem emulatorja, mehko simulacijo in integriranim razvojnim okoljem. Njegov komplet razvojnih orodij vključuje Softune Workbench, C prevajalnik, Assembler, Linker, C Checker, C Analyzer. Softune V3 podpira tako C kot zbirne jezike.
Med dejansko uporabo MB90F543 je treba upoštevati naslednje težave.
① Nastavitev izbirnega registra sprejemne oznake (AMSR). Vsak vmesni pomnilnik sporočil lahko izbere eno metodo označevanja sprejemljivosti: popolna bitna primerjava, polna bitna maska ali sprejem bitne maske. Polno-bitna primerjava pomeni, da mora biti ID informacij, ki jih prejme vozlišče, popolnoma enak ID-ju, ki ga nastavi medpomnilnik informacij, da lahko informacije preidejo identifikator sprejema; pri polnem-bitnem maskiranju ni treba primerjati ID-ja informacije, kar je mogoče interpretirati kot brezpogojno posredovanje identifikatorja sprejemljivosti; bit-masking acceptance lahko določi ID bite za primerjavo in ID bite za maskiranje, tj. delno primerjavo sprejemljivosti. V praksi se najpogosteje uporablja ta metoda identifikatorja sprejemljivosti, zato sta v krmilniku CAN čipa MB90F543 nastavljena dva takšna načina. nastavitev AMSR omogoča razvijalcu veliko prilagodljivost pri obdelavi informacij medpomnilnika.
② Nastavitev sprejemnega označevalnega registra (AMR). Ko je AMSR nastavljen na bit-maskirano metodo sprejemanja, mora biti AMR nastavljen tako, da nastavi, kateri biti ID-ja naj se primerjajo in kateri biti maskirani. AMR ima skupaj štiri bajte in podpira 29-bitne znake ID-ja. Vendar je vredno omeniti, da se za 29-bitni ID znak uporablja AM28~AM0; medtem ko se za 11-bitni ID znak uporablja AM28~AM18. zato mora biti uporabnik pri nastavitvi AMR previden, sicer bo prišlo do napake pri sprejemu. Avtor je tukaj trpel.
③ Ena od značilnosti Fujitsujevega krmilnika CAN je, da podpira uporabo več-nivojskih medpomnilnikov sporočil. V primeru, da se sprejem pojavlja pogosto ali je prejetih več različnih informacijskih okvirov ID, je možno, da CPE nima dovolj časa za obdelavo prejetih informacij, zato se lahko več medpomnilnikov informacij oblikuje v več-nivojski medpomnilnik informacij, da se zagotovi pravočasna in učinkovita obdelava informacij. Na ta način se lahko informacije, večje od 8 bajtov, pošljejo v 1 okviru. Druga prednost te ureditve je, da lahko CPE bere informacije določenega medpomnilnika informacij, ne da bi mu bilo treba skrbeti, da bi se informacije medpomnilnika takoj prepisale in izgubile.
4 Zaključek
V procesu razvoja protokola aplikacijskega sloja CAN so si izposojeni nekateri mehanizmi specifikacije DeviceNet, kot je podpora več oblik prenosa podatkov (selektivni prehod, anketiranje, sprememba stanja itd.); vendar je treba zaradi omejitev številnih dejavnikov, kot je razvojni cikel, izboljšati in razširiti diagnostično funkcijo naprave ter interoperabilnost s podobnimi izdelki. Dvojni redundantni komunikacijski sistem CAN deluje stabilno v poskusni fazi, prenos podatkov je zanesljiv, preklapljanje redundance je izvedljivo in zanesljivost upravljanja vodila je dobra; lahko se uporablja za krmilni sistem lokomotive ali druga industrijska krmilna mesta, ki zahtevajo visoko zanesljivost.




