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

Podobne dokumenty