Modbus-Master-Funktionen
Die unten aufgeführten Funktionen können für Modbus RTU Master oder Modbus TCP Client verwendet werden.
mb:setslave(slaveid)
Setzt die Erweiterungs-ID zum Lesen/Schreiben von Daten von/zu
mb:readcoils(start, count) [01]
start - Adresse der ersten zu lesenden Spule
Anzahl - Anzahl der zu lesenden Spulen
mb:readdiscreteinputs(start, count) [02]
Start - Adresse des ersten zu lesenden digitalen Eingangs
count - Anzahl der zu lesenden digitalen Eingänge
mb:readregisters(start, count) [03]
Start - Adresse des ersten zu lesenden Ausgangsregisters
count - Anzahl der zu lesenden Halteregister
mb:readinputregisters(start, count) [04]
start – Adresse des zu lesenden Eingangsregisters
count – Anzahl der zu lesenden Eingangsregister
gibt alle Werte für Erfolg und Null zurück, Fehlerbeschreibung für Fehler
mb:writebits(start, v1, [v2, [v3, ...]]) [05]
schreibt Werte in Spulen ab Startadresse
mb:writerregisters(start, v1, [v2, [v3, ...]]) [06]
schreibt Werte in Register/Spulen ab der Startadresse
einfaches Schreiben wird verwendet, wenn nur ein Wert geliefert wird, ansonsten mehrfaches Schreiben
gibt bei Erfolg alle geschriebenen Werte zurück, und bei Fehler nil, Fehlerbeschreibung
mb:reportslaveid()
liest die internen Daten der Erweiterung
gibt bei Erfolg Werte zurück
gibt bei Fehler nil, Fehlerbeschreibung zurück
Modbus-Erweiterungsfunktionen
Daten vom Master empfangen
mb:receive()
empfängt Daten vom Master mit 1-minütigem Timeout
gibt bei Erfolg Daten als binäre Zeichenkette zurück
gibt bei Fehler nil, Fehlerbeschreibung zurück
Festlegen der Modbus-Zuordnung des Erweiterungsgeräts
mb:setmapping(coils, inputs, holding_regs, input_regs)
erstellt die Speicherzuordnung für die Register mit der für jeden Typ angegebenen Größe
Erweiterung behandeln
mb:handleslave()
wartet auf eine eingehende Anzeige vom Master und sendet bei Bedarf eine Antwort.
Get-Funktionen
mb:getcoils(start, count)
mb:getdiscreteinputs(start, count)
mb:getinputregisters(start, count)
mb:getregisters(start, count)
erhält einen oder mehrere Register-/Ausgangs-/Merkerbit-/Eingangswerte aus der Zuordnung von der Startadresse
gibt alle Werte für Erfolg zurück
gibt null zurück, Fehlerbeschreibung bei Fehler, Ausnahmecode, sofern zutreffend
Set-Funktionen
mb:setcoils(start, v1, [v2, [v3, ...]])
mb:setdiscreteinputs(start, v1, [v2, [v3, ...]])
mb:setinputregisters(start, v1, [v2, [v3, ...]])
mb:setregisters(start, v1, [v2, [v3, ...]])
setzt Wert in Register-/Spulen-Zuordnung ab der Startadresse
gibt bei Erfolg true zurück
gibt null zurück, Fehlerbeschreibung bei Fehler, Ausnahmecode, sofern zutreffend
Callback-Funktionen
mb:setwritecoilcb(fn)
mb:setwriteregistercb(fn)
Setzt eine Callback-Funktion für ein Ausgangs-/Merkerbit-/Register-Schreibereignis.
Der Rückruf sollte zwei Parameter akzeptieren - Spule/Register-Adresse und Wert (boolesch oder Zahl)
bei mehreren Schreibvorgängen wird der Callback für jede Spule/jedes Register einzeln ausgeführt
nil verwenden, um einen Callback zu entfernen.