Skip to content

Schritt 3: Virtuelle Schnittstelle einrichten

Tom Bombadil edited this page Dec 10, 2023 · 19 revisions

🔥 Update / Achtung: Bei Verwendung der 'neuen' ModbusTCP-Adapter wie dem K7 oder dem E2 ist keine virtuelle Schnittstelle mehr erforderlich, und dieser Schritt kann übersprungen werden (siehe Beschreibung zu alternativen Adaptern am Ende dieser Bauanleitung). Die Adapter sind dann so zu konfigurieren, dass Sie als ModbusTCP zu Modbus RTU bridge arbeiten (z.B. bei USR: TTL1 > Socket A Parameters > Work Mode: TCP Server + Modbus TCP). Danach kann die Trovis von jedem Standard-ModbusTCP-Client direkt per IP-Adresse:Port angesprochen werden. Auch der Zugriff von mehreren Clients gleichzeitig ist dann möglich (z.B. Trovis-View, Heimautomation und 55Mobile gleichzeitig).

Für USB-Adapter

In aktuellen Betriebssystemen wird ein USB-Adapter nach dem Einstecken normalerweise automatisch erkannt:

Windows (ca. ab Win7): Eine Schnittstelle 'COMx' (x=nächster freier COM-Port) wird automatisch eingerichtet. Welcher Port für 'x' verwendet wird, lässt sich über den Gerätemanager ermitteln. Bitte den Port notieren, da wir diesen im nächsten Schritt zum Testen von Kabel und Adapter per Trovis-View benötigen.

Bitte beachten: Nach Angaben einiger Nutzer sollte kein zu hoher COM-Port für die Schnittstelle gewählt werden; ggf. nicht mehr benötigte niedrige COM-Ports im Gerätemanager löschen und das USB-Kabel Adapter abziehen und neu einstecken. Bei einem User funktionierte z.B. COM14 nicht; nach Umstellung auf COM3 lief dann alles problemlos.

Unix / Linux: Der USB-Adapter ist zumeist unter /dev/ttyUSBx oder /dev/ttyAMAx ansprechbar. x steht wie der COM-Port unter Windows für eine Zahl (hier meist 0).

Für LAN-/Wifi-Adapter

Windows: Für Windows liefern einige Adapterhersteller bereits Software mit, um eine virtuelle Schnittstellen zu erstellen (z.B. die Windows-Software VCOM von USRIOT). Vereinfacht gesagt wird bei dieser Art von Software ein Treiber bzw. Geräteport installiert, der dann auf einen COM-Port gemapped wird. Das weitere Prozedere ist dann identisch zu USB-Apaptern. Auch hier bitte den Port notieren, da wir diesen im nächsten Schritt zum Testen von Kabel und Adapter per Trovis-View benötigen:

1

Das Praktische an dieser Art Treiber ist, dass man quasi einen kostenlosen 'Port sniffer' gleich mitgeliefert bekommt, mit dem man die Kommunikation über die Schnittstelle verfolgen kann. Dies hilft sehr bei der Entwicklung für Geräte mit wenig dokumentierten Registern, wie es z.B. bei meiner Helios KWL der Fall war:

2

Unix / Linux: Hier kann man sich mit Bordmitteln eine virtuelle Schittstelle schnell selbst erstellen:

Unter /lib/systemd/system eine Datei trovis.servicemit folgendem Inhalt erstellen (Achtung, root-Berechtigung erforderlich):

[Install]
WantedBy=default.target

[Unit]
Description=Samson Trovis RS232C controller for smarthomeNG
After=network.target
Before=smarthome.service

[Service]
PIDFile=/usr/local/smarthome/var/run/trovis.pid
ExecStart=/usr/bin/socat -s -ly pty,link=/dev/trovis,setuid=root,raw tcp:192.168.178.8:8234
User=root
Restart=always
RestartSec=10
Type=simple

Bitte beachten: Am Ende der Zeile ExecStart die richtige IP und den Port Deines Adapters einstellen!

Mit sudo systemctl enable trovis.service kann der Dienst bzw. die Schnittstelle jetzt dauerhaft aktiviert werden. Bei sudo systemctl status trovis.service sollte der Dienst danach 'grün' und als gestartet dargestellt weren.

Abschließend mit sudo chmod 777 /dev/trovis den Zugriff auf die Schnittstelle auch für nicht-root-User zulassen.

Weitere Befehle zur Steuerung der Schnittstelle: sudo service trovis [start | stop | restart]. Insbesondere ein restart kann bei einigen Adaptern manchmal erforderlich sein. Es scheint so, als würden manche LAN-Adapter nach einem gewissen Zeitraum ohne Aktivität (z.B. >30 Minuten) die offene Verbindung kappen und in eine Art 'sleep mode' gehen; dann hilft ein einfaches sudo service trovis restart, und die Verbindung ist wieder da.

Grundsätzliche Hinweise zu Unix/Linux-Systemen

Aus meinem Helios-Projekt weiss ich, dass Devices unter /dev/tty* oft für Standard-Benutzer nicht ansprechbar sind. Grund sind fast immer fehlende Rechte.

Ein einmaliges sudo chmod 777 /dev/ttyUSB0 (oder /dev/ttyAMA1, /dev/trovis oder welcher Port auch immer zugewiesen ist) wirkt hier oft Wunder. (Für die Sicherheitsfetischisten: Sinn oder Unsinn von 777 möchte ich hier nicht diskutieren. Wem das nicht gefällt, der darf für seinen Adapter gern eigene Methoden austüfteln, um ihn zum Laufen zu bringen.)

Manchmal (wenn auch selten) wird auch die standardmäßig eingestellte Baudrate der verwendeten Device nicht korrekt erkannt. Dies läßt sich mit stty -F /dev/trovis 19200 raw -echo beheben (für /dev/trovis natürlich die verwendete Device eintragen, wenn diese anders heißt, z.B. /dev/ttyUSB0).


Anhang: Info-Sammlung


Clone this wiki locally