In den ersten beiden Teilen lag das Hauptaugenmerk auf einer kurzen Einführung in die Thematik und in der Erklärung, wie Daten über Modbus RTU abgefragt werden.
Im dritten Teil unserer kleinen Blogbeitragsreihe möchten wir nun erklären, wie man Daten von TCP/IP-fähigen Zählern über Modbus TCP abfragt.
Hierzu agieren unsere Geräte als Modbus TCP Client und verwenden ausschließlich den Funktionscode 0x03 „Read holding register“.
Wie bereits im ersten Teil erwähnt, wird die Funktion Modbus TCP Client standardmäßig auf allen Datenkonzentratoren verfügbar sein.
So viel kurz zur Theorie, kommen wir nun zur Praxis.
Bevor wir mit der Konfiguration auf der Webseite beginnen, muss zunächst der Modbus Zähler ins Netzwerk integriert werden. In unserem Fall handelt es sich um einen Schneider electric PowerTag. Dieser wird zunächst auf DHCP gestellt und anschließend notiert man sich die zugewiesene IP-Adresse. Um die Konnektivität zu überprüfen, öffnet man eine SSH-Konsole und pingt das Gerät kurz an. Nun erhält man eine Antwort.
Somit sollte der Abfrage über Modbus TCP nichts mehr im Weg stehen.
Beginnen wir nun damit, einen Modbus TCP-Zähler auf der Webseite anzulegen und eine Datenabfrage zu konfigurieren.
Zähler hinzufügen
Der Zähler wird, wie im nachfolgenden Screenshot zu sehen, angelegt.
Wie bei Modbus RTU sind auch hier „Serial“, „Manufacturer“, „Medium“ und „Version“ optional und werden im Protokoll nicht berücksichtigt. Es hilft aber bei mehreren Zählern die Übersicht zu wahren.
Bei dem Parameter „Link“ ist die Zieladresse nach folgendem Schema einzutragen:
Zieladresse:Port/Client-ID
Zum Abschluss bestätigt man das Kontextmenü mit Ok.
Konfiguration des Zählerwertes
Das Anlegen eines Zählerwertes erfolgt genauso wie bei Modbus RTU. Man klickt mit rechter Maustaste auf den neu angelegten Zähler und wählt „Add value“ aus. Anschließend werden die nötigen Informationen aus dem Handbuch eingetragen. Erklärungen zu den Parametern findet man im zweiten Teil der Blogreihe.
Nach erfolgreicher Konfiguration werden die erstellten Modbus TCP-Zähler nach eingestellten Ausleseintervall automatisiert abgefragt.
Im Gegensatz zum M-Bus ist der Modbus nicht selbstbeschreibend, daher gibt es da keine Möglichkeit automatisiert mit einer einzigen Abfrage ganze Datensätze und zugehörige Informationen, wie Skalierung und Einheit, abzufragen. Deshalb möchten wir im vierten Teil zeigen, wie man mittels vorgefertigter Templates diese Funktionalität trotzdem abbilden kann.