W większości aplikacji panel HMI pełni rolę nadrzędną nad sterownikiem PLC i jest dla niego masterem komunikacyjnym. Jednakże czasami istnieje potrzeba, by to sterownik przejął kontrolę nad wymianą danych, a panel operatorski stał się slave’m. Z tego względu we wszystkich dostępnych modelach HMI, poza standardowymi ustawieniami komunikacji, dostępne są również te, w których panel ma za zadanie jedynie odpowiadać na zapytania wysyłane z zewnętrznego urządzenia.
W tym artykule postaram się przybliżyć sposób konfiguracji panela operatorskiego oraz sterownika tak, by to PLC zarządzało całością komunikacji między tymi urządzeniami.
W przedstawionym poniżej przykładzie sterownik będzie odczytywał wartość zmiennej $M0 (zmienna podtrzymywana w pamięci HMI) oraz zapisywał zmienną do rejestru $0.
Pierwszą czynnością, którą należy wykonać, jest ustawienie parametrów komunikacyjnych panela operatorskiego. W przypadku łączenia się poprzez RS232 lub RS485 należy, na odpowiednim porcie COM, wybrać w polu „Manufacturers”: Modbus oraz w polu „series”: ASCII(Slave) bądź RTU(Slave) – zależnie od sposobu komunikacji. Pozostałe ustawienia dotyczą samego połączenia poprzez Modbus i powinny być takie same jak te w sterowniku PLC. Całość ustawień została zaprezentowana na poniższej grafice:
Jeśli panel operatorski wyposażony jest w port ethernetowy można odczytywać (i zapisywać) z niego dane używając protokołu Modbus TCP/IP. W tym celu wystarczy ustawić podstawowe parametry sieci HMI w zakładce „LocalHost”. Komunikacja odbywa się wtedy poprzez domyślny port 502.
Każdy rejestr panela operatorskiego ma przyporządkowany komunikacyjny numer decymalny – w przypadku standardowej czterocyfrowej adresacji rejestrów należy wykorzystywać jedynie pierwsze 4 cyfry adresów zgodnie z poniższą tabelą:
UWAGA: W nowszych wersjach paneli nie wystepuje przesunięcie pomiędzy adresami Modbus, a rejestrami wewnętrznymi HMI. Przykładowo dla rejestru $M0 adres decymalny będzie wynosił 2000, dla $M1 będzie to 2001 itd.
Ostatnim krokiem jest odpowiednie ustawienie parametrów komunikacji PLC oraz zapisanie instrukcji do wymiany danych z HMI. Proces ten pokażę na przykładzie naszego sterownika serii slim, który komunikuje się z panelem przy pomocy RS485 (ustawienia HMI widoczne są na pierwszym obrazku niniejszego artykułu).
Ustawienia komunikacji RS485 dla PLC zostały pozostawione na wartościach domyślnych, tj. 9600, E, 1, ASCII oraz adres urządzenia wynoszący 1 (panel ma zmieniony adres komunikacyjny na wartość 2). Teraz wystarczy ustawić odpowiednio blok MODRW tworzący ramkę komunikacyjną, tak by odczytywał rejestr $M0 oraz nadpisywał $0 (w przypadku testowanego HMI nie występuje przesunięcie adresów – patrz uwaga pod tabelą adresową). Instrukcje uzupełniono zgodnie z poniższą grafiką, używając dla $M0 wartości 2000 (odczyt w buforze PLC w rejestrze D1296), a dla $0 wartości 0 (zapis wprost z rejestru D140):
W sterownikach PLC serii slim odczyt rejestrów po Modbus odbywa się do rejestrów buforowych D1296-D1311. Dlatego dla poprawnego odczytania danych zastosowano poniższy zapis: