ModBus kommunikationsprotokoll
Modbus-protokollet är ett allmänt kommunikationsprotokoll som används i stor utsträckning inom dagens industriella kontroll. Med detta protokoll kan kontrollerna kommunicera med varandra eller med andra enheter via ett nätverk som Ethernet. Modbus-protokollet använder kommunikationsteknik från huvudenheten, det vill säga att huvudenheten aktivt förfrågar och hanterar från enheten. Protokollet som används av huvudenheten kallas vanligtvis Modbus Master och det som används av enheten kallas Modbus Slave. Typisk huvudutrustning inkluderar industriella kontroller och industriella kontroller. Typiska programmerbara kontroller från enheter som PLC etc. Modbus kommunikation fysiska gränssnitt kan välja seriella portar (inklusive RS232 och RS485) eller Ethernet-portar. Dess kommunikation följer följande process:
• Skicka förfrågningar från huvudenheten till
Analysera och bearbeta förfrågningar från huvudenheten och skicka sedan resultatet till huvudenheten
● Om något fel uppstår kommer en onormal funktionskod från enheten att returneras
ModBus-programvara för kommunikationsprotokoll
ModBus kommunikationsprotokoll programvara som lanseras av Intel används främst i Intel ARM9-inbäddade moderkort miljö, Intel Industrial Control-moderkort har en rik serieport, nätverksresurser, universella GPIO-gränssnitt och så vidare, samtidigt som de har en kraftig bearbetningskapacitet. I kombination med programvaran för ModBus-kommunikationsprotokollet är det mycket enkelt att skapa applikationsplattformar för master (master) och enhet (slave) som överensstämmer med ModBus-kommunikationsspecifikationerna. Med tanke på det huvudsakliga sättet att kommunicera med ModBus delas det ModBus-protokollpaketet in i två separata delar, nämligen "ModBus-masterprotokollprogramvaran" (förkortat modbus_Master) och "ModBus-enhetssidan-protokollprogramvaran" (förkortat modbus_Slave). För närvarande körs programvaran ModBus i WinCE-miljön och är tillgänglig för kunderna i form av C-funktioner plus statiska LIB-bibliotek. Dess huvudsakliga egenskaper är följande:
Perfekt för industriella applikationer i realtid
Kan stödja seriebaserade ModBus-applikationer eller TCP-baserade ModBus-applikationer
RTU överföringsläge
Stöd för de flesta Modbus-koder, inklusive bit-manipulation av inlägg på spolar, diskreta brytare och byte-manipulation av register
• Stöd för sändningsadresser
Flexibla inställningar av tidsfrister för ModBus-kommunikation
● Detaljerad information om felkoder för överföringsprotokollen i kommunikationen kan hämtas
Kommunikationsdiagram för programvaran ModBus

Funktionskoder som stöds av programvaran ModBus
Funktionskod |
Beskrivning |
1 |
Läs en enda spole |
2 |
Läs diskret inmatning |
3 |
Läs flera register |
4 |
Läs inmatningsregister |
5 |
Skriv en enda spole |
6 |
Skriva ett enskilt register |
15 |
Skriv flera rullar |
16 |
Skriv flera register |
22 |
Blockera skrivregister |
23 |
Läs/skriv register |
Grundläggande användningsmetoder för programvara
För att underlätta applikationens användning och upprätthålla en konsekvent kodform för olika kommunikationsmedier, kan API-funktionerna i ModBus-protokollprogramvaran (inklusive modbus_Master och modbus_Slave) som tillhandahålls av Intel stödja både serieport- och TCP-baserade Modbus-protokoll, applikationen behöver bara skilja mellan olika parametrar när initialiseringsfunktionen kallas, se motsvarande huvudfiler för instruktioner om parametrarna: modbus_Master.h och modbus_Slave.h
Användning av modbus_master
Applikationen som Modbus-klientläge är främst att förbereda förfrågningar och skicka förfrågningar till serverenheter och vänta på serverns svar. Vid utveckling av sådana applikationer kan användaren hänvisa sig till Modbus-standardlitteraturen och datahandboken för kommunikationsgränssnittet för den påstådda enheten, direkt kalla modbus_Master-paketet som tillhandahålls av Intel för att tillhandahålla motsvarande operativa API-funktioner för att slutföra åtkomst och kontroll av serverenheten. För att utveckla sådana appar behöver användaren bara inkludera modbus_master.h/modbus_master.lib.
Användning av modbus_slave
Som en applikation av ModBus-servermönster måste huvudsakligen implementera analys och svar på ModBus-applikationsmeddelanden, men det är bara en del av hela ModBus-kommunikationen, den andra delen behöver också tillgång till applikationsdata, innehållet i denna del behöver användaren själv definiera. För kundens bekvämlighet implementeras automatisk laddning av dessa användargränssnittsfunktioner i paketet modbus_Slave i form av funktionepekare som kopplar användarprogramdatabehandling och ModBus-applikationsmeddelandesvar. Användaren behöver bara definiera dessa gränssnittsfunktioner enligt behov för att implementera motsvarande funktion, varje specifik definition av funktionen implementeras genom en dedikerad CPP-fil: DataProvider.cpp.
Detta innebär att utvecklingen av denna typ av applikation måste innehålla två delar av innehållet, en del av API-funktionen som definieras av modbus_slave.h/modbus_slave.lib. En annan del är en användardata-gränssnittsfunktion som definieras av DataProvider.h / DataProvider.cpp, där gränssnittsfunktionen kräver att användaren specifikt implementeras i DataProvider.cpp.
För att svara på ModBus-applikationsmeddelanden i tid är det viktigt att notera att en tråd vid programmering bör utformas för att upprepade gånger kalla modbus_Slave-utförandefunktionen, som är i blockeringsläge.
Exempel är följande:
(1) Starta modbus-enhetspartiavtalet
hPort = mbusSlave_StartupServer(_T)'*'), 1, 10000, mbusSlave_Interface );
Eller...
hPort=mbusSlave_StartupServer(_T)"KOM3:9600-8-1-0"),1,10000, mbusSlave_Interface ).
(2) Anrop av den utförande funktionen Serverloop i trådan för att svara på förfrågan
medan( 1 )
{
//Anrop av utförandefunktioner för analys och svar på ModBus-meddelanden.
resultat = mbusSlave_ServerLoop( hPort );
om(resultat!=0)//Kontrollera om det returneras ett fel
{
//Felhantering: Detta exempel är textmeddelande för att hämta och skriva ut felkoden
wcscpy( szText, mbusSlave_GetErrorText( resultat));
i1 = wcslen( szText );
om(i1>0)
{
wcstombs( strText, szText, i1 );
för printf(felkod: %s! n'Stretex);
}
}
}
Tidigare tillhandahölls ModBus-protokollprogramvaran till kunderna i form av C-funktioner plus statiska bibliotek (modbus.lib eller libmodbus.a-filer). Eftersom fler och fler kunder använder ModBus-protokollet, i synnerhet masterprotokollprogramvaran (modbus_Master) som ett dynamiskt bibliotek (modbus_Master.dll eller libmbusmaster.so-filen) förinstalleras i Intel Embedded Industrial Control Core System för att underlätta användandet av kundernas applikationer. Modbus-protokollet ingår i alla huvudkort i ESM-serien (ESM6802, ESM6800, ESM335x, ESM928x osv.).
Relevanta referenser
| 4 ~ 20mA strömringsinsamling | Modbus master kommunikationsprotokoll programvara under WinCE | |
| Modbus Enhetspartsprotokollprogramvara under WinCE | Inbyggda Linux-moderkort med stöd för Modbus-masterprotokoll | |
| Modbus-programvara för Linux | ESM6802 stöder Qt MODBUS programutveckling | |
| Förinstallera Modbus-protokollet i ditt huvudkort |
