Reply maker

Účelem této funkce je zpracovávat a odpovídat na zprávy definované v seznamu určitou odpovědí. Odpověď může mít pevný tvar nebo může být vybrána na základě určité hodnoty v datové části přijaté zprávy a pravidel >,>=,<,<=, =, interval. Této funkce lze využít jako jednoduchého řídícího skriptu, nebo pro konfiguraci zařízení systémem dotaz - odpověď.

    Definujeme tedy zprávu REQUEST, není-li typu RTR můžeme do datové části vložit (DATA SET) hodnotu typů UINT8,16,32,64, INT8,16,32,64 a nebo DOUBLE32. Tato hodnota se zároveň využije jako rozhodovací hodnota pro přiřazené pravilo (RULE). Dále definujeme odpověď RESPONSE. Zde můžeme využít nastavení dat také dialogem DATA SET. Nicméně tato hodnota nemá vliv na pravidla. Nakonec definujeme pravidlo, kdy se bude generovat odpověď. Pravidla jsou tato: vždy, >,>=,<,<=, =, v intervalu a mimo interval. Nakonec přidáme zprávu do databáze tlačítkem Add.

PP2CAN: Reply maker - vytvaření komunikačních scriptů

    Zpracování zpráv v databázi se povolí zatržením ENABLE v sekci GLOBAL. Přijde-li tedy zpráva, která je v databázi (rozhodovat lze podle ID, ID+D1 a ID+D1+D2), je generována odpověď, pokud přijatá zpráva splňuje definované pravidlo. To znamená pokud jsme ve zprávě REQUST zadali data typu INT16 od datového bytu 2 o hodnotě 100 a nastavili pravidlo >, bude odpověď RESPONSE vygenerována, pokud bude na tomto místě větší než 100.

    V případě, že je využito pravidlo interval (pravidlo splněno pokud je v přijaté zprávě hodnota ležící v intervalu) nebo pravidlo mimo interval, je nutno doplnit druhou hodnotu rozsahu intervalu. To se provádí zároveň s nastavením pravidla.

    Elementární pokus vykonáme tak, že spustíme program PP2CAN, zapneme mód Loopback, pokud chceme testovat práci i s adaptérem nebo přepneme na režim V2CAN. Otevřeme Reply maker. Ponecháme nastavení identifikáorů i dat na hodnotách 0, pouze u zprávy Response aktivujeme Enable. Tlačítkem Add tuto zprávu přidáme do databáze. Následně v sekci Global povolíme (Enable) zpracování. V hlavním okně manuálně vygenerujeme zprávu s identifikátory i daty na hodnotě 0. V logu přijatých zpráv se neustále přijímá tato zpráva. V případě, že otevřeme graf Bus load, vidíme, že se odesílá i přijímá stejný počet zpráv. Co se vlastně děje?. V databázi Reply makeru máme definovánu stejnou zprávu při příjmu a stejná zpráva je definována jako akce k odeslání, pravidlo je defaultně definováno na always. V módu Loopback je odeslaná zpráva přijata zpět. Tím je vytvořen cyklus, který příjme zprávu a následně jako odpověď vygeneruje stejnou zprávu, která se mu v módu Loopback vrátí zpět. Proto opět generuje zprávu a tak činí neustále dokola. Počet cyklů za sekundu je ovlivněn nastavením Receive refresh v Options.

Databázi je možno uložit do souboru s příponou *.rmk. Tento soubor je textový a je jej možno editovat i ručně například v programu Notepad. Soubor můžeme opětovně načíst příkazem Load. Pokud máme několik oddělených souborů pravidel a chceme je mít načteny společně, můžeme tyto soubory připojovat k již načteným příkazem Merge.

Příklad:

    K odzkoušení tohoto příkladu si nejprve stáhněte databázi pro Reply maker a databázi předdefinovaných zpráv. Do Reply makeru pak pomocí Load načtěte tuto databázi s názvem ReplyMakerExample01.RMK. Tato databáze obsahuje 7 zpráv na kterých si můžete otestovat funkci.

Zpráva č.1 (index 0) má rozšířený identifikátor 10-10. Obsahuje data typu DOUBLE32, která leží od DB0 do DB3 a obsahuje hodnotu 123.456. Pravidlo (RULE) je nastaveno tak, že zpráva definovaná v Response (identifikátor 10-0) je vygenerována, pokud příchozí zpráva bude mít identifikátor 10-10 a bude obsahovat na pozicích DB0 až DB3 takové hodnoty, které po převodu na typ DOUBLE32 budou dávat hodnotu větší než 123.456. Pokud bude hodnota nižší než 123.456, odpověď Response generována nebude.

Zpráva č.2 má identifikátor 20-20. Její pravidlo je nastaveno tak, že odpověď Response s ID 20-0 bude vygenerována, pokud data na DB0-DB3 budou nabývat po převodu na typ UINT32 hodnoty 1000. V ostatních případech nebude odpověď generována.

Zpráva č.3 má identifikátor 30-30. Odpověď Response s ID 30-0 bude vygenerována vždy po obdržení zprávy s ID 30-30.

Zpráva č.4 je typu RTR a má standardní ID 50. Odpověď Response je také typu RTR se standardním ID 51. Odpověď je generována vždy. Protože RTR zprávy nenesou data, nelze definovat žádné pravidlo, respektive pravidlo není uplatněno a je ignorováno.

Zpráva č.5 je stejná jako č.4. Pouze odpověď má ID 52. Zprávy 4 a 5 demonstrují možnost generování několika zpráv reagujících na stejnou zprávu.

Zpráva č.6 je typu RTR s rozšířeným ID 60-60. Při jejím příjmu je generována odpověď s daty a ID 61-61.

Zpráva č.7 má standardní ID 70. Odpověď s rozšířeným ID 70-70 a délkou dat 4 je vygenerována pokud příchozí zpráva má na DB2 typ INT8 s hodnotou -1.

Testování reakcí provádějte v módu Loopback a manuálním odesláním zpráv si simulujte příchod zpráv z externího zařízení. Pro zjednodušení můžete použít zprávy definované v souboru ReplyMakerExample01.MSG který si můžete stáhnout společně s databází pro Reply maker zde.