DataProvider dla protokołu MODBUS (RS) - Instrukcja

Transkrypt

DataProvider dla protokołu MODBUS (RS) - Instrukcja
DATAPROVIDER DLA PROTOKOŁU MODBUS (RS) - INSTRUKCJA
KONCEPCJA DATAPROVIDER’A I SERWERY OPC
Dzięki modułowej budowie oprogramowania CommServer możliwa jest budowa wielu dedykowanych serwerów OPC (Data
Access 2.00, 2.05a, 3.0). Każdy z serwerów OPC “na bazie CommServer™” składa się z dwóch komponentów: komunikacyjnego
jądra OPC oraz dedykowanej wtyczki protokołu (DataProvider’a).
Dedykowany serwer wykorzystuje to samo jądro komunikacyjne, co funkcjonalnie pełna wersja CommServer™. Dzięki temu
każdy z naszych serwerów OPC jest certyfikowanym serwerem OPC i posiada znak OPC Foundation “Self-tested for
compliance”.
SERWER OPC DLA MODBUS (RS)
Modbus jest protokołem komunikacyjnym stworzonym przez firmę Modicon w 1979 roku. Służy
do komunikacji z programowalnymi sterownikami tej firmy, a także innych producentów. Modbus
stał się de facto powszechnie stosowanym w przemyśle standardem komunikacyjnym. Serwer OPC
dla Modbus na bazie CommServer’a pozwala na udostępnianie w standardzie OPC danych z każdego
urządzenia obsługującego komunikację w standardzie Modbus (RTU), w szczególności ze
sterowników przemysłowych (PLC). Powstały dwie wersje protokołu Modus:
 dla łącza szeregowego (RS232, RS422, RS485)
 dla sieci Ethernet
Serwer OPC dla Modbus RS na bazie CommServer’a jest przeznaczony do komunikacji
szeregowej (poprzez interfejsy RS232, RS422 lub RS485) jako master zgodnie z protokołem Modbus
RTU.
Serwer OPC dla Modbus RS na bazie CommServer jest standardowo dostępny w dwóch wersjach:
1.
OPC_MODBUS_RS200 - Serwer OPC (OPC DA 2.00, 2.05a, 3.0) dla Modbus RTU, szeregowy, 200 punktów
(tag’ów OPC).
doc: PR21021501P02-MODBUS_RS_manual/Ver:48
1
2.
OPC_MODBUS_RS1K - Serwer OPC (OPC DA 2.00, 2.05a, 3.0) dla Modbus RTU, szeregowy, 1000 punktów
(tag'ów OPC).
Jeżeli
potrzebna
jest
inna
wersja
produktu
prosimy
o
kontakt.
Serwer OPC dla Modbus na bazie CommServer jest certyfikowanym serwerem OPC i posiada znak OPC Foundation “Self-tested
for compliance”.
Serwer umożliwia komunikację z dowolnym urządzeniem zgodnym ze standardem Modbus, między innymi ze sterownikami
PLC i systemami DCS następujących producentów:

ABB

Emerson

Saia-Burgess

Allen-Bradley

GE Fanuc

Schneider (Modicon)

Beckhoff

Honeywell

Yokogawa

Control

Koyo

DGH

Mitsubishi
SZCZEGÓŁY TECHNICZNE
W celu wykorzystania protokołu MODBUS RTU należy uruchomić oprogramowanie Network Configuration i
wybrać DP.MODBUS.RS (CAS.CommSvrPlugin_MODBUS) dla komunikacji z wykorzystaniem łącz szeregowych. W tym
przypadku należy wybrać typ transmisji RS lub TCP/UDP1.
Ustawienie interfejsu komunikacyjnego
Łącze szeregowe (port RS) należy skonfigurować tak samo, jak interfejs sterownika, do którego się podłączamy.
Standardowe ustawienia portu COM dla CommServer’a:

Baud rate: 9600 bps

Parity: None

Data bits: 8

Stop bit: 1
Możliwe jest wykorzystanie TCP/UDP do
przesyłania ramek Modbus RTU. Jeżeli chcemy
wykorzystać ten typ komunikacji należy wybrać TCP
lub UDP w ustawieniach. Ustawienie SocketNumber jest
ignorowane i wartość domyślna może zostać ustawiona
na -1 (ustawienie to jest potrzebne przy
wykorzystywaniu protokołu po stronie slave).
Ustawienia protokołu Modbus
CommServer umożliwia ustawianie parametrów transmisji i timeout’ów dla DataProvider’a Modbus.
W większości przypadków zalecane są ustawienia standardowe, jednak w przypadku potrzeby zmian do dyspozycji są
następujące parametry:

InterframeGap – czas w milisekundach, jaki musi
upłynąć przed transmisją kolejnej ramki.

MaxNumberOfRetries
–
maksymalna
ilość
powtórzeń, jaką należy wykonać przed uznaniem, że
komunikacja ze zdalną stacją nie jest możliwa;
1
Nie jest to ustawienie standardowe, ale wiele rozwiązań (np. niektóre zdalne serwery portów lub urządzenia firmy Control
Sp. z o.o.) wykorzystuje protokół TCP/UDP do przesyłu ramek Modbus RTU.
doc: PR21021501P02-MODBUS_RS_manual/Ver:48
2
nastąpi wtedy przełączenie na kolejny interfejs, jeżeli został on skonfigurowany. Interfejs, po którym komunikacja nie
jest możliwa, zostanie oznaczony jako uszkodzony i pozostanie w tym stanie do momentu, aż upłynie zdefiniowany
czas („czas bezczynności po uszkodzeniu”).

ResponseTimeOut – maksymalny czas, jaki może upłynąć w oczekiwaniu na ramkę odpowiedzi.

Timeout15 - maksymalny czas w mikrosekundach, jaki może upłynąć podczas odczytywania ramki odpowiedzi do
czasu otrzymania kolejnego znaku odpowiedzi. Zalecane jest, by był on równy czasowi transmisji półtora znaku w
łączu szeregowym (przy ustalonej wcześniej prędkości transmisji), ze względu na ograniczenia systemu Windows nie
zalecane jest ustawianie czasu krótszego niż 11 milisekund.

Timeout35 - maksymalny czas w po jakim Modbus DataProvider uznaje, że żaden nowy znak się nie pojawi i ramka
została zakończona. Zalecane jest, by był on równy czasowi transmisji trzech i pół znaków w łączu szeregowym (przy
ustalonej wcześniej prędkości transmisji)
Uwaga: Ustawienia domyśle są optymalnymi dla komunikacji z wykorzystaniem łącza szeregowego; w przypadku
wykorzystana komunikacja TCP/UDP zalecane jest „podkręcenie” ustawień.
Uwaga: Przy korzystaniu z warstwy transportowej TCP/UDP do przesyłania ramek Modbus RTU należy odpowiednio
skonfigurować adres segmentu. Trybu TCP/UDP można użyć na przykład, gdy łączymy się poprzez zdalny serwer portów (np.
PortServer One TS firm DIGI). W tym przypadku należy ustawić typu protokołu na TCP:
Istotne jest też ustawienie właściwego adresu segmentu. W tym przypadku wpisujemy adres w postaci:
adres_IP_serwera:port_na_który_się_łączymy
Na poniższym rysunku pokazano przykład połączenia z serwerem PortServer One TS, który znajduje się pod adresem
192.168.0.8 i wykorzystuje port 2101 do komunikacji:
Konfiguracja i interpretacja odczytywanych danych
DataProvider dla protokołu ModBUS odczytuje dane blokowo. Zapytania wysyłane są do konkretnego urządzenia (w
konfiguracji CommServer’a nazywanego stacją), którego adres (według protokołu ModBUS) jest umieszczany w definicji
portu (lub interfejsu) dla konkretnej stacji. W CommServer’rze należy skonfigurować blok danych (DataBlock) dla każdego
odczytywanego urządzenia.
Podczas konfiguracji bloków danych należy skonfigurować następujące parametry:

Address – początkowy adres bloku

Data Type – przestrzeń adresowa urządzenia, która ma być czytana (dostępne przestrzenia adresowe: Coils, Discrete
Inputs, Holding Registers, Input Registers, Memory Bank Registers 2, 8 bits Holding Registers3)

Name – nazwa bloku danych w konfiguracji CommServer’a (nie używana podczas komunikacji)

Tags collection – definicja tagów w bloku danych. Każdy tag ma:
 Name – nazwa tagu w przestrzeni adresowej serwera OPC,
 Access Rights – wskazuje prawa odczytu/zapisu dla tagów. Nie jest to związane z zabezpieczeniami, ale
z zastosowanym sprzętem warstw niższych.
 DataTypeConversion – konwersja typów. Dane zostaną udostępnione w określonym przez użytkownika
typie (jeżeli konwersja jest możliwa).
Adresy w Modbus: adres a przesunięcie (wskaźnik)
W protokole Modbus, adres bloku wskazuje na przesunięcie określonego elementu w obrębie przestrzeni adresowej (np.
holding register, coils, itp.), ale przesunięcie to może nie być równe fizycznemu adresowi elementu w pamięci urządzenia.
Przykładem takiej sytuacji jest sterownik Modicon 984, gdzie:
2
3
Rozszerzenie protokołu dla urządzeń firmy Control Sp. z o.o.
Rozszerzenie protokołu dla urządzeń firmy Control Sp. z o.o.
doc: PR21021501P02-MODBUS_RS_manual/Ver:48
3

Rejestr o przesunięciu 0 jest adresem 40001 w sterownik Modicon 984,

Coil o przesunięciu 0 jest adresem 00001 w sterownik Modicon 984.
Dlatego czasami wymagana jest zamiana adresu na przesunięcie (np. należy odjąć 40001 kiedy używamy Holding Register)
i wstawienie przesunięcia (nie adresu) przy konfiguracji bloków danych CommServer’a.
Rejestry 32-bitowe i rozszerzenie zmiennoprzecinkowe
DataProvider dla Modbus wspiera również niektóre, niestandardowe rozszerzenia protokołu:

32-bitowy Holding Register

Liczby zmiennoprzecinkowe
W protokole Modbus rejestr 32-bitowy jest przesyłany jako dwa zwykłe (16-bitowe) rejestry. Istnieją dwa tryby przesyłania
rejestrów 32-bitowych. W pierwszym trybie (zwykle nazywanym Modicon), pierwszy przesłany rejestr zawiera bity od 15 do
0, a drugi bity od 31do 16, z 32-bitowej liczby. W drugim trybie (nazywanym „odwróconym”), kolejność przesyłania rejestrów
została zamieniona. DataProvider dla Modbus’a wspiera oba tryby, a wyboru trybu dokonuje się w konfiguracji
DataProvider’a ustawiając właściwość RegisterOrderIn32mode (zobacz rysunek poniżej).
Przy wykorzystywaniu 32-bitowego Holding Register należy skonfigurować specjalny blok danych typu
Holding_32bit_Register (zobacz rysunek poniżej). Trzeba pamiętać, że liczby zmiennoprzecinkowe są dostępne jedynie w
przypadku wykorzystania rejestrów 32-bitowych.
W przypadku, kiedy będą wykorzystywane liczby zmiennoprzecinkowe, musi zostać wybrany odpowiedni format liczb.
DataProvider wspiera dwa formaty: Modicon [standardowy: pierwszy rejestr zawiera bity 15-0 (bity 15-0 część znacząca),a
drugi 31-16 (eksponent i bity 23-16 części znaczącej) liczby 32-bitowej] oraz IEEE („odwrócony”: format IEEE liczb
zmiennoprzecinkowych). DataProvider dla Modbus’a wspiera oba formaty liczb zmiennoprzecinkowych, a wyboru dokonuje
się w konfiguracji DataProvidera ustawiając właściwość FloatingPoint (zobacz rysunek poniżej). Dodatkowo dla wszystkich
elementów, które mają być dostępne w OPC jako liczby zmiennoprzecinkowe, należy wybrać konwersję na typ System.Single.
doc: PR21021501P02-MODBUS_RS_manual/Ver:48
4
Rozszerzenie Modbus dla firmy Control Sp. z o.o..
DataProvider dla Modbus wspiera niektóre rozszerzenia protokołu używane przez firmę Control Sp z o.o. Dostępne są:
Memory Bank Registers, 8-bit Holding Registers.
“Memory Bank Registers” są 16-bitowymi rejestrami w banku pamięci. W tym przypadku adresowanie zostało rozszerzone,
aby była możliwość wybrania banku pamięci. Adres bloku ma następującą składnię (zapis szesnastkowy): xxyyyyh, gdzie: xx
jest numerem banku, a yyyy jest adresem rejestru. Numer banku pamięci zależy od typu pamięci i rzeczywistego numeru
banku pamięci. Dla pamięci RAM dostępne są banki pamięci od 0 do 7 (w zapisie xx od 00 do 07) i adresy rejestrów od 0000h
do 3FF7h; dla pamięci EEPROM dostępne są banki od 0 do 5 (w zapisie xx od 00 do 05) i adresy rejestrów od 0000h do
3FF7h. Ponieważ CommServer przechowuje adresy bloków jako liczby w zapisie dziesiętnym, należy zamienić adres na jego
dziesiętną reprezentację. Przykładowo dla rejestru o adresie 1 w banku pamięci RAM o numerze 2, adresem bloku jest
020001h (zapis szesnastkowy), co w zapisie dziesiętnym jest adresem 131073 (tą wartość należy wpisać jako adres bloku).
“8-bit Holding Registers” są rejestrami dostępnymi w urządzeniu. Są one podobne do standardowych “Holding Registers”,
ale mają długość tylko 8-bitów.
www.commsvr.com
www.cas.eu
[email protected]
OPC Foundation logo Self –Tested for Compliance jest znakiem handlowym OPC Foundation i może być używane tylko za pisemnym pozwoleniem
OPC Foundation. Każde nieautoryzowane użycie logo Self –Tested for Compliance jest zabronione.
OPC Foundation logo Self –Tested for Compliance wskazuje, że dany produkt został sprawdzony przez producentów oraz jest zgodny z następującymi
Specyfikacjami OPC:
Data Access 2.00
Data Access 2.05a
Data Access 3.00
Dodatkowe informacje o testach zgodności, zasadach używania logo oraz podsumowanie rezultatów dla produktu CommServer 3 można znaleźć na
stronie www.opcfoundation.org.
doc: PR21021501P02-MODBUS_RS_manual/Ver:48
5

Podobne dokumenty