Dobrý den,
Používám knihovnu modbus.
Po modbus RTU vyčítám slave zařízení a jeho data používám a zároveň posílám dalšímu zařízení.
Potřeboval bych detekovat chybnou komunikaci (nechodí odpovědi od slave, fyzicky poškozené vedení linky, chybná data, ... ) je toto dosupné na nějakém bitu?
Děkuji
Pavel Richter
Odpovědi 1
Dobrý den,
funkční bloky pro komunikace protokolem Modbus (a je jedno, jestli jde o ModbusRTU nebo Modbus TCP vrací na výstupu ErrCode chybový kód, který je nastaven vždy po dokončení příkazu (tedy v okamžiku, kdy je nastaven výstup Done). Pak se začíná zpracovávat další příkaz a výstupy se zase shodí. Chybové kódy jsou popsané v nápovědě ke knihovně a je také možné zavolat funkci GetModbusErtTxt, která vrací popis chyby jako textový řetězec. Např.:
IF MdbMas.Done and MdbMas.ErrCode <> 0 THEN
GetModbusErrTxt(ErrorCode := MdbMas.ErrCode, ErrTxt := ErrorDesc );
END_IF;
V proměnné ErrorDesc pak zůstane uchován popis poslední chyby. Jestli odpovědi od podřízené stanice nechodí kvůli tomu, že je poškozená linka nebo má problém samo zařízení, to nezjistíte, obojí skončí chybou timeout, ale chybu parity, dotaz na špatnou adresu apod. z toho zjistíte.
Vaše odpověď
Pro vložení odpovědi je nezbytné být přihlášený. Pokračujte na přihlášení.