Ćwiczenie IT06 Komunikacja Modbus TCP SYSTEMY SCADA I PRZEMYSŁOWE BAZY DANYCH LABORATORIUM SYSTEMÓW STEROWANIA PRZEMYSŁOWEGO I AUTOMATYKI BUDYNKÓW KATEDRA ENERGOELEKTRONIKI I AUTOMATYKI SYSTEMÓW PRZETWARZANIA ENERGII WYDZIAŁ ELEKTROTECHNIKI, AUTOMATYKI, INFORMATYKI I INŻYNIERII BIOMEDYCZNEJ AKADEMIA GÓRNICZO-HUTNICZA Temat: Komunikacja ze sterownikami PLC protokołem Modbus TCP Narzędzia: Wonderware InTouch 10.x Cel: zapoznanie się ze sposobami komunikacji InToucha ze sterownikami PLC Program ćwiczenia: 1. W ramach tego ćwiczenia komunikacja będzie odbywać pomiędzy InTouchem a sterownikiem podłączonym do sieci Ethernet z wykorzystaniem protokołu Modbus TCP. Konfiguracja komunikacji pomiędzy InTouchem a sterownikiem PLC składa się z dwóch kroków: a. konfiguracji komunikacji pomiędzy programem komunikacyjnym dla protokołu Modbus TCP a samym sterownikiem PLC b. konfiguracji komunikacji pomiędzy programem komunikacyjnym a InTouch em 2. Zapoznać się z dokumentacją do sterownika komunikacyjnego Modbus TCP, dostępną w katalogu %ProgramFiles%\Wonderware\DAServer\DASMBTCP\Docs (zbiór DASMBTCP.chm), a w szczególności zapoznać się z rozdziałem Item Name. 3. Z pulpitu lub grupy programów Wonderware uruchomić System Management Console (SMC), a następnie rozwinąć foldery: DAServer Manager, Default Group, Local, ArchestrA.DASMBTCP, Configuration. Jeżeli istnieją dalsze podfoldery, usunąć je. 4. Z menu Configuration wybrać polecenie dodania obiektu TCPIP, a następnie z menu kontekstowego nowo utworzonego obiektu wybrać polecenie dodania obiektu ModbusPLC. 5. Na stronie właściwości obiektu ModbusPLC dostępna będzie konfiguracja dla sterownika PLC. Komunikacja z wieloma sterownikami PLC przy pomocy protokołu Modbus TCP polegałaby na utworzeniu osobnego obiektu ModbusPLC dla każdego sterownika, identyfikowanego przez jego adres IP. 6. Ustawić adres sterownika na w polu Network Address (podany podczas zajęć). Numer portu (502) jest standardowym numerem portu dla protokołu Modbus TCP. Ponieważ sterownik nie obsługuje rozszerzeń protokołu Modbus o struktury danych Concept, odznaczyć dwa pola związane z tymi strukturami danych.
7. W zakładce Device Groups utworzyć grupę o nazwie Topic_0, a w zakładce Device Items utworzyć wiersze zgodnie z następującą tabelą. W kolumnie Referencja, za x podstawić numer stanowiska (np. 400101 dla stanowiska nr 1). Skonfrontować z dokumentacją serwera MBTCP rozdział Register-Number Item Names. Nazwa (Name) Referencja (Item Reference) Typ rejestru SP 400x01 Holding PV 300x02 Analog Input CV 300x03 Analog Input Doplyw 400x04 Holding 8. Kliknąć w drzewie konfiguracji na ArchestrA.DASMBTCP i odpowiedzieć twierdząco na pytanie o aktualizację konfiguracji. 9. Przetestować komunikację ze sterownikiem. Uruchomić klienta OPC (OPC Quick Client) poprzez wyszukanie aplikacji z menu Start. Utworzyć w kliencie OPC nowe połączenie z serwerem ArchestrA.DASMBTCP.3, następnie utworzyć nową grupę i nowy punkt (Item), potwierdzić że zmienne SP, PV, CV i Doplyw mają wartości i jakość komunikacji ma status Good. Zamknąć klienta OPC. 10. Otworzyć projekt wizualizacji. W programie WindowMaker poprzez menu SpecialAccess Names... zdefiniować nazwę dostępu (ang. access name) o parametrach: a. AccessName: sterownik (jest to logiczny kanał komunikacyjny utworzony w InTouchu pomiędzy InTouch em a programem komunikacyjnym do sterownika Modbus TCP), b. Node Name: pozostawić puste (przyjęta zostanie lokalna nazwa komputera na którym znajduje się serwer ModbusTCP), c. Application/Server Name: DASMBTCP (nazwa aplikacji będącej serwerem danych - tu: program komunikacyjny dla protokołu Modbus TCP) d. Topic Name: Topic_0 (nazwa tematu w ramach komunikacji SuiteLink, taki sam temat musi być zdefiniowany zarówno w InTouch u jak i w programie komunikacyjnym) Which prococol to use: SuiteLink (nazwa protokołu komunikacyjnego) 11. Zdefiniować następujące zmienne (tagi) w InTouch u: Uwaga: Wszystkie poniższe zmienne należy przywiązać do nazwy dostępu sterownik Nazwa zmiennej (Tagname) Typ zmiennej (Type) Min Raw / Min EU Off Text Max Raw / Max EU On Text Punkt (Item) stan_zadany I/O Integer 0 100 SP stan_zbiornika I/O Integer 0 150 PV odplyw I/O Integer 0 100 CV doplyw I/O Integer 0 100 Doplyw IT06: Komunikacja ze sterownikami PLC protokołem Modbus TCP 2/5
Modbus_lic I/O Discrete OK brak $SYS$Licensed Modbus_KomOk I/O Discrete błąd OK $SYS$Status Modbus_ErrCode I/O Integer -65535 65535 $SYS$ErrorCode Modbus_ErrText I/O Message $SYS$ErrorText Modbus_ErrNum I/O Integer 0 2147483647 $SYS$ErrorCount Modbus_CzAkt I/O Integer 0 2147483647 $SYS$UpdateInterval Modbus_CzMaks I/O Integer 0 2147483647 $SYS$MaxInterval 12. Utworzyć nowe okno o nazwie Zbiornik Jest to okno pokazujące symulację zbiornika (np. zbiornika filtrującego wodę). Do zbiornika dopływa losowa ilość cieczy (ilość cieczy dopływającej podawana będzie w zakresie 0-100 jednostek). Operator może ustawiać poziom zadany cieczy w zbiorniku przy pomocy prostokąta realizującego wejście suwakowe (w zakresie 0-100 jednostek). Zbiornik mieści 100 jednostek cieczy. Sterownik PLC reguluje poziom w zbiorniku poprzez sterowanie otwarciem zaworu odpływowego (otwarcie podawane jest w zakresie 0-100 procent). Dodatkowo, prezentowane są zmienne stanu komunikacji udostępniane przez serwer komunikacyjny Modbus TCP. 2 5 4 3 1 Okno Zbiornik składa się z następujących obiektów i połączeń animacyjnych: a. Grupa 1 składa się ze (1) zbiornika (z zestawu Symbol Factory), (2) wizualizacji poziomu zbiornika obiektem z grupy "Tank Cutaways", Percent Fill->Vertical, Expression: stan_zbiornika Value at Max Fill=100, Max % Fill=100 Value at Min Fill=0, Min % Fill=0 Direction: Up (3) prostokąta służącego jako uchwyt suwaka do ustawiania poziomu zadanego: Sliders->Vertical, Expression: stan_zadany IT06: Komunikacja ze sterownikami PLC protokołem Modbus TCP 3/5
b. Grupa 2 z liczbowym przedstawieniem aktualnego poziomu zbiornika Value Display->Analog, Expression: stan_zbiornika oraz ustawianiem tagu stan_zadany połączeniem animacyjnym: Touch LinksUser InputsAnalog, Tagname: stan_zadany Min Value: 0, Max Value: 100 c. Grupa 3 składa się z (1) symbolu zaworu (nie animowanego), na którego górnej części nałożony jest (2) prostokąt prezentujący stopień otwarcia zaworu w postaci wypełnienia poziomego: Percent Fill->Horizontal, Expression: doplyw powyżej znajdują się teksty "Dopływ" i (3) "#", umożliwiający zadanie wartości zmiennej doplyw: User Inputs->Analog, Expression: doplyw d. Grupa 4 podobnie jak grupa 3: składa się z (1) symbolu zaworu (nie animowanego), na którego górnej części nałożony jest (2) prostokąt prezentujący stopień otwarcia zaworu w postaci wypełnienia poziomego: Percent Fill->Horizontal, Expression: odplyw powyżej znajdują się teksty "Odpływ" i (3) "#", umożliwiający zadanie wartości zmiennej doplyw: Value Display->Analog, Expression: odplyw e. Grupa 5 składa się z odpowiednich tekstów ułożonych na obiekcie typu WizardPanelsRaised Panel. Dla tagów typu Discrete, użyta jest animacja (tu dla przykładowego tagu Modbus_KomOk): Value Display->String, Expression: DText( Modbus_KomOk, Modbus_KomOk.OnMsg, Modbus_KomOk.OffMsg ) natomiast dla tagów typu Integer, użyta jest animacja Value Display->Analog. 13. Zdefiniować skrypt typu Application Script, który w czasie gdy aplikacja zostanie uruchomiona, będzie losowo generował wielkość dopływu wody do zbiornika. Aby to wykonać, wybrać z menu głównego opcję SpecialScriptsApplication Scripts... W edytorze wpisać nowy skrypt While Running, Every 1000 ms o następującej treści: rand=(149 * rand + 1) MOD 8191 +1; dopływ = 50 + 20* (rand/4096-1); 14. Po wpisaniu treści skryptu użyć przycisku Validate aby sprawdzić poprawność skryptu. 15. Zdefiniować zmienną rand typu Memory Integer o parametrach: Initial Value=60, Min Value=0, Max Value=8192. 16. Uruchomić aplikację i przetestować komunikację pomiędzy InTouch em a sterownikiem PLC. IT06: Komunikacja ze sterownikami PLC protokołem Modbus TCP 4/5
Co należy zapamiętać po wykonaniu tego ćwiczenia: Aby nadzorować stan komunikacji programu komunikacyjnego (mającego zdefiniowaną określoną nazwę dostępu) ze sterownikiem należy skonfigurować serwer komunikacyjny dla danego protokołu komunikacyjnego (DAS Data Acquisition Server) przy pomocy konsoli SMC (System Management Console). Serwery komunikacyjne oprócz zmiennych procesowych, udostępniają zmienne (punkty) systemowe służące do monitorowania parametrów komunikacji oraz umożliwiają również jej bieżącą konfigurację, jak np. bieżący okres cyklu odczytu zmiennych. Serwery (sterowniki) komunikacyjne są pośrednikiem pomiędzy protokołem sterownika PLC a protokołem "rozumianym" przez system SCADA, którym może być DDE, OPC lub w przypadku InToucha SuiteLink. Aby skonfigurować komunikację ze sterownikiem komunikacyjnym w InTouch'u, należy skonfigurować nazwę dostępu (Access Name) obejmującą grupę tagów (np. tagi z pojedynczego sterownika PLC) oraz pole Item poszczególnych tagów tak, aby odpowiadało poszczególnym zmiennym sterownika PLC. IT06: Komunikacja ze sterownikami PLC protokołem Modbus TCP 5/5