V tomto druhém díle budeme pokračovat v popisu nastavení programu PP2CAN, zaměříme se zejména na slovníky zpráv, které nám dovolí zprávy pojmenovat. Před popisem slovníků však ještě začneme popisem několika nastavení, které je dobré znát a používat.
Ve fialově označené oblasti se nachází 3 nastavení, které mají vliv na to, v jakém formátu se zobrazují identifikátor a data. První volba dovoluje nastavit, zda se identifikátor
vypisuje hexadecimálně nebo dekadicky. Podobně třetí volba je určena pro datové bajty, tedy zda se vypisují dekadicky nebo hexadecimálně. Tato volba se však uplatňuje pouze pro klasické CAN rámce. U CAN FD rámců, které jsou delší než 8 datových bajtů se výpis provádí vždy hexadecimálně.
Prostřední volba je určena pro rámce s 29 bitovým identifikátorem, lze zde nastavit, zda se tyto identifikátory zobrazují ve formě 11+18 bitů, tedy standardní a rozšířená část nebo jako jedna 29 bitová hodnota. Budete li pracovat s protokolem SAE J1939, je vhodné si nastavit formát na 29 a hexadecimálně. Pro jiné protokoly je však může být výhodnější jiné nastavení.
V zeleně označené oblasti je možné nastavit zobrazení dodatečných informačních sloupců v logu přijatých a odeslaných zpráv. Ty jsou buď vypnuty (první volba), nebo zobrazují binárně hodnoty registrů s identifikátory pro některé často používané řadiče CAN sběrnice. Poslední volba pak není vztažena k identifikátorům, ale k datovým bajtům. Tato volba ASCII data zobrazí sloupec, ve kterém se převádí hodnoty datových bajtů na ASCII znaky. Tato volba se může hodit pokud data obsahují viditelný text.
Modře označená oblast dovoluje nastavit jak často jsou přijaté zprávy programem zpracovávány. Volba 10 ms v některých nástrojích, které například generují na CAN sběrnici odpověď, zlepšuje rychlost odezvy. Je však nejvíce náročná na CPU. Opakem je volba 50ms kterou je vhodné nastavit na slabších PC zejména pokud se pracuje s více CANy najednou a na každém chodí tisíce zpráv za sekundu. S touto volbou periody souvisí i nastavení, které nastavuje vláknům aplikace prioritu. Tyto volby priority však pro velkou část uživatelů nemají význam, jsou spíše určeny nám pro ladění výkonu aplikace. Je však dobré o nich vědět, pokud chceme ještě více vylepšit odezvu.
Tím jsme uzavřeli základní nastavení programu a přejdeme k hlavnímu tématu tohoto a následujícího dílu, a to k pojmenování zpráv v logu přijatých a odeslaných zpráv či v dalších nástrojích, například nástroji Grid log.
Pro pojmenování můžeme použít několik nástrojů a zdrojových dat:
- soubor CID, jednoduchý textový soubor, kdy hodnotě identifikátoru přiřadíme popis
- soubor MSG, používáme li seznam předdefinovaných zpráv (šablony/templates), můžeme je rovnou použít i pro pojmenování
- soubor DBC, jedná se o nejrozšířenější formát souboru s popisem jak jsou data po CAN sběrnici přenášena, lze jej použít také jako zdroj pro pojmenování
- automatický slovník pro protokol SAE J1939, tento slovník je přímo integrován do programu PP2CAN, pro přesné pojmenování je třeba pro správné pojmenování adresy zdroje či případně cíle je třeba nastavit i parametr Industry Group (global, highway, marine atd). Více v normě SAE J1939. Jelikož pojmenování obsahuje poměrně dost položek, lze délku výpisu redukovat volbou volbou SAE J1939 short mode.
- automatický slovník pro protokol CAN open. U tohoto protokolu je pro co nejlepší výsledek pojmenování nutno vybrat pro jednotlivé Nody sběrnice profil zařízení o jaký se jedná.
Důležité je, že při změně slovníku je třeba vymazat logy přijatých a odeslaných zpráv. Dynamicky vytvářené řetězce se alokují v paměti PC tak, aby se pro každý identifikátor alokoval řetězec pouze jednou z důvodu úspory paměti. Tyto řetězce je třeba vymazat společně s logy, aby se.mapa identifikátor -> pojmenování začala vytvářet znovu.
Nyní si popíšeme formát souborů CID. Pro tyto experimenty není třeba přímo používat CAN bus převodník, pro testování postačuje režim V2CAN, který nastavíme výběrem tohoto režimu v Options. Soubor CID je jednoduchý textový soubor s velmi jednoduchým formátem. Řádek, který obsahuje pravidlo pro pojmenování zprávy je uvozen znakem '>'. Začněme tímto příkladem:
>St-0x1-Id jedna >St-0x2-Id dva
Uvedené řádky vložíme do textového souboru s koncovkou CID. V mém případě soubor test.cid. V Options tento soubor nastavíme jako slovník. Taktéž povolíme pojmenovávání zpráv volbou Enable dictionary names (Povolení slovníkových názvů). Jako poslední pak povolíme pojmenování pouze podle identifikátoru.
Máme li nastaven režim V2CAN, budou se podle tohoto slovníku pojmenovávat jak odeslané tak i přijaté CAN zprávy. Odešleme si tedy zprávy s 11 bitovým ID (standardní) s identifikátory 0,1,2 a 3. Celou situaci vidíme na obrázku:
Soubor CID obsahuje pojmenování zprávy s identifikátory 1 a 2, St na řádcích pravidel slovníku značí, že se jedná o zprávu s 11 bitovým identifikátorem. Pokud by jsme odeslali zprávy s rozšířeným (29 bitovým) identifikátorem s hodnotami 1 a 2, zprávy pojmenovány nejsou.
U zpráv s rozšířeným, 29 bitovým identifikátorem máme dvě možnosti, tak jako u zobrazení máme dvě možnosti jak tento identifikátor zadat, buď jako dvě části, tedy 11 a 18 bitovou část nebo jako jeden 29 identifikátor.
>Ext-100-200-Sto a dveste >Ext29-300-Trista
Také je třeba zmínit, že hodnoty identifikátorů je možné zadávat jak dekadicky tak i hexadecimálně. Pokud je identifikátor zadáván hexadecimálně, je třeba aby hodnota začínala předponou 0x. Více příklad který následuje:
>Ext29-0x123456-123456h hexadecimalne >Ext29-123456-123456 dekadicky
Řádek s pravidlem tak musí začínat znakem '>', následuje specifikace identifikátoru, povoleny jsou řetězce St,Ext a Ext29. Až po popis - pojmenování nejsou povoleny znaky mezer. Je li identifikátor uvozen 0x, je zadán hexadecimálně. Jinak je zadán dekadicky.
Formát souborů CID pamatuje i na situace, kdy se pojmenování provádí jen podle části identifikátoru. Typická situace je u protokolu SAE J1939, případně FMS. Pojmenování chceme provádět podle PGN - bez ohledu na prioritu nebo zdrojovou adresu (SA). V tomto případě je třeba v souboru uvést masku. Od řádku s maskou se tato maska používá na všechny další řádky s pravidly pro pojmenování. Řádek s maskou začíná znakem '+' (plus). Elementární soubor CID pro pojmenování několika zpráv dle FMS normy pak vypadá například takto:
+mExt29-0xFFFF00-PGN mask >Ext29-0xFEF100-Cruise Control-Vehicle Speed >Ext29-0xF00300-Electronic Engine Controller 2 >Ext29-0xFEE900-Fuel Consumption >Ext29-0xFEFC00-Dash Display-Fuel Level >Ext29-0xF00400-Electronic Engine Controller 1 >Ext29-0xFEEA00-Vehicle Weight >Ext29-0xFEE500-Engine Hours-Revolutions >Ext29-0xFEEC00-Vehicle Identification >Ext29-0xFDD100-FMS-standard Interface >Ext29-0xFEC100-High Resolution Vehicle Distance >Ext29-0xFEC000-Service >Ext29-0xFE6C00-TCO1 >Ext29-0xFEEE00-Engine Temperature
Co však dělat, pokud mají na pojmenování vliv i hodnoty datových bajtů? I to je možné, v tomto případě je třeba hodnoty do pravidel zapsat do složených závorek. Například takto:
>St-100-{1,2}-Standard, DB jedna a dva >St-100-{1,3}-Standard, DB jedna a tri >St-100-{3,4}-Standard, DB tri a ctyri
Pokud chcete pojmenovávat podle identifikátoru a prvních dvou datových bajtů, stačí vybrat příslušnou volbu v Options, na dalším obrázku označeno červeně. Pokud vyberete modrou volbu, bude se pojmenovávat JEN podle prvních dvou datových bajtů. Zelená volba pak bude pojmenovávat dle identifikátoru a prvního datového bajtu. Složené závorky mohou obsahovat 1 až 4 hodnoty DB0 až DB3.
Je li v CID souboru uvedeno více datových bajtů než používá pravidlo nastavené v Options, jsou hodnoty ignorovány. Stejně tak pokud se pojmenovává jen podle datových bajtů, nějakou hodnotu identifikátoru musí pravidlo obsahovat, ale hodnota je ignorována. Pokud přijatá zpráva vyhovuje více pravidlům, je pojmenování provedeno podle prvního nalezeného.
V případě že pro pojmenování použije soubor předdefinovaných zpráv s koncovkou MSG, je pojmenování více méně stejné jako u CID. Tedy lze použít pojmenování nejen podle identifikátoru, ale i podle datových bajtů. V případě, že pro pojmenování použijete soubor DBC, je funkční jen pojmenování dle identifikátoru.
Ve třetím díle uzavřeme popis slovníků, podíváme se na automatické slovníky pro SAE J1939 a CANopen.