How Can We Help?
Subroutine: Master Modbus RTU per lettura registri di mantenimento, lettura registri di ingresso e scrittura registri di mantenimento
Questa subroutine Modbus Master è molto utile se si desidera utilizzare il nostro incredibile PLC ACE per leggere o scrivere in un dispositivo Modbus RTU Slave.
Se si desidera collegare il PLC ACE a un variatore di frequenza, a un sensore intelligente, a un semplice display, a un I/O remoto o persino a un PLC ACE!
Questa subroutine consente di:
- Leggere i registri di mantenimento – Codice funzione 03
- Leggere i registri di ingresso – Codice funzione 04
- Scrivere i registri di mantenimento – Codice funzione 06
È possibile scaricare la subroutine con il relativo esempio qui.
Attenzione, questo Modbus Master non è veloce come un Modbus Master nativo. Guardate questo video per farvi un’idea.
Eseguiamo il polling di 8 sensori di temperatura slave Modbus sulla rete RS485. (ACE-1430)
Come funziona la subroutine Modbus Master?
Il PLC ACE deve essere configurato come porta seriale Type = “Custom”.
Importare nel progetto le 2 subroutine tramite il pulsante “Aggiungi subroutine”:
- MBCRC16
- ModbusMaster
Definire le richieste Modbus per leggere e scrivere i dati. È molto importante leggere prima i dati e poi scrivere gli altri.
Nel nostro esempio, vogliamo leggere e scrivere questi registri Modbus:
Numero ” n ” della richiesta Modbus | Slave ID del dispositivo Modbus Slave SlaveID |
Leggere o scrivere nel registro? CodiceFunzione |
Indirizzo nel registro Modbus ? Registro |
01 | 03 (lettura dei registri di mantenimento) | 00 | |
01 | 03 (lettura dei registri di mantenimento) | 01 | |
01 | 06 (scrittura dei registri di mantenimento) | 02 (nel nostro esempio scriviamo 65432) | |
01 | 06 (scrittura dei registri di mantenimento) | 03 (Nel nostro esempio scriviamo il tag “ValueMove”) |
Utilizziamo un array di “n” elementi per ogni parametro
Impostare questi tag:
Se, ad esempio, si dispone di soli 3 registri da leggere/scrivere, è possibile modificare l’array da 16 a 3. |
Ora è possibile completare l’array con i 3 valori per ciascuna richiesta Modbus:
Iniziamo con n = 0
e poi… n = 1
… < ! > Importante: l’ultima riga deve essere SlaveID[n 1] = 00, nel nostro esempio SlaveID[4] = 00 |
E aggiungere ora la subroutine ModbusMaster!
Questa subroutine deve essere chiamata a ogni ciclo del PLC. |
I dati verranno recuperati nel campo Dati
Se si utilizza la funzione di scrittura, non bisogna dimenticare di inserire il valore. Nel nostro esempio, scriviamo 65432 in Dati