Come registrare MODBUS RTU su database MySQL
Una guida completa per interrogare dispositivi seriali MODBUS RTU ed esportare i dati dei registri direttamente in un database MySQL.
1. Configurazione del protocollo: MODBUS RTU
Tipo di comunicazione: Interrogazione attiva (Master/Slave su RS485/COM)
Poiché MODBUS trasmette dati in formato binario, il parser deve estrarre specifici registri di mantenimento (es. 40001) o registri di ingresso. Se il sensore utilizza numeri in virgola mobile a 32 bit, configurare il parser per leggere due registri adiacenti a 16 bit e applicare il corretto scambio di byte (endianness) per ricostruire il valore float.
Applicare questa configurazione di base per la connessione seriale:
{
"port": "COM3",
"baud_rate": 9600,
"data_bits": 8,
"stop_bits": 1,
"parity": "none",
"protocol": "modbus_rtu_serial",
"poll_interval_ms": 1000
}
Selezione del plugin MODBUS RTU per interrogare e analizzare i dati.

Coda di interrogazione MODBUS RTU: configurazione personalizzata per leggere diversi registri.
Pronto a connettere MODBUS RTU a MySQL?
2. Configurazione del database: MySQL
Avrà bisogno di MySQL Connector/ODBC installato sulla macchina che esegue il Data Logger. Crei un DSN di sistema che punti alla Sua istanza del server MySQL.
Utilizzare il seguente script SQL per creare la tabella di destinazione. Si consiglia di utilizzare il motore InnoDB per gestire inserimenti simultanei ad alta frequenza senza bloccare la tabella.
CREATE TABLE sensor_data ( id INT AUTO_INCREMENT PRIMARY KEY, log_timestamp DATETIME DEFAULT CURRENT_TIMESTAMP, device_id VARCHAR(50), register_value FLOAT ) ENGINE=InnoDB;

Plugin MySQL per esportare dati.

Impostazioni di connessione al database MySQL.

Istruzioni SQL INSERT in una coda con parametri personalizzati.
3. Risoluzione dei problemi specifici del protocollo
- Errori di timeout o CRC: A differenza del TCP, il MODBUS RTU seriale si basa su tempi rigorosi. Verificare che i cavi RS485 A/B non siano invertiti e che il baud rate e l’ID del dispositivo nel software corrispondano esattamente al dispositivo slave.
- Il dispositivo restituisce il codice di errore «Illegal address»: Provare a utilizzare la funzione n. 3 invece della funzione n. 4 nella richiesta MODBUS. In caso contrario, verificare di utilizzare l’indirizzo di registro corretto. Provare a specificare un offset assoluto (non un indirizzo logico come 40001).
- Ho diversi valori che desidero esportare in una sola riga di dati. Attualmente il logger scrive un valore per riga: È necessario abilitare l’opzione «Esporta tutti i dati contemporaneamente» nelle impostazioni del plugin MODBUS.
4. Risoluzione dei problemi specifici del database
- Il server MySQL non è più raggiungibile: Se il dispositivo seriale rimane inattivo durante la notte, MySQL interromperà la connessione. Attivi l'impostazione 'Mantieni la connessione attiva' nel modulo di esportazione ODBC del Data Logger.
- Come posso inserire o aggiornare una riga di dati per il mio dispositivo?: Può utilizzare qualsiasi query SQL nel nostro plugin 'SQL Database Pro'. In MySQL, può facilmente eseguire il seguente SQL: 'INSERT INTO ....... ON DUPLICATE KEY .... UPDATE ....'.
- Voglio scrivere i dati di ciascuno dei miei dispositivi in una tabella diversa. Come posso farlo?: Nel plugin 'SQL Database Pro', può utilizzare un segnaposto nel Suo SQL. Ad esempio, 'INSERT INTO SerialData%DEVICE_ID% (....)'. Prima di eseguire l'SQL, il logger sostituisce %DEVICE_ID% con il valore corrispondente dai dati analizzati, e la tabella di destinazione reale varierà (SerialData1, SerialData2, ecc.).