Modbus
Modbus Protokoll
Zuletzt aktualisiert
Modbus Protokoll
Zuletzt aktualisiert
Die powerIO-Box T1.B100 wird als Gateway zwischen Modbus TCP und Modbus RTU eingesetzt. Die Konfiguration der seriellen Ports für Modbus RTU kann flexibel vorgenommen werden.
Die Unit ID des anzusprechenden Modbus-Geräts muss vom Modbus-Client (typischerweise eine Steuerung) angegeben werden. Durch einen automatischen Scan werden die Modbus-Geräte den entsprechenden seriellen Ports zugeordnet. Diese Zuordnung wird in einer internen Liste gespeichert.
Verhalten bei nicht verfügbaren Geräten Bei nicht verfügbaren Geräten werden keine blockierenden Timeouts erzeugt, wodurch die Kommunikation mit anderen Teilnehmern ungestört fortgesetzt werden kann.
Test der angeschlossenen Geräte Die angeschlossenen Geräte können autark ohne vorher fertiggestellte Modbus-TCP-Client-Logik über einen internen Modbus-Test getestet und überprüft werden.
Modbus-Trace-Log für die Fehleranalyse Für die Fehleranalyse wird ein Modbus-Trace-Log zur Verfügung gestellt. Dieses zeichnet die Abfragen von allen Modbus-TCP-Clients auf. Dabei werden auch Performancewerte bereitgestellt.
Unterstützung von Multi-Master-Abfragen Es können Abfragen von mehreren Modbus-TCP-Clients parallel durchgeführt werden. Die Abfragen werden in einer Warteschlange abgearbeitet und dem entsprechenden Modbus-TCP-Client zugewiesen.
Modbus wird immer als Standardeinstellung für einen seriellen Port ausgewählt. Wurde jedoch zuvor ein anderes Protokoll ausgewählt, kann über das Dropdown-Menü "Feldbus" der Modus Modbus ausgewählt werden.
Auf dem Gerät powerIO-Box T1.B100 ist ein vollständiger Modbus Test Client implementiert. Dieser funktioniert, auch wenn von einem anderen bestehenden Modbus TCP Client abgerufen wird.
Lesen:
FC 1 - Read Coil Status
FC 2 - Read Input Status
FC 3 - Read Holding Register
FC 4 - Read Input Register
Schreiben:
FC 5 - Write Coil
FC 6 - Write Register
FC 15 - Write Multiple Coil
FC 16 - Write Multiple Register
Es ist zu beachten, dass der Modbus-Stack alle Modbus-Funktionscodes unterstützt, die zur Verfügung stehen und von den angeschlossenen Modbus-RTU-Geräten unterstützt werden. Der Modbus-Test unterstützt dabei jedoch nur die gängigsten Funktionscodes.
Darstellung für unterschiedliche Datentypen: boolean, byte, sbyte, uint16, int16, uint32, int32, float32, uint64, int64, float64, double, string
Byte Swapping
Little and Big Endian
Die Modbus Trace Log ermöglich, die Modbus-Kommunikationsdaten in Echtzeit zu überwachen und zu analysieren. Dabei können Filter verwendet werden, um spezifische Daten anzuzeigen, und die Log-Daten können für eine weiterführende Analyse exportiert werden.
Aktivierung/Deaktivierung des Modbus-Logs:
Das Modbus-Logging wird über den "DISABLE MODBUS LOG"-Button deaktiviert.
Der Timer oben rechts gibt die verbleibende Zeit an, bevor das Logging automatisch deaktiviert wird.
Filteroptionen: Zur gezielten Analyse der Log-Daten werden verschiedene Filteroptionen bereitgestellt:
State: Es wird nach Status gefiltert (erfolgreich/fehlgeschlagen).
Unit ID: Es erfolgt eine Eingrenzung nach einer spezifischen Geräte-ID.
Type: Serial oder interne Register des Modbus TCP Gateways T1.B100
Serial Port: Zugeordneter Serial Port
Function Code: Filter nach Function Code
Start Address: Die Register Adresse
Quantity: Die Anzahl der Register
Die angezeigten Logs werden durch die Filterauswahl entsprechend angepasst.
Aktionen:
RESET FILTER: Es werden alle Filtereinstellungen zurückgesetzt.
CLEAR DATA: Die angezeigten Log-Daten werden aus der Oberfläche gelöscht.
EXPORT DATA: Die gefilterten Log-Daten werden im CSV Format exportiert, um sie extern weiterzuverarbeiten.
Anzeige der Log-Daten
Die angezeigten Logs enthalten folgende Informationen:
Timestamp: Der Zeitstempel der Modbus-Anfrage wird dargestellt.
State: Der Status der Anfrage wird angezeigt (z. B. ✅ für erfolgreich).
Info: Details zur Anfrage werden bereitgestellt, einschließlich:
Unit ID: Die Unit ID
Type: Gerätetyp (z. B. T1.B100 oder Serial mit Port Zurodnung).
Request Data:
FC (Function Code): Der genutzte Modbus-Befehl wird angezeigt.
Address: Die Startadresse des Zugriffs wird angegeben.
Quantity: Die Anzahl der gelesenen Register wird dargestellt.
Response Data:
Read Value: Die vom Zielgerät zurückgegebenen Werte werden angezeigt (RTU).
Processing Time: Die Dauer der Anfragebearbeitung wird in Millisekunden angegeben.
Die powerIO-Box T1.B100 hat eine interne Modbus TCP Unit ID. Diese Unit ID ist 248
Achtung: Ab Firmware-Version v4.0 wurde die Unit-ID auf 248 geändert. In früheren Firmware-Versionen (vor v4.0) betrug die Unit-ID 240.
Diese Änderung wurde vorgenommen, da die Unit-ID 240 eine gültige Serial-Unit-ID ist. Der Wertebereich für Serial-Unit-IDs liegt zwischen 1 und 247.
FC3 / FC4
1000
20
Hostname
string
1020
20
Box Name
string
1040
20
Box Comment
string
1060
1
CPU Auslastung
UINT16 (0,1)
1061
1
RAM Auslastung
UINT16 (0,1)
1062
6
System Zeit
UINT16
1068
4
Uptime
UINT16
1072
1
Temperatur CPU
UINT16 (0,1)
1073
1
Temperatur System 1
UINT16 (0,1)
1074
1
Temperatur System 2 5V
UINT16 (0,1)
1075
1
Temperatur System 3 Compute Module
UINT16 (0,1)
1080
20
Seriennummer
string
1100
20
System ID1
string
1120
20
System ID2
string
1150
1
Strom 24V Spannungsversorgung
UINT16 (0,01)
1151
1
Spannung 24V Spannungsversorgung
UINT16 (0,01)
1152
1
Leistung 24V Spannungsversorgung
UINT16 (0,01)
1153
1
Spannung 5V Spannungsversorgung
UINT16 (0,01)
1154
1
Spannung 3,3V Spannungsversorgung
UINT16 (0,01)
1155
1
Spannung 3,3V Compute Module
UINT16 (0,01)
1156
1
Spannung 1,8V Compute Module
UINT16 (0,01)
1160
1
Störung Ampere 24V Spannungsversorgung
UINT16
1161
1
Störung Spannung 24V Spannungsversorgung
UINT16
1162
1
Störung Leistung 24V Spannungsversorgung
UINT16
1163
1
Störung Spannung 5V Spannungsversorgung
UINT16
1164
1
Störung Spannung 3,3V Spannungsversorgung
UINT16
1165
1
Störung Spannung 3,3V Compute Module
UINT16
1166
1
Störung Spannung 1,8V Compute Module
UINT16
2021
1
Bus Port 1 Konfiguration
UINT16
2022
1
Bus Port 2 Konfiguration
UINT16
2023
1
Bus Port 3 Konfiguration
UINT16
2024
1
Bus Port 4 Konfiguration
UINT16
2025
1
Bus Port 5 Konfiguration
UINT16
3000
20
Ethernet Adapter
string
3020
20
Link
string
3040
20
Mode
string
3060
20
MAC
string
3080
1
Link
UINT16
3081
1
Netzwerkmodus (Zahl)
UINT16
3090
6
MAC
string
3100
4
IP Adresse
UINT16
3104
4
Subnetzmaske
UINT16
3108
4
Gateway IP
UINT16
3112
4
DNS1 IP
UINT16
3116
4
DNS2 IP
UINT16
3120
4
Broadcast IP
UINT16
3130
10
IP Adress
string
3140
10
Subnetzmaske
string
3150
10
Gateway IP
string
3160
10
DNS1 IP
string
3170
10
DNS2 IP
string
3180
10
Broadcast IP
string
Beispiel - Abfrage IP - Adresse
Code
Name
Beschreibung
01
Illegal Function
Der Function Code wird vom Slave nicht unterstützt.
02
Illegal Data Address
Die angeforderte Adresse ist ungültig. Möglicherweise ist die Länge Falsch, oder es ist eine ungültige Register Adresse.
03
Illegal Data Value
Ein Wert im Datenfeld der Anfrage ist ungültig. Die Struktur der Anfrage ist fehlerhaft, z. B. falsche Länge oder nicht zulässige Werte.
04
Slave Device Failure
Ein nicht behebbarer Fehler ist während der Verarbeitung aufgetreten.
05
Acknowledge
Die Anfrage wurde angenommen, aber die Verarbeitung dauert länger. Der Master sollte später erneut anfragen, ob die Verarbeitung abgeschlossen ist.
06
Slave Device Busy
Das Gerät ist momentan beschäftigt und kann die Anfrage nicht ausführen. Der Master sollte die Anfrage später wiederholen.
07
Negative Acknowledge
Das Gerät kann die Anfrage nicht ausführen, z. B. bei fehlerhaften Programmieranfragen.
08
Memory Parity Error
Ein Konsistenzfehler wurde im Speicher erkannt. Das Gerät kann die Anfrage erneut versuchen, eventuell ist jedoch ein Service erforderlich.
10 (0A)
Gateway Path Unavailable
Dieser Fehler tritt i.d.R. auf, wenn die TCP Abfrage zum Gateway zwar erfolgreich ist, aber das Gerät nicht zugeordnet werden kann.
11 (0B)
Gateway Target Device Failed to Respond
Dieser Fehlercode tritt auf, wenn das Gerät bereits zugeordnet ist, aber nicht mehr antwortet.