Oprogramowanie SCADA LBX dla wszystkich urządzeń MODBUS (cz. 1)
M. Konieczny, P. Lenarcik, A. Łobzowski, W. Szkolnikowski
LAB-EL Elektronika Laboratoryjna S.J.
Artykuł publikowany w piśmie POMIAR nr 01/2011
Posiadacze wszystkich urządzeń Modbus, łączcie się przez SCADA LBX!
Kilka magazynów POMIAR wstecz, opisywaliśmy oprogramowanie, jakie
firma LAB-EL opracowała do obsługi swoich urządzeń i bardziej złożonych
systemów. Jednym, a właściwie głównym przedstawicielem grupy programów,
jest wspomniany w tytule program LBX. W pierwotnym założeniu, program
miał realizować funkcje akwizycji danych pomiarowych pobieranych z
przyrządów produkcji firmy LAB-EL oraz funkcje alarmowania w
przypadkach wystąpienia przekroczenia wartości granicznych wielkości
mierzonych. W okresie paru lat program był intensywnie doskonalony i
wzbogacany o nowe możliwości, np. tworzenie tzw. „ekranów użytkownika”,
znanych w automatyce jako obrazy synoptyczne procesów, obsługa urządzeń
produkcji innych firm, np. konwertery ethernetowe Moxa, modemy
GSM/GPRS, rozbudowanie modułu alarmowego, zapis pomiarów do dowolnej
bazy danych SQL, itp. Idąc naprzeciw potrzebie integracji systemów
opracowano i oprogramowano w LBX urządzenia zwane koncentratorami
danych, które przyjmują sygnały nie tylko pochodzące z czujników
produkowanych w firmie LAB-EL, ale również standardowe sygnały
analogowe prądowe (0/4…20mA, 0/2…10V), binarne (0/1, ON/OFF).
Kolejnym etapem rozwoju programu LBX jest otwarcie na standard MODBUS
RTU i MODBUS TCP/IP umożliwiający obsługę wszystkich urządzeń innych
producentów, wyposażających swoje urządzenia w taki standard i
interfejs RS-232, RS-485 lub Ethernet. Teraz wszyscy użytkownicy
urządzeń z obsługą protokołu Modbus mogą bez żadnych ograniczeń pobrać
program LBX ze strony www.label.pl i po prostu go używać!
Modbus RTU
Modbus jest protokołem komunikacyjnym opracowanym w 1979r
przez firmę Modicon. Został on zaimplementowany do obsługi programowej
sterowników PLC. Z czasem stał się przemysłowym standardem
komunikacyjnym do obsługi urządzeń obiektowych. Najbardziej
popularne spośród kilku rodzajów protokołu są Modbus RTU (ang.: Remote
Terminal Unit) oraz Modbus TCP/IP.
Wymiana informacji w sieci Modbus odbywa się na zasadzie pytanie –
odpowiedź, gdzie pytanie zadaje master, natomiast odpowiadają
urządzenia typu slave. W sieci Modbus może być tylko jedno urządzenie
typu master oraz do 247 urządzeń typu slave, z których każde ma swój
indywidualny adres z zakresu 1-247. Adres 0 jest wykorzystywany jako
adres rozgłoszeniowy, rozpoznawany przez wszystkie jednostki slave
podłączone do magistrali. Przesyłane rozkazy są zorganizowane w ramki,
te mają ściśle zdefiniowaną strukturę. Przykładowe ramki Modbus RTU i
TCP/IP przedstawione są w tabeli 1.
Ramka sieci Modbus zawiera adres urządzenia, kod funkcji, dane oraz
pole kontroli błędów. Są to szczegóły których użytkownik systemu nie
musi znać, za całość transmisji odpowiedzialne są urzą-dzenia oraz
oprogramowanie zapewniające także sygnalizację błędów. Dla typu
przesyłanej funkcji dostępne są numery 1-255, przy czym numery 128-255
zarezerwowano odpowiedź wyjątku. Przykładowymi rozkazami mogą być
odczyt zespołu rejestrów, odczyt statusu, zapis rejestrów w jednostce
slave itp., jednak w praktyce najważniejszymi są te umożliwiające zapis
oraz odczyt wartości rejestrów. Po otrzymaniu rozkazu urządzenie slave
odpowiada nową ramką zawierającą oczekiwane dane lub potwierdzenie
wykonania polecenia. W przypadku błędu zostaje zmieniony kod funkcji,
natomiast w polu danych zawarty jest odpowiedni kod wyjątku. Dla
rozkazów wysyłanych na adres rozgłosze-niowy 0, urządzenia slave nie
udzielają żadnej odpowiedzi.
Tabela 1
Ramka dla standardu Modbus RTU | Ramka dla standardu Modbus TCP/IP | ||||
---|---|---|---|---|---|
Nazwa | Długość | Funkcja | Nazwa | Długość | Funkcja |
Początek | 3.5T | Czas ciszy równy 3,5*czas transferu jednego znaku | Identyfikator transakcji | 2 bajty | Synchronizacja serwer/klient |
Adres | 1 bajt | Adres urządzenia | Identyfikator protokołu | 2 bajty | Zero dla MODBUS/TCP |
Kod funkcji | 1 bajt | Kod funkcji Modbus | Długość ramki | 2 bajty | Liczba bajtów w tej ramce |
Dane | n bajtów | Dane w zależności od rodzaju zmiennej np. Float, Integer, itp. | Adres urządzenia | 1 bajt | Adres urządzenia “slave” (255 w przypadku braku) |
CRC | 2 bajty | Suma kontrolna | Kod funkcji | 1 bajt | Kod funkcji Modbus |
Koniec | 3.5T | Czas ciszy równy 3,5*czas transferu jednego znaku | Dane | n bajtów | Dane lub komendy |
Różnice pomiędzy przedstawionymi ramkami są widoczne, a więc i
programowa ich obsługa musi być różna. Użytkownik powinien wiedzieć,
czy jego urządzenie obsługuje standard Modbus RTU czy też TCP/IP.
Oprócz tej wiedzy użytkownik powinien znać numerację rejestrów
zmiennych w swoim systemie oraz typ tych zmiennych Float, Integer, itd.
SCADA LBX
Program LBX jest potężnym narzędziem cały czas rozwijanym uwzględniając także propozycje i uwagami zgłaszane przez użytkowników, udostępniony dla szerszej gamy urządzeń dzięki możliwości dodania dowolnego urządzenia komunikującego się przez protokół Modbus.Także sam program LBX może być traktowany jako slave w sieci Modbus udostępniając mierzone dane na zewnątrz. Na rys. 1 przedstawiono przykładowy ekran programu LBX.
W drugiej części artykułu przedstawimy konfigurację programu LBX pod kątem obsługi protokołu Modbus, tworzenie baz danych, obsługę alarmów i konfigurację obrazów synoptycznych.