Sterownik MPM ma na swoim pokładzie nadajnik/odbiornik RS485, który umożliwia prowadzenie komunikacji modbus z urządzeniami takimi jak liczniki, pompy ciepła i centrale wentylacyjne i im podobnymi.
--konfigurujemy komunikację adres_master = 98 --tu wstaw adres urządzenia predkosc = 9600 --możliwe są też 19200, 38400, 57600 liczbabitow = 8 --może być 7 lub 8 bitów danych parzystosc = "NONE" --możliwe są też "ODD" i "EVEN" bitystopu = 1 --w modbus może być 1 lub 2 bity stopu --na początek zamykamy modbus z możliwych wcześniejszych instancji skryptu modbus.close() --otwieramy modbus modbus.open(adres_master, "RTU", predkosc, liczbabitow, parzystosc, bitystopu)
Od tego momentu mamy już w skrypcie możliwość bezpośredniego odpytywania poszczególnych rejestrów modbus z konkretnie wybranych urządzeń.
Przykłady czytanych typów rejestrów modbus
--odczytujemy rejestr typu holding register zapisany zmiennoprzecinkowo (16 bitów) adres_urzadzenia = 4 adres_rejestru = 4101 liczba_odczytywanych_wartości = 1 czytaj_od_najstarszych = 1 result, values = modbus.fp_read(adres_urzadzenia, adres_rejestru, liczba_odczytywanych_wartości, czytaj_od_najstarszych) if result == 0 then przeczytana_wartosc = values[1] else print("Błąd odczytu wartości. Kod błędu: ", result) end
--odczytujemy rejestr typu holding register zapisany jako wartość całkowita, bez znaku (32 bity uint long) adres_urzadzenia = 4 adres_rejestru = 4151 liczba_odczytywanych_wartości = 2 --2x słowo 16 bitów result, values = modbus.hr_read(adres_urzadzenia, adres_rejestru, liczba_odczytywanych_wartości) if result == 0 then przeczytana_wartosc = (values[1] * 0x10000) + values[2] else print("Błąd odczytu wartości. Kod błędu: ", result) end