Pāriet pie satura

CAN magistralės diagnostika ir nuoseklusis dekodavimas: klausimai ir atsakymai

1 klausimas:
„Kokia yra CAN įtampos slenkstinė vertė? Kitaip tariant, ties kokia įtampa CAN mazgas nusprendžia, kad signalas yra aukštas ar žemas?“ 

Kai dekoduojame CAN fizinį lygmenį (naudodami matematinį kanalą CAN Hi – CAN Lo), įtampos slenkstį (kirtimo tašką) nustatome ties 1 V, nes tai yra vidurys tarp 0 ir 2 V. Daugiau apie tai galite paskaityti tolesnėje „Scope School Bonus Class“ medžiagoje.

Su CAN mazgais viskas nėra taip paprasta, nes aiškiai apibrėžtos vertės nėra. 

Idealiame pasaulyje tikimės magistralėje pamatyti stačiakampę signalo formą – be triukšmo, be nuolydžio ir be vėlinimo – kurioje CAN mazgas galėtų nustatyti kiekvieno bito kylantį ir krintantį frontą.

Tikrovė

Imkime pavyzdžiu 0–2 V diapazoną: CAN mazgas kaip slenkstinę įtampą arba kirtimo tašką pasirinktų vidurio tašką (1 V), kad nustatytų magistralės būsenos pasikeitimą iš recesyvinės į dominuojančią.

Tačiau kadangi gyvename ne idealiame pasaulyje, CAN mazgai naudoja tam tikrą prisitaikymo prie aplinkos formą – į CAN valdiklio veikimą įdiegta nemažai leistinų nuokrypių.

Pagalvokite apie tipinės automobilio CAN magistralės aplinką: ją veikia triukšmas, kontaktų problemos, laidyno klojimo apribojimai, laidų ilgiai ir kintančios aplinkos darbo sąlygos. (Man čia iškart ateina į galvą žemės ūkio technika.) Ar kada nors galėtume pasiekti tobulą stačiakampį signalą 0–2 V ribose su kirtimo tašku tiksliai viduryje ties 1 V?

Todėl CAN mazgai prisitaiko ir ieško centrinio vidurio taško toje stačiakampėje formoje, kurią gauna CAN gnybtuose. CAN mazgas apskaičiuoja vidurio tašką ir aplink šį apskaičiuotą tašką leidžia maždaug 10 % histerezės (paprastai tai triukšmas), kad būtų atsižvelgta į įtampos poslinkį arba svyravimus priimant CAN kadrą.

Puikų histerezės ir jos poveikio kirtimo taškams paaiškinimą rasite „PicoScope 6“ vartotojo vadovo 157 puslapyje. Nors tas paaiškinimas taikomas paleidimo sąlygos (trigger) nustatymui PicoScope programoje, CAN valdiklis atlieka panašų veiksmą aplink apskaičiuotą mūsų perjungiamos magistralės įtampos vidurio tašką – perėjimą tarp recesyvinio ir dominuojančio įtampos lygių.

Ir vėl tai yra vienas iš tikrųjų gedimams atsparaus (fault-tolerant) CAN privalumų – gebėjimas (protingose ribose) prisitaikyti prie atšiaurios aplinkos, kurioje jis veikia. Pažiūrėkite, kaip ši žinutė dekoduojasi visiškai puikiai net ir esant svyruojančiam CAN kadro kirtimo taškui.

Kirtimo taško dreifas

Aukščiau pateiktą įrašą ir susijusią informaciją rasite tolesnėje forumo temoje.

Kaip apskritai galėtume garantuoti tobulą, be triukšmo, stačiakampį signalą su fiksuotu kirtimo tašku, kurį CAN valdiklis galėtų dekoduoti?

Manau, kad atsakymas – niekaip, tačiau „Bosch“ apie tai jau pagalvojo.

2 klausimas:

 „Jei Pico dekoduoja CAN žinutę, kaip galime būti tikri, kad automobilio valdikliai ją taip pat dekoduoja? Arba kitaip: ar gali būti, kad mazgams priimtini įtampos diapazonai skiriasi nuo tų, kurie nustatyti Pico programinėje įrangoje?“

Puikus klausimas, nes niekada negalime daryti prielaidos, kad visi CAN valdikliai dekodavo teisingai vien todėl, kad PicoScope dekodavo sėkmingai. 

PicoScope dekoduoja CAN duomenis pagal slenkstines įtampas, pasirinktas nustatant dekodavimą (o jos gali būti ne visoje CAN magistralėje). 

Darome prielaidą, kad visi CAN valdikliai savo gnybtuose gauna vienodus įtampos lygius iš CAN magistralės, tačiau iš tikrųjų taip nėra. Gedimas gali būti CAN atšakos laide, einančiame į vieną CAN valdiklį / mazgą, dėl to tas mazgas negalės dekoduoti, o likusieji mazgai dekoduos sėkmingai (įskaitant PicoScope). 

Kalbant apie mazgams priimtinus įtampos diapazonus, aukščiau aprašytas dalykas padės suprasti, kaip kiekvienas CAN mazgas susidoroja su kintančiomis slenkstinėmis įtampomis savo CAN magistralės gnybtuose.

Tokiu atveju, kai vienas CAN mazgas nesugebėjo dekoduoti dėl itin didelių CAN magistralės įtampos svyravimų, galimi keli scenarijai.

  1. Tiesioginiai duomenys praneša apie ryšio praradimą su CAN mazgu, kuris negali dekoduoti CAN magistralės duomenų.
  2. Keli CAN mazgai praneša apie ryšio praradimą su vienu konkrečiu CAN mazgu (rodo pirštu į jį).
  3. Nuosekliųjų duomenų funkcija „Data bus Check“, išvardijanti „Nodes on line“ (mazgus linijoje), parodo vieną trūkstamą mazgą.
  4. PicoScope rodomi dekoduoti duomenys gali atskleisti kelis recesyvinius bitus RTR, ACK laukuose arba CRC klaidas. 
  5. Naudojant specializuotą CAN dekoderį / registratorių taip pat matytųsi 4 punkte minimos laukų klaidos, tačiau dekoduotos silicio (silicone) lygmenyje, o ne fiziniame lygmenyje, kaip daro PicoScope.


Turime prisiminti, kad PicoScope nėra specializuotas CAN dekoderis / registratorius, o osciloskopas su ribotomis dekodavimo / registravimo funkcijomis. CAN duomenų dekodavimas pagal įtampos lygius, užfiksuotus viename matavimo taške CAN magistralėje (fiziniame lygmenyje), yra potencialiai ydingas, nes įtampos lygiai gali būti nevienodi visoje CAN magistralėje.

Dekodavimas silicio lygmenyje (naudojant specializuotą CAN registratorių) leidžia užfiksuoti būtent tai, ką mato kiekvienas mazgas, nes kiekvienas mazgas parodo savo interpretaciją duomenų, gautų iš įtampų, esančių jo CAN gnybtuose. Taip apeiname fizinio lygmens matavimą ir gauname grįžtamąjį ryšį iš kiekvieno magistralėje esančio mazgo CAN valdiklio.

Vis dėlto, jei silicio lygmuo (per jūsų CAN registratorių) rodytų klaidas, fizinį lygmenį reikėtų patikrinti su PicoScope – arba prie vieno klaidingo mazgo (jei dekodavimo klaidas rodo vienas mazgas), arba visoje magistralėje, jei apie dekodavimo klaidas praneša keli mazgai.

3 klausimas:

CAN testavimas su aktyviuoju terminavimu (Active Termination).

Tai buvo funkcija, apie kurią nežinojau, kol per tiesioginę transliaciją nebuvo užduotas klausimas.
Nemažai paskaitęs, supratau, kodėl aktyvusis CAN magistralės terminavimas automobilių tinkluose yra visiškai logiškas. Jei prisiminsime, kodėl reikalingas pasyvusis terminavimas (fiksuotas rezistorius / vieta), tuomet aktyvusis terminavimas atrodo visiškai prasmingas.

Pasyvusis terminavimas daugiausia skirtas įtampos signalo atspindžiams riboti, suderinant CAN „vytos poros“ laidų varžą (impedansą). Be terminavimo signalai atsispindi atgal į laidus (tarsi aidas) ir ten susiduria su esamomis CAN žinutėmis (eismu). Šie susidūrimai neigiamai veikia – jie iškraipo CAN žinutes, pakeisdami jų įtampos lygius ir, žinoma, bitų laiką.

Pasyviojo terminavimo apribojimai
Paprastai pasyvieji terminatoriai montuojami abiejuose CAN magistralės galuose, o tai gamintojui gali būti nemenkas iššūkis (kaip technikas, pabandykite rasti „tikruosius“ CAN magistralės galus).

Pasyvusis terminavimas gali išlaikyti magistralės impedansą tik tuo atveju, jei recesyvinė įtampa išlieka nurodyto lygio. Jei susidursime su įtampos ar grandinės klaidomis, keičiančiomis magistralės varžos charakteristikas, pasyvieji terminuojantys rezistoriai reaguos atitinkamai – tai lems magistralės impedanso svyravimus ir kels duomenų iškraipymo riziką.

Aktyviojo terminavimo privalumai
Turint tai omenyje, aktyvusis terminavimas šias problemas sprendžia iš esmės ir suteikia tikslią magistralės impedanso kontrolę esant kintančiai apkrovai (eismui).

Aktyvusis terminavimas atlieka tą pačią funkciją kaip ir pasyvusis, tačiau turi didelį pranašumą – jis yra dinamiškas. Tai leidžia automobilio gamintojui terminuojančius rezistorius įrengti bet kuriame CAN mazge ir suteikia daugiau laisvės kuriant automobilį.

Aktyvusis terminavimas leidžia turėti kelias automobilio konfigūracijas tiek gamybos metu, tiek po jos (čia turiu omenyje automobilių perdirbimus).

Aktyvusis terminavimas gebės atidžiai stebėti ir valdyti magistralės impedansą esant kintančioms grandinės sąlygoms, kai keičiasi įtampa ir magistralės eismo sąlygos. Todėl impedansas visą laiką išliks stabilus ir bus užtikrintas CAN duomenų vientisumas.

Žengiant dar toliau, aktyvusis terminavimas leis palaikyti optimalų magistralės impedansą tuo metu, kai magistralė itin apkrauta dideliu CAN eismu. Tai pasiekiama trumpam sumažinant efektyvųjį magistralės ilgį (pakeičiant terminuojančio rezistoriaus vietą) ir taip sutrumpinant duomenų sklidimo laiką (propagaciją).

Tai neabejotinai suteiks pirmenybę toms tinklo sritims, kurioms pasirinktas terminavimas padės užtikrinti tikslių CAN duomenų pristatymą.

Ši nuoroda padės susipažinti su aktyviuoju terminavimu ir nuves prie kitų informacijos šaltinių.

Taigi, dabar kyla klausimas: „kaip tokius tinklus tikrinti?“

Toliau pateikiu savo mintis apie tokių tinklų tikrinimą, nes dar neteko rasti automobilio, kuriame būtų naudojama ši technologija. (Esu tikras, kad tokių yra.)

Magistralės įtampos, manau, išliks panašios, nes nematau būtinybės joms keistis. Todėl fizinio lygmens tikrinimas dėl aktyvumo ir įtampos slenksčių bus toks pat, tačiau turėsime atsižvelgti į magistralės terminavimo būseną.

Gali būti, kad visi CAN mazgai pagal numatytuosius nustatymus turės terminuojantį rezistorių (aktyvuojamą pagal poreikį), arba kad tik pasirinkti mazgai galės prireikus tapti aktyviai terminuojančiais mazgais.

Prieiga prie tikslių techninių duomenų ir mokymai bus itin svarbūs, nes žinios yra galia (ypač produkto žinojimas).

Turėdami pakankamai žinių bei osciloskopą ir gamyklinį diagnostikos skaitytuvą, galbūt galėsime priversti magistralę pereiti į skirtingas terminavimo būsenas ir tuo pačiu metu fiksuoti šiuos įvykius su PicoScope.

Bus labai įdomu užfiksuoti poveikį CAN žinutėms pereinant nuo vieno terminuojančio rezistoriaus prie kito, nes esu įsitikinęs, kad tai bus matoma! (Vien tai jau bus vertingas diagnostinis veikimo įrodymas.)

Tikiuosi, kad kai kas iš to pravers; nedvejodami papildykite informaciją arba pasidalykite savo patirtimi apie šiuos papildomus iššūkius, su kuriais susiduriame dirbdami su CAN.

4 klausimas


Ar FlexRay tinklai naudoja terminuojančius rezistorius?

Tarp CAN ir FlexRay yra nemažai fizinių panašumų, kuriais galime džiaugtis: tai ir terminuojantys rezistoriai (naudojami FlexRay magistralės galuose), ir pažįstami vytos poros kabeliai, ir įtampų skirtumas tarp jų.

Tipinės terminuojančių rezistorių vertės svyruoja nuo 80 iki 110 omų, todėl būtina remtis atitinkamais techniniais duomenimis.

Skaitant BMW vadovą matyti, kad jų požiūryje į FlexRay tinklų terminuojančių rezistorių matavimą pateikiamas įspėjimas dėl galimo klaidingo interpretavimo!

Nerimą kelia įvairios FlexRay terminavimo konfigūracijos, dėl kurių išmatuota varžos vertė gali būti neteisingai suprasta. Kol kas galiu manyti tik tiek, kad naudojant kelis terminuojančius rezistorius vertės gali skirtis priklausomai nuo matavimo taško magistralėje. Matyt, ir varžos matavimais 100 % pasikliauti negalime?

Ir vėl grįžtant prie BMW (F31): tame pačiame automobilyje naudojamos skirtingos FlexRay tinklų konfigūracijos. Pavyzdžiui, tinklų sietuvo modulis (ZGM) su vairo kolonėlės jungiklių bloku (SZL) sudaro atskirą „taškas–taškas“ magistralę su terminuojančiais rezistoriais abiejuose moduliuose. Tuo tarpu stabilumo kontrolė, važiuoklės valdymas ir variklio valdymas yra kitoje magistralėje, o rezistoriai yra stabilumo kontrolės ir variklio valdymo moduliuose.
Suskaičiavau dar 6 FlexRay tinklus su iš viso 12 terminuojančių rezistorių.

Tikslios techninės informacijos turėjimas čia labai padeda, tačiau ir vėl osciloskopas tampa nepamainomas norint patikrinti tinklą dinamiškai.


Pastaba: forumo įraše minėjau, kad FlexRay dekodavimo funkcija nesuveikė. Tai buvo mano paties klaida, nes reikia invertuoti arba diferencines įtampas (A-B), arba A kanalu užfiksuotą signalą (B kanalo invertuoti nereikia, kad dekodavimas pavyktų). Žinau, kad tai šiek tiek painu, ir dar pasigilinsiu, kodėl taip yra.

FlexRay dekodavimas

Straipsnis išverstas iš Pico Technology bibliotekos su gamintojo leidimu. Originalas: picoauto.com. PicoScope įrangą rasite mūsų kataloge.

Mercedes Arocs: kuro slėgio gedimo ir triukšmo diagnostika