Introduzione al protocollo ModBus
Modbus è un protocollo di comunicazione universale ampiamente utilizzato nel campo del controllo industriale di oggi. Con questo protocollo, i controller possono comunicare tra loro o con altri dispositivi tramite una rete, come Ethernet. Il protocollo Modbus utilizza la tecnologia di comunicazione master-from, cioè la richiesta attiva e l'operazione dal dispositivo master. Il protocollo utilizzato dal dispositivo master è generalmente chiamato Modbus Master e il protocollo utilizzato dal dispositivo è chiamato Modbus Slave. Le attrezzature principali tipiche includono macchine di controllo industriali e controllori industriali, ecc.; Tipico da dispositivi come PLC controllori programmabili, ecc. Le interfacce fisiche di comunicazione Modbus possono essere scelte con porte seriali (comprese RS232 e RS485) o con porte Ethernet. La sua comunicazione segue il seguente processo:
● Il dispositivo principale invia richieste dal dispositivo
● Analizzare ed elaborare le richieste dal dispositivo principale e inviare i risultati al dispositivo principale
● Se si verificano errori, un codice di funzionalità eccezionale viene restituito dal dispositivo
Introduzione del software ModBus
I prodotti software per il protocollo di comunicazione ModBus lanciati da Intel sono utilizzati principalmente per l'ambiente di scheda madre Embedded ARM9 di Intel, tutte con una ricca gamma di porte seriali, risorse di rete, interfaccia GPIO universale, ecc. e una potente capacità di elaborazione. In combinazione con il software del protocollo di comunicazione ModBus, è possibile creare facilmente piattaforme di applicazione master (Master) e slave (Device) conformi alle specifiche di comunicazione ModBus. Il pacchetto ModBus è diviso in due parti che possono essere utilizzate in modo indipendente, cioè il "ModBus Master Protocol Software" (abbreviato modbus_Master) e il "ModBus Device Side Protocol Software" (abbreviato modbus_Slave). Attualmente, il software ModBus viene eseguito in ambiente WinCE e viene fornito ai clienti come funzione C più librerie LIB statiche. Le caratteristiche principali sono le seguenti:
Ideale per applicazioni industriali in tempo reale
Possibilità di supportare applicazioni ModBus basate su porta seriale o applicazioni ModBus basate su TCP
Modalità di trasmissione RTU
Supporta la maggior parte delle operazioni di codice funzionale Modbus, incluse le operazioni di bit di input per bobine, interruttori discreti e byte di registro
• Indirizzi di trasmissione supportati
Possibilità di impostare flessibilmente i tempi di scadenza della comunicazione ModBus
● Possibilità di ottenere dettagli sui codici di errore del protocollo di trasmissione nella comunicazione
Diagramma delle comunicazioni del software ModBus

Codice funzionale supportato dal software ModBus
Codice funzionale |
Descrizione |
1 |
Leggere bobina singola |
2 |
Leggere l'input discreto |
3 |
Leggere più registri |
4 |
Leggere il registro di ingresso |
5 |
Scrivere una bobina singola |
6 |
Scrivere un singolo registro |
15 |
Scrivere più bobine |
16 |
Scrivere più registri |
22 |
Blocca il registro di scrittura |
23 |
Registro di lettura/scrittura |
Uso fondamentale del software
Per semplificare l'uso delle applicazioni e mantenere una forma di codice coerente per i diversi mezzi di comunicazione, le funzioni API nel software ModBus (tra cui modbus_Master e modbus_Slave) fornito da InGen possono supportare sia il protocollo Modbus basato su porta seriale che TCP, l'applicazione deve solo distinguere con diversi parametri quando si chiama la funzione di inizializzazione, per le istruzioni sui parametri vedere i file di intestazione corrispondenti: modbus_Master.h e modbus_Slave.h
Applicazione di modbus_master
L'applicazione come modalità client Modbus consiste principalmente nella preparazione delle richieste e nell'invio delle richieste al dispositivo server in attesa della risposta del server. Durante lo sviluppo di tali applicazioni, l'utente può fare riferimento alla letteratura standard Modbus e al manuale dei dati dell'interfaccia di comunicazione del dispositivo controllato, chiamando direttamente il pacchetto modbus_Master fornito da Intel per fornire la funzione API operativa corrispondente per completare l'accesso e il controllo del dispositivo server. Per lo sviluppo di tali applicazioni, è sufficiente includere modbus_master.h/modbus_master.lib.
Applicazione di modbus_slave
Come applicazione in modalità server ModBus, è necessario principalmente implementare l'analisi e la risposta ai messaggi dell'applicazione ModBus, ma questa è solo una parte dell'intera comunicazione ModBus, l'altra parte è anche necessario avere accesso ai dati dell'applicazione, questa parte del contenuto deve essere definita dall'utente stesso. Per facilitare l'uso del cliente, il caricamento automatico di queste funzioni dell'interfaccia utente è implementato nel pacchetto modbus_Slave sotto forma di puntatori di funzione che collegano l'elaborazione dei dati dell'applicazione utente alla risposta ai messaggi dell'applicazione ModBus. Gli utenti devono semplicemente definire queste funzioni di interfaccia in base alle loro esigenze per implementare le funzioni corrispondenti, le definizioni specifiche di ciascuna funzione vengono implementate attraverso un file CPP dedicato: DataProvider.cpp.
Di conseguenza, questo tipo di applicazione di sviluppo deve contenere due parti di contenuto, una parte è la funzione API definita da modbus_slave.h/modbus_slave.lib; Un'altra parte è la funzione di interfaccia dati utente definita da DataProvider.h / DataProvider.cpp, dove la funzione di interfaccia richiede che l'utente implementi specificamente in DataProvider.cpp.
Per rispondere tempestivamente ai messaggi dell'applicazione ModBus, è importante notare che durante la programmazione è necessario progettare un thread che richiama ripetutamente la funzione di esecuzione modbus_Slave, che è in modalità di blocco.
Ad esempio:
(1) Avviare il protocollo Modbus
hPort = mbusSlave_StartupServer(_T('*'), 1, 10000, mbusSlave_Interface );
Oppure...
hPort=mbusSlave_StartupServer(_T)"COM3:9600-8-1-0"),1,10000, mbusSlave_Interface );
(2) Chiama della funzione esecutiva Serverloop nel thread per rispondere alla richiesta
mentre( 1 )
{
//Chiama la funzione esecutiva per l'analisi e la risposta ai messaggi ModBus.
risultato = mbusSlave_ServerLoop( hPort );
se(risultato!=0)//Controlla se restituisce un errore
{
//Risoluzione degli errori: questo esempio è un messaggio di testo per ottenere e stampare il codice di errore
wcscpy( szText, mbusSlave_GetErrorText( risultato ) );
i1 = wcslen( szText );
se( i1>0 )
{
wcstombs( strText, szText, i1 );
stampa(codice di errore: %s! n'Stretex);
}
}
}
In precedenza, il software ModBus era disponibile come funzione C più librerie statiche (file modbus.lib o libmodbus.a). Con l'uso crescente da parte dei clienti, Intel ha preinstallato il protocollo ModBus, in particolare il software del protocollo master (abbreviato modbus_Master), come libreria dinamica (file modbus_Master.dll o libmbusmaster.so) nel sistema di kernel della scheda madre Embedded Industrial Control Intel per facilitare la chiamata delle applicazioni dei clienti. Le schede motherboard con protocollo Modbus preinstallate includono tutte le schede motherboard della serie ESM (ESM6802, ESM6800, ESM335x, ESM928x, ecc.).
Riferimenti correlati
| Applicazioni per l'acquisizione di anelli di corrente da 4 a 20 mA | Modbus Master Protocol per WinCE | |
| Modbus Device Party Protocol Software sotto WinCE | Scheda madre Embedded Linux con supporto per il protocollo Modbus | |
| Introduzione al software Modbus per Linux | ESM6802 supporta lo sviluppo di programmi Qt MODBUS | |
| Preinstallazione del protocollo Modbus nella scheda madre |
