Promotic

PmModbusMr - Driver do komunikacji poprzez protokół Modbus Master

Przed zastosowaniem tego drivera w aplikacji PROMOTIC należy obejżeć "PROMOTIC wideo kurs 4 - Drivery komunikacyjne".

Podstawowe właściwości drivera:
- Zastosowanie tego drivera wymaga zakup licencji PmModbus. Podczas wytwarzania aplikacji w trybie freeware PmFree lub z licencją deweloperską oraz podczas jej testowania w runtime element ten jest zawsze funkcjonalny.
- Komunikacja jest dla Ethernetu (aplikacja PROMOTIC jest klientem) lub dla łącza szeregowego (COM1, COM2 ...).
- Aplikacja PROMOTIC jest z punktu widzenia tej komunikacji Master (to znaczy, że wywołuje transmisję danych). Dla komunikacji typu Slave można zastosować: PmModbusSl - Driver do komunikacji poprzez protokół Modbus Slave.
- Driver jest wbudowany do systemu PROMOTIC przy pomocy obiektu PmaComm.
Driver wspiera zastosowanie obiektów PmaCommMsg oraz PmaCommGroup. Dla zwykłych przypadków transmisji danych dogodniejszym jest zastosowanie obiektu PmaCommGroup.
Dla łatwego dodania tego drivera do aplikacji jest dogodne zastosować: Konfiguracje wstępne w grupie "Modbus"
- Komunikacja jset sieciowa, to znaczy, że jeden obiekt PmaComm potrafi komunikować się z kilkoma urządzeniami (protokół wspiera adresację urządzeń).
- Driver wspiera tryby transferu TCP, RTU oraz ASCII.
- Można przenosić standardowe wartości 1-bitowe (bits) oraz 16-bitowe (registers) oraz mniej standardowe wartości 32-bitowe typu float oraz long oraz 64-bitowe wartości (float double precision).
- Driver można zastosować także do komunikacji poprzez protokół JBUS. Protokół JBUS jest podzbiorem protokołu Modbus RTU. Wszystkie wiadomości implementowane w omawianym driverze (patrz niżej) wspiera także protokół JBUS.


Driver wspiera następujące typy danych Modbus:
- b = Bit (1Bit):
W sterowniku PLC: 1bit. W aplikacji PROMOTIC: typ danych Boolean.
- W = Word (2Byte Unsigned Integer):
16 Bit Unsigned, Big-endian
W sterowniku PLC: 16 bitów (wartość od 0 do 65535). W aplikacji PROMOTIC: typ danych Long.
Format binarny tego typu jest taki sam jak w aplikacji PROMOTIC, tylko kolejność bajtów jest zmieniona (kolejność bajtów PC:12, PLC:21).
- W2 = Word (2Byte Unsigned Integer):
16 Bit Unsigned, Little-endian
Taki sam jak poprzedni typ danych, tylko kolejność bajtów nie zmienia się - jest taki sam jak w aplikacji PROMOTIC (kolejność bajtów PC:12, PLC:12).
- I = Int (2Byte Signed Integer):
16 Bit Signed, Big-endian
W sterowniku PLC: 16 bitów (wartość od -32767 do +32767). W aplikacji PROMOTIC: typ danych Integer.
Format binarny tego typu jest taki sam jak w aplikacji PROMOTIC, tylko kolejność bajtów jest zmieniona (kolejność bajtów PC:12, PLC:21).
- I2 = Word (2Byte Signed Integer):
16 Bit Signed, Little-endian
Taki sam jak poprzedni typ danych, tylko kolejność bajtów nie zmienia się - jest taki sam jak w aplikacji PROMOTIC (kolejność bajtów PC:12, PLC:12).
- L1 = Long type 1 (4Byte Signed Integer):
32-bit Signed, Big-endian byte swap
W sterowniku PLC: 32 bitów. W aplikacji PROMOTIC: typ danych Long.
Tylko dla wiadomości typu 03, 04, 16.
Format binarny tego typu jest taki sam jak w aplikacji PROMOTIC, tylko kolejność bajtów jest zmieniona (kolejność bajtów PC:1234, PLC:2143).
Stosowane na przykład: Modicon, Wago, itd.
- L2 = Long type 2 (4Byte Signed Integer):
32-bit Signed, Big-endian
Taki sam jak poprzedni typ danych, tylko kolejność bajtów jest zmieniona (kolejność bajtów PC:1234, PLC:4321).
Stosowane na przykład: JUMO.
- L3 = Long type 3 (4Byte Signed Integer):
32-bit Signed, Little-endian
Taki sam jak poprzedni typ danych, tylko kolejność bajtów nie zmienia się - jest taki sam jak w aplikacji PROMOTIC (kolejność bajtów PC:1234, PLC:1234).
- L4 = Long type 4 (4Byte Signed Integer):
32-bit Signed, Little-endian byte swap
Taki sam jak poprzedni typ danych, tylko kolejność bajtów jest zmieniona (kolejność bajtów PC:1234, PLC:3412).
- UL1 = ULong type 1 (4Byte Unsigned Integer):
32-bit Unsigned, Big-endian byte swap
W sterowniku PLC: 32 bitów. W aplikacji PROMOTIC: typ danych Double.
Tylko dla wiadomości typu 03, 04, 16.
Format binarny tego typu jest taki sam jak w aplikacji PROMOTIC, tylko kolejność bajtów jest zmieniona (kolejność bajtów PC:1234, PLC:2143).
- UL2 = ULong type 2 (4Byte Unsigned Integer):
32-bit Unsigned, Big-endian
Taki sam jak poprzedni typ danych, tylko kolejność bajtów jest zmieniona (kolejność bajtów PC:1234, PLC:4321).
- UL3 = ULong type 3 (4Byte Unsigned Integer):
32-bit Unsigned, Little-endian
Taki sam jak poprzedni typ danych, tylko kolejność bajtów nie zmienia się - jest taki sam jak w aplikacji PROMOTIC (kolejność bajtów PC:1234, PLC:1234).
- UL4 = ULong type 4 (4Byte Unsigned Integer):
32-bit Unsigned, Little-endian byte swap
Taki sam jak poprzedni typ danych, tylko kolejność bajtów jest zmieniona (kolejność bajtów PC:1234, PLC:3412).
- LL2 = LongLong type 2 (8Byte Signed Integer):
64-bit Signed, Big-endian
W sterowniku PLC: 64 bitów. W aplikacji PROMOTIC: typ danych Double. (kolejność bajtów PLC:87654321)
Tylko dla wiadomości typu 03, 04, 16.
8-bajtowa liczba całkowita nie może zostać zapisana z dokładnością do liczb całych do żadnego typu danych. Tu zapis jest wykonany do wartości typu Double, ale dla bardzo dużych liczb póżniej dochodzi do niedokładnosści (maksymalnie +-2047).
Stosowane na przykład: Miernik energii iEM3100(Schneider-Electric), Multimeter EPM-07S(ENTES) ...
- R = Float type 1 (4Byte - IEEE 754):
32-bit Float, Big-endian byte swap
W sterowniku PLC: 32 bitów. W aplikacji PROMOTIC: typ danych Single.
Tylko dla wiadomości typu 03, 04, 16.
Format binarny tego typu jest według normy IEEE-754, a więc taki sam jak w aplikacji PROMOTIC, tylko kolejność bajtów jest zmieniona (kolejność bajtów PC:1234, PLC:2143).
- R2 = Float type 2 (4Byte - IEEE 754):
32-bit Float, Big-endian
Taki sam jak poprzedni typ danych, tylko kolejność bajtów jest zmieniona (kolejność bajtów PC:1234, PLC:4321).
Stosowane na przykład: ABB AC500.
- R3 = Float type 3 (4Byte - IEEE 754):
32-bit Float, Little-endian
Taki sam jak poprzedni typ danych, tylko kolejność bajtów nie zmienia się - jest taki sam jak w aplikacji PROMOTIC (kolejność bajtów PC:1234, PLC:1234).
- D1 = Float Double-precision type 1 (8Byte - IEEE 754):
64-bit Float, Big-endian byte swap
W sterowniku PLC: 64 bitów W aplikacji PROMOTIC: typ danych Double.
Tylko dla wiadomości typu 03, 04, 16.
Format binarny tego typu jest według normy IEEE-754, a więc taki sam jak w aplikacji PROMOTIC, tylko kolejność bajtów jest zmieniona (kolejność bajtów PC:12345678, PLC:21436587).
- D2 = Float Double-precision type 2 (8Byte - IEEE 754):
64-bit Float, Big-endian
Taki sam jak poprzedni typ danych, tylko kolejność bajtów jest zmieniona (kolejność bajtów PC:12345678, PLC:87654321).
- D3 = Float Double-precision type 3 (8Byte - IEEE 754):
64-bit Float, Little-endian
Taki sam jak poprzedni typ danych, tylko kolejność bajtów nie zmienia się - jest taki sam jak w aplikacji PROMOTIC (kolejność bajtów PC:12345678, PLC:12345678).
- S1 = String type 1 (byte order: 214365..):
W sterowniku PLC: 2*N bajtów, gdzie N to ilość rejestrów, w których jest zapisany tekst. W aplikacji PROMOTIC: typ danych String.
Tylko dla wiadomości typu 03, 04, 16.
W sterowniku PLC łańcuch tekstowy jest zapisany w innej kolejności niż w aplikacji PROMOTIC.
Stosowane na przykład sterownik PLC Modicon M340.
Jeżeli łańcuch zawiera zero w postaci binarnej, wtedy w aplikacji PROMOTIC taki łańcuch zostanie skrócony (zero kończy łańcuch tekstowy).
Ten typ danych nie można zastosować w obiekcie PmaCommMsg.
- S3 = String type 3 (byte order: 123456..):
Taki sam jak poprzedni typ danych, tylko kolejność bajtów nie zmienia się - jest taki sam jak w aplikacji PROMOTIC.
Ten typ danych nie można zastosować w obiekcie PmaCommMsg.


Zalecone wartości parametrów obiektu PmaComm:

Zalecane wartości dla pozycji Parametry łącza szeregowego:
Ilość bitów informacji8 dla trybu RTU, 7 dla trybu ASCII
Ilość bitów stopu1 jeżeli jest wykorzystany parytet, 2 jeżeli parytet jest NO (żaden)
Zalecane wartości dla pozycji Parametry Ethernet-klient:
Numer zdalnego portu TCP/UDP502 (dla typu danych MODBUS TCP/IP)
 
Patrz: Wikipedia: Lista numerów portów TCP i UDP używanych przez protokoły do uruchamiania aplikacji sieciowych.
Typ transmisji EthernetTCP (dla typu danych MODBUS TCP/IP)
Opis i zalecane wartości dla pozycji Parametry protokołu:
Typ danych protokołuWyłącznie dla Ethernetu. Określa wygląd danych protokołu. Można wybrać:
MODBUS TCP/IP - Standardowa komunikacja Ethernet MODBUS. W porównaniu z danymi przeznaczonymi dla łącza szeregowego odróżnia się specjalnym nagłówkiem i jest przenoszona poprzez Ethernet TCP na porcie 502.
Dane takie same jak dla łącza szeregowego - Opcję tą można wybrać na przykład jeżeli urządzenie jest wyposażone w łącze szeregowe i przy pomocy konwertera RS232/Ethernet jest podłączone do Ethernetu. Jeżeli konwerter nie zmienia transmitowanych danych, wtedy można w ten prosty sposób komunikować się poprzez Ethernet z urządzeniem, które nie posiada wyjścia Ethernet.
Timeout odbioru odpowiedziWyłącznie dla łącza szeregowego. Odpowiednią wartością jest na przykład 2000 ms. Okres czasu (w milisekundach) w którym driver będzie oczekiwać na odpowiedź po odesłaniu wiadomości.
Jeżeli do tego czasu nie zostanie odebrana żadna odpowiedź, wtedy transmisja wiadomości zostanie zakończona (zostanie wywołane zdarzenie onEndOfTransfer z błędem 24 lub 66).
Tryb transferuProtokół Modbus ma dwie możliwości transmisji.
W parametrach wiadomości obiektu PmaCommMsg ten tryb można zmienić (w specjalnym przypadku, kiedy jest konieczna komunikacja z kilku PLC w różnych trybach).
RTU - Najczęściej stosowany tryb transmisji, kiedy dane są transmitowane w formie binarnej.
ASCII - Typ transmisji, w którym dane są transmitowane w formie ASCII. Ten tryb nie jest dostępny dla MODBUS TCP/IP.

Opis komunikacji przy pomocy obiektu PmaCommGroup

Dla niniejszego drivera komunikacyjnego można zastosować obiekty PmaCommGroup. Dla zwykłych transmisji danych jest to bardziej dogodne niż zastosowanie obiektu PmaCommMsg.
Zmiennych w obiekcie PmaCommGroup (lub jeszcze lepiej zmiennych w obiekcie PmaData z rozszerzeniem danych ExtComm) może być dowolna ilości, mogą być dowolnego typu danych i w dowolnej kolejności. Driver sam w zoptymalizowany sposób odczyta dane z urządzenia przy pomocy wewnętrznie wytworzonych wiadomości komunikacyjnych.
Odczytywane są wszystkie zmienne (jeżeli konfigurator "Odświeżanie danych zezwolone" jest zaznaczony). Przy zapisie do zmiennej do urządzenia jest odesłana tylko zapisywana zmienna (jeżeli konfigurator "Automatycznie przesyłaj przy zapisie do pozycji" jest zaznaczony).

Opis konfiguratora "ItemId":
ItemId jest identyfikator tekstowy pozycji, który służy do adresacji pozycji w urządzeniu. Z konfiguratora ItemId driver stwierdzi, w jaki sposób ma zostać wartość pozycji wczytana lub wysłana.
Tekst można wpisać ręcznie, lub ułożyć w oknie, które zostanie otwarte przy pomocy przycisku wprawo od konfiguratora.
Do wprowadzenia można zastosować Makro wyrażenie (wartość jest obliczana po uruchomieniu aplikacji).

Identyfikator ItemId może mieć wygląd na przykład "dev2.Ri33.W", gdzie:
dev2 = pozycja znajduje się w sterowniku PLC (device) pod adresem 2. Zamiast numeru można wprowadzić devD (=adres domyślny) i wtedy adres urządzenia będzie określony według konfiguratora "Domyślny adres urządzenia".
Ri33 = jest w obszarze danych "Input registers pod względnym adresem 33. Adres 33 jest tylko względny, podczas komunikacji zostanie doliczona wartość określona w konfiguratorze "Bazowe adresy danych".
Lista obszarów danych:
- Bo = obszar "Coil status / Output bits".
Do odbioru danych jest wykorzystana funkcja Modbus: FN01 (Read Coil Status, Read Output Bits).
Do zapisu danych jest zastosowana funkcja Modbus: FN05 (Force Single Coil, Write 1 Bit).
- BoM = obszar "Coil status / Output bits".
Do odbioru danych jest wykorzystana funkcja Modbus: FN01 (Read Coil Status, Read Output Bits).
Do zapisu danych jest zastosowana funkcja Modbus: FN15 (Force Multiple Coils, Write n Bits).

Od obszaru Bo różni się tylko sposobem zapisu (zamiast FN05 stosuje się FN15).
- Bi = obszar "Input status / Input bits".
Do odbioru danych jest wykorzystana funkcja Modbus: FN02 (Read Input Status, Read Input Bits).
Zapis danych nie jest możliwy.
- Ro = obszar "Holding/Output registers".
Do odbioru danych jest wykorzystana funkcja Modbus: FN03 (Read Holding/Output Registers).
Do zapisu danych jest zastosowana funkcja Modbus: FN16 (Preset Multiple Registers, Write n Registers).
- RoS = obszar "Holding/Output registers".
Do odbioru danych jest wykorzystana funkcja Modbus: FN03 (Read Holding/Output Registers).
Do zapisu danych jest zastosowana funkcja Modbus: FN06 (Preset Single Register, Write 1 Register).

Od obszaru Ro różni się tylko sposobem zapisu (zamiast FN16 stosuje się FN06).
Uwaga: Funkcja FN06 nie potrafi zapisywać 4 oraz więcej bajtowe wartości (na przykład typy danych Long oraz Float).
- RoB = obszar "Holding/Output registers". Transmisja poszczególnych bitów.
Do odbioru danych jest wykorzystana funkcja Modbus: FN03 (Read Holding/Output Registers).
Do zapisu danych jest zastosowana funkcja Modbus: FN22 (22-Mask Write Register).

Przykład: RoB38.0 oznacza odczyt/zapis bitu 0 w rejestrze 38.
- Ri = obszar "Input registers.
Do odbioru danych jest wykorzystana funkcja Modbus: FN04 (Read Input Registers).
Zapis danych nie jest możliwy.
W = PLC posiada typ danych Word


Opis konfiguratora "PmaCommGroup > Parametry > Parametry specjalne":
Domyślny adres urządzeniaW tym miejscu wprowadzony adres można zastosować przy ustawianiu konfiguratora "ItemId" w zmiennych w tym obiekcie (tzn. w zmiennych w karcie "Dane" lub w rozszerzeniu danych ExtComm). Adres można wprowadzić w ItemId:
- jako na przykład dev1... - wtedy wartość zmiennej będzie odczytywana ze sterownika PLC pod adresem 1.
- lub devD... - znak "D" w tym miejscu oznacza default, (to znaczy, że adres zostanie przejęty z niniejszego konfiguratora).

Parametr ten można w runtime zmienić i odczytać w skrypcie przy pomocy metod: SetSpecParam("SlaveAddr") oraz GetSpecParam("SlaveAddr").
Bazowe adresy danychTutaj sąwprowadzane adresy początku obszaru danych (Bo, Bi, Ro, Ri).
Adresy tych obszarów są wstępnie ustawione na 0 (jeżeli nie zostanie wybrana konfiguracja wstępna dla określonego urządzenia - patrz Konfiguracje wstępne / Komunikacja / Protokoły i inne środki komunikacji / Modbus). Dla różnych rodzajów PLC adresy te mogą być inne (np. adresy często nie rozpoczynają się od 0 lecz od 1 lub 40001, itd.).
Podczas komunikacji "Adres pozycji danych" jest obliczony jako suma względnego adresu pozycji (określone w identyfikatorze ItemId) i bazowego adresu obszaru.
Maksymalna ilość zmiennych odebrana w jednej wiadomościDla każdego obszaru (Bo,Bi,Ro,Ri) określana jest maksymalna ilość zmiennych, które mogą być transmitowane w jednej wiadomości. Warości te są zależne od typu sterownika, z którym komunikujemy (niektóre sterowniki PLC wspierają transmisję "małej ilości" rejestrów w jednej wiadomości, inne zaś wspierają większą ilośćrejestrów) - informacja ta jest zawarta w dokumentacji sterownika lub należy to stwierdzić metodą "prób i błędów".
Wstępnie ustawionymi wartościami są 64 dla Bo oraz Bi, 32 dla Ro oraz Ri (jeżeli nie zostanie wybrana konfiguracja wstępna dla określonego urządzenia - patrz Konfiguracje wstępne / Komunikacja / Protokoły i inne środki komunikacji / Modbus).
Wstępnie ustawiona wartości są bardzo niskie. Poprzez zwiększenie tych wartości (jeżeli dane urządzenie umożliwia to) można osiągnąć przyspieszenie komunikacji, ponieważ wymagane dane mogą być transmitowane przy pomocy mniejszej ilości wiadomości komunikacyjnych.

Opis komunikacji przy pomocy obiektu PmaCommMsg

Obiekt PmaCommMsg można zastosować do specjalnych komunikacji, których nie można wykonać przy pomocy obiektu PmaCommGroup. Na przykład przy pomocy wiadomości typu "XX-User defined opened function" można ułożyć dowolne typy wiadomości Modbus, które inaczej nie są driverami wspierane.

W każdej wiadomości musi się znajdować adres Slave stacji z której dane są odczytywane lub do której dane są zapisywane. Adres ten określa się w karcie "Dane-wysłanie" danej wiadomości w zmiennej Slave (np. dla Modicon są ważne adresz Slave w zakresie 0-247.
Adres 0 jest wykorzystany dla broadcast, tzn. dla wiadomości, które przyjmują wszystkie stacje (jeżeli jest protokół Modbus wykorzystany na wyższej warstwie sieciowej, wtedy broadcast może nie być dozwolony). Driver te wiadomości tylko wysyła i nie oczekiwuje odpowiedzi - nie ma sens ustawianie adresu 0 dla wiadomości, które powinny odczytywać (np. wiadomości 01 do 04).

Następnie w karcie "Dane-wysłanie" w zmiennej Addr wpisuje się adres zmiennej w danej stacji. Wartość adresu zmiennej domyślnie ustawia się od 0. Niektóre urządzenia (np. Modicon, GE-Fanuc) jednak adresują od 1, i dlatego jest konieczne określić wartość Addr o 1 mniejszą.
Maksymalna ilość wartości (stanów, rejestrów) w jednej wiadomości jest zależna według sterownika PLC. Może być na przykład 32, 125, 128, 1024, itd.

Lista oraz opis wiadomości komunikacyjnych:
01-Read Coil Status (Read Output Bits): Wiadomość ta odczyta n stanów wyjść (wartości 1-bitowe) od określonego adresu Addr.
02-Read Input Status (Read Input Bits): Wiadomość ta odczyta n stanów wejść (wartości 1-bitowe) od określonego adresu Addr.
03-Read Holding Registers (Read Output Registers): Wiadomość ta odczyta n rejestrów wyjściowych (wartości 16-bitowe) od określonego adresu Addr.
04-Read Input Registers: Wiadomość ta odczyta n rejestrów wejściowych (wartości 16-bitowe) od określonego adresu Addr.
05-Force Single Coil (Write 1 Bit): Wiadomość ta zapisze do jednego stanu (wartość 1-bitowa) pod określonym adresem Addr.
06-Preset Single Register (Write 1 Register): Wiadomość ta zapisze do jednego rejestru (wartość 16-bitowa) pod określonym adresem Addr.
15-Force Multiple Coils (Write n Bits): Wiadomość ta zapisze n stanów (wartości 1-bitowe) od określonego adresu Addr.
16-Preset Multiple Registers (Write n Registers): Wiadomość ta zapisze n rejestrów (wartości 16-bitowe) od określonego adresu Addr.
22-Mask Write Register (Modify Register Using both AND & OR Masks): Wiadomość ta zapisze określone poszczególne bity do jednego rejestru (wartość 16-bitowa) przy pomocy AND oraz OR maskowania.
W karcie "Dane-wysłanie" znajdują się zmienne:
Slave - Adres urządzenia, z którym ma być prowadzona komunikacja.
Addr - adres rejestru, do którego będą zapisywane bity.
AND_Mask - maska bitów, które mają zostać wyzerowane
OR_Mask - maska bitów, które mają zostać ustawione
W karcie "Dane-odbiór" nie ma żadnej zmiennej.
XX-User defined opened function:
Wiadomość Modbus definiowana przez uytkownika. Można zastosować dla tych wiadomości, które nie są w inny sposób wspierane przez ten driver. Projektant może tu definiować kompletną zawartość wiadomości (odbieraną i nadawaną), musi przy tym uważać na kolejność oraz typ danych zmiennych DataX.
Zmienne DataX (w Dane-wysłanie i v Dane-odbiór) przedstawiają dane w protokole Modbus od znaku Function (bez tego znaku) i do znaku CRC (dla serial RTU, bez tego znaku) lub do końca wiadomości (dla Modbus TCP/IP). Dla trybu transmisji ASCII dane są wprowadzane tak samo jak dla trybu RTU oraz driver wtedy sam takie dane przetransformuje do ASCII.
W karcie "Dane-wysłanie" znajdują się zmienne:
TXLength - Wielkość nadawanych danych (w bajtach). Nie jest to wielkość kompletnej nadawanej wiadomości lecz tylko tej jej części, która jest zapisana w zmiennych DataX w tej karcie. Wartość -1 oznacza, że mają zostać nadane wszystkie zmienne DataX w tej karcie.
RXLength - Maksymalna oczekiwana wielkość odbieranych danych (w bajtach).
Nie jest to wielkość kompletnej odbieranej wiadomości lecz tylko tej jej części, która będzie zapisywana do zmiennych DataX w karcie "Dane-odbiór".
Wartość -1 oznacza, że oczekiwana wielkość zostanie obliczona jako całkowita długość wszystkich zmiennych DataX w karcie "Dane-odbiór".
Jeżeli wielkość wydaje się mniejsze niż w rzeczywistości odczytane dane, wtedy dojdzie do błędu i odczytane dane nie będą przetwarzane.
Jeżeli wielkość wydaje się większe niż w rzeczywistości odczytane dane, wtedy transmisja będzie trwać dłużej (będzie czekać na timeout), ale odczytane dane zostaną przetwarzane.
Slave - Adres urządzenia, z którym ma być prowadzona komunikacja.
Function - Numer (kod) funkcji Modbus. Na przykład 1 = Read Coil Status, 17 = Report Slave ID itd.
DataX - Dane definiowane przez użytkownika, które mają następują za numeren funkcji w wiadomości (bez końcowej sumy kontrolnej). Tych zmiennych (i różnych typów danych) może się w karcie znajdować więcej lecz nadane zostaną tylko te, które zmieszczą się do nadawanej wiadomości (tzn. według wartości w TxLength).
W karcie "Dane-odbiór" znajdujuą się zmienne:
Length - Wielkość rzeczywiście odebranych danych (w bajtach). Nie jest to wielkpść całej odebranej wiadomości lecz tylko tej jej części, która jest zapisana w zmiennych DataX w tej karcie.
Function - Numer (kód) funkcji Modbus. Stadardowo powinna się tu znajdpować taka sama wartość jak w karcie "Dane-wysłanie".
DataX - Odebrane dane. Takich zmiennych (także różnych typów danych) może się w tej karcie znajdować więcej, lecz wpisane zostaną tylko te, które znajdowały się w odebranej wiadomości.

Historia:
Pm9.00.22: Usunięty błąd: Korekta wysyłania wartości typów danych S1 = String type 1 (byte order: 214365..) oraz S3 = String type 3 (byte order: 123456..).
Pm8.03.25: Usunięty błąd: Optymalizowano podział zmiennych w obiekcie PmaCommGroup do pojedyńczych wiadomości.
Pm8.03.24:
- Uogólnienie o typ danych Modbus: LL2 = LongLong type 2 (8Byte Signed Integer)
- Usunięty błąd: Podczas odczytu danych nie przeprowadzano test, czy odpowiedź uzyskano z właściwego urządzenia.
Pm8.03.19: Uogólnienie o wysyłanie wiadomości typu broadcast przy pomocy obiektu PmaCommMsg, tzn. jeżeli określony Slave adres to 0, wtedy wiadomości będą odbierane przez wszystkie stacje w sieci.
Pm8.03.10: Uogólnienie zapisu danych o funkcję Modbus FN06 (obszar RoS).
Pm8.03.01: Usunięty błąd: Odczyt oraz zapis bitu w rejestrze (tzn. odczyt oraz zapis do obszaru RoB) nie działał poprawnie.
Pm8.02.11: w wiadomości typu XX-User defined opened function do zmiennej w karcie "Dane-odbiór" nie zapisywała się ilość bajtów pobranych danych lecz całkowita długość wiadomości.
Pm8.02.03: Usunięty błąd: Korekta transmisji wiadomości typu XX-User defined opened function.
Pm8.02.00:
- Obecnie można transmitować wiadomości dla funkcji definiowanych przez użytkownika. W parametrach obiektu PmaCommMsg można obecnie ustawić funkcję: XX-User defined opened function.
- Obecnie można zapisywać do poszczególnych bitów (zarówno w obiekcie PmaCommGroup jak i PmaCommMsg) przy pomocy funkcji Modbus 22-Mask Write Register (Modify Register Using both AND & OR Masks).
Pm8.00.05:
- do obiektu PmaCommGroup dodano nowy konfigurator "Domyślny adres urządzenia". W niktórych przypadkach upraszcza wprowadzanie oraz administrację adresów.
- Usunięty błąd: czasami nie działał poprawnie przesył danych w obiekcie PmaCommGroup.
Pm8.00.03:
- Uogólnienie o typ danych Modbus: R2 = Float type 2 (4Byte - IEEE 754)
- Usunięty błąd: obiekt PmaCommGroup czasami niepoprawnie odczytywał wartości bitowe.
Pm8.00.02: Usunięty błąd: W obiekcie PmaCommGroup nie był możliwy odczyt/zapis 4-bajt wartości (Long, Single).
© MICROSYS, spol. s r.o.