Vai al contenuto

Notizie, informazioni, programmi protocollo Modbus

Home Forum Discussioni su problematiche generali Notizie, informazioni, programmi protocollo Modbus

Stai visualizzando 5 post - dal 1 a 5 (di 5 totali)
  • Autore
    Post
  • #35241
    Sergio Bertana
    Amministratore del forum

    In tutti i nostri prodotti abbiamo implementato il protocollo Modbus, Modbus è un protocollo di comunicazione seriale creato da Modicon nel 1979 per mettere in comunicazione i propri controllori logici programmabili (PLC). È diventato uno standard de facto nella comunicazione di tipo industriale, ed attualmente è uno dei protocolli di connessione più diffusi al mondo fra i dispositivi elettronici industriali. Le principali ragioni di un così elevato utilizzo del Modbus rispetto agli altri protocolli di comunicazione sono:

    1. È un protocollo pubblicato apertamente e royalty-free
    2. Può essere implementato in pochi giorni, non in mesi
    3. Muove raw bits e words senza porre molte restrizioni ai produttori

    Modbus RTU è una rappresentazione dei dati in esadecimale seguita da un campo checksum di tipo cyclic redundancy check (CRC).
    Modbus ASCII è facilmente leggibile ed usa un checksum di tipo LRU (longitudinal redundancy check).
    Modbus/TCP è molto simile al Modbus RTU, ma trasmette i pacchetti del protocollo dentro pacchetti di dati TCP/IP.

    Molti clienti mi chiedono informazioni sul protocollo e/o esempi di implementazione su PC o su dispositivi embedded, per questo ritengo utile riportare il link al sito modbus.org. Nella sezione Technical Resources si possono trovare oltre a tutte le informazioni tecniche dettagliate sul protocollo anche una grande quantità di programmi relativi.

    #37505
    Sergio Bertana
    Amministratore del forum

    Molte volte capita di dover eseguire un semplice test di comunicazione per verificare se il sistema risponde alle interrogazioni modbus. Il protocollo mette a disposizione un apposito comando diagnostico (Function 08 Diagnostic) che facilita il test. Il comando prevede due byte di codice sottofunzione per definire il tipo di diagnostico da eseguire. Il comando modbus diagnostico si compone di 6 bytes seguiti da Error check con il seguente significato:
     
    <Slave Address><Function><Subfunction Hi><Subfunction Lo><Data Hi><Data Lo><Error Check (LRC or CRC)>

    Slave Address: Indirizzo di nodo (0xFF broadcast)
    Function: Codice funzione (0x08 Diagnostic)
    Subfunction (Hi, Lo): Sottofunzione
    Data (Hi, Lo): Dato comando

    Il comando deve terminare con il campo di controllo LRC o CRC in base al tipo di modbus (Ascii o RTU), nel caso di modbus Over IP non vi è alcun campo di controllo (Gestito dal protocollo TCP/IP).

    #37506
    Sergio Bertana
    Amministratore del forum

    Per semplificare il test allego tre stringhe nei tre diversi tipi di protocollo modbus con sottofunzione diagnostica 00 Return Query Data, ed indirizzo di nodo 0xFF. Inviando la stringa con un emulatore terminale esempio Toolly ad un sistema con protocollo modbus (Esempio un modulo CPU SlimLine) è possibile testare la funzionalità della comunicazione.

    Modubus Ascii: FF0800001234B3$0D$0A
    Modbus RTU: $FF$08$00$00$12$34$F8$A2
    Modbus over IP: $01$23$00$00$00$06$FF$08$00$00$12$34

    Come si vede tutti i frames eseguono l’echo del dato 1234, il formato ascii ha un byte di LRC, il formato RTU ha 2 bytes di CRC, il formato Over IP viene preceduto da un header di 6 bytes (Screenshot esecuzione Toolly).

    #37845
    Andrea
    Partecipante

    Vorrei provare a fare dei test con il Modbus ma vorrei una conferma sulle connessioni da eseguire:

    MODBUS ASCII o RTU: si usa la porta Field Bus P2 dello SlimLine e quindi RS485, usando poi Toolly per inviare la stringa o leggere la stringa?

    MODBUS TCP: per fare questo basta collegare la porta ethernet del PC (usando tool Toolly?) con la porta ethernet dello SlimLine tramite un classico cavo ethernet dritto ?

    #37846
    Sergio Bertana
    Amministratore del forum

    I nostri sistemi SlimLine e Netlog III hanno il protocollo Modbus slave nativo, su tutte le porte seriali  (RS232 o RS485) è disponibile di default il protocollo Modbus RTU sulla porta 502 della connessione TCP è disponibile il Modbus TCP. Da pagina web di configurazione (Screenshot) è possibile impostare il tipo di protocollo gestito.

    A questo punto se vuoi fare dei test puoi utilizzare Toolly ed inviare le stringhe di test come indicato nel post precedente. Come vedi l’indirizzo di nodo delle stringhe è 255 che è l’indirizzo di default e quindi il sistema risponde qualsiasi sia il suo indirizzo di nodo definito. La porta Ethernet dei sistemi è autosensing, per la connessione puoi utilizzare sia cavo diritto che cross-over.

    Come vedi dallo screenshot, è possibile selezionare il protocollo Over IP anche sulle porte seriali, questo permette di connettere alle porte un convertitore Ethernet-Seriale e accedervi da Ethernet.

Stai visualizzando 5 post - dal 1 a 5 (di 5 totali)
  • Devi essere connesso per rispondere a questo topic.