Auslesen und Protokollieren von MODBUS-RTU-Geräten in PostgreSQL
Eine vollständige Anleitung zum Auslesen von Daten aus MODBUS-RTU-Seriengeräten und zum Exportieren geparster Werte direkt in eine PostgreSQL-Datenbank mit eigener Datenbankstruktur.
1. Protokollkonfiguration: MODBUS RTU
Kommunikationstyp: Aktive Abfrage (Master/Slave über RS485/COM)
Da MODBUS Daten binär überträgt, muss der Parser bestimmte Holding-Register (z. B. 40001) oder Input-Register extrahieren. Wenn Ihr Sensor 32-Bit-Gleitkommazahlen verwendet, konfigurieren Sie den Parser so, dass er zwei benachbarte 16-Bit-Register liest und das korrekte Byte-Swapping (Endianness) anwendet, um den Float-Wert zu rekonstruieren.
Wenden Sie diese Basiskonfiguration für die serielle Verbindung an:
{
"port": "COM3",
"baud_rate": 9600,
"data_bits": 8,
"stop_bits": 1,
"parity": "none",
"protocol": "modbus_rtu_serial",
"poll_interval_ms": 1000
}
MODBUS-RTU-Plugin-Auswahl zur Abfrage und zum Parsen von Daten.

MODBUS-RTU-Abfragewarteschlange: benutzerdefinierte Konfiguration zum Lesen verschiedener Register.
Bereit, MODBUS RTU mit PostgreSQL zu verbinden?
2. Datenbankeinrichtung: PostgreSQL
Installieren Sie den PostgreSQL ODBC-Treiber (psqlODBC) auf dem Server, auf dem Advanced Serial Data Logger ausgeführt wird. Erstellen Sie einen System-DSN oder verwenden Sie eine direkte Verbindungszeichenfolge im SQL Database Professional-Plugin wie 192.168.1.100:mydatabase.
Verwenden Sie das folgende SQL-Skript, um Ihre Zieltabelle zu erstellen. Stellen Sie sicher, dass Ihre Benutzerrolle INSERT-Berechtigungen für das Zielschema besitzt. Verwenden Sie den NUMERIC-Datentyp, um Genauigkeitsverluste bei Gleitkommazahlen aus Rohsensordaten zu vermeiden.
CREATE TABLE rs232_logs ( id SERIAL PRIMARY KEY, log_timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP, device_name VARCHAR(50), extracted_value NUMERIC(10, 2) );

Auswahl des PostgreSQL-Datenbankkonnektors.

Verbindungseinstellungen für die PgSQL-Datenbank.

SQL-Warteschlange zum Einfügen von Daten in Ihre Tabelle.
3. Protokollspezifische Problembehandlung
- Timeout- oder CRC-Fehler: Im Gegensatz zu TCP ist serielles MODBUS RTU auf strikte Zeitvorgaben angewiesen. Überprüfen Sie, ob Ihre RS485-A/B-Leitungen nicht vertauscht sind und dass die Baudrate und die Geräte-ID in der Software exakt mit dem Slave-Gerät übereinstimmen.
- Das Gerät gibt den Fehlercode „Illegal address“ zurück: Versuchen Sie, in Ihrer MODBUS-Anforderung Funktion #3 anstelle von Funktion #4 zu verwenden. Überprüfen Sie andernfalls, ob Sie die korrekte Registeradresse verwenden. Versuchen Sie, einen absoluten Offset anzugeben (keine logische Adresse wie 40001).
- Ich habe mehrere Werte, die ich in einer Datenzeile exportieren möchte. Der Logger schreibt jedoch einen Wert pro Zeile: Sie müssen die Option „Alle Daten auf einmal exportieren“ in den MODBUS-Plugin-Einstellungen aktivieren.
4. Datenbankspezifische Problembehandlung
- FATAL: Passwortauthentifizierung fehlgeschlagen: Überprüfen Sie, ob Ihre pg_hba.conf-Datei Verbindungen von der IP-Adresse des Data Loggers zulässt (bei Remote-Zugriff) und ob die Authentifizierungsmethode auf md5 oder scram-sha-256 eingestellt ist.
- Ich habe für jeden Datensatz zwei ähnliche Einträge mit demselben Zeitstempel in meiner Datenbank: Überprüfen Sie, ob Sie nicht zwei Datenexport-Plugins gleichzeitig verwenden. Zum Beispiel ODBC Database und SQL Database Pro, da diese Ihre Daten parallel exportieren können.
- Ich habe ODBC-Treiber installiert und einen DSN erstellt, aber Ihre Software erlaubt mir nicht, diesen auszuwählen.: Unsere Software benötigt 32-Bit-ODBC-Treiber. Daher sollten Sie diese Treiberversion installieren, um einen DSN im 32-Bit-ODBC-Administrator zu erstellen. Sie können dazu die Schaltfläche 'Setup' im Plugin 'ODBC Database' verwenden.