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
BeagleBoneGreen ca. 38€
Waveshare CAN RS485 Cape ca. 16€
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