V tomto díle seriálu se podíváme na možnosti zobrazení dat, která proudí po CAN sběrnici a to jak na zobrazení surových dat tak i následně na data dekódované. Surová data jsou datové bajty přenášené v CAN zprávě. U klasické CAN sběrnice mohou zprávy/rámce obsahovat 0 až 8 datových bajtů, tedy jakýkoliv počet od 0 do 8. V případě CAN FD se pak jedná až o 64 datových bajtů, ne však libovolný počet datových bajtů, ale jsou povolené hodnoty počtu datových bajtů 0,1,2,3,4,5,6,7,8,12,16,20,24,32,48,64. To je dáno tím, že původní CAN rámec ze kterého se u návrhu CAN FD rámce vycházelo obsahoval pole DLC o délce 4 bitů, tedy může obsahovat 16 hodnot - číslo 0 až 15. Pokud tedy obsahuje pole DLC hodnotu 12, CAN FD rámec pak obsahuje 24 datových bajtů. Dekódování dat pak znamená jak získat hodnotu. Pokud hodnota má 8,16,32 bitů, situace je jednoduchá, potřebujeme znát 5 parametru:
- pozice a délka dat
- znaménkový nebo neznaménkový typ (signed nebo unsigned)
- měřítko
- ofset
- endian (little/big)
Poznámka: přenášená data jsou tak celočíselný datový typ, na typ float/double se převedou až po příjmu a aplikaci měřítka a ofsetu. Ovšem i přenos typu float/double je možný i když méně obvyklý.
Ovšem reálný svět nejsou jen hodnoty v násobcích 8 bitů, případně stavové veličiny o délce 1,2,4 bity. V reálném světě se můžeme setkat s tím, že veličina je signed, má délku 13 datových bitů a začíná třeba 6 bitem ve třetím datovém bajtu a je typu big endian. Pak bity této veličiny jsou obsaženy ve 3 bajtech zprávy, přestože hodnota nemá ani délku dvoubajtového slova. To je obvykle způsobeno snahou dostat do zprávy maximum informací a využít každý bit. Jak jsou pak bity takovéto veličiny naskládány v datových bajtech je již hůře představitelné. Navíc už si u big/little endianu nevystačíme s jednoduchým swapnutím bajtů při převodu endianu. Naštěstí program PP2CAN při mapování veličin toto rozložení zobrazuje. Obrázky, které následují ukazují situaci zde popsanou a jsou pořízeny z editoru dat v programu PP2CAN. Levý obrázek je pro big endian a pravý pak pro little endian. Jak je vidět z obrázků, data kromě 2 bitů leží úplně v jiných bajtech.
Asi nejdůležitější je si uvědomit dvě skutečnosti, jednak že specifikujeme pozici dolního bitů a jednak že little a big endian se liší tím v jakém pořadí leží bajty za sebou. Více se asi nemá cenu rozepisovat, na téma endianu a pořadí bajtů v paměti lze na internetu najít dostatek informací. Zde pouze upozorňujeme na to že se nemusí jednat jen o celistvé bajty, ale existují i jiné situace. API X2CAN dodávané k našim převodníkům obsahuje funkce storeSignal, storeSignalFD a extractSignal, extractSignalFD, které je možné použít při vkládání dat do CAN zpráv nebo jejich dekódování.
Další skutečností, o které je třeba se zmínit, je to jak jsou data zadány. Existují 2 možnosti, buď se specifikuje umístění dolního bitu ve zprávě a délka dat a nebo se zadává pozice dolního bitu v datovém bajtu. Pro předchozí obrázek pro situaci little endian (obrázek vlevo) tak můžeme situaci zapsat tak, že data začínají 22 bitem a mají délku 13 bitů a nebo že data začínají v datovém bajtu 2 na šestém bitu. V prvním případě se tak dá říci, že pracujeme s tím že CANovská zpráva obsahuje 1 slovo o délce 64 bitů (u CAN FD 512 bitů) a my zadáváme bitový posun.
Ve druhém případě používáme dle mého názoru správnou konvenci, kdy datové bajty i bity číslujeme od nuly. Dá se však setkat i s tím, že dokumentace výrobce nějakého zařízení počítá datové bajty od indexu 1 a v extrémním případě počítá i indexy bitů od 1. Na tuto situaci je třeba dát pozor a situaci si ověřit zejména například pokud nám pošle zákazník nekompletní popis, například jen popis několika málo veličin a z tohoto zadání není možné spolehlivě určit s jakou variantou číslování se pracuje. Pokud popis obsahuje u nějakých položek bajt 0 a bit 0, je vše jasné, pokud to však v popisu není a nevidíme ani popis bajt 8 a bit 8, není jisté o jakou konvenci popisu se jedná. V případě naší firmy a programu PP2CAN se snažíme dodržovat pravidlo kdy vše číslujeme o 0.
Po tomto úvodu se konečně dostáváme k popisu nástrojů pro příjem dat, které program PP2CAN obsahuje. Zbytek tohoto dílu tak bude obsahovat stručný popis jednotlivých nástrojů a toho pro jaké situace jsou určeny. Další díl pak již bude obsahovat popis práce s nástroji. Nástroje pro příjem dat jsou obsaženy v roletce Receivers, roletka má oranžové pozadí. Nástroje, které tu jsou k nalezení jsou jak jednoduché nástroje, které jsou přehledné a snadné na použití v začátcích práce s CAN sběrnicí a programem PP2CAN (Data receiver, Bit receiver, Multi receiver a ASCII receiver) a dají se použít snadno bez složitého nastavování, po nástroj Signal receiver, který již vyžaduje znalost definice dat jak jsme zde zmínili na začátku a konče nástrojem Data viev, který dovede zobrazit velké množství dat a informací na jednom místě.
Velmi jednoduchý nástroj, který dovoluje sledovat jednu konkrétní zprávu. Pokud zpráva obsahuje nějakou veličinu a chceme si zobrazit jak se mění, je možné nastavit pozici dat a jejich typ. Pro zjednodušení se tu pracuje pouze se zarovnáním dat na celé bajty. Lze otevřít okno s jednoduchým grafem jak se veličina mění.
Jedná se o obdobu předchozího nástroje, tedy je možné sledovat jednu konkrétní zprávu, avšak vizualizace je zaměřená na sledování stavu některých bitů. Tedy pro diskrétní veličiny. Taktéž je možné otevřít okno s grafem, kde se zobrazuje stav 8 bitů ve vybraném bajtu v průběhu času.
Tento nástroj doplňuje 2 předchozí a je zaměřen na situace kdy CAN zpráva přenáší textová data. To se hodí například pro některé systémy, které využívaly pro řízení komunikaci po sériové lince a po přidání CAN rozhraní obsahují i možnost používat tyto původní textové příkazy přenášené pomocí CAN zpráv.
Multi receiver
Jedná se o nástroj, který v podstatě obsahuje ve zjednodušené formě první 3 nástroje v jednom.
Tento nástroj zobrazuje strom CAN zpráv rozlišených podle identifikátoru a zobrazuje souhrn informací o tom co se ve zprávách mění, jak často se na sběrnici vyskytují a podobně.
Jakmile se dostaneme do situace, kdy data nejsou zarovnány na celé bajty a jejich začátky jsou různě posunuty, případně je potřeba pracovat s měřítkem a ofsetem, ale ještě nechceme pracovat s definičními soubory (EYE nebo DBC) lze použít tento nástroj. Taktéž dovoluje sledovat jedna konkrétní data v jedné konkrétní zprávě, ale při jejich specifikaci již dovoluje specifikovat pozici dat pomocí zadání prvního bitu a bitové délky, nastavit měřítko. Chceme li sledovat více dat ve stejné zprávě, otevřeme více nástrojů Display. To stejné platí i pro nástroje Data/Bit/ASCII receiver.
Představte si situaci kdy je možné vyčítat tabulková data pomocí dotazu, kde zadáme adresu či index a odpovědi kde bude uvedena adresa a hodnota těchto dat. Může se jednat například o vyčtení obsahu nějaké konfigurační paměti. Právě pro tuto situaci je možné použít tento nástroj.
Samostatný nástroj pro graf, dovoluje zobrazovat data až 10 veličin v různých zprávách nebo místo časové osy zobrazovat závislost jedné veličiny na druhé. Opět se ale používá zjednodušené zadání pozice dat, kdy nepracujeme s libovolnou pozicí prvního bitu, ale celými bajty.
Toto je již složitější nástroj, který pracuje s definicemi dat které jsou uloženy v souborech EYE, nebo je možné importovat data ze souborů DBC. Data je možné zobrazit i v grafu, který dovoluje pracovat i s nástroji pro měření závislostí mezi daty (například měření odezvy). Kromě realtime sledování dovoluje i data průběžně ukládat do souborů XLSX, provést konverzi dat z uloženého logu komunikace do dekódovaných dat uložených do XLSX. Také dovoluje načíst soubor z excelu, který obsahuje předpis pro dekódování dat a výpočty hodnot z více sledovaných veličin. K tomu používá integrovaný matematický parser.
Velmi komplexní nástroj, který zobrazuje zachycené nebo odeslané CAN zprávy, dekóduje z nich data pomocí souboru EYE nebo DBC, dovoluje zobrazit graf, rychlý náhled na minimální a maximální hodnoty. Může obsahovat stovky vizualizovaných hodnot.
Chceme li logovat jen jednu nebo několika málo CAN zpráv, nebo data z jednoho CAN portu a ostatní zprávy do logu nezaznamenávat, lze použít tento nástroj.
Tento nástroj je optimalizován na sledování změn v komunikaci / datech na sběrnici pokud neznáme popis komunikace. Tedy CAN hacking. Zvýrazňuje změny v datech, skryje CAN zprávy u nichž nedochází ke změnám dat.
Společně s převodníkem USB2CAN Triple nebo Combo dovoluje velmi přesně měřit periodu dat. Máme li například podezření, že dochází k nedodržení periody generování některých dat, je to nástroj přesně pro tento případ.
Mezi nástroje pro příjem dat lze také zařadit CAN skripty, ty mohou data zaznamenávat a zpracovávat velmi komplexně, dovolují provádět generování dat na CAN sběrnici nebo jiný port na základě přijatých dat nebo uživatelských vstupů. Taktéž lze svým způsobem mezi nástroje pro příjem dat zařadit nástroj Gateway, pro přeposílání dat mezi dvěma CANy nebo nástroje pro protokol CANopen. CAN skriptům a nástroji CANopen se však věnují samostatné tutoriály.