Registrazione MODBUS RTU su database MS SQL in tempo reale
Una guida completa per interrogare dispositivi seriali MODBUS RTU ed esportare i dati dei registri direttamente in un database MsSQL 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 Microsoft SQL Server?
2. Configurazione del database: Microsoft SQL Server
Utilizzi il client nativo di SQL Server integrato o il provider OLE DB nel modulo di esportazione ODBC del Data Logger. L'autenticazione Windows è supportata senza problemi se l'account di servizio del logger ha accesso al database.
Utilizzare il seguente script SQL per creare la tabella di destinazione. Utilizzi DATETIME2 invece di DATETIME per una maggiore precisione dei timestamp, fondamentale per la registrazione seriale industriale ad alta frequenza.
CREATE TABLE SerialData ( RecordID INT IDENTITY(1,1) PRIMARY KEY, LogTime DATETIME2 DEFAULT SYSUTCDATETIME(), PortID NVARCHAR(20), SensorReading FLOAT );

Connettore Microsoft SQL Server nel nostro logger.

Impostazioni di connessione al database SQLServer. Ad esempio, SQL Express.

Coda SQL.
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
- Accesso non riuscito per l'utente / Accesso negato: Se esegue RS232 Data Logger come servizio Windows in background, si assicuri che il servizio venga eseguito con un account di dominio con ruoli db_datawriter, anziché con l'account predefinito 'Sistema locale'. Oppure crei un utente separato con il metodo di autenticazione 'SQL Server'.
- Cosa succede se il mio database è offline? Perderò i miei dati?: Utilizzi il plugin SQL Database Pro. Può scrivere i dati in un file temporaneo mentre il database è offline e ripristinarli in seguito.
- Il codice funziona solo quando si inviano numeri. Quando provo a inviare una lettera, non funziona.: 1. Dovrebbe dichiarare la variabile del parser come stringa. 2. La Sua tabella dovrebbe contenere la colonna con il tipo 'VARCHAR' o 'NVARCHAR'. La dimensione di questa colonna dovrebbe essere sufficiente per i Suoi dati. 3. Dovrebbe selezionare il tipo di dati 'string' per la colonna corrispondente nel plugin di esportazione dati nella pagina 'Binding'.