Modbus RTU-Konfigurationsbefehle
Gehen Sie vor wie folgt, um die Modbus RTU-Kommunikation im Controller zu konfigurieren:
-
Modbus RTU-Objekt erstellen:
require('luamodbus') mb = luamodbus.rtu()
-
Modbus RTU-Verbindung öffnen:
-
Legen Sie die Kommunikationsparameter fest (Baudrate, Parität, Datenbits, Stoppbits und Duplexmodus).
-
Beispiel (19200 Baudrate, gerade Parität, 8 Datenbits, 1 Stopp-Bit, Halbduplex):
mb:open('/dev/RS485', 19200, 'E', 8, 1, 'H') mb:connect()
-
-
Terminal-Name:
-
Der Klemmenname lautet
/dev/RS485
.
-
-
Unterstützte Baudraten:
-
Wählen Sie eine der folgenden Baudraten:
-
300 bit/s
-
600 bit/s
-
1200 bit/s
-
2400 bit/s
-
4800 bit/s
-
9600 bit/s
-
19200 bit/s
-
38400 bit/s
-
57600 bit/s
-
115200 bit/s
-
230400 bit/s
-
-
-
Parität:
-
Stellen Sie den Paritätsmodus ein:
-
„N“ None
-
„E“ (Even)
-
„O“ (Odd)
-
-
-
Datenbits und Stopp-Bits:
-
Datenbits: Wählen Sie aus 5, 6, 7 oder 8.
-
Stopp-Bits: Wählen Sie 1 oder 2.
-
Duplexmodus:
-
„H“ Halbduplex
-
„F“ (Vollduplex, nicht unterstützt in RS-485)
-
-
-
Hinweise zur Baudrate:
-
Die Baudrate wirkt sich auf die Kommunikationsdistanz aus:
-
9600 bit/s: Die maximale Entfernung für 1-15 Modbus RTU-Geräte beträgt 1200 Meter.
-
19200 bit/s: Die maximale Entfernung beträgt 900 Meter (typisch bei Belden 3105 A-Kabeln).
Baudraten-Einstellung
Maximaler Kommunikationsabstand für 1 bis 15 Modbus-RTU-Geräte (normalerweise mit Belden 3105A-Kabeln)
9600 Bit/s
1200 m
19200 Bit/s
900 m
-
-
-
Erklärung der Parität:
-
Parität prüft auf eine erfolgreiche Übertragung.
-
Ungerade Parität: Ungerade Anzahl von 1s.
-
Gerade Parität: Gerade Zahl von 1s.
-
Sowohl das Gateway als auch das Messgerät müssen übereinstimmen (ungerade, gerade oder keine).
-
-
Verzögerung zwischen Rahmen:
-
Einige Geräte benötigen nach einer Antwort zusätzliche Zeit.
-
Verwenden Sie den Verzögerungsbefehl (z. B.
os.sleep(1,5)
).
-
-
Erweiterungsadresse einstellen:
-
Stellen Sie die Slave-Adresse ein (z. B.
mb:setslave(123)
).
-
-
Register lesen:
-
Lesen von Adresse 1000 und Speichern des Werts:
value = mb:readregisters(1000)
-
-
Modbus-Verbindung schließen:
mb:close()
-
Timeout-Intervalle:
-
Passen Sie die Timeout-Intervalle nach Bedarf an:
-
Byte-Timeout:
mb:getbytetimeout()
mb:setbytetimeout(timeout)
-
Antwort-Timeout:
mb:getresponsetimeout()
mb:setresponsetimeout(timeout)
-
Empfangs-Timeout (nur Erweiterungsmodus):
mb:getreceivetimeout()
mb:setreceivetimeout(timeout)
-
-
-
Beispielinitialisierung:
-
Modbus bei der ersten Skriptausführung initialisieren:
if not mb then require('luamodbus') mb = luamodbus.rtu() mb:open('/dev/RS485', 38400, 'E', 8, 1, 'H') mb:connect() end mb:setslave(30) mb:flush()
-