So protokollieren Sie MODBUS RTU in MySQL-Datenbank
Eine vollständige Anleitung zum Abfragen von MODBUS-RTU-Seriengeräten und zum Exportieren der Registerdaten direkt in eine MySQL-Datenbank.
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 MySQL zu verbinden?
2. Datenbankeinrichtung: MySQL
Sie benötigen den MySQL Connector/ODBC, der auf dem Rechner installiert ist, auf dem der Data Logger ausgeführt wird. Erstellen Sie einen System-DSN, der auf Ihre MySQL-Serverinstanz verweist.
Verwenden Sie das folgende SQL-Skript, um Ihre Zieltabelle zu erstellen. Wir empfehlen die Verwendung der InnoDB-Engine, um häufige gleichzeitige Einfügevorgänge ohne Tabellensperren zu verarbeiten.
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;

MySQL-Plugin zum Exportieren von Daten.

MySQL-Datenbank-Verbindungseinstellungen.

INSERT-SQL-Anweisungen in einer Warteschlange mit benutzerdefinierten Parametern.
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
- MySQL-Server ist nicht mehr erreichbar: Wenn Ihr serielles Gerät über Nacht inaktiv ist, trennt MySQL die Verbindung. Aktivieren Sie die Einstellung 'Verbindung aufrechterhalten' im ODBC-Exportmodul des Data Loggers.
- Wie kann ich eine Datenzeile für mein Gerät einfügen oder aktualisieren?: Sie können jede SQL-Abfrage in unserem Plugin 'SQL Database Pro' verwenden. In MySQL können Sie problemlos das folgende SQL ausführen: 'INSERT INTO ....... ON DUPLICATE KEY .... UPDATE ....'.
- Ich möchte Daten von jedem meiner Geräte in eine andere Tabelle schreiben. Wie kann ich das tun?: Im Plugin 'SQL Database Pro' können Sie einen Platzhalter in Ihrem SQL verwenden. Zum Beispiel 'INSERT INTO SerialData%DEVICE_ID% (....)'. Vor der Ausführung des SQL ersetzt der Logger %DEVICE_ID% durch den entsprechenden Wert aus den analysierten Daten, und die tatsächliche Zieltabelle variiert (SerialData1, SerialData2 usw.).