Pomimo faktu, iż większość producentów sterowników posiada w swojej ofercie również systemy SCADA, które można w łatwy sposób zintegrować we wspólnym projekcie często zachodzi potrzeba integracji w jednym systemie narzędzi programowych oraz sprzętowych różnych producentów. W takim przypadku komunikacja musi odbywać się za pomocą ogólnodostępnych standardów. Stosuje się wtedy oprogramowanie pośrednie np. typu OPC serwer lub protokół komunikacyjny obsługiwany przez poszczególnych partnerów komunikacyjnych. Niniejsza dokumentacja co prawda opiewa metodę komunikacji pomiędzy produktami firmy Siemens aczkolwiek może być również zastosowana w innych systemach gdzie występuje sterownik serii S7-1200 lub WinCC v7.0. Przyczyną utworzenia tego dokumentu jest fakt, iż ze względu na rozbieżność czasową powstania poszczególnych produktów system WinCC v7.0 nie posiada zintegrowanego kanału komunikacyjnego S7 dedykowanego dla sterowników serii S7-1200. Co za tym idzie jedyną metodą wymiany danych pomiędzy WinCC v7.0 a S7-1200 jest wykorzystanie standardowych protokołów komunikacyjnych lub serwera OPC podobnie jak dzieje się to w systemach gdzie występują komponenty wielu producentów. W tym drugim przypadku - w ofercie firmy Siemens znajdują się takie narzędzia jak prosty serwer OPC PC Access oraz potężne narzędzie komunikacyjne, które również posiada funkcjonalność OPC, a mianowicie Simatic NET. Wymiana danych z wykorzystaniem tych programów jest jak najbardziej zalecana, również dzięki temu, że system WinCC posiada zintegrowaną funkcjonalność zarówno serwera jak i klienta OPC. Jedyną wadą tego rozwiązania jest to iż nie jest to rozwiązanie bezpłatne. Jeśli zatem chcemy skonfigurować wymianę niewielkiej ilości danych pomiędzy WinCC a sterownikiem serii S7-1200 (a w przypadku tych sterowników zazwyczaj nie jest to duża ilość informacji) i nie chcemy ponosić dodatkowych kosztów - możemy zastosować ustandaryzowany protokół komunikacyjny. W nowszej wersji systemu WinCC v7.2, zaimplementowany został już kanał komunikacyjny dedykowany sterownikom serii S7-1200 oraz S7-1500. Często stosowanym protokołem w wymianie danych z systemami SCADA jest Modbus TCP. Jest to otwarty protokół komunikacyjny, służący do wymiany danych w sieciach TCP/IP. Protokół daje możliwość wymiany danych nawet pomiędzy 240 urządzeniami w jednej sieci. Dane użytkownika przesyłane w jednej ramce komunikacyjnej mogą zawierać nawet 250 bajtów. Protokół jest łatwy w konfiguracji i zaprojektowany z myślą o zastosowaniach typowo przemysłowych. WinCC w wersji 7.0 posiada zintegrowany kanał komunikacyjny Modbus TCP. Jest on zawarty w pakiecie podstawowym i nie wymaga dalszego licencjonowania. Podobnie jest w przypadku obsługi protokołu Modbus TCP od strony sterowników S7-1200 biblioteki komunikacyjne są bezpłatne oraz nie posiadają żadnych ograniczeń. W związku z tym komunikacja ta może zostać zrealizowana bez dodatkowych kosztów. W przypadku sterowników serii S7-1200 zawsze posiadamy zintegrowany interfejs Ethernet, także tutaj również nie będą wymagane żadne dodatkowe komponenty sprzętowe. Konfiguracja Kanał komunikacyjny Modbus TCP zawarty w zbiorze driverów WinCC jest przewidziany dla sterowników firmy Modicon (obecnie Schneider Electric) twórcy protokołu. W związku z tym konfiguracja nie jest intuicyjna, aczkolwiek nie jest również skomplikowana. Poniżej w kliku krokach przedstawiona zostanie konfiguracja funkcji komunikacyjnych od strony sterownika serii S7-1200, a także parametryzacja kanału komunikacyjnego Modbus TCP po stronie systemu WinCC v7.0. Doradztwo techniczne: simatic.pl@siemens.com 1
Konfiguracja funkcji mastera Modbus TCP dla sterownika S7-1200 Szczegółowy opis konfiguracji funkcji komunikacyjnych Modbus TCP dla sterownika serii S7-1200 można znaleźć w dokumencie Tworzenie projektu z protokołem Modbus TCP w S7-1200 PLC do pobrania na stronach wsparcia technicznego Simatic. W naszym jednak przypadku interesująca jest jedynie część służąca skonfigurowaniu sterownika jako mastera w sieci Modbus TCP, w celu udostępnienia danych z pamięci urządzenia. Funkcja działa w obie strony, a więc umożliwia również bezpośredni zapis informacji do PLC ze strony wizualizacji w zakresie udostępnionego obszaru pamięci. Pierwszym krokiem jest założenie nowego projektu w środowisku TIA Portal oraz utworzenie bloku danych, z którego będziemy udostępniać lub ewentualnie zapisywać do niego dane. Ważne jest aby blok danych był typu klasycznego czyli kompatybilny z S7-300/400 a nie zoptymalizowany. Przy tworzeniu DB należy więc zaznaczyć opcję Standard compatible with S7-300/400. Następnie w bloku danych możemy wpisać sobie kilka zmiennych, np. typu INT, które później będziemy wymieniać z wizualizacją przez protokół Modbus TCP. Należy zwrócić uwagę na fakt, iż w standardzie komunikacyjnym Modbus rejestry, czyli zmienne wymieniane podczas komunikacji rozumiane są jako typ danych 16- lyb 32-bitowych. Co za tym idzie zmienne typu Byte nie mogą być odczytywane bezpośrednio z poziomu WinCC przy późniejszej deklaracji zmiennych w kanale komunikacyjnym Modbus TCP, będziemy musieli deklarować zmienne jako dane od długości 16 lub 32 bity. W przypadku krótszych formatów, komunikacja nie działa poprawnie. Oczywiście dalsze przetworzenie zmiennej typu Word na zmienne krótsze jest możliwe po stronie wizualizacji, np. przez wykorzystanie prostych funkcji skryptowych, aczkolwiek należy mieć na względzie, iż komunikacja odbywa się poprze w/w typy. Najwygodniej będzie transferować bezpośrednio zmienne typów domyślnych. Więcej o wspieranych typach danych można odszukać w tematach pomocy systemu WinCC pod hasłem Modbus TCPIP. Kolejnym etapem od strony konfiguracji sterownika jest wywołanie funkcji komunikacyjnej. Konfiguracja jest bardzo prosta, gdyż sprowadza się do sparametryzowania jedynie jednego bloku komunikacyjnego - MB_MASTER znajdującego się w grupie funkcji Communication -> Communication processor -> Modbus TCP. Funkcję wywołać możemy bezpośrednio w głównym bloku programu sterownika - OB1. Po wstawieniu funkcji do programu sterownika automatycznie wygenerowany zostanie instancyjny blok danych MB_MASTER_DB. Poniżej przedstawiony został zrzut ekranu skonfigurowanej funkcji oraz opis poszczególnych parametrów. Doradztwo techniczne: simatic.pl@siemens.com 2
Parametr Typ Opis danych DISCONNECT Bool MB_SERVER próbuje nawiązać pasywne połączenie z partnerem. Oznacza to, że serwer jest w trybie pasywnym i nasłuchuje wywołania. Jeżeli DISCONNECT = 0 i połączenie jeszcze nie jest nawiązane, wtedy nowe połączenie może zostać zainicjowane Jeżeli DISCONNECT = 1 i połączenie jest nawiązane, wtedy połączenie jest przerwane. Pozwala to programowi kontrolować połączenie po jego nawiązaniu. Gdy parametr ma wartość 1, nie można zainicjować połączenia CONNECT_ID UInt Parametr ten identyfikuje unikalne połączenia wewnątrz PLC. Każdy unikalny blok danych funkcji MB_CLIENT lub MB_SERVER musi posiadać unikalny numer ID połączenia IP_PORT UInt Wartość domyślna = 502: Numer portu IP identyfikuje port IP który będzie monitorowany w celu wykrycia zapytania od klienta w sieci Modbus. Poniższe numery TCP portu nie są dozwolone dla pasywnego połączenia MB_SERVER :20, 21, 25, 80, 102, 123, 5001, 34962 oraz 34964 MB_HOLD_REG Variant Wskaźnik do rejestru pamięci serwera. Rejestr pamięci musi być blokiem danych o standardowym dostępie lub obszarem pamięci M. Ten obszar pamięci wykorzystywany jest do przechowywania danych, do których będzie miał dostęp klient w sieci Modbus używając odpowiednich funkcji. Bardziej zaawansowane parametry funkcji MB_MASTER można znaleźć w systemowo generowanym bloku danych typu Instance DB. W przykładzie parametr MB_HOLD_REG został ustawiony na wartość P#DB1.DBX0.0 WORD 10, czyli przestrzeń adresowa, którą będziemy wymieniać pomiędzy wizualizacją a sterownikiem stanowić będzie 20 bajtów z bloku danych DB1, poczynając od adresu 0.0. Wgrywamy projekt do sterownika ten etap zamyka konfigurację od strony PLC S7-1200. Doradztwo techniczne: simatic.pl@siemens.com 3
Konfiguracja kanału komunikacyjnego Modbus TCP w WinCC v7.0 Pierwszym krokiem od strony konfiguracji komunikacji w sieci Modbus TCP od strony WinCC jest dodanie do projektu nowego kanału komunikacyjnego Modbus TCPIP. Dodajemy nowe połączenie, a następnie standardowo parametryzujemy je w standardowy sposób, podając parametry sterownika serii S7-1200. W polu CPU type z rozwijanej listy możemy wybierać spośród rodzin sterowników Modicon (obecnie Schneider Electric), jako iż kanał ten dedykowany jest właśnie dla sterowników tego producenta twórcy protokołu Modbus. W przypadku komunikacji ze sterownikiem S7-1200 wybór rodziny 984 lub Compact/Quantum/Momentum jest zgodny ze strukturą danych w sterowniku Simatic, także w obu tych przypadków komunikacja powinna działać poprawnie. Pozostałe parametry jakie należy wprowadzić w konfiguracji połączenia ze sterownikiem to adres IP sterownika oraz port komunikacyjny, który wcześniej został wskazany w funkcji komunikacyjnej (w naszym przykładzie 502). Jeśli wykorzystywane jest połączenie mostowe pomiędzy sieciami Modbus należy podać adres stacji zdalnej w polu Address of remote slave w przeciwnym razie wartość powinna zostać ustawiona na 0 lub 255. Więcej informacji w tym temacie można odszukać w tematach pomocy WinCC pod hasłem Modbus TCPIP. W celu poprawnego odczytu zmiennych 32-bitowych należy zaznaczyć dodatkowo opcję Swap words in 32-bit values ze względu na specyfikę ustawienia bajtów w ogólnie rozumianych zmiennych w notacji stosowanej w produktach Siemens. Krokiem kończącym konfigurację od strony systemu WinCC jest dodanie do naszego połączenia zmiennych ze sterownika. Standardowo dodajemy więc nowe zmienne w kanele komunikacyjnym Modbus TCP/IP. Typ danych ustalamy zgodnie ze zmiennymi zadeklarowanymi wcześniej w bloku danych sterownika PLC, czyli 16-bitowy. Konwencja wyświetlania zmiennych ze znakiem czy bez nie ma tutaj znaczenia, oba typy interpretacji są dozwolone. Doradztwo techniczne: simatic.pl@siemens.com 4
W konfiguracji adresu zmiennej wskazujemy numer rejestru, który chcemy przypisać do tworzonej aktualnie zmiennej. Jako, iż w naszym bloku danych utworzyliśmy 10 zmiennych typu INT, i wysyłamy je w tym samym standardzie czyli w postaci 10 słów, co zostało określone na etapie parametryzacji funkcji MB_Master. W związku z tym do zaadresowania mamy 10 rejestrów, tzw. holding registers. Adresację podajemy poczynając od numeru funkcji 4x a kończąc na numerze rejestru. Zgodnie z tym schematem adres 400001 oznaczać, będzie pierwszą zmienną z naszego bloku danych DB1 (Zmienna_1), 400002 Zmienna_2, 400010 Zmienna_10, itd. Pozostaje więc umieścić odpowiednie obiekty graficzne na ekranie procesowym i podpiąć zadeklarowane zmienne oraz sprawdzić czy komunikacja działa poprawnie. Komunikacja ze sterownikiem S7-1200 w WinCC v7.2 nie wymaga już stosowania niestandardowych protokołów ze względu na to, iż został już przygotowany dedykowany kanał komunikacyjny dla sterowników serii S7-1200/1500. W starszych wersjach systemu nie ma jednak jeszcze bezpośredniej możliwości zestawienia takiego połączenia, dlatego wyżej opisana konfiguracja może okazać się bardzo pomocna. Powyższa dokumentacja została opracowana w oparciu o WinCC v7.0 SP3, TIA Portal V11 SP2 oraz sterownik serii S7-1200 v3.0. Doradztwo techniczne: simatic.pl@siemens.com 5