Zmienne sieciowe mogą być używane do wymiany danych pomiędzy dwoma lub kilkoma sterownikami PLC. W oprogramowaniu WAGO-I/O-PRO oraz e!COCKPIT Network Variables używa warstwy transportowej protokołu UDP. Wartości zmiennych są wymieniane automatycznie w trybie broadcast. Protokół UDP nie gwarantuje dostarczenia datagramów, ale w przypadku Network Variables istnieje opcja „Acknowledgement” we właściwościach kanału, która pozwala na otrzymywanie odpowiedzi od drugiego sterownika/serwera.

Listy zmiennych należy przygotować w projekcie programu. Po wgraniu do sterowników, zmienne będą wymieniane automatycznie, gdy sterowniki zostanie ustawiony w tryb RUN. Istnieje możliwość stworzenia kilku list zmiennych sieciowych dla pojedynczego sterownika PLC. W związku z tym, że dane wymieniane są z wykorzystaniem telegramów typu broadcast, to jeden ze sterowników działa jako sender, a reszta sterowników w sieci jako reader (odbierający dane). Nie ma potrzeby implementacji bibliotek obsługujących protokół w programie głównym PLC, ale wymagane jest, aby listy zmiennych były zgodne we wszystkich sterownikach w sieci. W celu zmniejszenia możliwości pomyłki przy tworzeniu list w CODESYS istnieje możliwość eksportu listy zmiennych ze sterownika typu sender i importowanie jej w sterowniku typu reader.

Każda zdefiniowana lista zmiennych sieciowych posiada unikalny identyfikator listy, który nadawany jest przez użytkownika. tzw. COB-ID.

Protokół Network Variables (zmienne sieciowe) – komunikacja między wieloma sterownikami
Export i import plików zmiennych sieciowych

Zmienne sieciowe w WAGO-I/O-PRO

Poniższy przykład bazuje na dwóch sterownikach PFC200 750-8202 w środowisku WAGO-I/O-PRO (CODESYS 2.3). Jako medium komunikacyjne zastosowany jest przewód Ethernet CAT5.

Połączenie 2 sterowników PFC200 z wykorzystaniem przewodu Ethernet CAT5
Koncepcja wymiany danych dla dwóch sterowników PFC200 z wykorzystaniem protokołu Network Variables

Konfiguracja dla sterownika wysyłającego dane (sender)

Pierwszym krokiem jest utworzenie nowego projektu dla PLC odpowiedzialnego za wysyłanie zmiennych sieciowych.

Zaczniemy od sendera. Po skonfigurowaniu sterownika i nadaniu nazw symbolicznych dla obrazu procesu modułów WAGO, należy wejść w „Target Settings” i aktywować opcję obsługi protokołu Network Variables, zaznaczając opcję „Support Network Variables”. W polu „Name od supported network interfaces:” należy wpisać dużymi literami UDP!

Następnie klikamy prawym przyciskiem myszy na „Global Variables” i wybieramy „Add Object”.

Tworzenie nowej listy zmiennych globalnych

Po utworzeniu nowej listy zmiennych globalnych, nadajemy jej nazwę i klikamy w „Add network”.

Wyświetli się okno konfiguracji dla zmiennych sieciowych. Zaznaczamy opcję „Export before compile” i wybieramy ścieżkę do zapisu pliku eksportu na dysku komputera PC. Plik zapisze się z rozszerzeniem.exp. W polu „List identifier” (COB-ID) należy wpisać liczbę 1. Będzie to identyfikator listy. Domyślnie mamy zaznaczoną opcję „Read”, dlatego należy ją dezaktywować i zaznaczyć opcję „Write” – realizowane jest wówczas wysyłanie danych. Dodatkowo należy zaznaczyć opcję „Cyclic transmission”. W polu „Interval” można wpisać wartość T#50ms.

Przykładowa konfiguracja dla sterownika pracującego jako sender

Warto także zawęzić zakres adresów IP, do których będą wysyłane dane. Można to zrobić po kliknięciu w pole „Settings”.

Opis opcji dostępnych w oknie konfiguracji Network Variables

COB-ID – identyfikator listy zmiennych

Pack Variable – kompresja zmiennych do bloków o wielkości 256 bajtów. W przeciwnym razie zmienne są wysyłane pojedynczo. Opcja powinna być aktywna.

Request on bootup – w momencie restartu PLC jest wysyłane zapytanie o konkretną listę z określonym COB-ID (bez względu na ustawione warunki transmisji jak time, event). Wymagane jest jednak, aby stacja nadawcza miała zaznaczoną opcję Answer Bootup requests.

Transmit checksum – w deklaracji zmiennych jest wyliczana suma kontrolna.

Cyclic transmission – transmisja cykliczna listy zmiennych

Transmit on change – zmienne są zapisywane, gdy zmieni się ich wartość. Dzięki „Minimum gap” można ustalić minimalne opóźnienie czasowe, po którym przy zmianie jest wysyłana ta zmienna. Szczególnie w przypadku zmiennych typu REAL należy mieć na uwadze, że każda zmiana (choćby na 4 miejscu po przecinku) wywoła przesyłanie, co przy niewłaściwej konfiguracji tasków może zablokować wykonywanie programów. Zaleca się przycinanie wartości do np. dwóch miejsc po przecinku.

Transmit on event – zmienne są wysyłane, gdy wartość wskazanej zmiennej będzie ustawiona na TRUE.

Read/Write – dostęp do zmiennych (dla danych wysyłanych TYLKO Write)

Zawężenie zakresu adresów IP

Po wykonaniu wszystkich powyższych operacji trzeba zatwierdzić konfigurację klikając „ok”. W drzewie projektu, po lewej stronie zostanie utworzona lista zmiennych sieciowych. Następnie tworzymy dwie zmienne o nazwach: xPrzycisk oraz wNapiecie.

Tworzenie zmiennych przeznaczonych do wysłania

Lista zmiennych sieciowych jest gotowa do wysyłki. Teraz należy ją wyeksportować do pliku.

 

Lista zmiennych globalnych dla sender

Wykonaj kompilację projektu.

Kompilacja projektu

Dla przykładu napiszemy teraz krótki program, który wpisuje wartości do utworzonych zmiennych. Będzie to przepisanie wartości z wejścia analogowego do zmiennej wNapiecie oraz wartości z wejścia cyfrowego do zmiennej xPrzycisk. Należy pamiętać, że zmienne sieciowe działają prawidłowo dopiero po wywołaniu ich w programie głównym!

Krótki program wpisujący wartości do zdefiniowanych zmiennych sieciowych

Konfiguracja dla sterownika odbierającego dane (reader)

Tym razem tworzymy projekt dla odbierania zmiennych sieciowych (reader). Podobnie jak w projekcie „sender” należy uaktywnić usługę zmiennych sieciowych.

Aktywacja usługi Network Variables

Klikamy prawym przyciskiem myszy na Global Variables, następnie wybieramy „Add Object”.

Zaznaczamy opcję „Import before compile”, wybieramy „Browse”, a następnie wcześniej zapisaną listę zmiennych sieciowych (plik z rozszerzeniem.exp).

 

Importowanie listy zmiennych sieciowych do projektu
Konfiguracja dla sterownika odbierającego zmienne sieciowe

Po zatwierdzeniu pojawi się lista zmiennych przeznaczona do odbioru zmiennych sieciowych.

Lista zmiennych sieciowych przeznaczona do odbioru

Wgranie projektów do sterowników PFC200

Teraz pozostało tylko wgrać projekty do sterowników PFC200.

Aktywny program sender

W tym momencie, gdy oba programy są aktywne, zmienne powinny zostać odbierane w programie „reader”.

Aktywny program reader

Komunikacja z wieloma sterownikami

Przykład powyżej obrazuje, w jaki sposób wykonać prostą komunikację między dwoma sterownika. Protokół Network Variables umożliwia jednak komunikację między wieloma sterownikami. Obrazuje to poniższa grafika. Każdy sterownik w tym wypadku może pracować jako sender i równocześnie jako reader.

Koncepcja wymiany danych między wieloma sterownikami

Maciej Kurantowicz, WAGO.PL

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Zobacz również

Network Variables (zmienne sieciowe), cz. 2 – e!COCKPIT

Zaletą oprogramowania e!COCKPIT jest możliwość zarządzania wieloma sterownikami