Interrogazione e registrazione di dispositivi MODBUS RTU su PostgreSQL
Una guida completa per leggere dati da dispositivi seriali MODBUS RTU ed esportare i valori analizzati direttamente in un database PostgreSQL con la propria struttura di database.
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 PostgreSQL?
2. Configurazione del database: PostgreSQL
Installi il driver ODBC PostgreSQL (psqlODBC) sul server che esegue Advanced Serial Data Logger. Crei un DSN di sistema o utilizzi una stringa di connessione diretta nel plugin SQL Database Professional come 192.168.1.100:miobatabase.
Utilizzare il seguente script SQL per creare la tabella di destinazione. Si assicuri che il Suo ruolo utente disponga dei privilegi INSERT per lo schema di destinazione. Utilizzi il tipo di dati NUMERIC per evitare perdite di precisione in virgola mobile dai dati grezzi dei sensori.
CREATE TABLE rs232_logs ( id SERIAL PRIMARY KEY, log_timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP, device_name VARCHAR(50), extracted_value NUMERIC(10, 2) );

Selezione del connettore del database PostgreSQL.

Impostazioni di connessione al database PgSQL.

Coda SQL per inserire i dati nella Sua tabella.
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
- FATALE: autenticazione della password fallita: Verifichi che il Suo file pg_hba.conf consenta connessioni dall'indirizzo IP del Data Logger (se remoto) e che il metodo di autenticazione sia impostato su md5 o scram-sha-256.
- Ho due record simili con lo stesso timestamp nel mio database per ogni record: Verifichi di non utilizzare due plugin di esportazione dati contemporaneamente. Ad esempio, ODBC Database e SQL Database Pro, poiché possono esportare i dati in parallelo.
- Ho installato i driver ODBC e creato un DSN, ma il vostro software non mi consente di selezionarlo.: Il nostro software richiede driver ODBC a 32 bit. Pertanto, dovrebbe installare questa versione dei driver per creare un DSN nell'amministratore ODBC a 32 bit. Può utilizzare il pulsante 'Setup' nel plugin 'ODBC Database' per farlo.