Konfiguracja sterownika S7
Ten poradnik ma na celu demonstrację procesu konfiguracji modułu Inveo LANtick ze sterownikami Siemens S7-300/S7-1200/S7-1500 przy użyciu protokołu Modbus TCP/IP.
Zaczynamy od stworzenia nowego projektu oraz wybrania sterownika – może to być dowolny sterownik z rodziny S71200/S71500 oraz wybrane modele S7300/S7400. W naszym przypadku będzie to jednostka 1511-1.
Zadbaj o to aby czytnik oraz sterownik znajdowały się w tej samej sieci.
W naszym przypadku będzie to:
- S7-1500 – IP: 192.168.0.10
- Moduł Inveo LANtick – IP: 192.168.0.2
Zaczynamy od stworzenia bloku funkcyjnego, w którym obsłużymy protokół komunikacyjny Modbus TCP/IP, w moim przypadku będzie się on nazywał “Modbus”. Po jego stworzeniu możemy go wywołać w “OB1”.
Następnym krokiem jest wywołanie bloku funkcyjnego MB_CLIENT wewnątrz bloku “Modbus”, który znajdziemy w zakładce “Communication” -> “Others”. Docelowo będziemy musieli użyć dwóch takich bloków – jeden do odczytu oraz drugi do zapisu rejestrów “Single Coils”. Na razie skupmy się na bloku do zapisu danych czyli do sterowania wyjściami.
Po wywołaniu bloku widoczne będą zaznaczone na czerwono wejścia na dane niezbędne do konfiguracji i nawiązania połączenia – bez ich wypełnienia program się nie skompiluje. Z tego względu musimy stworzyć blok danych z danymi konfiguracyjnymi.
Konfiguracja Modbus
W bloku tworzymy następujące zmienne:
“MbTCPClientRead” oraz “MbTCPClientWrite” to struktury do konfiguracji ustawień sieciowych. Zmienna “MbDisconnect” będzie służyła do rozłączania Modbusa.
Struktury należy wypełnić tak jak poniżej, parametr “InterfaceId” będzie zależał od sprzętowego identyfikatora sieci – można sprawdzić jego wartość wchodząc w ustawienia sterownika “properties” -> “System constants” w naszym przypadku to 64. Tablica “ADDR” to adres IP naszego czytnika, “RemotePort” to port komunikacyjny, 502 to standardowy port dla Modbus TCP/IP.
Stwórzmy kolejny blok, w którym przechowywać będziemy już dane do odczytu i zapisu rejestrów “Single Coils” przez Modbus.
Ważne aby blok, na którym będą wykonywane operacje odczytu i zapisu rejestrów był odpowiednio skonfigurowany. Musimy wyłączyć optymalizację bloku spowoduje to dodanie kolumny “offset” w bloku danych.
Operacje na rejestrach
Po skonfigurowaniu ustawień bloku należy stworzyć dwie tablice, jedna do obsługi wyjść druga do obsługi wejść. W moim przypadku nazywać się one będą “Outputs” oraz “Inputs” będą przechowywać po 4 elementy typu bool ponieważ korzystam z LANtick 4-4, w przypadku innych modeli LANtick tablice będą przechowywać po 2, 8 lub 16 elementów w zależności od ilość wejść/wyjść. Po utworzeniu tablicy “Outputs” możemy ją podłączyć do wejścia “MB_DATA_PTR” bloku “MB_CLIENT”. Jest to wskaźnik, który musimy przekazać w celu zapisu tych danych.
Następnym krokiem jest przypisanie stworzonych przez nas wcześniej zmiennych z bloków “ModbusConnect” oraz “ModbusData” do bloku “MB_CLIENT”. Należy pamietać o takich parametrach jak “MB_DATA_LEN” , “MB_DATA_ADDR” oraz “MB_MODE”
Wartość parametru “MB_DATA_LEN” zależna jest od ilości wyjść modułu. “MB_MODE” ustawiamy na wartość 1 – oznacza to tryb zapisu danych.
Ostatnim elementem potrzebnym do zakończenia konfiguracji bloku do zapisu danych jest podłączenie zegara do wejścia “REQ”. Ustawienie stanu wysokiego na wejście “REQ”
będzie powodowało wysłanie danych. Dane będą aktualizowane co 100ms – możesz dostosować częstotliwość zegara według własnych potrzeb.
Parametr “MB_DATA_ADDR” w przypadku bloku dla wyjść będzie wynosił 1 ze względu na to, że pierwsze w kolejności są rejestry do obsługi wyjść:
Konfiguracja zegarów
Jeżeli w swoim projekcie nie skonfigurowałeś zegarów sprzętowych to należy to zrobić aby uzyskać pożądany efekt.
W ramach przypomnienia, aby skonfigurować sprzętowe zegary należy wejść w “Properities” -> “System and clock memory” następnie trzeba aktywować checkbox “Clock memory bits” i ustawić początkowy Tag mapujący obszar zegarów w pamięci.
Blok do sterowania wyjściami został poprawnie skonfigurowany, teraz kilkoma prostymi krokami stworzymy drugi blok odczytu stanu wejść. Należy skopiować “MB_CLIENT” oraz przypisać w odpowiednie pola zmienne do odczytu danych.
Skopiuj blok do innego networka i podmień dane w polach “MB_DATA_PTR” oraz “CONNECT” odpowiednio na dane do odczytu. Ze względu na to, że blok będzie służył do odczytu danych należy zmienić tryb, czyli parametr “MB_MODE” na 0, który oznacza odczyt. Ostatnią operacją wymaganą do poprawnego odczytu danych przez Modbus jest ustawienie stanu zegara w polu “REQ”. Parametr “MB_DATA_ADDR” w tym przypadku przyjmuje wartość 5 ponieważ nasz LANtick ma 4 wyjścia, a pierwsze wejście jest na rejestrze następującym po ostatnim wyjściu czyli na rejestrze numer 5.
Konfiguracja modułu LANtick
Nadszedł czas na konfigurację modułu Inveo LANtick. Obsługa tego modułu odbywa się w całości przez wbudowany web server. W momencie kiedy łączymy się z czytnikiem pierwszy raz należy wpisać w przeglądarce jego domyślne IP: 192.168.111.15. Podczas tej operacji należy zadbać, aby nasza karta sieciowa znajdowała się w tej samej klasie co czytnik.
Po połączeniu się z czytnikiem zostaniemy zapytani o login oraz hasło, domyślne dane logowania to:
login – admin
hasło – admin00
Zaleca się, aby zmienić login oraz hasło tak, aby osoby nieupoważnione nie miały dostępu do zmiany konfiguracji urządzenia.
W przypadku wykorzystania naszej aplikacji Discoverer nasza karta sieciowa może znajdować się w innej podsieci.
Po zalogowaniu się do urządzenia wejdźmy w zakładkę “Network”. Zmieniamy domyślny adres IP czytnika na taki jakiego wymaga nasza aplikacja. Na początku założyliśmy, że będzie to 192.168.0.2. Po zapisaniu danych przyciskiem “Save” ustawienia sieciowe zostaną zapisane, a czytnik zrestartuje się.
Po konfiguracji sieci czytnika należy jeszcze tylko aktywować Modbus TCP/IP w zakładce “Administration”:
Test komunikacji
Po wykonaniu tych dwóch powyższych kroków na web serwerze czytnika powinniśmy być w stanie poprawnie przesyłać dane między urządzeniami. Po wgraniu softu do sterownika oraz wyświetleniu podglądu powinniśmy widzieć jak statusy bloków przełączają się co 100ms na wartości 7004 oraz 7006 co oznacza poprawną transmisję danych.
Tabela błędów
W przypadku problemów z nawiązaniem komunikacji pomiędzy urządzeniami należy sprawdzić statusy jakie otrzymujemy podczas próby odebrania/wysłania danych oraz przeanalizować je pod kątem tabeli błędów dostępnej poniżej:
Test wejść/wyjść
Działanie wejść oraz wyjść można przetestować korzystając z głównego panelu na web serwerze modułu LANtick.
Zakończenie
Jeżeli doszedłeś do tego kroku oznacza to, że poprawnie skonfigurowałeś moduł Inveo LANtick, gratulacje!