mFAQ.3.5.Komunikacja MODBUS RTU - Automatyka · PDF files s FAQ: 00000008/PL Data: 16/08/2007...

19
s FAQ: 00000008/PL Data: 16/08/2007 Komunikacja sterownika SIMATIC S7-200 w protokole Modbus RTU www.siemens.pl/simatic Doradztwo techniczne: [email protected] 1 Sterowniki SIMATIC S7-200 są dedykowane dla producentów maszyn oraz do budowy zdecentralizowanych struktur sterowania, budowanych w oparciu o przemyslowe sieci Ethernet, PROFIBUS, AS-Interface, Modbus RTU. W niniejszym dokumencie zostaly omówione biblioteki Modbus RTU Master i Modbus RTU Slave. Następnie opisano przykladowe zastosowania powyŜszych bibliotek: komunikacja z przeplywomierzem SITRANS F M MAGFLO MAG 6000 firmy Siemens, gdzie sterownik SIMATIC S7-200 pelni rolę Mastera sieci Modbus RTU oraz komunikacja pomiędzy dwoma sterownikami S7-200, gdzie jeden jest Masterem, a drugi Slave’em sieci Modbus RTU. Modbus RTU Slave Biblioteka Modbus RTU Slave zawiera niezbędne komponenty pozwalające sterownikowi SIMATIC S7-200, poprzez zintegrowane lącze komunikacyjne, komunikować się w protokole Modbus RTU w trybie Slave. Biblioteka Modbus RTU Slave sprzedawana jest oddzielnie i dostarczana na CD jako STEP 7-Micro/Win Add (numer katalogowy: 6ES7 830-2BC00- 0YX0). Wymagania protokolu Modbus Slave: Protokól Modbus Slave domyślnie wspólpracuje z portem „0” sterownika SIMATIC S7- 200 JeŜeli Port 0 wykorzystywany jest do komunikacji z protokolem Modbus Slave wtedy nie moŜna uŜyć go do innych celów, dotyczy to równieŜ programowania STEP7-Micro/Win. Instrukcja MBUS_INIT pozwala na sterowanie parametrami Portu 0 pozwalając na programową zmianę trybu pracy Portu 0 z protokolu Modbus Slave na PPI. Innym sposobem przelączenia Portu 0 do trybu PPI, jest przelączenie przelącznika RUN/STOP w poloŜenie STOP. Wtedy automatycznie Port 0, przelączany jest na protokól PPI. Instrukcje protokolu Modbus Slave wykorzystują rejestry systemowe SM związane z obslugą komunikacji w trybie swobodnym (Freeport) dla Portu 0. Do protokolu Modbus Slave uŜywa 3 podprogramy i 2 przerwania. Instrukcje Modbus Slave zajmują 1857 bajtów w przestrzeni programu. Zmienne obslugi protokolu Modbus Slave, rezerwują dodatkowe 779 bajtów pamięci V. Adres początkowy tego obszaru definiowany jest przez uŜytkownika i jest on zarezerwowany dla zmiennych protokolu Modbus. Inicjalizacja oraz obsluga protokolu Modbus. Komunikacja Modbus wykorzystuje sumę kontrolną (CRC - Cyclic Redundancy Check) w celu zapewnienia spójności przesylanych danych. Protokól Modbus Slave wykorzystuje metodę gotowej tabeli z wyliczonymi wstępnie wartościami sumy, co pozwala na znaczne obniŜenie czasu obslugi protokolu. Inicjalizacja tabeli CRC wymaga 425 milisekund i odbywa się w procedurze MBUS_INIT. Generalnie wykonywana jest ona przy pierwszym cyklu programowym po zalączeniu sterownika w tryb pracy RUN. Musimy zadbać jednak o to, aby wykasować czas kontroli cyklu programu tzw. Watchdog. Czas cyklu programu wydluŜa się, gdy instrukcja MBUS_SLAVE obsluguje zapytania. Powoduje to, Ŝe duŜo czasu poświęcane jest na obliczanie sumy CRC, co wydluŜa cykl o okolo 650 μs dla kaŜdego bajtu (dla zapytania i odpowiedzi). Maksymalnie, akcja zapytanie-odpowiedź (czytanie i zapis 120 slów) wydluŜa cykl programu o okolo 165 milisekund.

Transcript of mFAQ.3.5.Komunikacja MODBUS RTU - Automatyka · PDF files s FAQ: 00000008/PL Data: 16/08/2007...

Page 1: mFAQ.3.5.Komunikacja MODBUS RTU - Automatyka · PDF files s FAQ: 00000008/PL Data: 16/08/2007 Komunikacja sterownika SIMATIC S7-200 w protokole Modbus RTU Doradztwo techniczne: simatic.pl@siemens.com

ssss FAQ: 00000008/PL Data: 16/08/2007

Komunikacja sterownika SIMATIC S7-200 w protokole Modbus RTU

www.siemens.pl/simatic Doradztwo techniczne: [email protected] 1

Sterowniki SIMATIC S7-200 są dedykowane dla producentów maszyn oraz do budowy zdecentralizowanych struktur sterowania, budowanych w oparciu o przemysłowe sieci Ethernet, PROFIBUS, AS-Interface, Modbus RTU. W niniejszym dokumencie zostały omówione biblioteki Modbus RTU Master i Modbus RTU Slave. Następnie opisano przykładowe zastosowania powyŜszych bibliotek: komunikacja z przepływomierzem SITRANS F M MAGFLO MAG 6000 firmy Siemens, gdzie sterownik SIMATIC S7-200 pełni rolę Mastera sieci Modbus RTU oraz komunikacja pomiędzy dwoma sterownikami S7-200, gdzie jeden jest Masterem, a drugi Slave’em sieci Modbus RTU.

Modbus RTU Slave Biblioteka Modbus RTU Slave zawiera niezbędne komponenty pozwalające sterownikowi SIMATIC S7-200, poprzez zintegrowane łącze komunikacyjne, komunikować się w protokole Modbus RTU w trybie Slave. Biblioteka Modbus RTU Slave sprzedawana jest oddzielnie i dostarczana na CD jako STEP 7-Micro/Win Add (numer katalogowy: 6ES7 830-2BC00-0YX0). Wymagania protokołu Modbus Slave: • Protokół Modbus Slave domyślnie współpracuje z portem „0” sterownika SIMATIC S7-

200 • JeŜeli Port 0 wykorzystywany jest do komunikacji z protokołem Modbus Slave wtedy nie

moŜna uŜyć go do innych celów, dotyczy to równieŜ programowania STEP7-Micro/Win. Instrukcja MBUS_INIT pozwala na sterowanie parametrami Portu 0 pozwalając na programową zmianę trybu pracy Portu 0 z protokołu Modbus Slave na PPI. Innym sposobem przełączenia Portu 0 do trybu PPI, jest przełączenie przełącznika RUN/STOP w połoŜenie STOP. Wtedy automatycznie Port 0, przełączany jest na protokół PPI.

• Instrukcje protokołu Modbus Slave wykorzystują rejestry systemowe SM związane z obsługą komunikacji w trybie swobodnym (Freeport) dla Portu 0. Do protokołu Modbus Slave uŜywa 3 podprogramy i 2 przerwania.

• Instrukcje Modbus Slave zajmują 1857 bajtów w przestrzeni programu. • Zmienne obsługi protokołu Modbus Slave, rezerwują dodatkowe 779 bajtów pamięci V.

Adres początkowy tego obszaru definiowany jest przez uŜytkownika i jest on zarezerwowany dla zmiennych protokołu Modbus.

Inicjalizacja oraz obsługa protokołu Modbus. Komunikacja Modbus wykorzystuje sumę kontrolną (CRC - Cyclic Redundancy Check) w celu zapewnienia spójności przesyłanych danych. Protokół Modbus Slave wykorzystuje metodę gotowej tabeli z wyliczonymi wstępnie wartościami sumy, co pozwala na znaczne obniŜenie czasu obsługi protokołu. Inicjalizacja tabeli CRC wymaga 425 milisekund i odbywa się w procedurze MBUS_INIT. Generalnie wykonywana jest ona przy pierwszym cyklu programowym po załączeniu sterownika w tryb pracy RUN. Musimy zadbać jednak o to, aby wykasować czas kontroli cyklu programu tzw. Watchdog. Czas cyklu programu wydłuŜa się, gdy instrukcja MBUS_SLAVE obsługuje zapytania. Powoduje to, Ŝe duŜo czasu poświęcane jest na obliczanie sumy CRC, co wydłuŜa cykl o około 650 µs dla kaŜdego bajtu (dla zapytania i odpowiedzi). Maksymalnie, akcja zapytanie-odpowiedź (czytanie i zapis 120 słów) wydłuŜa cykl programu o około 165 milisekund.

Page 2: mFAQ.3.5.Komunikacja MODBUS RTU - Automatyka · PDF files s FAQ: 00000008/PL Data: 16/08/2007 Komunikacja sterownika SIMATIC S7-200 w protokole Modbus RTU Doradztwo techniczne: simatic.pl@siemens.com

ssss FAQ: 00000008/PL Data: 16/08/2007

Komunikacja sterownika SIMATIC S7-200 w protokole Modbus RTU

www.siemens.pl/simatic Doradztwo techniczne: [email protected] 2

Adresacja w protokole Modus RTU Slave Adresy w protokole Modbus są zapisywane jako 5-cio lub 6-cio znakowe wartości, zawierające typ danych i offset. Pierwszy lub dwa kolejne znaki określają typ danych, natomiast cztery ostatnie wybierają odpowiednią wartość danego typu. Urządzenie Modbus Master mapuje adresy dla odpowiedniej funkcji. Następujące adresy są obsługiwane przez instrukcje Modbus RTU Slave: • 000001 do 000128 obsługują wyjścia dyskretne dla Q0.0 – Q15.7 • 010001 do 010128 obsługują wejścia dyskretne dla I0.0 – I15.7 • 030001 do 030032 obsługują rejestry wejść analogowych od AIW0 do AIW62 • 040001 do 04xxxx obsługują rejestry z przestrzeni pamięci V. Mapa adresów Modbus dla S7-200:

Adres Modbus Adres S7-200 000001 Q0.0 000002 Q0.1 000003 Q0.2

… … 000127 Q15.6 000128 Q15.7 010001 I0.0 010002 I0.1 010003 I0.2

… … 010127 I15.6 010128 I15.7 030001 AIW0 030002 AIW2 030003 AIW4

… … 030032 AIW62 040001 HoldStart 040002 HoldStart+2 040003 HoldStart+4

… … 04xxxx HoldStart+2 x (xxxx-1)

Instrukcja MBUS_INIT Instrukcja MBUS_INIT wykorzystywana jest do ustawiania i inicjalizacji lub blokowania komunikacji Modbus. Przed wywołaniem instrukcji MBUS_SLAVE naleŜy wykonać instrukcję MBUS_INIT oraz funkcja ta musi zakończyć się bez błędów. Po poprawnym zakończeniu instrukcji MBUS_INIT ustawiane jest wyjście Done i program przechodzi do kolejnej instrukcji. Instrukcja wykonywana jest w kaŜdym cyklu w momencie, gdy wejście EN jest aktywne. Instrukcja MBUS_INIT powinna zostać wykonana tylko raz po załączeniu zasilania sterownika (np. za pomocą bitu SM0.1).

Page 3: mFAQ.3.5.Komunikacja MODBUS RTU - Automatyka · PDF files s FAQ: 00000008/PL Data: 16/08/2007 Komunikacja sterownika SIMATIC S7-200 w protokole Modbus RTU Doradztwo techniczne: simatic.pl@siemens.com

ssss FAQ: 00000008/PL Data: 16/08/2007

Komunikacja sterownika SIMATIC S7-200 w protokole Modbus RTU

www.siemens.pl/simatic Doradztwo techniczne: [email protected] 3

Biblioteka Modbus Slave wymaga ustalenia obszaru pamięci danych „V”, z którego będzie korzystała przy komunikacji w protokole Modbus. UŜytkownik musi ustalić adres startowy obszaru pamięci „V” tak, aby nie był on w konflikcie z innymi danymi korzystającymi z pamięci „V”. Aby przydzielić obszar pamięci „V” naleŜy prawym klawiszem myszy kliknąć Program Block i z menu kontekstowego wybrać polecenie Library Memory:

W okienku, które się otworzy naleŜy wskazać początkowy adres pamięci lub skorzystać z przycisku Suggest Address (rysunek poniŜej), dzięki czemu obszar pamięci zostanie automatycznie przydzielony. Po naciśnięciu przycisku OK wrócimy do okna programu.

PowyŜsze przydzielenie pamięci V moŜna wykonać zaraz po wstawieniu do programu bloku inicjującego MBUS_INIT. Jednak ze względu na moŜliwość wystąpienia konfliktów z uŜytymi w programie adresami pamięci V zaleca się przydzielanie tej pamięci po napisaniu całego programu.

Page 4: mFAQ.3.5.Komunikacja MODBUS RTU - Automatyka · PDF files s FAQ: 00000008/PL Data: 16/08/2007 Komunikacja sterownika SIMATIC S7-200 w protokole Modbus RTU Doradztwo techniczne: simatic.pl@siemens.com

ssss FAQ: 00000008/PL Data: 16/08/2007

Komunikacja sterownika SIMATIC S7-200 w protokole Modbus RTU

www.siemens.pl/simatic Doradztwo techniczne: [email protected] 4

W programie, w którym chcemy skonfigurować komunikację w protokole Modbus RTU Slave naleŜy wstawić blok inicjujący MBUS_INIT oraz blok MBS_SLAVE.

• Wejście Mode określa protokół komunikacyjny: wartość 1 ustawia Port 0 na obsługę

protokołu Modbus, natomiast wartość 0 ustawia ponownie Port 0 na protokół PPI i blokuje protokół Modbus.

• Parametr Baud ustawia prędkość transmisji na 1200, 2400, 4800, 9600, 38400, 57600

lub 115200. Prędkości 57600 oraz 115200 obsługiwane są tylko przez CPU z wersją firmware’u V1.2 i późniejszymi

• Parametr Addr ustawia adres z zakresu 1 do 247 stacji Slave Modbus. • Parametr Parity określa parzystość protokołu Modbus. Wszystkie ustawienia uŜywają

jeden bit stopu. Dopuszczalne wartości tego parametru to: - 0 – bez parzystości - 1 – parzystość odd - 2 – parzystość even

• Parametr Delay rozszerza standardowy czas przerwy po zakończeniu nadawania przez dodanie określonej liczby milisekund do standardowego czasu timeout. Typowo wartość ta ustawiana jest na 0 dla połączeń kablowych. Jednak przy połączeniu przez modemy z korekcją błędów naleŜy ustawić wartość opóźnienia od 50 do 100 milisekund. Stosując połączenia radiowe naleŜy ustawić czas ten w zakresie od 10 do 100 milisekund. Dopuszczalne wartości tego parametru mieszczą się w zakresie 0 - 32767 milisekund.

Page 5: mFAQ.3.5.Komunikacja MODBUS RTU - Automatyka · PDF files s FAQ: 00000008/PL Data: 16/08/2007 Komunikacja sterownika SIMATIC S7-200 w protokole Modbus RTU Doradztwo techniczne: simatic.pl@siemens.com

ssss FAQ: 00000008/PL Data: 16/08/2007

Komunikacja sterownika SIMATIC S7-200 w protokole Modbus RTU

www.siemens.pl/simatic Doradztwo techniczne: [email protected] 5

Protokół Modbus Slave pozwala na ograniczenie ilości wejść i wyjść binarnych, wejść analogowych i rejestrów V dostępnych dla Mastera Modbus. • Parametr MaxIQ ustawia ilość dostępnych wejść (I) i wyjść (Q) dla adresów Modbus

00xxxx oraz 01xxxx przez podanie wartości liczbowej z zakresu 0 do 128. Wartość 0 blokuje odczyt i zapis z wejść i na wyjścia. Sugerowana wartość to 128, która obejmuje zakres wszystkich wejść (I) i wyjść (Q) w sterownikach S7-200.

• Parametr MaxAI ustawia ilość dostępnych słów wejść analogowych (AI) dla adresów

Modbus 03xxxx przez podanie wartości liczbowej z zakresu 0 do 32. Wartość 0 blokuje odczyt wejść analogowych. Sugerowana wartość MaxAI, pozwalająca na odczyt wszystkich wejść analogowych w sterownikach S7-200, wynosi: - 0 dla CPU 221 - 16 dla CPU 222 - 32 dla CPU 224, CPU 224XP oraz CPU 226

• Parametr MaxHold ustawia ilość rejestrów (słów) w obszarze pamięci V dostępnych dla adresów 04xxxx. Np., aby udostępnić Masterowi 2000 bajtów pamięci V naleŜy ustawić MaxHold na wartość 1000 słów (rejestrów buforujących).

• Parametr HoldStart ustawia adres początkowy rejestrów (słów) w obszarze pamięci V.

Wartość ta zasadniczo ustawiana jest na VB0, tak więc parametr HoldStart ustawiany jest na &VB0 (adres VB0). RównieŜ inne adresy obszaru V moŜna wyspecyfikować jako adres początkowy. Master ma dostęp do ilości rejestrów (słów) podanej w MaxHold od adresu początkowego HoldStart.

Po zakończeniu instrukcji MBUS_INIT ustawiane jest wyjście Done . Wyjście bajtowe Error zawiera rezultat wykonania instrukcji. Tabela poniŜej definiuje warunki wygenerowania błędu przy wykonywaniu instrukcji.

Kod bł ędu Opis 0 Bez błędu 1 Błąd zakresu pamięci 2 Błędna prędkość transmisji lub parzystość 3 Błąd adres Slave 4 Błąd wartości parametrów Modbus 5 Rejestry pokrywają się z symbolami Modbus Slave 6 Odbiór błąd parzystości 7 Odbiór błąd CRC 8 Błędna funkcja/funkcja nie obsługiwana 9 Błędny adres w zapytaniu

10 Funkcja nie dostępna w Slave

Page 6: mFAQ.3.5.Komunikacja MODBUS RTU - Automatyka · PDF files s FAQ: 00000008/PL Data: 16/08/2007 Komunikacja sterownika SIMATIC S7-200 w protokole Modbus RTU Doradztwo techniczne: simatic.pl@siemens.com

ssss FAQ: 00000008/PL Data: 16/08/2007

Komunikacja sterownika SIMATIC S7-200 w protokole Modbus RTU

www.siemens.pl/simatic Doradztwo techniczne: [email protected] 6

Instrukcja MBUS_SLAVE Instrukcja MBUS_SLAVE uŜywana jest do obsługi zapytań od Mastera Modbus i musi być wykonywana w kaŜdym cyklu, aby zapewnić poprawność odpowiedzi.

Instrukcja wykonywana jest w kaŜdym cyklu, gdy aktywne jest wejście EN i nie ma parametrów wejściowych. Wyjście Done ustawiane jest w momencie wykonania odpowiedzi na zapytanie stacji Master. Natomiast wyjście to ma stan niski, jeŜeli nie było obsługiwane Ŝadne zapytanie. Wyjście bajtowe Error zawiera rezultat wykonania instrukcji. Wyjście to jest waŜne tylko w momencie, gdy wyjście Done jest ustawione. W przeciwnym wypadku parametr ten nie jest zmieniany. MoŜliwe wartości parametru Error są identyczne jak dla instrukcji MBUS_INIT.

Modbus RTU Master

Firma Siemens przygotowała bibliotekę, która pozwala poprzez zintegrowane złącze komunikacyjne sterownika SIMATIC S7-200 komunikować się w protokole Modbus RTU Master z jednym lub wieloma urządzeniami pracującymi jako Modbus RTU Slave. Wymagania biblioteki Modbus Master • Protokół Modbus Master odwołuje się do Portu 0 lub Portu 1 sterownika S7-200. W

przypadku, gdy Port 0 jest wykorzystany do komunikacji w Modbus Master, port ten nie moŜe być uŜyty do innych celów włącznie z obsługą programu narzędziowego STEP7-Micro/Win. Funkcja MBUS_CTRL przyporządkowuje Port 0 do protokołu Modbus Master lub PPI

• Biblioteka Modbus Master odwołuje się do bajtów systemowych SM przyporządkowując tryb Free Port do Portu 0 sterownika SIMATIC S7-200

• Biblioteka Modbus Master wykorzystuje 3 podprogramy oraz 1 program przerwania • Biblioteka Modbus Master zajmuje ok. 1620 bajtów pamięci programu sterownika

SIMATIC S7-200 • Biblioteka Modbus Master zajmuje 284 bajtów pamięci danych V. Istnieje moŜliwość

wyboru adresu początkowego dla zmiennych • SIMATIC S7-200 CPU musi posiadać wersję firmware 2.00 lub wyŜszą w celu obsługi

protokołu Modbus Master (CPU o numerach katalogowych: 6ES7 21x-2xx23-0XB0).

Page 7: mFAQ.3.5.Komunikacja MODBUS RTU - Automatyka · PDF files s FAQ: 00000008/PL Data: 16/08/2007 Komunikacja sterownika SIMATIC S7-200 w protokole Modbus RTU Doradztwo techniczne: simatic.pl@siemens.com

ssss FAQ: 00000008/PL Data: 16/08/2007

Komunikacja sterownika SIMATIC S7-200 w protokole Modbus RTU

www.siemens.pl/simatic Doradztwo techniczne: [email protected] 7

• Przerwania, które są wykorzystywane w bibliotece Modbus Master, nie mogą być wyłączone przez program uŜytkownika

Czasy wykonywania instrukcji w protokole Modbus Mas ter Protokół Modbus Master wymaga krótkich czasów wykonywania instrukcji. Czas wykonania instrukcji protokołu Modbus Master wynosi około 1.11 ms w przypadku gdy instrukcja MBUS_CTRL inicjalizuje komunikację (pierwszy cykl pracy) oraz 0.41 ms w kolejnych cyklach pracy sterownika SIMATIC S7-200. Czas wydłuŜa się w przypadku gdy wykonywana jest instrukcja MBUS_MSG. Większość tego czasu jest uŜywana na obsługę korekcji błędów CRC (Cyclic Redundancy Check) związaną z zapytaniem i odpowiedzią sterownika. Czas cyklu jest wydłuŜany do 1.85 ms dla kaŜdego słowa w zapytaniu i odpowiedzi. Maksymalny czas zapytania i odpowiedzi (odczyt/zapis 120 słów) wydłuŜa czas cyklu do 222 ms. Adresowanie w protokole Modbus Adresy w protokole Modbus są zapisywane jako 5 znakowe wartości zawierające typ danych oraz przesuniecie – offset. Pierwszy znak definiuje typ danych zaś kolejne cztery wartość z uwzględnieniem typu danej. Instrukcje protokołu Modbus Master w zaleŜności od zakresu adresu odwołują się do odpowiednich rejestrów sterownika pracującego w trybie Slave. Protokół Modbus Master obsługuje następujące zakresy adresów: • 00001 do 09999 wyjścia binarne (cewki) • 10001 do 19999 wejścia binarne (styki) • 30001 do 39999 wejściowe rejestry (generalnie wejścia analogowe) • 40001 do 49999 rejestry pamięci. Zakres dostępnych adresów jest uzaleŜniony od typu konkretnego urządzenia Slave. RóŜne urządzenia Slave obsługują róŜne typy danych oraz róŜne zakresy adresów. Instrukcja MBUS_CTRL Instrukcja MBUS_CTRL (MBUS_CTRL_P1) słuŜy do inicjalizacji, monitorowania lub wyłączenia komunikacji Modbus i powinna być wywoływana w kaŜdym cyklu pracy sterownika. Zanim instrukcja MBUS_MSG zostanie uŜyta, instrukcja MBUS_CTRL musi zostać wykonana bezbłędnie, tzn. po jej wykonaniu powinien być ustawiony bit Done . Instrukcja jest przetwarzana za kaŜdym cyklem o ile jest aktywny bit EN. Biblioteka Modbus Master wymaga ustalenia obszaru pamięci danych „V”, z którego będzie korzystała przy komunikacji w protokole Modbus. UŜytkownik musi ustalić adres startowy obszaru pamięci „V” tak, aby nie był on w konflikcie z innymi danymi korzystającymi z pamięci „V”. Aby przydzielić obszar pamięci „V” naleŜy po napisaniu programu prawym klawiszem myszy kliknąć Program Block i z menu kontekstowego wybrać polecenie Library Memory:

Page 8: mFAQ.3.5.Komunikacja MODBUS RTU - Automatyka · PDF files s FAQ: 00000008/PL Data: 16/08/2007 Komunikacja sterownika SIMATIC S7-200 w protokole Modbus RTU Doradztwo techniczne: simatic.pl@siemens.com

ssss FAQ: 00000008/PL Data: 16/08/2007

Komunikacja sterownika SIMATIC S7-200 w protokole Modbus RTU

www.siemens.pl/simatic Doradztwo techniczne: [email protected] 8

W okienku, które się otworzy naleŜy wskazać początkowy adres pamięci lub skorzystać z przycisku Suggest Address (rysunek poniŜej), dzięki czemu obszar pamięci zostanie automatycznie przydzielony. Po naciśnięciu przycisku OK wrócimy do okna programu.

PowyŜsze przydzielenie pamięci V moŜna wykonać zaraz po wstawieniu do programu bloku inicjującego MBUS_CTRL (dla portu 0) lub MBUS_CTRL_P1 (dla portu 1). Jednak ze względu na moŜliwość wystąpienia konfliktów z uŜytymi w programie adresami pamięci V zaleca się przydzielanie tej pamięci po napisaniu całego programu. W programie, w którym chcemy skonfigurować komunikację w protokole Modbus RTU Master naleŜy wstawić blok inicjujący MBUS_CTRL lub MBUS_CTRL_P1 (w zaleŜności od portu, na którym chcemy uŜywać protokołu Modbus RTU Master) oraz blok MBUS_MSG (MBUS_MSG_P1 dla portu 1) słuŜący do odpytywania urządzenia Slave.

Page 9: mFAQ.3.5.Komunikacja MODBUS RTU - Automatyka · PDF files s FAQ: 00000008/PL Data: 16/08/2007 Komunikacja sterownika SIMATIC S7-200 w protokole Modbus RTU Doradztwo techniczne: simatic.pl@siemens.com

ssss FAQ: 00000008/PL Data: 16/08/2007

Komunikacja sterownika SIMATIC S7-200 w protokole Modbus RTU

www.siemens.pl/simatic Doradztwo techniczne: [email protected] 9

• Wartość na wejściu Mode dokonuje wyboru protokołu komunikacyjnego. Wartość „1”

przyporządkowuje dla portu 0 protokół Modbus. Wartość 0 ustala na porcie 0 protokół PPI, tym samym wyłącza Modbus.

• Parametr Baud ustala prędkość komunikacji: 1200, 2400, 4800, 9600, 19200, 38400,

57600 lub 115200 bitów/s. • Parametr Parity ustala kontrolę parzystości dla urządzenia Slave. Sztywno jest ustalony

jeden bit startu oraz jeden bit stopu. Dla parametru Parity dostępne są następujące wartości: - 0 – bez kontroli parzystości - 1 – parzystość - 2 – nieparzystość

• Parametr Timeout jest odpowiedzialny za ustawienie czasu odpowiedzi (w milisekundach) od urządzenia typu Slave. Parametr moŜe być ustawiany w zakresie od 1 do 32767 milisekund. Wartość standardowa to 1000 milisekund (1 sekunda). Parametr Timeout naleŜy ustalić tak, aby urządzenie typu Slave zdąŜyło odpowiedzieć na zapytanie, przy ustalonej prędkości komunikacyjnej.

• Wyjście Error zawiera informację o wystąpieniu błędu w przetwarzaniu instrukcji

MBUS_CTRL. MoŜliwe są następujące wartości parametru Error:

Kod bł ędu Opis 0 Bez błędu 1 Błąd parzystości 2 Błąd wyboru prędkości komunikacji 3 Błąd czasu odpowiedzi Timeout 4 Błąd wyboru trybu pracy

Uwaga! Parametry Baud, Parity i Timeout powinny mieć taką samą wartość w ustawieniach urządzenia Slave i w powyŜszej instrukcji.

Page 10: mFAQ.3.5.Komunikacja MODBUS RTU - Automatyka · PDF files s FAQ: 00000008/PL Data: 16/08/2007 Komunikacja sterownika SIMATIC S7-200 w protokole Modbus RTU Doradztwo techniczne: simatic.pl@siemens.com

ssss FAQ: 00000008/PL Data: 16/08/2007

Komunikacja sterownika SIMATIC S7-200 w protokole Modbus RTU

www.siemens.pl/simatic Doradztwo techniczne: [email protected] 10

Instrukcja MBUS_MSG Instrukcja MBUS_MSG inicjuje zapytanie oraz odpowiedź z urządzenia Slave. Instrukcja MBUS_MSG wykonuje proces zapytania do urządzenia Slave, jeŜeli na obu wejściach EN oraz First podana jest jedynka logiczna. Proces wysłania i oczekiwania na odpowiedź wymaga wykonania kilku cykli programu. Wejście EN musi być aktywne aŜ do momentu, gdy wyjście Done zostanie ustawione. W danym momencie moŜe być aktywna tylko jedna instrukcja MBUS_MSG. JeŜeli będą uruchomione inne instrukcje to tylko pierwsza z nich zostanie wykonana, pozostałe zwrócą błędy wykonania (kod błędu 6 – zajęty kanał komunikacyjny). Parametr First powinien być aktywny tylko przez jeden cykl pracy, najlepiej do tego celu wykorzystać instrukcje wykrywania zbocza narastającego.

• Parametr Slave określa adres urządzenia Slave. Dostępne są adresy od 0 do 247. Adres

0 jest adresem rozgłoszeniowym i moŜe być uŜyty do celów zapisu. Nie wszystkie urządzenia typu Slave obsługują adresy rozgłoszeniowe. Biblioteka Modbus Slave dla SIMATIC S7-200 nie obsługuje adresów rozgłoszeniowych. Uwaga! W ustawieniach urządzenia Slave naleŜy ustawić taki sam adres urządzenia jak w powyŜszej instrukcji.

• Parametr RW ustala czy zapytanie ma słuŜyć do odczytu (wartość 0) czy teŜ do zapisu (wartość 1). Wyjścia binarne (cewki) oraz rejestry obsługują oba zapytania - zapis i odczyt. Wejścia binarne (styki) oraz wejściowe rejestry obsługują tylko odczyt.

• Parametr Addr jest adresem startowym. Dostępne są następujące zakresy adresów:

- 00001 do 09999 dla wyjść (cewki) - 10001 do 19999 dla wejść (styki) - 30001 do 39999 dla rejestrów wejściowych - 40001 do 49999 dla rejestrów pamięci

Page 11: mFAQ.3.5.Komunikacja MODBUS RTU - Automatyka · PDF files s FAQ: 00000008/PL Data: 16/08/2007 Komunikacja sterownika SIMATIC S7-200 w protokole Modbus RTU Doradztwo techniczne: simatic.pl@siemens.com

ssss FAQ: 00000008/PL Data: 16/08/2007

Komunikacja sterownika SIMATIC S7-200 w protokole Modbus RTU

www.siemens.pl/simatic Doradztwo techniczne: [email protected] 11

• Parametr Count określa liczbę danych do odczytu lub zapisu. Parametr Count będzie ilością bitów dla danych typu bitowego oraz ilością słów dla danych typu Word: - Adres 0xxxx – Count jest liczbą bitów do odczytu lub zapisu - Adres 1xxxx – Count jest liczbą bitów do odczytu - Adres 3xxxx – Count jest liczbą rejestrów wejściowych do odczytu - Adres 4xxxx – Count jest liczbą rejestrów pamięci do odczytu lub zapisu. Instrukcja MBUS_MSG moŜe odczytać lub zapisać max. 120 słów lub 1920 bitów (240 bajty danych). Ograniczeniem na liczbę podawaną w parametrze Count są ograniczenia wnoszone przez samo urządzenie typu Slave.

• Parametr DataPtr jest wskaźnikiem do adresu obszaru danych „V” sterownika SIMATIC S7-200 związanego z obsługą zapisu lub odczytu. Dla odczytu DataPtr wskazuje początek obszaru pamięci w sterowniku SIMATIC S7-200, gdzie dane odczytane z urządzenia Slave, będą zapisane w pamięci sterownika. Dla zapisu DataPtr wskazuje początek obszaru pamięci w SIMATIC S7-200, skąd dane będą pobierane do wysłania do urządzenia Slave. Parametr DataPtr jest wskaźnikiem, więc przykładowo, jeŜeli dane do przesłania do urządzenia Slave są umiejscowione od adresu VW200, wartość wskaźnika naleŜy podać jako &VB200. Wskaźnik musi być formatu VB nawet, jeśli wskazuje na daną typu Word. Rejestry pamięci (adres 4xxxx) oraz rejestry wejściowe (adres 3xxxx) są wartościami typu Word (2 bajty lub 16 bitów). Format zmiennej word zdefiniowany w sterowniku SIMATIC S7-200 jest taki sam jak rejestrów Modbus.

• Parametr Done instrukcji MBUS_MSG przyjmuje wartość zero, gdy zostało wysłane zapytanie lub oczekiwany jest odbiór danych z urządzenia Slave. Jest on ustawiany na jeden, gdy dane zostały poprawnie odebrane lub gdy instrukcja MBUS_MSG wygenerowała błąd komunikacji.

• Parametr Error jest ustawiany tylko, gdy bit Done jest jedynką. Tabela poniŜej opisuje

moŜliwe do wystąpienia wartości oznaczające odpowiednie błędy komunikacji. Numery błędów od 1 do 8 opisują błędy, które są wykryte przez instrukcję MBUS_MSG. Błędy te informują o problemie z parametrami wejściowymi na wejściu instrukcji MBUS_MSG lub opisują problemy z odbiorem danych od urządzenia Slave. Błędy parzystości oraz CRC informują, Ŝe nastąpił odbiór danych, jednakŜe dane nie są odebrane właściwie - przewaŜnie jest to problem elektryczny (np. złe połączenie przewodowe). Błędy od 101 są błędami przychodzącymi od urządzenia Slave. Oznaczają one, Ŝe urządzenie Slave nie obsługuje wymaganej funkcji lub, Ŝe wymagany adres nie jest osiągalny w urządzeniu Slave.

Kod bł ędu Opis

0 Brak błędów

1 Błąd parzystości w zapytaniu. Jest to moŜliwe tylko wtedy, gdy został ustawiony parametr kontroli parzystości even lub odd. Jest to przewaŜnie problem z połączeniami kablowymi lub zakłóceniami w transmisji danych.

2 NieuŜywane

3

Przekroczony czas odpowiedzi Timeout. Brak odpowiedzi z urządzenia Slave. MoŜliwe przyczyny wystąpienia błędu to błędy łączeniowe kabli, róŜne nastawione prędkości w Masterze oraz Slave, inne nastawy korekcji błędów parzystości lub niewłaściwy adres urządzenia Slave.

4 Jeden lub więcej parametrów (Slave, RW, Addr, Count) jest ustawiony na niewłaściwą wartość. NaleŜy sprawdzić w dokumentacji wymagane nastawy dla tych parametrów.

Page 12: mFAQ.3.5.Komunikacja MODBUS RTU - Automatyka · PDF files s FAQ: 00000008/PL Data: 16/08/2007 Komunikacja sterownika SIMATIC S7-200 w protokole Modbus RTU Doradztwo techniczne: simatic.pl@siemens.com

ssss FAQ: 00000008/PL Data: 16/08/2007

Komunikacja sterownika SIMATIC S7-200 w protokole Modbus RTU

www.siemens.pl/simatic Doradztwo techniczne: [email protected] 12

5 Modbus Master nie jest załączony do pracy. NaleŜy uruchomić instrukcje MBUS_CTRL i przetwarzać ją w kaŜdym cyklu pracy sterownika.

6 Zajęty kanał komunikacyjny. Tylko jedna instrukcja MBUS_MSG moŜe być aktywna w ustalonym czasie.

7 Błąd dostępu. Odbiornik nie odpowiada na zapytania. MoŜliwe przyczyna to uszkodzenie urządzenia Slave lub odpowiedź przyszła od niewłaściwego urządzenia Slave.

8 Błąd sumy kontrolnej CRC w zapytaniu. Nastąpiło zakłócenie transmisji i odebrano niewłaściwe dane. Przyczyną mogą być połączenia kablowe lub zakłócenia elektryczne.

101 Urządzenie Slave nie obsługuje wymaganej funkcji.

102 Urządzenie Slave nie obsługuje zadeklarowanego adresu danych. Zdefiniowany zakres adresu Addr oraz liczba danych Count znajdują się poza dostępnym zakresem dla urządzenia Slave.

103 Urządzenie Slave nie obsługuje tego typu danych. Typ adresu zadeklarowany w Addr nie jest obsługiwany przez wybrane urządzenie Slave.

104 Uszkodzone urządzenie Slave.

105 Urządzenie Slave akceptuje meldunek, ale opóźniona jest odpowiedź. Powoduje to generację błędu w instrukcji MBUS_MSG. Program uŜytkownika powinien ponownie wysłać zapytanie w czasie późniejszym.

106 Urządzenie Slave jest zajęte i zapytanie zostało odrzucone. NaleŜy ponowić to zapytanie w późniejszym czasie.

107 Urządzenie odrzuca zapytanie z nieznanej przyczyny

108 Błąd parzystości pamięci urządzenia Slave. Wykryto wadę w urządzeniu Slave.

Komunikacja w protokole Modbus RTU Master na przykł adzie komunikacji sterownika S7-200 z przepływomierzem SITRANS F M MAGFLO MAG 60 00

Wymagane komponenty: • Sterownik SIMATIC S7-200 z dwoma portami RS485 (CPU 224XP lub CPU 226) • Do komunikacji pomiędzy komputerem a sterownikiem (jedna z poniŜszych opcji):

Page 13: mFAQ.3.5.Komunikacja MODBUS RTU - Automatyka · PDF files s FAQ: 00000008/PL Data: 16/08/2007 Komunikacja sterownika SIMATIC S7-200 w protokole Modbus RTU Doradztwo techniczne: simatic.pl@siemens.com

ssss FAQ: 00000008/PL Data: 16/08/2007

Komunikacja sterownika SIMATIC S7-200 w protokole Modbus RTU

www.siemens.pl/simatic Doradztwo techniczne: [email protected] 13

- PC/PPI MultiMaster (nr kat. 6ES7 901-3DB30-0XA0) - PC Adapter USB (nr kat. 6ES7 972-0CB20-0XA0) - CP5512 - karta PCMCIA (nr kat. 6GK1 551-2AA00) i kabel MPI - 6ES7 901-0BF00-

0AA0 - CP5611 - karta PCI (nr kat. 6GK1 561-1AA01) i kabel MPI - 6ES7 901-0BF00-0AA0

• Komputer PC z zainstalowanym oprogramowaniem STEP 7-Micro/Win od wersji 4.0 + SP5 (z bibliotekami Modbus Master)

• Przepływomierz SITRANS F M MAGFLO MAG 6000 (nr kat. 7ME6920-1AA10-1AA0) wraz z modułem MODBUS RTU RS 485 (nr kat. FDK-085U0234) i symulatorem

• Do komunikacji pomiędzy przepływomierzem a sterownikiem S7-200: kabel PROFIBUS (nr kat. 6XV1 830-0EH10) wraz z wtyczką (np. nr kat. 6ES7 972-0BB50-0XA0)

W przykładowym zastosowaniu przepływomierz (z zainstalowaną kartą Modbus) wraz z symulatorem został podłączony za pomocą kabla PROFIBUS do sterownika S7-200 (CPU 224XP) do portu 0. Do portu 1 za pomocą kabla PC/PPI (USB) został podłączony komputer PC (programator). PoŜądanym działaniem programu był odczyt dwóch wartości z przepływomierza: aktualnego poziomu przepływu oraz wartości licznika całkowitego przepływu. W ustawieniach karty Modbus przepływomierza zostały wprowadzone następujące parametry: - Adres Slave’a w sieci Modbus: 4 - Prędkość transmisji: 9600 baud - Parzystość: brak parzystości, 1 bit stopu - Maksymalny czas odpowiedzi: 0,5 s - Czas opóźnienia: 0,1 s PowyŜsze ustawienia naleŜy uwzględnić podczas parametryzowania instrukcji MBUS_CTRL i MBUS_MSG.

Page 14: mFAQ.3.5.Komunikacja MODBUS RTU - Automatyka · PDF files s FAQ: 00000008/PL Data: 16/08/2007 Komunikacja sterownika SIMATIC S7-200 w protokole Modbus RTU Doradztwo techniczne: simatic.pl@siemens.com

ssss FAQ: 00000008/PL Data: 16/08/2007

Komunikacja sterownika SIMATIC S7-200 w protokole Modbus RTU

www.siemens.pl/simatic Doradztwo techniczne: [email protected] 14

W programie umieszczono 3 instrukcje związane z protokołem Modbus Master. Pierwsza z nich – MBUS_CTRL inicjuje protokół i jest wywoływana w kaŜdym cyklu programu (rysunek poniŜej). Parametry Baud, Parity i Timeout (w milisekundach) 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. NaleŜy uwzględnić odpowiednie opóźnienie czasowe pomiędzy wysyłanymi wiadomościami, dzięki któremu sterownik będzie miał czas na odebranie odpowiedzi na wysłane zapytanie. W przykładowym programie wartość opóźnienia została zaprogramowana na 6 sekund za pomocą dwóch liczników (T37 i T38), dzięki czemu moŜliwy był wystarczająco płynny odczyt poŜądanych wartości i brak błędów transmisji.

Page 15: mFAQ.3.5.Komunikacja MODBUS RTU - Automatyka · PDF files s FAQ: 00000008/PL Data: 16/08/2007 Komunikacja sterownika SIMATIC S7-200 w protokole Modbus RTU Doradztwo techniczne: simatic.pl@siemens.com

ssss FAQ: 00000008/PL Data: 16/08/2007

Komunikacja sterownika SIMATIC S7-200 w protokole Modbus RTU

www.siemens.pl/simatic Doradztwo techniczne: [email protected] 15

Pierwsza wysyłana wiadomość MBUS_MSG ma za zadanie odczytać wartość aktualnego przepływu (rysunek poniŜej). Parametr Slave ustawiony na 4 określa adres Slave’a – przepływomierza w sieci Modbus, który wcześniej został ustawiony w przepływomierzu. 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 przesłane z przepływomierza. Błędy są zapisywane do pamięci MB3, a prawidłowa inicjalizacja protokołu jest sygnalizowana stanem wysokim bitu M0.1.

Page 16: mFAQ.3.5.Komunikacja MODBUS RTU - Automatyka · PDF files s FAQ: 00000008/PL Data: 16/08/2007 Komunikacja sterownika SIMATIC S7-200 w protokole Modbus RTU Doradztwo techniczne: simatic.pl@siemens.com

ssss FAQ: 00000008/PL Data: 16/08/2007

Komunikacja sterownika SIMATIC S7-200 w protokole Modbus RTU

www.siemens.pl/simatic Doradztwo techniczne: [email protected] 16

Kolejna przesyłana wiadomość (rysunek poniŜej) ma za zadanie odczytać wartość licznika całkowitego przepływu. Jedyne 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 wprowadzeniu programu do sterownika uzyskano moŜliwość podglądu aktualnego poziomu przepływu (pamięć VD200) oraz wartości licznika całkowitego przepływu (pamięć VD204). Wartości te moŜliwe były do odczytania w oknie Status Chart (patrz: rysunek poniŜej) w programie STEP 7-Micro/Win po wprowadzeniu w kolumnie Address powyŜszych adresów pamięci oraz zmianie formatu wyświetlanych wartości na Floating Point. Dodatkowo, aby wartości wyświetlane były w identycznych jednostkach jak na wyświetlaczu przepływomierza, przemnoŜono je przez 1000 za pomocą instrukcji MUL_R i przepisano do pamięci odpowiednio VD300 i VD304.

Page 17: mFAQ.3.5.Komunikacja MODBUS RTU - Automatyka · PDF files s FAQ: 00000008/PL Data: 16/08/2007 Komunikacja sterownika SIMATIC S7-200 w protokole Modbus RTU Doradztwo techniczne: simatic.pl@siemens.com

ssss FAQ: 00000008/PL Data: 16/08/2007

Komunikacja sterownika SIMATIC S7-200 w protokole Modbus RTU

www.siemens.pl/simatic Doradztwo techniczne: [email protected] 17

Komunikacja w protokole Modbus RTU Slave na przykła dzie komunikacji pomi ędzy dwoma sterownikami S7-200

Wymagane komponenty: • 2 sterowniki SIMATIC S7-200 z dwoma portami RS485 (CPU 224XP lub CPU 226) • Do komunikacji pomiędzy komputerem a sterownikiem (jedna z poniŜszych opcji):

- PC/PPI MultiMaster (nr kat. 6ES7 901-3DB30-0XA0) - PC Adapter USB (nr kat. 6ES7 972-0CB20-0XA0) - CP5512 - karta PCMCIA (nr kat. 6GK1 551-2AA00) i kabel MPI - 6ES7 901-0BF00-

0AA0 - CP5611 - karta PCI (nr kat. 6GK1 561-1AA01) i kabel MPI - 6ES7 901-0BF00-0AA0

• Komputer PC z zainstalowanym oprogramowaniem STEP 7-Micro/Win od wersji 4.0 + SP5 (z bibliotekami Modbus Master)

• Do komunikacji pomiędzy sterownikami S7-200: kabel PROFIBUS (nr kat. 6XV1 830-0EH10) wraz z wtyczkami (np. nr kat. 6ES7 972-0BB50-0XA0)

Page 18: mFAQ.3.5.Komunikacja MODBUS RTU - Automatyka · PDF files s FAQ: 00000008/PL Data: 16/08/2007 Komunikacja sterownika SIMATIC S7-200 w protokole Modbus RTU Doradztwo techniczne: simatic.pl@siemens.com

ssss FAQ: 00000008/PL Data: 16/08/2007

Komunikacja sterownika SIMATIC S7-200 w protokole Modbus RTU

www.siemens.pl/simatic Doradztwo techniczne: [email protected] 18

W poniŜszym przykładzie jeden sterownik S7-200 pełnił rolę Mastera, a drugi Slave’a w sieci Modbus RTU. Sterownik S7-200 w trybie Slave działa tylko na porcie 0, tak więc kabel PROFIBUS został podłączony właśnie do tego portu. W przypadku sterownika działającego jako Master numer portu jest dowolny, jednak w zaleŜności od tego, do którego portu podłączymy kabel PROFIBUS naleŜy uŜywać odpowiednich funkcji: MBUS_CTRL i MBUS_MSG dla portu 0 lub MBUS_CTRL_P1 i MBUS_MSG_P1 dla portu 1. Program Slave’a

W programie sterownika działającego jako Slave sieci parametr Mode ustawiono na 1 – przypisanie portu 0 do protokołu Modbus. Slave’owi przydzielono adres 4 w sieci – parametr Addr równy 4, a prędkość transmisji ustawiono na 9600. Parametr Parity ustawiony na 0 oznacza brak parzystości. Program sterownika działającego jako Slave dopuszczał odczyt wszystkich wejść/wyjść binarnych i wejść analogowych, dlatego teŜ w instrukcji MBUS_INIT parametry MaxIQ i MaxAI zostały ustawione na maksymalną dopuszczalną wartość, a parametr MaxHold ustawiono na 1000, dzięki czemu Master miał dostęp do 1000 słów w pamięci V. Dostęp początkowy od adresu VD0 uzyskano poprzez wpisanie wskaźnika &VB0 w parametrze HoldStart. Prawidłowe zainicjowanie protokołu jest sygnalizowane w bicie M0.0, a błędy w pamięci MB1. Instrukcja ta jest inicjowana przy pierwszym uruchomieniu programu za pomocą bitu specjalnego SM0.1. Instrukcja MBUS_SLAVE jest inicjowana w kaŜdym cyklu programu, a prawidłowy jej przebieg jest sygnalizowany bitem M0.1. Ewentualne błędy sygnalizowane są w pamięci MB3.

Page 19: mFAQ.3.5.Komunikacja MODBUS RTU - Automatyka · PDF files s FAQ: 00000008/PL Data: 16/08/2007 Komunikacja sterownika SIMATIC S7-200 w protokole Modbus RTU Doradztwo techniczne: simatic.pl@siemens.com

ssss FAQ: 00000008/PL Data: 16/08/2007

Komunikacja sterownika SIMATIC S7-200 w protokole Modbus RTU

www.siemens.pl/simatic Doradztwo techniczne: [email protected] 19

Program Master’a

W programie działającym jako Master w instrukcji MBUS_CTRL parametr Mode w kaŜdym cyklu programu jest ustawiany na 1 za pomocą bitu SM0.0, co przypisuje port 0 do protokołu Modbus. Prędkość ustawiono na 9600 (parametr Baud), przy braku parzystości (Parity ustawione na 0) i opóźnieniu 5 sekund (Timeout równe 5000). Prawidłowe zainicjowanie instrukcji MBUS_CTRL jest sygnalizowane w bicie M0.0, a błędy w pamięci MB1. Instrukcja MBUS_MSG jest inicjowana równieŜ w kaŜdym cyklu programu, jednak zapytanie jest wysyłane w co drugim przejściu programu – parametr First inicjowany jest bitem SM0.5. Parametr Slave ustawiony na 4 oznacza odpytywanie Slave, który ma przypisany 4-ty adres w sieci. RW ustawione na 0 umoŜliwia odczytywanie danych ze Slave’a. Parametr Addr oznaczający adres w rejestrze Slave’a był ustawiony na 10003, co umoŜliwiło odczyt stanu wejścia I0.2 – zmienianego w Slave’ie za pomocą przełącznika symulacyjnego wejść. Count ustawiony na 4 oznacza ilość odczytywanych bajtów. Odczytywane dane były zapisywane do pamięci o adresie VD200 – w parametrze DataPtr ustawiono wskaźnik na ten adres &VB200. Prawidłowe wysłanie i odebranie wiadomości jest sygnalizowane ustawieniem bitu M0.2, a ewentualne błędy są raportowane w pamięci MB3.