
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.

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.

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.

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.

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.

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.

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.

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.

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.

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:
- adres Modbus odczytu, np. 16#1000 w rejestrze D7080;
- numer rejestru przechowującego odczytane dane, np. 7020 w D7082. Dane odczytane zostaną przeniesione do D7020;
- liczba odczytywanych rejestrów, np. 8 w D7084;
- adres Modbus zapisu, np. 16#1200 w rejestrze D7081;
- numer rejestru przechowującego dane zapisywane przez funkcję, np. 7058 w D7083. Zostaną zapisane dane z rejestru D7058;
- liczba zapisywanych rejestrów, np. 7


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

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


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

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

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

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

- 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.

Opublikowano: 21 maja 2024
