Modbus w sterownikach serii DVP

artykuły techniczne induprogress

Protokół Modbus

Wszystkie sterowniki Delta serii DVP (SLIM) mają wbudowane porty komunikacyjne, dzięki którym mogą wymieniać dane z innymi urządzeniami, korzystając z protokołu Modbus.

Gdy sterownik odpytuje urządzenia w sieci (jest Masterem sieci Modbus), jest odpowiedzialny za tworzenie ramek Modbus. W przypadku komunikacji szeregowej Modbus ASCII/RTU do tworzenia ramek należy użyć instrukcji MODRW.

modbus_w _sterownikach_1

Funkcja MODRW przyjmuje następujące parametry:

  • S1 – adres urządzenia, z którym będzie nawiązana komunikacja (Slave) 1~254;
  • S2 – kod funkcji MODBUS;
  • S3 – adres Modbus danych Slave’a odczytywanych lub zapisywanych;
  • S – bufor danych, rejestr, z którego zostaną  zostaną zapisane/odczytane dane. W przypadku odczytu rejestrów z wykorzystaniem portu COM2 wartości w formie dziesiętnej zostaną zapisane w rejestrach D1296~D1311;
  • n – liczba rejestrów, które chcemy zapisać korzystając z instrukcji MODRW.

Znaczenie poszczególnych parametrów może się zmienić w zależności od użytej funkcji Modbus. Poniżej szczegółowo opisano każdą obsługiwaną funkcję. Do najczęściej używanych funkcji należy odczyt wielu rejestrów K3 (H03) i zapis wielu rejestrów K16 (H10).

Rejestry specjalne do obsługi komunikacji Modbus

Dane wprowadzone w bloku MODRW zostaną wysłane lub odczytane ze Slave’a po załączeniu flagi żądania wysłania:

  • dla COM 1 – M1312,
  • dla COM 2 – M1122,
  • dla COM 3 – M1316.

Powyższe flagi zresetują się automatycznie po zakończeniu transmisji.

 

Po poprawnym zakończeniu odbierania danych zostanie załączona flaga ukończenia odbierania danych:

  • dla COM 1 – M1314,
  • dla COM 2 – M1123,
  • dla COM 3 – M1318.

Dla COM2 można także zastosować flagę M1127, która informuje o zakończeniu wysyłania i odbierania poprzez port RS485.

 

Błąd komunikacji spowoduje załączenie flag:

  • dla COM 1 – M1315,
  • dla COM 2:
    • M1129 – time out,
    • M1140 – błąd odbioru danych dla funkcji MODRD/MODWR/MODRW,
    • M1141 – błąd parametru instrukcji MODRD/MODWR/MODRW,
    • D1130 – kod błędu,
  • dla COM 3 – M1319.

Odczyt wyjść bitowych K1 (H01)

Funkcja MODBUS K1(H01) odczytuje wyjścia bitowe. Odczyt wyjść bitowych jest możliwy w przypadku sterowników SS2 V3.24, SA2/SX2 V2.82 oraz SE V1.64.

Parametry MODRW:
S1 – adres urządzenia;
S2 – 1: funkcja odczytu wyjść bitowych;
S3 – odczytywany adres Modbus, np. 16#0800, odpowiada fladze M0 w sterownikach PLC DELTA;
S – rejestr przechowujący dane, np. D7000;
n – ilość odczytywanych wyjść. Ilość odczytywanych bitów została ograniczona do 64.

modbus_w _sterownikach_2

Odczyt wejść bitowych K2 (H02)

Funkcja MODBUS K2(H02) odczytuje wejścia bitowe.

Parametry MODRW:
S1 – adres urządzenia;
S2 – 2: funkcja odczytu wejść bitowych;
S3 – odczytywany adres Modbus, np. 16#0800, odpowiada fladze M0 w sterownikach PLC DELTA;
S – rejestr przechowujący dane, np. D7010;
n – ilość odczytywanych wejść. Ilość odczytywanych bitów została ograniczona do 64.

modbus_w _sterownikach_3

Odczyt wielu rejestrów K3 (H03)

Funkcja MODBUS K3 (H03) odczytuje wiele rejestrów.

Parametry MODRW:
S1 – adres urządzenia;
S2 – 3: funkcja odczytu wielu rejestrów;
S3 – odczytywany adres Modbus, np. 16#1000, odczyt rejestrów od D0 w sterownikach PLC DELTA;
S – rejestr przechowujący dane, np. D7020;
n – ilość rejestrów odczytywanych. Ilość odczytywanych rejestrów została ograniczona, ograniczenia zostały podane w tabeli na końcu.

modbus_w _sterownikach_4

Odczyt wielu rejestrów wejściowych K4 (H04)

Funkcja MODBUS K4 (H04) odczytuje wiele rejestrów wejściowych. Odczyt jest możliwy w przypadku sterowników SS2 V2.4, SA2/SX2 V2.0 oraz SE V1.0.

Parametry MODRW:
S1 – adres urządzenia;
S2 – 4: funkcja odczytu wielu rejestrów;
S3 – odczytywany adres Modbus 3xxxxx;
S – rejestr przechowujący dane, np. D7030;
n – ilość odczytywanych rejestrów. Ilość odczytywanych rejestrów wejściowych została ograniczona, ograniczenia zostały podane w tabeli na końcu.

modbus_w _sterownikach_5

Zapis jednego bitu K5 (H05)

Funkcja MODBUS K5 (H05) zapisuje pojedynczy bit.

Parametry MODRW:
S1 – adres urządzenia;
S2 – 5: funkcja zapisu jednego bitu;
S3 – zapisywany adres Modbus, np. 16#0900, odpowiada fladze M256, w sterownikach PLC DELTA;
S – rejestr przechowujący dane, np. D7040;
n – stan bitu: 0 lub 1. Do zmiany wartości można wykorzystać rejestr, np. D2000.

modbus_w _sterownikach_6

Zapis jednego rejestru K6 (H06)

Funkcja MODBUS K6 (H06) zapisuje pojedynczy rejestr.

Parametry MODRW:
S1 – adres urządzenia;
S2 – 6: funkcja zapisu jednego rejestru;
S3 – zapisywany adres Modbus, np. 16#1100 odpowiada rejestrowi D256 w sterownikach PLC DELTA;
S – rejestr przechowujący dane, np. D7041;
n – stała wartość 1.

modbus_w _sterownikach_7

Zapis wielu bitów K15 (H0F)

Funkcja MODBUS K15 (H0F) zapisuje wiele bitów.

Parametry MODRW:
S1 – adres urządzenia;
S2 – 15: funkcja zapisu wielu bitów;
S3 – zapisywany adres Modbus, np. 16#0A00, zapis flag od M512 w sterownikach PLC DELTA;
S – rejestr przechowujący dane, np. D7048;
n – ilość zapisywanych bitów. Ilość zapisywanych bitów została ograniczona do 64.

modbus_w _sterownikach_8

Zapis wielu rejestrów K16 (H10)

Funkcja MODBUS K16 (H10) zapisuje wiele rejestrów.

Parametry MODRW:
S1 – adres urządzenia;
S2 – 16: funkcja zapis wielu rejestrów;
S3 – zapisywany adres Modbus, np. 16#1200 odpowiada rejestrowi D512 w sterownikach PLC DELTA;
S – rejestr przechowujący dane, np. D7058;
n – ilość zapisywanych rejestrów. Ilość zapisywanych rejestrów została ograniczona. Ograniczenia zostały podane w tabeli na końcu.

modbus_w _sterownikach_9

Odczyt/zapis wielu rejestrów K23 (H17)

Funkcja MODBUS K23 (H17) odczytuje i zapisuje wiele rejestrów, łącząc działanie funkcji K4 (H04) i K16 (H10). Odczyt/zapis wielu rejestrów jest możliwy dla sterowników SS2 V3.0, SA2 V2.6 oraz SX2 V2.4.

Parametry MODRW:
S1 – adres urządzenia;
S2 – 23: funkcja odczytu/zapisu;
S3 – dwa rejestry z adresem Modbus, np. S3 – adres odczytu, S3+1 – adres zapisu;
S – dwa rejestry indeksujące bufor danych, np. S – numer rejestru, do którego zostaną odczytane dane, S+1 – numer rejestru, z którego należy pobrać dane do zapisu w Slave’ie;
n – dwa rejestry z liczbą rejestrów, np. n – liczba odczytywanych, n+1 – liczba zapisywanych. Ilość odczytywanych/zapisywanych rejestrów jest ograniczona do 16.

Poniżej przedstawiono przykład konfiguracji funkcji:

  1. adres Modbus odczytu, np. 16#1000 w rejestrze D7080;
  2. numer rejestru przechowującego odczytane dane, np. 7020 w D7082. Dane odczytane zostaną przeniesione do D7020;
  3. liczba odczytywanych rejestrów, np. 8 w D7084;
  4. adres Modbus zapisu, np. 16#1200 w rejestrze D7081;
  5. numer rejestru przechowującego dane zapisywane przez funkcję, np. 7058 w D7083. Zostaną zapisane dane z rejestru D7058;
  6. liczba zapisywanych rejestrów, np. 7
modbus_w _sterownikach_10
modbus_w _sterownikach_11

Objaśnienie programu do wymiany komunikacji Modbus

Poniżej przedstawiony jest opis programu do wymiany komunikacji Modbus na przykładzie COM2 z falownikiem

Najważniejsze networki w programie:

1. Network 1 – ustawienie portu RS485

modbus_w _sterownikach_12

W tym networku odbywa się definicja ramki komunikacyjnej oraz prędkości komunikacji na porcie komunikacyjnym COM2

 

W tym networku można zmienić:

a) time-out wpisując wartość do rejestru D1120, domyślnie wynosi on 50 ms,

b) prędkość i ramkę komunikacji – wartość jest kodowana w zapisie heksadecymalnym, aby ją zmienić należy wpisać wartość wyliczoną przez pomocniczy konwerter zaszyty w środowisku ISPSoft: Help -> Auxiliary Edition -> Protocol <-> Settting Code

modbus_w _sterownikach_13
modbus_w _sterownikach_14

c) tryb ASCII/RTU – jeśli flaga M1143 jest zresetowana to wybrany jest tryb ASCII, jeśli flaga ta jest zasetowana to wybrany jest tryb RTU

2. Network 7 – zapis jednego rejestru

modbus_w _sterownikach_15

W tym networku następuje zapis do falownika o adresie 2 przy użyciu funkcji Modbus K6 do rejestru 2001H komendy częstotliwości z zmiennej Fal2_zadana_czestot.

Jeśli istnieje potrzeba zapisu rejestru do kolejnego urządzenia slave, należy skopiować ten network i w skopiowanym networku zwiększyć wartość w instrukcji porównania o jeden oraz adres urządzenia slave w S1. Dokładny opis instrukcji MODRW znajduje się w poprzednim rozdziale.

3. Network 8 – odczyt wielu rejestrów

modbus_w _sterownikach_16

W tym networku następuje odczyt z falownika o adresie 2 funkcją Modbus K3 z rejestrów 2103H i 2104H aktualnej częstotliwości i aktualnego prądu w zmiennych Fal2_aktualna_czestot i Fal2_aktualny_prad.

Jeśli istnieje potrzeba odczytu rejestrów z kolejnego urządzenia slave, należy skopiować ten network i w skopiowanym networku zwiększyć wartość w instrukcji porównania o jeden oraz adres urządzenia slave w S1. Dokładny opis instrukcji MODRW znajduje się w poprzednim rozdziale. W przypadku COM2 odczytywane dane trafiają do bufora zaczynającego się od rejestru D1296, więc jeśli jest potrzeba czytania większej ilości danych należy dodać bloki MOV z kolejnymi rejestrami po D1296. Ważne jest, aby rejestr podany w S nie był wykorzystywany w żadnym innym celu, nigdzie indziej w projekcie, poza kolejnymi instrukcjami MODRW.

4. Network 12 – zapętlenie licznika

modbus_w _sterownikach_17

W tym miejscu odbywa się zapętlenie komunikacji Modbus, dlatego w instrukcji porównania (większe niż) należy wpisać liczbę, odpowiadającą ilości dodanych instrukcji MODRW, licząc od 0 – powinna to  być liczba wpisana w ostatniej instrukcji porównania w networku z instrukcją MODRW, w przykładowym programie są tylko dwie instrukcję MODRW: 0 – do zapisu i 1 – do odczytu, stąd w zapętleniu liczba 1.

Zasada działania programu do wymiany komunikacji Modbus

modbus_w _sterownikach_18
  • W pierwszym skanie programu do odpowiednich rejestrów zostają wpisane parametry komunikacji (time-out, prędkość i ramka)
  • Następnie w każdym skanie programu wykonywana jest tylko jedna instrukcja MODRW, która tworzy ramkę Modbus i odpytuje urządzenie w sieci
  • Program co skan inkrementuje aktualnie wykonywaną instrukcję MODRW o jeden, dzięki czemu przechodzi przez kolejne networki z instrukcją MODRW
  • Kiedy wykona się ostatnia instrukcja MODRW w programie, nastąpi zapętlenie (sprawdzenie liczby wykonanych inkrementacji) i instrukcje MODRW zaczną się wykonywać począwszy od pierwszej.

Ograniczenia instrukcji MODRW

W poniższej tabeli wymieniono maksymalne wartości parametru n w zależności od wykorzystanej funkcji, portu i wariantu protokołu Modbus ASCII/RTU.

modbus_w _sterownikach_19

Opublikowano: 21 maja 2024

Product Enquiry

Ta witryna jest zarejestrowana pod adresem wpml.org jako witryna rozwojowa. Przełącz się na klucz witryny produkcyjnej na remove this banner.