Sterownik SIMATIC S7-200 gromadzi dane z przepływomierza SITRANS FM MAGFLO MAG 6000 za pomocą protokołu Modbus RTU
Michał Urliński - SIEMENS Industry Automation print
Współczesne urządzenia AKPiA, takie jak przepływomierze, umożliwiają oprócz lokalnego odczytu informacji pomiarowych również ich przesyłanie w postaci sygnału analogowego lub cyfrowego. W przypadku małych, bezobsługowych obiektów rozproszonych, jak przepompownie ścieków, korzystne jest zastosowanie urządzeń pomiarowych z cyfrowym protokołem komunikacyjnym i zgromadzenie, przetworzenie oraz ewentualne przesłanie lub zarchiwizowanie danych pomiarowych za pomocą sterownika PLC. Komunikację pomiędzy tymi urządzeniami najprościej można zrealizować za pomocą protokołu Modbus RTU.
Dalej przedstawiono sposób konfiguracji komunikacji za pomocą protokołu Modbus RTU oraz fragment programu umożliwiającego odczyt wartości z przepływomierza SITRANS FM MAGFLO z przetwornikiem MAG 6000 i kartą Modbus RTU ze sterownikiem SIMATIC S7-200. Wymagane komponenty do zrealizowania tego typu komunikacji to:
- sterownik SIMATIC S7-200 z dwoma portami RS-485 – na jednym porcie realizowana jest komunikacja Modbus RTU, na drugim można programować sterownik i podglądać on-line sposób działania programu lub też podłączyć lokalny panel operatorski
- komputer PC z zainstalowanym oprogramowaniem STEP 7-Micro/Win (wersja minimum to 4.0 SP5 z zainstalowanymi bibliotekami Modbus Master)
- przepływomierz SITRANS F M MAGFLO z przetwornikiem MAG 6000 i modułem komunikacyjnym Modbus RTU (RS-485)
- kabel Profibus - do komunikacji między przepływomierzem a sterownikiem S7-200.
W przykładowym zastosowaniu przepływomierz (z zainstalowaną kartą Modbus) został przyłączony za pomocą kabla PROFIBUS do portu 0 sterownika S7-200 (CPU 224XP). Do portu 1 za pomocą kabla PC/PPI (USB) został podłączony komputer PC (programator).
Zadaniem programu było odczytanie dwóch wartości z przepływomierza: aktualnego poziomu przepływu oraz wartości licznika całkowitego przepływu. Niezbędne było sparametryzowanie karty Modbus RTU w przepływomierzu, które można wykonać z poziomu lokalnego wyświetlacza LCD.
Należało ustawić podstawowe parametry sieci takie jak adres slave w sieci Modbus (w tym przypadku 4), szybkość transmisji: 9600 Bd, ustawienia parzystości (brak parzystości i 1 bit stopu). Dobrano również maksymalny czas odpowiedzi wynoszący 0,5 s oraz czas opóźnienia – 0,1 s. Powyższe ustawienia należało również uwzględnić podczas parametryzowania instrukcji MBUS_CTRL i MBUS_MSG użytych w programie sterownika.
W programie umieszczono trzy instrukcje związane z protokołem Modbus Master. Pierwsza z nich – MBUS_CTRL – inicjuje protokół i jest wywoływana w każdym cyklu programu (można to zrealizować, wstawiając na nóżkę „EN” adres SM0.0). Parametry Baud, Parity i Timeout (w ms) zostały ustawione zgodnie z wcześniejszymi nastawami przepływomierza. Błędy są zapisywane do pamięci MB1, a prawidłowa inicjalizacja protokołu jest sygnalizowana stanem wysokim bitu M0.0.
W programie uwzględniono odpowiednie opóźnienie czasowe pomiędzy wysyłanymi wiadomościami, dzięki czemu sterownik miał czas na odebranie odpowiedzi na wysłane zapytanie. W przykładowym programie wartość opóźnienia wynosi 6 s i została zaprogramowana za pomocą dwóch liczników (T37 i T38). Taki zabieg umożliwił płynny odczyt pożądanych wartości oraz bezbłędną transmisję.
Pierwsza wysyłana wiadomość MBUS_MSG ma za zadanie odczytać wartość aktualnego przepływu. Parametr Slave ustawiony na 4 określa adres slave – przepływomierza w sieci Modbus. Parametr RW ustawiony na 0 oznacza odczyt wartości. Parametr Addr jest ustawiony zgodnie z adresem rejestru „Modbus register”, do którego zapisywana jest wartość aktualnego przepływu.
W parametrze Count wpisano wartość 4, ponieważ zgodnie z danymi technicznymi karty Modbus przepływomierza właśnie w tylu bajtach zapisywane są informacje o przepływie. W parametrze DataPtr wpisano wskaźnik do pamięci w sterowniku S7-200, który wskazuje początek obszaru pamięci sterownika, do którego mają być zapisywane wartości przepływu. Ewentualne błędy wykonania instrukcji są zapisywane do pamięci MB3, a prawidłowa inicjalizacja protokołu jest sygnalizowana stanem wysokim bitu M0.1.
Kolejna instrukcja ma za zadanie odczytać wartość licznika całkowitego przepływu. Różnice w porównaniu do wcześniej przesyłanej wiadomości to adres rejestru Modbus (parametr Addr), z którego odczytywane będą aktualne wartości całkowitego przepływu na liczniku oraz wskaźnik do pamięci sterownika S7-200 (parametr DataPtr), w której będą zapisywane odczytane wartości.
Po wgraniu programu do sterownika S7-200 uzyskano możliwość podglądu aktualnego poziomu przepływu (pamięć VD200) oraz wartości licznika całkowitego przepływu (pamięć VD204). Wartości te są dostępne do odczytania w oknie Status Chart (rys. 2) w programie STEP 7-Micro/Win po wprowadzeniu w kolumnie Address powyższych adresów pamięci oraz po zmianie formatu wyświetlanych wartości na Floating Point. Dodatkowo wyświetlane wartości zostały przeskalowane za pomocą funkcji MUL_R i przepisane do pamięci odpowiednio VD300 i VD304. Dzięki temu odczyty wartości były identyczne jak na wyświetlaczu przepływomierza.
Komunikacja między sterownikiem SIMATIC S7-200 a przepływomierzem SITRANS FM MAGFLO z przetwornikiem MAG6000 podana została jako przykład. W równie prosty sposób można przygotować komunikację między przepływomierzem wyposażonym w kartę Modbus RTU a sterownikiem S7-1200 – nowością w rodzinie SIMATIC. Interfejs Ethernet wbudowany w jednostki CPU tego sterownika oraz dostawiony moduł komunikacyjny RS-485 zapewnią sprawny odczyt danych i przesłanie ich do systemów nadrzędnych.