|
Název: Nefungují nulové vif a dif Přispěvatel: libor 16.09.2011, 07:49:44 Na PL2 mám projekt s modulem M-Bus, který čte data z měřiče tepla. Mám nulové hodnoty vif a dif a na výstupech vidím data měřiče. Úplně stejně jsem to udělal na XCOM-21 a nefunguje to. Proč?
Dotaz zaslaný mailem (viz výzva (http://forum.elsaco.cz/index.php?topic=13.msg112#msg112)). Název: Re: Nefungují nulové vif a dif Přispěvatel: libor 16.09.2011, 07:53:05 Platorma PL2 (CCPU-02/03/21) a XCOM mají různé možnosti. U PL2 byla možnost zobrazit první data ve zprávě při ponechání nulových hodnot vif a dif, protože nikde není vidět odpověď měřiče.
Na XCOM je vidět odpověď měřiče (výstup out u modulů pro M-Bus komunikaci). Pokud si u zobrazovacího labelu nastavíte formát zobrazení hexadecimálně a počet bajtů nastavíte na 1, tak uvidíte celou odpověď. Z toho se dají jednoduše zjistit vif a dif dat, které měřič v odpovědi posílá. Na přiloženém obrázku je vidět odpověď měřiče. (připojené soubory vidí pouze registrovaní uživatelé (http://forum.elsaco.cz/index.php?action=register)) Název: Re: Nefungují nulové vif a dif Přispěvatel: libor 16.09.2011, 08:20:04 Data začínají na 20. bajtu (počítáno od 1), jak je vidět na prvním obrázku.
Nejprve zpráva obsahuje dif - pokud je nahozen nejvyšší bit (0x80), tak se do výsledné podoby difu započítává další bajt (maximálně 4 po sobě jdoucí bajty). Dále zpráva pokračuje položkou vif - opět stejně jako u dif - pokud je nahozen nejvyšší bit (0x80), tak se do hodnoty vifu započítává další bajt (opět maximálně 4 po sobě jdoucí bajty). Nejnižší 4 bity položky dif rozhodují o délce dat a o tom, jak budou data interpretována. možnosti jsou následující:
Na druhém přiložené obrázku je vyznačena první dvojice dif (0x108C) a vif (0x06) - data jsou typu 12 (nejnižší 4 bity z dif = 0x108C je 0xC = 12), nebo-li BCD o délce 4 bajty, takže za dif a vif následují 4 bajty dat. Následně začíná dif další datové položky v odpovědi. (připojené soubory vidí pouze registrovaní uživatelé (http://forum.elsaco.cz/index.php?action=register)) |