Dekoduokite J1939 CAN duomenis, o ne spėliokite.
Į klientų aptarnavimą kreipėsi dėl Manitou problemos: DEF (karbamido) lygis rodomas kaip tuščias, nors DEF bakas pripildytas tiek, kad fiziškai nebeįmanoma įpilti daugiau. Mašinai apribojus galią dėl rodomo žemo DEF lygio ir esant gedimo kodui, kaip galima būti tikram, kad brangi keičiama detalė (1000 £ ir daugiau) gedimą pašalins? Supratimas, kaip kas nors veikia, yra raktas į teisingą diagnozę.
Įdomu tai, kad DEF mazge lygis perduodamas per CAN, ko iš dalies ir tikimasi, tačiau tai gali būti daroma dviem būdais. Nors negaliu dalytis J1939 SAE dokumentu ar jo informacija, apie šiuos duomenis nesunku sužinoti greitai paieškojus internete. Geriausias mano rastas šaltinis – https://www.ssi-sensors.com/perch/resources/documents/tulc-combination-sensor-tulc-an.pdf
Aukščiau esančiame dokumente aprašytas jutiklis nėra tas pats, kuris sumontuotas Manitou, tačiau informacija apie DEF lygį, kaip J1939 duomenis, yra vienoda visiems (nebent jutiklis perprogramuotas nuosaviems (proprietary) pranešimams).
Naudodami J1939 dekoderį programoje PicoScope 7 Automotive, galime pradėti skaidyti duomenis ir filtruoti juos pagal PGN ir (arba) šaltinio adresą.
J1939 sąsaja
TULC gaminys atitinka SAE J1939. Prisijungimui prie magistralės jis naudoja gedimams atsparų TJA 1040 siųstuvo-imtuvo lustą. TULC neturi magistralės terminuojančiosios varžos. Duomenų perdavimo sparta – 250 kbit/s. TULC naudoja šaltinio adresą 0xA3. TULC gaminį galima perprogramuoti per J1939 magistralę, o programavimui naudojami nuosavi (proprietary) PGN.
Pagal rastą dokumentą šio lygio jutiklio šaltinio adresas yra 0xA3, kur 0x nurodo, kad reikšmė pateikta šešioliktainiu formatu. Tai naudinga, nes turime informaciją, reikalingą dekoderiui sukonfigūruoti.
Pridėję filtrą pagal šaltinio adresą 0xA3, galime pašalinti mums nerūpimus duomenis.
Norėdami pridėti filtrą:
- Spustelėkite Add Filter ir pasirinkite parametrą, pagal kurį norite filtruoti.
- Šiuo atveju tai ID (Source Address); operatorius pagal nutylėjimą yra Contains, jo keisti nereikia.
- Tada įrašome argumentą, t. y. tai, pagal ką norime, kad programa filtruotų.
- Galiausiai spustelėkite Add.
Taip gauname gana daug informacijos ir matome, kad PGN yra ne vienas. Grįžę prie anksčiau minėto PDF, matome, kad jame nurodytas lygio PGN.
Šiame etape galime ištrinti ankstesnį filtrą arba tiesiog pridėti dar vieną, tik šįkart filtruosime pagal ID (PGN). Iš ankstesnių įrašų, pavyzdžiui, šio https://www.picoauto.com/support/topic22271.html, žinome, kad PGN yra 2 baitai ID viduryje. Aukščiau pateiktame pavyzdyje tai reikštų, kad mūsų PGN yra FE56.
Dabar mums liko vos 8 duomenų paketai – tai jau kur kas lengviau suvirškinti! Iš pradžių žvelgiant į duomenis matyti, kad pirmųjų 4 baitų reikšmės kinta. Taip pat galime daryti prielaidą, kad duomenų perdavimo periodas yra 1 s, nes tarp paketų kiekviename buferyje praeina po sekundę!
Pagal jutiklio PDF informaciją, DEF lygis procentais prasideda 0-iniu baitu (t. y. pirmuoju) ir užima 8 bitus, tai yra 1 baitą. Jei paimsime pirmąjį duomenų lauką iš 1 buferio, šis baitas yra 11. Kadangi tai vis dar HEX, kad gautume realias reikšmes, turime konvertuoti į dešimtainę sistemą; pasinaudoję integruota Windows skaičiuotuvu, gauname 17.
Kita dalis paprastai yra pati sudėtingiausia, nes informacija, kaip tai paversti realiais vienetais, užrakinta SAE dokumente. Laimei, jutiklio PDF mums pateikė mastelio koeficientą ir poslinkį. Reikalinga konversija paima mūsų dešimtainę reikšmę, pritaiko 0,4 mastelio koeficientą, o poslinkio nereikia. Taigi:
17 × 0,4 = 6,8 %
Tai turėtų būti DEF kiekio procentas nuo bako tūrio. Tačiau ar tai rodo, kiek jis tuščias, ar kiek bake dar liko vietos? Turint omenyje, kad prietaisų skydelis rodo lygį kaip tuščią, galime daryti prielaidą, kad kuo mažesnis %, tuo žemesnis lygis. Tai galime pagrįsti fizinio lygio jutiklio duomenimis.
Kad tai nustatytume, galime naudoti plūdės lygį skysčio aukščiui nuo bako dugno nustatyti. Tai daroma įvairiais būdais, pavyzdžiui, ultragarsu arba plūdėmis. Nežinodami, kuris būdas naudojamas Manitou, tiesiog pasinaudosime PDF informacija ir pažiūrėsime, kas gausis.
Pirmiausia pažvelkime į pradinio bito poziciją ir bitų ilgį. Bitų ilgis nurodytas 16 bitų, o kadangi 1 baitas yra 8 bitai, tai reiškia, kad naudosime 2 baitus. Pradinio bito pozicija taip pat yra 16. Žemiau esantis paveikslėlis iš https://cdn.intrepidcs.net/support/VehicleSpy/spyInDecodeBits.htm rodo, kaip priskiriamos bitų pozicijos. Jame parodytos tik pirmųjų dviejų baitų pozicijos, bet tikėtina, kad suprasite, kaip pozicijos tęsiasi tolesniuose baituose.
Vadinasi, bito pozicija 16 patenka į 3-ią baitą, tad turime naudoti 3 ir 4 baitus. Kad gautume teisingą dešimtainę reikšmę, baitų tvarką reikia apversti, kaip nurodyta šiame įraše – https://www.picoauto.com/support/viewtopic.php?p=100659#p100659. Taigi faktiškai fiziškai išmatuotas DEF skysčio lygis nustatomas taip:
3 ir 4 baitai =
55 0F
Apverčiame, kad 4-as baitas eitų pirmas –
0F 55
Sujungiame ir konvertuojame į dešimtainę reikšmę
0F55 = 3925
Tada pritaikome PDF dokumente nurodytą mastelį ir poslinkį: mastelis 0,1, poslinkio nėra –
3925 × 0,1 = 392,5 mm
Kadangi tai rodo beveik 400 mm (40 cm), o tai anaiptol nėra prie dugno. Bet kaip nustatyti, ar tai aukštis nuo dugno, ar aukštis iki bako viršaus? Žinant, kad gedimą turinčios mašinos bakas yra pilnas, abi šios reikšmės rodo, kad davikliu mazgas yra sugedęs – bet ar galime surinkti dar daugiau tai įrodančių duomenų?
Vienintelis tikras būdas – gauti duomenis iš žinomai tvarkingo šaltinio.
Toliau pateikti duomenys gauti iš mašinos be gedimų, kurios prietaisų skydelis rodo DEF baką kaip pilną.
Žiūrėdami į pirmąjį baitą matome HEX reikšmę FA. Pritaikę tą pačią konversiją kaip ir aukščiau:
0xFA = 250 DEC
250 × 0,1 = 100 %
Kadangi bakas pilnas ir ekranas rodo tą patį, galime daryti prielaidą, kad ši informacija teisinga, ir pereiti prie kito lygio matavimo.
Čia turime 4B 00, kurį apvertus gauname 004B, o tai dešimtainiu pavidalu yra 75. Sekdami aukščiau aprašyta logika, gauname 7,5 mm. Kadangi ši mašina be gedimų ir bakas pripildytas iki viršaus, turime daryti prielaidą, kad šis lygis atitinka bako viršų. Man nepavyko rasti tai patvirtinančios dokumentacijos. Tikimės, kad pavyks gauti daugiau pavyzdžių šiai teorijai patvirtinti arba, keičiant dar vieną daviklį, pamanipuliuoti plūde prieš montuojant ją į mašiną.
Mums pavyko prieiti prie dar vienos mašinos, kurios prietaisų skydelis rodė maždaug 50 %. Pritaikę tą patį metodą, gauname:
Lygiui procentais: pirmasis baitas 75, konvertuotas į dešimtainę reikšmę, yra 117 × 0,4 = 46,8 %. Du baitai lygiui milimetrais yra E3 08; juos apvertus ir konvertavus į dešimtainę sistemą, 08E3 = 2275, o tada į milimetrus: 2275 × 0,1 = 227,5 mm.
Diagnozės suvestinė
Yra pakankamai įrodymų, patvirtinančių, kad rodmuo buvo neteisingas mašinai, kurios lygis turėtų būti 100 %. Todėl lygio jutiklis buvo pakeistas ir gedimas pašalintas. Kad būtume visiškai tikri, ką šie matavimai reiškia, reikia atlikti fizinius bako ir lygio jutiklio matavimus. Tikimės, kad tai parodo, kaip komponentų, kurie yra universalūs skirtingose mašinose, duomenų dekodavimas padeda patikrinti diagnostikos skaitytuvo duomenis.
DUK skyrius
Klausimas: koks buvo pagrindinis diagnostinis iššūkis Manitou DEF lygio jutiklio atveju?
Atsakymas: iššūkis buvo dekoduoti J1939 CAN magistralės duomenis su PicoScope, kad būtų galima patikrinti DEF lygio jutiklio rodmenis, nes prietaisų skydelis klaidingai rodė baką esant tuščią.
Klausimas: koks yra Manitou DEF jutiklių J1939 šaltinio adresas?
Atsakymas: 0xA3.
Klausimas: kokia buvo Manitou DEF sistemos diagnozės išvada?
Atsakymas: DEF lygio jutiklio mazgas buvo sugedęs; tai patvirtinta palyginus jo neteisingus CAN magistralės duomenis su duomenimis iš žinomai tvarkingos mašinos.
Straipsnis išverstas iš Pico Technology bibliotekos su gamintojo leidimu. Originalas: picoauto.com. PicoScope įrangą rasite mūsų kataloge.