Protokół komunikacji ModBus
Modbus to powszechny protokół komunikacji, który jest szeroko stosowany w dzisiejszych systemach sterowania przemysłowym. Za pomocą tego protokołu kontrolery mogą komunikować się ze sobą lub z innymi urządzeniami za pośrednictwem sieci (np. Ethernet). Protokół Modbus wykorzystuje technologię komunikacji z głównego urządzenia, czyli aktywne zapytanie i obsługa z urządzenia głównego. Protokół używany przez urządzenie główne nazywany jest Modbus Master, a protokół używany przez urządzenie nazywany jest Modbus Slave. Typowe urządzenia główne obejmują kontrolery przemysłowe i kontrolery przemysłowe; Typowe z urządzeń takich jak PLC programowalne sterowniki itp. Interfejs fizyczny komunikacji Modbus może być wybrany za pomocą portów seryjnych (w tym RS232 i RS485) lub portów Ethernet. Komunikacja odbywa się zgodnie z następującym procesem:
• Urządzenie główne wysyła żądania z urządzenia
Analizuj i przetwarzaj żądania z urządzenia głównego, a następnie wysyłaj wyniki do urządzenia głównego
● Jeśli pojawi się jakikolwiek błąd, z urządzenia zwróci się kod funkcjonalny wyjątkowy
Informacje o oprogramowaniu do protokołu komunikacyjnego ModBus
Oprogramowanie do protokołu komunikacyjnego ModBus wprowadzone przez InGen jest stosowane głównie w środowisku płyt głównych wbudowanych ARM9 InGen, które posiadają bogate porty seryjne, zasoby sieciowe, uniwersalny interfejs GPIO itp., a także potężną wydajność przetwarzania. W połączeniu z oprogramowaniem do protokołu komunikacyjnego ModBus można łatwo utworzyć platformę aplikacyjną Master (Master) i Slave (Slave) zgodną ze specyfikacją komunikacyjną ModBus. W odniesieniu do głównego sposobu komunikacji ModBus, pakiet oprogramowania ModBus podzielony jest na dwie niezależne części, a mianowicie „ModBus Master Protocol Software” (skrót modbus_Master) i „ModBus Device Side Protocol Software” (skrót modbus_Slave). Obecnie oprogramowanie ModBus działa w środowisku WinCE i jest dostępne dla klientów w formie funkcji C plus biblioteki LIB statycznej. Jego główne cechy są następujące:
Doskonale nadaje się do zastosowań przemysłowych w czasie rzeczywistym
Można obsługiwać aplikacje ModBus oparte na portach seryjnych lub aplikacje ModBus oparte na TCP
Tryb transmisji RTU
Obsługa większości operacji kodu funkcjonalnego Modbus, w tym operacji bitowych na cewkach, przełącznikach dyskretnych i operacji bajtów rejestru
• Obsługa adresów nadawczych
Elastyczne ustawienie czasu ukończenia komunikacji ModBus
● Można uzyskać szczegółowe informacje o kodach błędów protokołu transmisji w komunikacji
Diagram komunikacji oprogramowania ModBus

Kody funkcjonalne obsługiwane przez oprogramowanie ModBus
Kod funkcjonalny |
Opis |
1 |
Czytaj pojedynczą cewkę |
2 |
Odczytaj wejście dyskretnego |
3 |
Odczytaj wiele rejestrów |
4 |
Czytanie rejestru wejściowego |
5 |
Napisz pojedynczą cewkę |
6 |
Napisanie pojedynczego rejestru |
15 |
Napisz wiele cewek |
16 |
Napisanie wielu rejestrów |
22 |
Blokowanie rejestru zapisu |
23 |
Rejestr odczytu/zapisu |
Podstawowe sposoby używania oprogramowania
Aby ułatwić obsługę aplikacji i zachować spójną formę kodu dla różnych mediów komunikacyjnych, funkcje API w oprogramowaniu ModBus (w tym modbus_Master i modbus_Slave) oferowane przez InGen mogą obsługiwać zarówno protokół Modbus oparty na portach seryjnych, jak i TCP. Aplikacja musi tylko rozróżnić się różnymi parametrami podczas wywoływania funkcji inicjalizacyjnej. Informacje o parametrach znajdują się w odpowiednich nagłówkach: modbus_Master.h i modbus_Slave.h
Zastosowanie modbus_master
Zastosowanie jako tryb klienta Modbus jest głównie przygotowywanie żądań i wysyłanie żądań do urządzenia serwera i oczekiwanie na odpowiedź serwera. Przy opracowywaniu takich aplikacji, użytkownicy mogą odwołać się do literatury standardowej Modbus oraz podręcznika danych interfejsu komunikacyjnego oskarżonego urządzenia i bezpośrednio wywołać pakiet modbus_Master dostarczany przez Intel zapewniający odpowiednią funkcję operacyjną API w celu uzyskania dostępu i kontroli nad urządzeniem serwerowym. Przy tworzeniu takich aplikacji użytkownicy muszą tylko zawrzeć modbus_master.h/modbus_master.lib.
Zastosowanie modbus_slave
Jako aplikacja w trybie serwera ModBus, głównie potrzeba realizacji analizy i odpowiedzi na wiadomości aplikacji ModBus, ale jest to tylko część całej komunikacji ModBus, a druga część wymaga dostępu do danych aplikacji, która część musi być zdefiniowana przez użytkownika. Aby ułatwić użytkowanie klienta, automatyczne ładowanie tych funkcji interfejsu użytkownika w pakiecie modbus_Slave w postaci wskaźnika funkcji jest realizowane, łącząc przetwarzanie danych aplikacji użytkownika z odpowiedzią na wiadomość aplikacji ModBus. Użytkownik musi tylko zdefiniować te funkcje interfejsu w zależności od potrzeb, aby zrealizować odpowiednie funkcje, a konkretna definicja każdej funkcji jest realizowana za pośrednictwem specjalnego pliku CPP: DataProvider.cpp.
Z tego wynika, że podczas tworzenia takich aplikacji należy zawierać dwie części zawartości, część jest funkcją API zdefiniowaną przez modbus_slave.h/modbus_slave.lib; Inną częścią jest funkcja interfejsu danych użytkownika zdefiniowana w DataProvider.h / DataProvider.cpp, gdzie funkcja interfejsu wymaga od użytkownika konkretnej implementacji w DataProvider.cpp.
Aby warto odpowiedzieć na wiadomości aplikacji ModBus, należy pamiętać, że podczas programowania należy zaprojektować wątek, który wielokrotnie wywołuje funkcję wykonywania modbus_Slave, która jest w trybie blokowania.
Na przykład:
(1) Uruchomienie protokołu strony urządzenia modbus
hPort = mbusSlave_StartupServer(_T)'*'), 1, 10000, mbusSlave_Interface );
Albo...
hPort=mbusSlave_StartupServer(_T)"COM3:9600-8-1-0"),1,10000, mbusSlave_Interface );
(2) wywołanie funkcji wykonywania w wątku Serverloop w odpowiedzi na żądanie
podczas gdy( 1 )
{
//Wywołanie funkcji wykonywania do analizy i reagowania na wiadomości ModBus.
wynik = mbusSlave_ServerLoop( hPort );
jeśli(wynik!=0)//Sprawdź, czy zwrócił błąd
{
//Rozwiązywanie błędów: Ten przykład to informacja tekstowa o pobieraniu i wydrukowaniu kodu błędu
wcscpy( szText, mbusSlave_GetErrorText( wynik));
i1 = wcslen( szText );
jeśli(i1>0)
{
wcstombs( strText, szText, i1 );
printf ()kod błędu: %s! n'Stretex);
}
}
}
Poprzednie oprogramowanie do protokołu komunikacyjnego ModBus dostarczane przez Intel było dostępne dla klientów w formie funkcji C plus biblioteki statycznej (pliki modbus.lib lub libmodbus.a). Wraz z coraz większą liczbą klientów, Intel wstępnie zainstalowała protokół ModBus, w szczególności oprogramowanie do protokołu głównego (modbus_Master) w formie biblioteki dynamicznej (plik modbus_Master.dll lub libmbusmaster.so) w systemie jądra Intel Embedded Industrial Control Board w celu ułatwienia wywoływania aplikacji klienta. Preinstalacja protokołu Modbus obejmuje wszystkie płyty główne z serii ESM (ESM6802, ESM6800, ESM335x, ESM928x itp.).
Odnośniki
| Aplikacje do pobierania pierścienia prądu 4-20mA | Oprogramowanie do protokołu komunikacyjnego Modbus pod WinCE | |
| Oprogramowanie Modbus dla WinCE | Wbudowana płyta główna Linuxa obsługuje oprogramowanie Modbus Master | |
| Przedstawienie oprogramowania Modbus dla systemu Linux | ESM6802 wspiera rozwój programów Qt MODBUS | |
| Preinstalacja protokołu Modbus na płycie głównej |
