Začínáte pracovat s CAN sběrnicí a chcete sledovat data? Zde jsou dva příklady jak na to v programu PP2CAN.
- sledování dat definovaných v normě FMS standard nebo SAE J1939
- sledování dat u protokolu CANopen a zpráv SDO
Příklad 1: Sledování dat definovaných v normě FMS standard nebo SAE J1939
Většinu dat u protokolu FMS nebo SAEJ1939 se dá sledovat podle takzvaného PGN. Podívejme se na následující obrázek který popisuje strukturu identifikátoru u protokolu J1939:
Část PGN je tvořena 18 bity. Bit R-reserved, někdy také nazýván Extended data page, u J1939 je 0. Bit DP je Data page. Definuje stánku dat PDU.Dále pak následují dva bajty. První z nich se jmenuje PF-PDU format. Je li hodnota tohoto bajtu v rozsahu 0 až 239, jedná se o formát PDU 1. Druhý bajt pak má význam cílové adresy kam jsou data zasílána. Pokud je však první bajt v rozsahu 240 až 255, má druhý bajt význam Group extension a jedná se o formát PDU2-ypráva je broadcast.
Podíváme li se do FMS normy například na zprávu, která nese informaci o otáčkách motoru, zjistíme, že PGN je definováno jako hodnota 0x00F004. Druhý bajt PF má hodnotu F0, tedy 240 dekadicky, jedná se tak o formát PDU2. Pokud se jedná o běžný systém s jedním motorem (jedny otáčky), lze v programu PP2CAN toto využít k definování identifikátoru a masky pro monitorování otáček. V tento okamžik tak nepotřebujeme znát hodnotu zdrojové adresy (SA) ani priority, využijeme možnosti maskování identifikátoru.
Při práci s protokolem J1939 je vhodné v Options nastavit zobrazování identifikátoru zprávy v hexadecimálním formátu a také v 29 bitovém formátu. U nástroje Signál receiver se toto nastavení volí samostatně při editaci signálu.
Nastavíme tedy identifikátor na hodnotu: 0xF00400
Masku nastavíme na hodnotu: 0xFFFF00
Příjde li po CANu zpráva například 0x0CF00401 provede se logický součin identifikátoru zprávy s touto maskou, tedy:
- aktivovat volbu zadávání 29 bitového formátu u rozšířeného identifikátoru a povolit rozšířený (extended) identifikátor
- do pole Extended ID zapsat hodnotu 0xF00400 (ta se konvertuje na dekadickou hodnotu)
- do pole Ext. ID mask zapsat hodnotu 0xFFFF00
- nastavit pozici prvního bitu dat na 24 bit (DB3) a délku dat na 16 bitů
- nastavit měřítko na 0.125 (1/8 otáčky na bit)
- zapsat název signálu (RPM)
- přidat signál do seznamu
Tímto jsme definovali v nástroji Signal receiver sledování otáček - RPM podle SAE J1939, nebo případně FMS normy.
Příklad 2: Sledování dat u protokolu CANopen a zpráv SDO
V tomto příkladu si popíšeme sledování pozice servopohonu řízeného protokolem CANopen. Prvni co potřebujeme zjistit je Node ID. Pokud se jedná o fungující systém, lze zjistit jaké Node ID se na CANu vyskytují pomocí nástroje Node scan.
V našem příkladu budeme předpokládat že se jedná o Node ID 2. Požadavek na data bude mít identifikátor CAN zprávy 600h + Node ID, tedy 602h = 1538 dekadicky. Pokud pozice na CANu samo o sobě nechodí, pro vyžadování můžeme použít tento identifikátor.
Identifikátor zprávy s odpovědí bude mít hodnotu 580h + Node ID, tedy 582h = 1410 dekadicky.
U protokolu CANopen však data identifikuje index a subindex. Tento údaj leží v datové části. Jak konkrétní hodnotu zjistit? Nejlépe z dokumentace od výrobce. Ta obvykle uvádí skutečně podporované indexy a subindexy. Na obrázku je příklad dokumentace v manuálu.
Pokud dokumentace neuvádí podrobnosti, lze je zjistit z příslušného profilu, v našem případ Cia402. Některé profily lze zdarma získat na stránkách www.can-cia.org. Druhou metodou je soubor EDS který zařízení popisuje a poskytuje jej obvykle výrobce.
V našem případě má aktuální pozice index 6064h, subindex 0 a jedná se o 32 bitovou hodnotu typu INT. Pro vytvoření zprávy se přepneme na stránku SDO read a naeditujeme si zprávu s tímto indexem objektu.
- jedná se o odpověď na čtení objektu - volba Read Dictionary Object - response, command má tak hodnotu 67.
- Node ID je nastaveno na 2, identifikátor zprávy tak má hodnotu 1410 dekadicky
- do pole Object index zadáme hodnotu indexu, tady zapíšeme x6064, hodnota se sama konvertuje na dekadickou hodnotu
- Subindex má hodnotu 0
Pokud klikneme pravým tlačítkem do volného místa dialogu, zobrazí se kontextové menu ve kterém vybereme Copy. Tím se zpráva vloží do clipboardu. Následně otevřeme Signál receiver a jeho nastavení. Opět klikneme do volného místa v dialogu nastavení (Settings) a z menu vybereme Paste. Tím se naeditovaná zpráva z nástroje CANopen-SDO read - response vloží do nastavení Signal receiveru.
U datových bajtů potřebujeme zakliknout volbu, že hodnota DB0 až DB3 se má kontrolovat - akceptuje se pouze pokud hodnota těchto bajtů je v příchozí zprávě stejná.
Data ve zprávě SDO leží od DB4 - tedy od 32 bajtu. Víme že data jsou typu INT32, tedy typu SIGNED a mají délku 32 bitů.
Následne již jen zadáme název a pomocí Add přidáme do seznamu.
V případě že požadovaná data na CANu sama nechodí a chceme je sledovat, je možné například použít pro periodické dotazy nástroj Sync a tvar požadavku naeditovat opět v nástroji SDO read, tentokrát se bude jednat o Read Dictionary Object - request.