1 Pomimo faktu, iż większość producentów sterowników posiada w
Transkrypt
1 Pomimo faktu, iż większość producentów sterowników posiada w
s FAQ: 00000053/PL Data: 9/04/2013 WinCC v7 – Wymiana danych ze sterownikiem serii S7-1200 poprzez protokół Modbus TCP 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. www.siemens.pl/simatic Doradztwo techniczne: [email protected] 1 s FAQ: 00000053/PL Data: 9/04/2013 WinCC v7 – Wymiana danych ze sterownikiem serii S7-1200 poprzez protokół Modbus TCP 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 S7300/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 16lyb 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. www.siemens.pl/simatic Doradztwo techniczne: [email protected] 2 s FAQ: 00000053/PL Data: 9/04/2013 WinCC v7 – Wymiana danych ze sterownikiem serii S7-1200 poprzez protokół Modbus TCP Parametr DISCONNECT Typ danych Bool Opis „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 CONNECT_ID UInt IP_PORT UInt MB_HOLD_REG Variant 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 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 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 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. www.siemens.pl/simatic Doradztwo techniczne: [email protected] 3 s FAQ: 00000053/PL Data: 9/04/2013 WinCC v7 – Wymiana danych ze sterownikiem serii S7-1200 poprzez protokół Modbus TCP 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. www.siemens.pl/simatic Doradztwo techniczne: [email protected] 4 s FAQ: 00000053/PL Data: 9/04/2013 WinCC v7 – Wymiana danych ze sterownikiem serii S7-1200 poprzez protokół Modbus TCP 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. www.siemens.pl/simatic Doradztwo techniczne: [email protected] 5