ModbusMaster

Previous  Next



ModbusMaster to moduł wymieniający dane z urządzeniami Slave protokołu Modbus.
Jeden moduł ModbusMaster może być podłączony do jednego z modułów komunikacji szeregowej Com lub IPSocket i wymieniać dane ze wszystkimi urządzeniami danej podsieci szeregowej, zgodnie z zasadami protokołu Modbus.

graphic

Konfiguracja modułu opisuje urządzenia Slave które są odpytywane przez Mastera.

Przykładowa konfiguracja urządzenia

Konfiguracja transmisji ModbusMaster

Przed konfiugracją należy podłączyć urządzenia do wybranego portu szeregowego i zasilić je.

1. Dodaj do konfiguracji dwa moduły: SerialPort oraz ModbusMaster

2. Skonfiguruj SerialPort: wskaż nazwę portu i ustaw parametry transmisji.

Przeczytaj  jak skonfigurować SerialPort.

3. Połącz ze sobą dodane moduły komunikacyjne.
graphic

Najszybszym sposobem na uzyskanie takiego połączenia jest przeciągnięcie jednego z modułów na drugi.

graphic

Przeczytaj więcej o mapowaniu kanałów.

4. Ustawienia konfiguracyjne ModbusMaster

graphic
  
Parametr
Wartość
Active
graphic moduł wyłączony
graphic moduł włączony
ConnectionMode
tryb połączenia (ciągły/modem)
DefaultTimeOut
domyślny czas na odpowiedź
Name
nazwa mastera


5. Definiowanie urządzeń

Wykrywanie urządzeń

Jeśli producenci podłączanych urządzeń zaimplementowali funkcję 0x11 umożliwiającą identyfikację urządzeń to można je automatycznie wykryć. Wzorce znanych systemowi urządzeń znajdują się we wzrocach folderu Devices.
Informacja o tym czy dane urządzenie obsługuje funkcję
"0x11h Report Slave ID"  powinna znajdować się w dokumentacji urządzenia.

Przed przystąpieniem do wykrywania urządzeń należy upewnić się, czy podłączane urządzenia znajdują się w katalogu wzorców. Jeśli nie, należy dodać urządzenie ręcznie, stworzyć jego konfigurację i zapisać ją do wzorców. Ułatwi to następnym razem podłączenie danego urządzenia.

Autodetekcja

Aby rozpocząc detekcję urządzeń należy włączyć moduły: ComDriver i ModbusMaster oraz wybrać z menu ModbusMaster polecenie Find devices.

graphic

Odpytane zostaną wszystkie urządzenia z zakresu 1..254.
Identyfkację urządzeń można w dowolnym momencie przerwać wybierając z menu modułu polecenie Break.
Jeśli zostanie wykryte urządzenie na danym adresie to zostanie niezwłocznie dodane do drzewka konfiguracyjnego.
Jeśli będzie to urządzenie zdefiniowane we wzorcach, to zostanie dołączony jego wzorzec, z aktualnym adresem.



Uwaga: urządzenia są identyfikowane po numerze ID. Poszczególne modele lub wersje danego urządzenia mogą różnić się numerem ID.
Jeśli dla znalezionego urządzenia nie będzie zdefiniowany wzorzec to do konfiguracji zostanie dołączone UnknownDevice z odpowiadającym mu adresem oraz numerem ID. Urządzenie to będzie wymagało skonfigurowania.

    Automatycznie dodane do konfiguracji urządzenie jest poprawnie skonfigurowane i wymienia dane.

Definiowanie nieznanego urządzenia

Jeśli dysponujemy konfigurowanym urządzeniem i urządzenie to wspiera funkcję 0x11h to najlepszym sposobem na jego szybkie skonfigurowanie jest dodanie go poleceniem Find devices. Wykryte w ten sposób urządzenie ma już skonfigurowany adres i pobrany ciąg identyfikujący.

Gdy nie dysponujemy urządzeniem w chwili konfiguracji lub urządzenie nie wspiera identyfikacji należy dodać je ręcznie.

1. Z menu folderu IODevices wybierz Insert ModbusDevice.

graphic

2. Ustawienia konfiguracyjne urządzenia ModbusDevice

graphic
  
Parametr
Wartość
Active
graphic urządzenie wyłączone
graphic urządzenie włączone
Address
Adres urządzenia z zakresu 1..254 w podsieci Modbus
IOType
typ urządzenia ModbusMaster
Identification
ciąg bajtów identyfikujący dane urządzenie zwracany przez funkcję 0x11h Report Slave ID, jeśli jest ona wspierana przez urządzenie. Pole to jest automatycznie wypełnione gdy wybierzemy polecenie ScanBy0x11ReportSlaveID.
Mode
wybór trybu Modbus ASCII lub Modbus RTU
Name
nazwa urządzenia w konfiguracji programu
Retries
ilość ponowień zapytania w przypadku braku odpowiedzi
TimeBetweenFrames
Czas pomiędzy otrzymaniem odpowiedzi na ramkę, a wysłaniem następnej
TimeOut
nieprzekraczalny czas odpowiedzi urządzenia
TimeTrendCache
 
TimeOut
nieprzekraczalny czas odpowiedzi urządzenia


3. Konfigurowanie bloków IOBlocks danych urządzenia

Bloki danych przedstawiają podział pamięci urządzenia i przyporządkowują im funkcję zapisu lub odczytu. System wspiera następujące rodzaje danych:
  
Typ
funkcja odczytu
funkcja zapisu
coils / cewki
0x01
0x05
discrete inputs / wejścia dyskretne
0x02
---
input registers / rejestry wejściowe
0x04
---
holding registers / rejesty wewnętrzne
0x03
0x06
FIFO Queue / ciąg bajtów
0x18
nie wspierana

Zdefiniowane w programie bloki danych stanowią zarazem sekwencję odpytywania urządzenia przez Mastera. Tworząc konfigurację bloków należy podzielić przestrzeń danych urządzenia na spójne fragmenty. Fragmenty te można zdefiniować w jednym lub więcej bloków.
Np, jeśli urządzenie udostępnia rejestry holding w zakresach 4000...4032 oraz 7000...7120 to należy definiować 2 bloki obsługujące oba zakresy, lub
w danym zakresie zdefiniować wiele bloków.

Urządzenie jest odpytywane funkcją odczytu w obrębie całego bloku.
Niektóre urządzenia posiadają ograniczenie na ilość  jednocześnie odpytanych rejestrów.

Przeczytaj więcej na temat typów danych protokołu Modbus.


4. Właściwy blok danych wraz z określoną funkcją można wybrać wprost z menu folderu IOBlocks

graphic

Blok danych można zdefiniować również ręcznie wybierając
ModbusxxxIOBlock.

Ustawienia konfiguracyjne bloku IOBlock.

graphic

  
Parametr
Wartość
Active
graphic blok obsługinany
graphic blok nieobsługiwany
DataType
możliwe typy danych przypisane danej funkcji
opis pod tabelką
ExecutionMode
tryb wywoływania bloku
continous
blok odpytywany cyklicznie
callback
odczyt danych wywołany wyłącznie przez funkcję modułu skryptowego
continous and callback
oba wymienione tryby

 
ExtraTimeOut
dodatkowy czas oczekiwania na odpowiedź urządzenia przy komunikacji z blokiem.
Jeśli komunikacja z urządzeniem przy wywołaniu funkcji tego bloku może trwać więcej niż TimeOut zdefiniowany globalnie dla urządzenia to należy podać dodatkowy czas. Łączny czas oczekiwania na odpowiedź jest sumą czasów TimeOut i ExtraTimeOut
Function
funkcja modbus
Name
nazwa bloku danych
RangeFrom
dolny zakres rejestów
RangeTo
górny zakres rejestów
Zakresy dolny i górny są wykorzystywane jedynie podczas funkcji Create Channels.


Typy danych DataType

Tabela przedstawia wspierane przez program typy danych dla poszczególnych funkcji protokołu Modbus.
  
Funkcja
Typ
Opis
0x01 Read Coils
0x05 WriteSingleCoil
coil
wartość binarna 0,1
0x02 Read Discrete Inputs
discrete input
wartość binarna 0,1
0x03 Read Holding Registers
0x04 Read Input Registers
0x06 Write Single Register
16 bit register

32 bit register


2x16 bit register
wartości całkowite
0x00 .. 0xFFFF
wartości całkowite lub zmiennoprzecinkowe
0x00 .. 0xFFFFFFFF
wartości całkowite lub zmiennoprzecinkowe
0xFFFF << 16 + 0xFFFF
0x18 Read FIFO Queue
raw
ciąg bajtów

Taki podział typów danych umożliwia na wymianę danych z każdym urządzeniem protokołu Modbus.


Konfigurowanie kanałów

Należy dodać odpowiednią ilość kanałów.

graphic


Ustawienia konfiguracyjne kanału.
  
Parametr
Wartość
Comment
komentarz
Disable
graphic kanał nie aktywny
graphic kanał aktywny
Name
nazwa kanału, tworzona w części automatycznie
Register
rejest w urządzeniu przypisany do kanału
Type
typ danych systemu
ValueType
reprezentacja liczby


Reprezentacja liczby ValueType związana jest z typem danych bloku - DataType
  
DataType
ValueType
Opis
coil
discrete input
bit
wartość dyskretna 0,1 zapisana na 1 bicie
16 bit register
16 bit integer
wartość całkowita 0x0...0xFFFF
32 bit register
 
32 bit (1234) integer
(1234) float

32 bit (3412) integer
(3412) float
msb1

2

3
lsb
4
  
msb3

4

1
lsb
2
 
2x16 bit register
32 bit (1234) integer
(1234) float


32 bit (3412) integer
(3412) float
msb1

2
 

3
lsb
4
register 1
 
register 2
  
msb1

2
 

3
lsb
4
register 1
 
register 2
 
raw
raw
1
2
...
n-1
n
 

2x16 bit register polega na połączeniu ze sobą 2 rejestrów 16 bitowych.
W zależności od urządzenia rejestry te mogą mieć zamienioną kolejność. Ustawienia (3412) mają najczęściej zastosowanie do rejestów składanych 2x16.


Praca modułu ModbusMaster

Poprawnie skonfigurowany moduł odczytuje dane z rejestrów zdefiniowanych w blokach funkcji odczytu. Cyklicznie odczytywane są tylko bloki aktywne Active On o zdefioniowanym ExecutionMode = continous lub callback and continous.

Urządzenia odpytywane są kolejno po 1 bloku.