Introduzione al protocollo Modbus e metodo di calcolo del codice di controllo CRC di Modbus RTU

Modbus è un protocollo di comunicazione sviluppato dall'azienda americana Modicon (ora Schneider Electric) nel 1979. Il suo scopo è quello di utilizzare un doppino telefonico per realizzare la comunicazione tra più dispositivi. Il Modbus è diventato presto lo standard de facto nel settore dell'automazione e Modicon lo ha rilasciato al pubblico senza addebitare alcun costo di brevetto. Grazie al protocollo Modbus, è possibile comunicare facilmente tra dispositivi di controllo (come PLC, convertitori di frequenza e DCS) di produttori diversi.

Gateway DTU/Edge/Piattaforma IoT/Modulo gatewayGateway DTU/Edge/Piattaforma IoT/Modulo gateway

Il protocollo Modbus adotta un metodo di comunicazione a domanda e risposta, che presenta i vantaggi della semplicità, dell'hardware economico, della forte versatilità, della facilità d'uso e della facilità di sviluppo e implementazione. Modbus RTU è quasi diventato il protocollo di comunicazione preferito per i PLC e i convertitori di frequenza domestici. Il protocollo Modbus non richiede un modulo di comunicazione specializzato. Lo stack e i meccanismi di protocollo necessari per la comunicazione sono implementati nel software e appartengono al livello 7 del modello di riferimento ISO-OSI. Un altro vantaggio è che può comunicare attraverso qualsiasi mezzo di trasmissione, compresi doppini, comunicazioni wireless, fibra ottica, Ethernet, modem telefonici, telefoni cellulari e microonde. Ciò rende facile stabilire una connessione Modbus in un impianto nuovo o esistente.

Attualmente sono in uso tre versioni di Modbus: Modbus ASCII, Modbus RTU e Modbus TCP. Il protocollo Modbus ASCII deve convertire un byte di dati in due byte di codice ASCII prima di inviarli. I dati del protocollo Modbus RTU sono codificati in binario e ogni byte di dati richiede solo un byte di comunicazione.

La comunicazione Modbus RTU adotta la modalità master-slave e può trasmettere fino a 255 byte di dati. Un dispositivo master comunica con uno o più dispositivi slave. I dispositivi principali tipici sono PLC, PC, DCS (sistema di controllo distribuito) o RTU (unità terminale remota). I dispositivi slave Modbus RTU sono generalmente dispositivi di campo. Quando un dispositivo master Modbus RTU desidera ottenere dati da un dispositivo slave, il dispositivo master invia un messaggio contenente l'indirizzo della stazione del dispositivo slave, i dati richiesti e un codice di controllo CRC utilizzato per rilevare gli errori. Tutti gli altri dispositivi della rete possono ricevere questo messaggio, ma solo il dispositivo slave il cui indirizzo è specificato risponderà. I dispositivi slave su una rete Modbus non possono avviare la comunicazione, ma possono rispondere solo quando il dispositivo master gli parla.

Modbus TCP può essere inteso come Modbus su Ethernet. Modbus TCP utilizza semplicemente lo standard TCP/IP per confezionare e comprimere i pacchetti di informazioni Modbus. Ciò consente ai dispositivi Modbus TCP di collegarsi e comunicare su reti Ethernet e in fibra ottica. Rispetto all'interfaccia RS-485, Modbus TCP consente di utilizzare un maggior numero di indirizzi, può adottare un'architettura multi-master e la velocità di trasmissione può raggiungere il livello di GB/s. Il numero di stazioni slave nella rete Modbus TCP è limitato solo dalle capacità del livello fisico della rete. In genere il numero di stazioni slave è di circa 1024.

Modbus RTU utilizza un codice di controllo di ridondanza ciclica (CRC) a 16 bit. Attraverso una complessa procedura di ORing e shifting dei dati, il CRC viene generato dal dispositivo master e controllato dal dispositivo ricevente. Se i valori CRC calcolati da entrambe le parti non coincidono, il dispositivo slave chiede di ritrasmettere le informazioni. Il protocollo Modbus RTU si divide in protocollo master Modbus RTU e protocollo slave Modbus RTU. La comunicazione Modbus è controllata da codici funzione e la stazione master accede direttamente all'area dati della stazione slave.

Metodo di calcolo del codice di controllo CRC Modbus RTU

Nel calcolo del CRC vengono utilizzati solo 8 bit di dati, il bit di avvio e il bit di stop. Se è presente un bit di parità, incluso il bit di parità, questi non vengono coinvolti nel calcolo del CRC.

Il metodo di calcolo del CRC è:

  1. Caricare un registro a 16 bit con il valore 0XFFFF. Questo registro è il registro CRC.
  2. XOR il primo dato binario a 8 bit (cioè il primo byte del frame di informazioni di comunicazione) con il registro CRC a 16 bit e il risultato dello XOR viene ancora memorizzato nel registro CRC.
  3. Spostare il contenuto del registro CRC di un bit verso destra, riempire il bit più alto con 0 e rilevare se il bit spostato è 0 o 1.
  4. Se il bit spostato è zero, ripetere il terzo passo (spostare di nuovo un bit a destra); se il bit spostato è 1, il registro CRC viene sottoposto a XOR con 0XA001.
  5. Ripetere i punti 3 e 4 fino a quando lo spostamento a destra viene eseguito 8 volte, in modo da elaborare tutti i dati a 8 bit.
  6. Ripetere i punti 2 e 5 per elaborare il byte successivo del frame di informazioni di comunicazione.
  7. Dopo che tutti i byte del frame delle informazioni di comunicazione sono stati calcolati secondo le fasi precedenti, i byte alti e bassi del registro CRC a 16 bit ottenuto vengono scambiati.
  8. Il contenuto finale del registro CRC è: Codice di controllo CRC.

Articoli recenti

Contatto