Díl 1 - Čtení dlouhého SDO, vyžadování jednotlivých segmentů
Díl 2 - Mapování objektů do PDO
Díl 7 - Nodeguarding a Heartbeat
Pro přenos procesních dat se u protokolu CANopen používájí takzvané PDO. Mapování PDO jsme si předváděli v předchozích dílech. V tomto díle seriálu se podíváme na takzvané SRDO (Safety-Relevant Data Object) a způsob jak tato data simulovat v programu PP2CAN.
SRDO přenos dat zvyšuje zabezpečení přenosu dat. Předpis CANopen safety protocol (CiA 304) byl publikován jako Evropský standard EN 50325-5. Tento přenos dat pak splňuje Safety Integrity Level 3 (SIL 3). Jelikož se jedná o volitelné rozšíření, ne každé zařízení jej musí podporovat.
Princip zabezpečení spočívá v tom, že data jsou přenášena po CAN sběrnici 2x a musejí splňovat tyto podmínky:
- data v druhé zprávě jsou invertována
- identifikátor obou CAN zpráv se musí lišit minimálně ve dvou bitech.
- identifikátor zprávy s normálními daty je lichý
- identifikátor druhé zprávy s invertovanými daty je sudý
- nesmí dojít ke změně pořadí
- SRDO se přenášejí periodicky
- vzdálenost mezi zprávou s normálními daty a zprávou s invertovanými daty nesmí přesáhnout dobu SRVT
Na straně příjemce se kontroluje posloupnost zpráv a to že data si odpovídají. Pokud je detekována chyba, přepne se zařízení (akční členy) do bezpečného stavu.
Nastavení SRDO je uloženo v zařízení a platnost dat se kontroluje pomocí CRC.
Pro nastavení se používají tyto objekty:
- 0x1301 – 0x1340 … SRDO communication
- 0x1381 – 0x13C0 … SRDO mapping
- 0x13FE … Configuration valid flag
- 0x13FF … Safety configuration checksums/CRCs
SRDO communication
0 | Počet subindexů | |
1 | Vypnutí, směr komunikace | 0-OFF, 1-transmit, 2-receive |
2 | Refresh Time SCT | Vzdálenost SRDO, perioda odesílaných dat musí být menší než tato hodnota |
3 | SRVT | Vzdálenost mezi zprávou s normálními daty a invertovanými daty |
4 | Transmission type | |
5 | COB ID 1 | Normální data |
6 | COB ID 2 | Invertovaná data |
Na tomto obrázku vidíme význam parametrů SCT a SRVT:
SRDO mapping
Mapování se provádí podobně jako u PDO, mapují se však i invertovaná data. Normální data se mapují na liché pozice, invertovaná na sudé pozice s vyjímkou subindexu 0.
Configuration valid flag
V tomto objektu je uložen flag toho, že konfigurace je validní. Pokud je validní, je zde nastavena hodnota A5h. Pokud je přepsán některý z parametrů SRDO, je zde nastavena hodnota 0 - nevalidní konfigurace. Po ukončení změn parametrů a nastavení CRC je toto potvrzeno hodnotou A5h.
Safety configuration CRCs
Každý SRDO používá pro CRC vlastní subindex. Jedná se o checksum CRC-16-CCITT, polynom 1021h. Jelikož toto je již nad rámec tohoto článku, kde se chceme naučit generovat pár zpráv s invertovanými daty, uvedu již jen k tomuto obrázek kde je vidět jak se skládají data pro výpočet CRC. Za povšimnutí stojí že u mapovaných parametrů se do dat ze kterých se počítá CRC vkládají i příslušné subindexy. Obrázek pochází z dokumentace firmy SIKO.
Nyní se dostáváme k tomu jak pomocí SW PP2CAN, případně X2CAN API a převodníku USB2CAN TRIPLE generovat dvojici zpráv, kde druhá bude mít invertovaná data. Je nutné použít firmware 1.28 nebo novější pro převodník USB2CAN TRIPLE a SW PP2CAN verze 3.031 nebo novější. Jelikož je v tomto případě nutné přesné časování odesílaných dat, je třeba použít funkci HW sync.
Na pravé straně je ve volbě checksum možno vybrat položku CANopen - SRDO. Tato volba dovoluje do dat CAN zpráv vkládat například checksumy u SAE J1939. V tomto případě se sice nejedná o checksum ale funkce zabezpečení dat je podobná. Je li pro buffer nastavena tato volba, další buffer v pořadí je použit pro generování zprávy s invertovanými daty. U tohoto druhého bufferu postačí nastavit identifikátor, vše ostatní - perioda, povolení a podobně se v převodníku USB2CAN nakopíruje z primární zprávy. Odeslání zprávy s invertovanými daty je naplánováno 1 ms po odeslání první zprávy.
Následně si můžeme otevřít nástroj Data sender.
Zde je nové nastavení HW sync data only. To je třeba mít aktivované, stejně tak i to že se jedná o periodická data. Pokud je volba HW Sync data only aktivní, nepřepíše se nastavení bufferu v převodníku (ID, perioda z nástroje Data sender) a nástroj Data sender se tak použije pouze jako zdroj datových bajtů.
Na dalším obrázku vidíme přijatá data. Funkce HW sync je nastavena na generování dat na CAN 1. Ten je v mém případě na převodníku USB2CAN Triple propojen s CAN2, proto vidím data přijatá zpět a je patrné jak přesná je perioda generovaných dat. Z obrázků je kromě rozestupů mezi zprávami s rozlišením mikrosekund vidět i jak jsou data invertována.
Tím máme nasimulováno generování dat SRDO, tedy páru zpráv, kde jsou invertovaná data ve druhé zprávě.