Ujemne wartości w rejestrach Modbus

Aby odczytać ujemne wartości rejestrów Modbus, należy od odczytanej wartości z rejestru odjąć liczbę 65536.


Poniżej przykład jak można to wykonać:


1. Tworzymy zmienną użytkownika, do której zostanie przekazany wynik działania w skrypcie:



2. Następnie przygotujemy skrypt:

if(ModBus->Rejestr_odczytu->RegisterValue>=32768) then

ModBus->temp=(ModBus->Rejestr_odczytu->RegisterValue-65536)/10

else

ModBus->temp=ModBus->Rejestr_odczytu->RegisterValue/10

end



3. Skrypt będzie wywoływany przez zdarzenie OnChange w obiekcie wirtualnym Modbus:



4. Po wysłaniu konfiguracji, w cesze użytkownika powinna zostać zwrócona ujemna wartość: