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