Was können wir verbessern?

Dokumentation

Modbus RTU/TCP

ModBus ist ein Protokoll welches auf RTU(seriell binär) und TCP(IP) Paketen basiert. Eine Verbindung mit IP-Symcon ist via LAN- oder Seriell-Gateway möglich.

Folgende Geräte werden von IP-Symcon unterstützt:

Unterstützte Geräte

Einbindung in IP-Symcon

Zuerst muss eine ModBus Instanz innerhalb von IP-Symcon erstellt werden. Anschließend muss in die Konfiguration der übergeordneten Instanz gewechselt werden, um die Konfiguration entsprechend der Geräte anzupassen. Es muss ausgewählt werden über welches Protokoll die Geräte angesprochen werden.

Modbus Gateway Configuration

Manche Geräte erfordern, dass bei 32 Bit Werten (DWORD) die jeweiligen 16-Bit Bestandteile getauscht werden. Diese Option ist standardmäßig aktiviert und kann ggf. deaktiviert werden.

Um eine Verbindung zum Gerät herstellen zu können, müssen IP-Adressse und Port (Default: 502) eingetragen werden. In der weiteren Konfiguration (Screenshot unten) müssen die die Lese- und Schreibadresse, sowie der Datentyp, der gelesen werden soll, eingestellt werden. Die Bestimmung der Adresse kann dem Handbuch zu dem jeweiligen ModBus-kompatiblen Gerät entnommen werden. Die Aktivierung des Timers fragt ein ModBus-Gerät zyklisch ab und aktualisiert so den Status innerhalb des Geräts.
Der Faktor multipliziert oder teilt den empfangenen Wert und schreibt diesen in die Variable des Devices.

Modbus Device Configuration

Durch die Tatsache, dass PHP 5.3.x Integer als größten ganzzahligen Wert anbietet, können DWORDs (unsigend ints) in IP-Symcon zwar gelesen werden, diese werden jedoch auf Integer abgebildet, was bedeutet, dass nur die unteren 31Bit ausgewertet werden können.

Je nach FunctionCode muss auch eine passende Adresse eingetragen werden. Diese kann der Tabelle entnommen werden. Die nachfolgende Tabelle bietet ebenfalls einen Überblick, welcher FunctionCode bei welcher Parameterierung innerhalb von IP-Symcon gesendet wird:

FunctionCode Geräteadresse Lese-/ Schreibadresse Name
0x01 (1) 1 - 10000 Geräteadresse - 1 Read Coils
0x05 (5) 1 - 10000 Geräteadresse - 1 Write Single Coil
0x02 (2) 10001 - 20000 Geräteadresse - 10001 Read Discrete Inputs
0x03 (3) 40001 - 50000 Geräteadresse - 40001 Read Holding Registers
0x10 (16) 40001 - 50000 Geräteadresse - 40001 Write Multiple registers
0x04 (4) 30001 - 40000 Geräteadresse - 30001 Read Input Registers

Wenn Beispielsweise auf der Adresse 40123 geschrieben (FunctionCode = 0x10) werden soll, muss die passende Einheit (Byte, Word, DWord, ShortInt, SmallInt, Integer, Float) ausgewählt werden und die Schreibadresse 122 (40123 - 40001) eingetragen werden.