Modbus TCP zu Modbus RTU Gateway im Eigenbau

die beiden Protokoll-Varianten Modbus TCP und Modbus RTU sind sich sehr ähnlich, was den Eigenbau eines Gateways sehr einfach gestaltet.
Hier beschreibe ich (@Bouni) wie man ein solches Gateway selbst bauen kann.

Verwendete Materialien

Aufbau

Das Cape muss lediglich auf das BeagleBone gesteckt werden, danach muss noch die Position der Jumper so verändert werden das der UART4 aktiv ist.

Software

Ich gehe jetzt einfach mal davon aus das die meisten User hier Windows User sind und beschreibe das ganze aus deren Sicht.

Da das BBG über keinen Bildschirmausgang verfügt, müssen wir alle weiteren Schritte via SSH vornehmen, da nicht alle Windows Versionen SSH nativ unterstützen, lädt man sich von hier PuTTY, ein SSH Terminal herunter.
Man startet PuTTY, gibt im Feld Host Name die IP des BBG ein (findet man über das Webinterface seines Routers unter DHCP heraus) und klickt auf Open.
Als Benutzernamen gibt man root ein, standardmäßig ist kein Passwort gesetzt.

 

Auf dem BBG lief in meinem Fall ein Debian 3.8.13, um die Version herauszufinden gibt man folgenden Befehl ein:

uname -a

Die Ausgabe ist in meinem Fall 

Linux beaglebone 3.8.13-bone71.1 #162 SMP Fri Oct 16 07:27:34 CST 2015 armv7l GNU/Linux

Wichtig ist das die Stelle bone-XXX grösser als bone-39 ist, da erst ab dieser Version der Kernel Patch eingeflossen ist der die RX/TX Umschaltung über einen GPIO Pin ermöglicht.

Ist dies der Fall, muss noch der UART4 aktiviert werden, hierzu editiert man die Datei /boot/uEnv.txt mit dem vorinstallierten Nano Editor.
Man muss folgende Zeile ändern:

cape_enable=capemgr.enable_partno=BB-UART4

Nun lädt man sich mit folgendem Befehl eine Kopie des Git Repositorys herunter:

Nun wechsel man in das neue Verzeichnis und startet das Gateway

Wenn man nun Ctrl + A gefolgt von Ctrl + D drückt, wir das gestartete Program in den Hintergrund gelegt, läuft aber weiter wenn man sich ausloggt (mit einem weiteren Ctrl + D).

Konfiguration

Durch editieren der Datei modbus-gateway.cfg lassen sich bestimmte Parameter beinflussen:

Die Einstellungen sollten grössten teils selbsterklärend sein.

Beschränkungen

Bisher sind nur eine Teilmenge an Kommandos getestet worden, ob weitere funktionieren ist zu testen.

  • 01, Read Coil Status

  • 02, Read Input Status

  • 03, Read Holding Register

  • 04, Read Input Register

  • 06, Preset Single Register

To Do's

  • Das Gateway als service laufen lassen

  • Den Code besser dokumentieren