Jak skonfigurować sterowniki PLC Vision i Samba w celu ustanowienia komunikacji po MODBUS TCP/IP?
O czym tu przeczytasz?
Wpis ten opisuje kolejne działania podejmowane w celu konfiguracji komunikacji pomiędzy dwoma sterownikami PLC za pomocą protokołu MODBUS TCP/IP. Pokazano w nim, jak zaprogramować urządzenia od Unitronics do realizacji tego zadania, na przykładzie programu zapisującego wartość do zmiennej.
Przede wszystkim, wpis ten bazuje na kilku podstawowych informacjach o generowaniu zapytań MODBUS, które przedstawiono już w tej lekcji (link). Mimo, że dotyczy ona szeregowej komunikacji, zaleca się zapoznanie z nią. Powodem jest fakt, że pewne aspekty są wspólne dla konfiguracji protokołu MODBUS RTU i TCP/IP.
Używane zasoby
Podczas lekcji korzysta się z dwóch sterowników PLC serii Vision:
- V700-T20BJ - pełniącego rolę Master'a (dalej oznaczany jako "PLC-Master");
- V430-J-RH6 - który jest, w tym przypadku, urządzeniem typu Slave w sieci (nazywany dalej "PLC-Slave").
Modele V700 to jedyne sterowniki PLC serii Vision, które mają fabrycznie wbudowane porty Ethernet. Jako, że dla komunikacji Modbus TCP/IP przewody Ethernet stanowią medium transmisyjne, należy upewnić się, że obydwa sterowniki posiadają takie porty.
Sterownik PLC V430 nie posiada takiego portu, dlatego na potrzeby wpisu domontowano mu osobny port dedykowany dla produktów Unitronics.
V100-17-ET2 - Port Ethernetowy dla sterowników V130, V350, V430, V700, SAMBA
Wstępna konfiguracja PLC
W lekcji o komunikacji Ethernet pomiędzy PLC a VisiLogic (odnośnik), podano sposób, w jaki należy wstępnie skonfigurować takie połączenie. Jako, że na koniec wpisu nastąpi prezentacja rezultatów za pomocą programu Remote Operator, należy zainicjować karty Ethernet na każdym ze sterowników w sposób opisany w wyżej podlinkowanej lekcji.
Konfiguracje dokonane w tym przypadku, dla PLC-Master i PLC-Slave, przedstawione są niżej.
>
Wstępna konfiguracja karty Ethernet dla PLC-Master
Wstępna konfiguracja karty Ethernet dla PLC-Slave
Od teraz można się połączyć ze sterownikami PLC, na przykład poprzez Remote Operator, wykorzystując protokół TCP.
Ustanowienie komunikacji MODBUS TCP/IP dla obydwu PLC
Parametry połączenia MODBUS dla Master i Slave
Jak już wiesz z poprzedniej lekcji o MODBUS RTU, przed rozpoczęciem wysyłania zapytań MODBUS, należy dodać odpowiednie bloczki konfigurujące parametry tego połączenia.
Po pierwsze, należy zainicjalizować kolejny Socket na potrzeby połączenia MODBUS TCP/IP oraz dodać bloczek "MODBUS IP Configuration" - zakładka "FB's -> MODBUS IP".
W lekcji o ustanawianiu połączenia Ethernet, zamieszczono screen z plików pomocy VisiLogic, który obrazuje domyślne konfiguracje socket'ów dla PLC od Unitronics. Jednak każdą taką domyślną konfigurację można zmienić, za pomocą bloczka "Socket Init". W tym przypadku, dla sterownika PLC-Master skonfigurowano Socket 0 do komunikacji TCP na porcie 502, jako Master. Dla PLC-Slave dodano natomiast taką samą konfigurację, tyle że dla Socket'u 2 i w trybie Slave.
Na powyższych zdjęciach przedstawiono również ustawienia bloczków "MODBUS Configuration". Użytkownik definiuje dla nich kilka parametrów. Są to:
- numer wykorzystywanego socket'u do tej komunikacji (u nas : dla PLC-Master - Socket 0; dla PLC-Slave - Socket 2);
- ID urządzenia w sieci - dowolne unikalne od 1 do 255;
- na tym etapie nauki "Time out" i "Retries" można pozostawić niezmienione;
- ostatni parametr, to dobrze znany z lekcji o MODBUS RTU - bit "Function in Progress", informujący, czy w danej chwili jest realizowane jakieś zapytanie.
Dodatkowo, dla konfiguracji w programie PLC-Master, należy zdefiniować listę urządzeń typu Slave w sieci. W tym przypadku dodano jedno posiadane urządzenie. Wymagane informacje, to:
- adres IP jego karty Ethernet;
- port na danym urządzeniu Slave, który jest wykorzystywany do komunikacji MODBUS TCP/IP (zdefiniowany w bloczku "Socket Init" programu PLC-Slave);
- ID urządzenia Slave w sieci.
Uzupełnienie programu dla PLC-Slave
Podobnie jak dla lekcji o MODBUS RTU, tak i tutaj dokończenie programu dla PLC-Slave jest proste. Wystarczy dodać bloczek o nazwie "ScanEX", choć tym razem z zakładki "FB's -> MODBUS IP". Udostępnia on przechowywane wartości zmiennych dla zapytań nadchodzących od klientów MODBUS.
Dodatkowo, poprzedzono go w programie bloczkami typu "Direct Contact" z przypisanymi bitami systemowymi SB142 i SB145. Każdy ze sterowników PLC omawianych serii posiada zestaw zmiennych systemowych informujących o pracy sterownika. W tym przypadku bity te sygnalizują, czy:
- karta Ethernet dla PLC-Slave została zainicjalizowana;
- Socket 2 dla PLC-Slave jest zainicjalizowany.
Dzięki temu, udostępnianie wartości zmiennych następuje tylko, gdy odpowiednie zasoby są właściwie skonfigurowane.
Bloczek ScanEX w programie dla PLC-Slave
Ciąg dalszy programu dla PLC-Master
Diagnozowanie pracy sterownika V700
Zarówno w komunikacji MODBUS RTU, jak i MODBUS TCP, pisząc programy dla PLC, korzysta się z szeregu bitów informujących o stanie sterownika i jego komponentów. Sterownik Vision V700 jest wyjątkiem wśród PLC omawianych serii. Do niego nie odnosi się większość zmiennych systemowych pokazanych na przykład, na zdjęciu wyżej. Dla tego sterownika, w celu sprawdzania statusu pracy Socket'ów, istnieje specjalny bloczek "V700: Read Socket Status" (zakładka "Com -> TCP/IP").
Na jego wejście podaje się:
- numer Socket'u, który chcemy sprawdzić;
- pewną stałą wywołującą na wyjściu pojawienie się określonych wiadomości.
Do wyjścia przypisuje się zmienną MI, do której zostanie zapisana liczba całkowita, symbolizująca status danego Socket'u. Więcej o tym bloczku można przeczytać w plikach "Help" programu VisiLogic.
Sprawdzanie stanu pracy Socket'ow dla sterownika V700
Pliki Help w VisiLogic odnoszące się do sterownika V700 i obsługi Ethernet
Nawiązywanie połączenia z urządzeniem Slave
Protokół TCP to protokół połączeniowy, a to znaczy, że aby umożliwić wymianę danych pomiędzy dwoma urządzeniami, należy najpierw zainicjalizować odpowiednie połączenie.
W tym przypadku, połączenie będzie następować po wciśnięciu odpowiedniego przycisku na ekranie sterownika. Tak więc, do jego logiki należy dodać odpowiedni element typu "Positive Transition Contact (Rise)".
Zgodnie ze wszelkimi zaleceniami Producenta, zanim wywoła się bloczek, powodujący nawiązanie połączenia z danym Socket'em, należy umieścić kilka styków, przekazujących dalej sygnał o ile odpowiednie zasoby zostały zainicjalizowane.
Poniższe zdjęcie przedstawia poziom drabinki, który wywołuje połączenie z Socket'em sterownika, gdy:
- naciśnięto odpowiedni przycisk na HMI;
- karta Ethernet dla PLC-Master została zainicjalizowana;
- wskazany Socket (tutaj dla PLC-Master to Socket 0) jest zainicjalizowany do komunikacji TCP;
- nie jest obecnie wykonywane żadne zapytanie MODBUS (bit "Function in Progress" ma wartość niską).
Nawiązywanie połączenia z urządzeniem PLC-Slave - widok z programu dla PLC-Master
Jak widać na powyższym zdjęciu, do nawiązywania połączenia z urządzeniem Slave służy bloczek "Connect: TCP" (zakładka "Com -> TCP/IP"). Należy dla niego podać:
- Socket używany do tego połączenia (który należy do PLC-Master - tu: Socket 0);
- adres IP urządzenia Slave;
- port na którym urządzenie PLC-Slave oczekuje połączenia; dla PLC-Slave skonfigurowaliśmy wcześniej Socket 2 na porcie 502.
Generowanie zapytań zapisujących wartość do zmiennej w pamięci urządzenia Slave
Zalecany mechanizm generowania zapytania MODBUS, uwzględniający m.in bit "Function in Progress" został już przedstawiony w lekcji o MODBUS RTU.
W tym przypadku, podobnie jak wcześniej, zapytanie jest generowane po wciśnięciu odpowiedniego przycisku na HMI PLC-Master (choć w ogólności nie musi tak być). Następnie sprawdzane jest, czy na danym Socket'cie istnieje poprawnie nawiązane połączenie i czy żadna funkcja MODBUS nie jest obecnie wykonywana.
Na powyższym zdjęciu, po prawej, widać parametry jakie trzeba podać przy konfiguracji bloczka, zapisującego wartość do rejestru MODBUS. Używany bloczek znajduje się w zakładce "FB's -> MODBUS IP" i nosi nazwę "Preset Float Registers".
- Pierwszym z nich (od góry) jest docelowe urządzenie Slave, wybierane z listy uzupełnianej dla bloczka konfiguracyjnego MODBUS.
- Drugi "Slave: Start Of Vector", to natomiast adres docelowej zmiennej na urządzeniu PLC-Slave. W tym przypadku zapis następuje do zmiennej MF10. Sposoby adresowania zmiennych opisano już w poprzedniej lekcji o MODBUS RTU.
- Kolejny parametr to referencyjna wartość, która ma być zapisana - zmienna lub stała.
- Ostatni z parametrów wejściowych ("Preset: Vector Length") to ilość rejestrów do nadpisania. Zmienna MF zajmuje 32 bity, a to są dwa rejestry w pamięci PLC od Unitronics. Specyfikacje odnośnie zmiennych w VisiLogic dostępne są w plikach Help.
- Na wyjściu należy przypisać zmienne MI oraz DW przechowujące informacje na temat statusu zapytania, czy ilości sesji. Nie są one teraz szczegółowo omawiane.
Rozłączenie z urządzeniem Slave
Tak samo, jak można połączyć się ze zdalnym urządzeniem poprzez TCP, tak może również nastąpić rozłączenie - na przykład na żądanie operatora, po wciśnięciu przycisku na HMI.
Odpowiednią procedurę przedstawia zdjęcie poniżej. Podobnie jak we wszystkich przypadkach, uwzględnia ona sprawdzanie dodatkowych warunków, jak na przykład czy nie wykonuje się obecnie żadne zapytanie.
Bloczek zamykający połączenie TCP nosi nazwę "Close: TCP" i znajduje się w zakładce "Com -> TCP/IP". Należy dla niego wskazać jedynie numer Socket'u, na którym połączenie się zakończy.
Zamykanie połączenia w komunikacji MODBUS TCPIP dla programu PLC - Master
Informowanie na temat istniejącego połączenia TCP
Do naszego programu dla PLC będącego klientem można jeszcze dodać informację na temat istnienia połączenie po MODBUS TCP/IP na danym Socket'cie. Informację tą może przechowywać pojedynczy bit. Jego wartością można sterować w niżej przedstawiony sposób.
Wystarczy sprawdzać wartość zmiennej przechowującej status pracy Socket'u 0, wspomnianej w sekcji "Diagnozowanie pracy sterownika V700" tego wpisu. Zgodnie z informacjami z plików "Help", przy takim wywołaniu bloczka „V700: Read Socket Status”, jak u nas, zmienna ta przyjmie wartość 23, w przypadku gdy istnieje połączenie na Socket'cie 0.
Określenie statusu połączenia dla Socket 0 w programie PLC-Master
Przygotowanie ekranów HMI dla PLC Master i Slave
W tym przypadku, ekran HMI dla PLC-Master powinien zawierać następujące elementy:
- przyciski nawiązywania i zamykania połączenia na danym Socket'cie;
- dwustanowe pole tekstowe informujące o obecnym statusie połączenia ( zawierające napisy "CONNECTED"/"DISCONNECTED");
- pole dla referencyjnej wartości liczbowej z opcją podawania wartości z poziomu HMI;
- przycisk wywołujący zapis do zmiennej.
Dla PLC-Slave możemy się natomiast ograniczyć do pola wyświetlającego wartość odbieranej zmiennej.
Prezentacja rezultatów
Dlatego, że chcemy tu pokazać na raz dwa ekrany HMI sterowników PLC, skorzystamy z programu Remote Operator od Unitronics. Jego obsługa została już omówiona w tej lekcji (link).
W celu właściwego połączenia, należy użyć Socket'ów 1 skonfigurowanych na początku tego wpisu zarówno dla PLC-Master, jak i Slave na porcie 20256. Wszystkie pliki (projekty PLC w VisiLogic oraz projekt połączenia w Remote Operator) są dostępne do pobrania niżej.
Prezentacja komunikacji MODBUS TCP/IP
Podsumowanie
Ten wpis, mimo że dość obszerny, poruszył tylko podstawy łączności po MODBUS TCP/IP dla PLC od Unitronics. Powyższy prosty program pokazowy można modyfikować. Przede wszystkim, w programie VisiLogic, użytkownik może podawać parametry wejściowe do bloczków konfiguracyjnych w formie zmiennych. To z kolei pozwala, na przykład, na dynamiczny wybór urządzenia Slave, z którym chcemy się łączyć.
Należy pamiętać też, że w przypadku obecności w sieci więcej niż jednego klienta MODBUS, wygodnie jest dodać do programu dla PLC-Slave więcej niż jedną konfigurację dla protokołu MODBUS TCP/IP. Definiujemy wtedy dla niej osobny Socket, działający na osobnym porcie (np. 20257). Dodatkowo, umieszczamy następny element "ScanEX" w programie PLC-Slave i przypisujemy do niego właściwą konfigurację MODBUS (przy więcej niż jednym bloczku ScanEX, VisiLogic pyta się o ten parametr).
Po więcej przykładów możesz udać się na przykład na kanał YouTube Producenta.
Filmik instruktażowy producenta
Po więcej lekcji udaj się do strony startowej tego kursu.
Jeśli masz pytania, skontaktuj się z nami pod adresem e-mail: sterowniki@elmark.com.pl . Chętnie wysłuchamy również każdą konstruktywną krytykę na temat jakości tego kursu.
Skontaktuj się ze specjalistą Elmark
Masz pytania? Potrzebujesz porady? Zadzwoń lub napisz do nas!