RS232 über Ethernet?

Guten Morgen,

in Anbetracht, das die technische Entwicklung (hier konkret der Symbox) zunehmend auf Seriellen-Schnittstellen und USB-Anschlüsse verzichtet bin ich dabei meine ganze Heimtechnik langsam auf Module/Gateways mit LAN-Anschluss Richtung IPS-Server umzubauen.

Ich bin gerade was die Ethernet-Protokolle etc. angeht leider nicht sonderlich fitt, daher meine Frage an euch:

Ich will die Steurung meiner Lüftungsanlage (Comfobox), welche die interessantesten Daten kontinuierlich über eine RS232-Schnittstelle ausgibt, aufs LAN umleiten. Soweit so gut. Das Auslesen der RS232-Daten und die Einbindung (via Serial-Port) wurde hier im Forum schon gut beschrieben und ist realisiert.

Es gibt auch entsprechende Hardware Konverter RS232<>Ethernet im Handel, aber welcher macht es mir im Sinne der Symcon-integration am einfachsten (ohne das ich am IPS-Server (noch Win, mittelfristig Linux) die Daten über einen virtuellen Serial-Port auslesen. Also kann ich mit IPS-Mittel, die vom Konverter über Ethernet einlaufenden Daten irgendwie direkt auslesen und umsetzen? Auch nen Lösung mittels Raspberry als Konverter wäre für mich nicht uninteressant, da ich eine bereits zu andern Zwecken im nahen Umfeld der Lüftungsanlage laufen habe.

Gruß
hardlog

Kennst du den USR-TCP232 ?
Läuft bei mir als ServerSocket so das sich IPS mit einem Clientsocket darauf verbindet.
Läuft komplett Transparent für IPS bei mir. Benötigt also auch keinen virtuellen ComPort.
Und gibt es für relativ wenig Geld.
Michael

Als Lösung für den Raspberry verwende ich ser2net. Gibt es als Standard-Paket. Daten sind kein Problem, man kann damit aber nicht alle Steuerleitungen in Realtime kontrollieren.

Tommi

Danke für die Tipps,

Hab mir den Hardware-Konverter für knapp 15€ bestellt. die Software-Lösung für den raspberry probiere ich aber auch mal aus.

Gruß hardlog

Hallo Michael,

hab den Konverter (USR-TCP232-2) heute bekommen.

Kennst du den USR-TCP232 ?
Läuft bei mir als ServerSocket so das sich IPS mit einem Clientsocket darauf verbindet.
Läuft komplett Transparent für IPS bei mir. Benötigt also auch keinen virtuellen ComPort.
Und gibt es für relativ wenig Geld.
Michael

Was meinst Du mit „der USR… als ServerSocket einrichten“. Muß ich da was besonderes Konfigurieren?

hardlog

Liege leider mit einer fiesen Erkältung im Bett, sonst hätte ich mal einen Screenshot gemacht.
So aus dem Kopf…
Mit dem Konfig-Tool einmal den Modus auf Server einstellen (+ Port) und dann noch die Parameter der seriellen Seite anpassen auf die angeschlossene Hardware.
Mehr war es nicht.
Michael

Hallo Michael,

tut mir leid mir der Erkältung, ich bin zwar Arzt … („Da gibt doch was von Symcon…“ :wink: )
Hab mal folgendes eingestellt:

RS232toLAN.JPG

Damit stellt er scheinbar ne Verbindung her aber wenn ich nun die bisherige Cutter_Instanz vom Seriellen Port auf diesen Client umlenke erscheinen im Debugfenster aber keine Transferrierten Daten.

Welches Protokoll (UDP oder TCP) muss ich denn nehmen oder ist das egal.

Gruß
hardlog

Wenn er sich connectet hast du wohl das richtige Protokoll :slight_smile:
TCP würde ich bevorzugen. Das ist dann auch der ClientSocket in IPS.
Kenne jetzt deine Hardware nicht. Sie sendet am seriellen Anschluss von sich aus ?
Dort alles korrekt eingestellt ?
Und im Debug vom Clientsocket nix zu sehen ?
Kannst du den Daten versenden und sehen ob sie ankommen ?

Alternativ kannst du auch im USR auf TCP Client umstellen. Dann musst du aber als Ziel deine IP und Port von einem IPS-Serversocket angeben.
Und in der Firewall auch den entsprechenden Port freigeben.
Ist aber nicht so gut, weil du dann nicht merkst wenn der USR mal offline ist.
Michael

Die Daten müßten erst nach einem Request kommen:

z.B. wenn ich folgenden Hex_String sende müßte meine Lüftungsanlage den Gerätetyp zurückmelden:

0x07 0xF0 0x00 0x69 0x00 0x16 0x07 0x0F

Wie sende ich eigentlich? Bisher (über den ComPort) lief es mit

COMPort_SendText($SerialPortID,$requestStr);   

Vermutlich muss ich nen Server-Socket anlegen, oder? Dann als Port den selben wie im ClientSocket? Und dann mit welchem PHP_Befehl?

hardlog

Nein das brauchst du nicht.

Es ist viel einfacher.

Nimm RegVar_SendText und dann die ID der RegisterVariable.

Dann ist es IO unabhängig.

Michael

wow … :loveips:

Es geht!! Das war einfacher als ich dachte. Vielen Dank für die Hilfe.

Gute Besserung
Hardlog

Eine Frage hab ich noch.

Du sagtest:

Ist aber nicht so gut, weil du dann nicht merkst wenn der USR mal offline ist.

Wie kann ich per PHP abfragen ob der USR online ist oder nicht?

hardlog

Habs jetzt gelöst in dem Ich die Instanz mit

IPS_GetInstance($IDClientSocket)['InstanceStatus']);

abfrage.

Gruß
hardlog

Oder … wieder viel einfacher :slight_smile:
Öffne mal das Event Control.
Füge deine Instanz des ClientSocket hinzu und das Script mit der Auswertung ob die Instanz fehlerhaft ist.
Dies erspart das zyklische abfragen.
Gibt dafür sogar Systemvariablen.
Event Control — IP-Symcon :: Automatisierungssoftware
Michael

Hallo zusammen,

Kurze Beschreibung:
Momentan betreibe ich IP-Symcon (IPS 3.20) auf einem virtualisierten Windows 2008R2 Server OS und möchte damit auf ein Linux System umziehen. IPS nutze ich unter Anderem zur Zähler Fernauslese von einem Nahwärmenetz. Die Wärmezähler sind über mehrere Kamstrup M-BUS Master MultiPort 250D angeschlossen, die mit RS232 und USB Schnittstelle bestückt sind. Ans Netzwerk sind die M-Bus Master mit einem Serial LAN Converter NPort 5220 von MOXA angeschlossen.
In meinem “alten” Setup habe ich den Com Port der M-Bus Master auf mit dem NPort 5220 jeweils im sogenannten „MOXA Real COM Mode“ auf den Windows Server “gespiegelt” und hatte an den Windows Server damit virtualisierte Com Ports zur Verfügung.
Da ich das System auf Linux umziehen möchte, suchte ich nach einer Alternativen zum spiegeln (MOXA Real COM Mode) der NPorts auf den Windows Server.

Neue Lösung:
Ganz ohne MOXA Treiber die NPort 5110 mit einer Client Socket an IPS anbinden.
Und wie ich das funktioniert möchte ich gerne mit Euch teilnen, falls jemand von Euch auch MOXA Equipment verwendet oder verwenden möchte.

Insgesamt ist das System wie folgt schematisch aufgebaut und in IPS eingebunden:
M-Bus Zähler < – M-Bus --> M-Bus Master < – RS-232 --> Moxa NPort 5110 < --LAN --> IPS < –IPS Client Socket --> < – IPS Splitter Instanz (M-Bus Gateway) --> <-- IPS M-Bus Devices (pro Zähler ein Device) -->

Wenn man den M-Bus Master seriell direkt an einen COM Port des Windows Server betreiben würde, hätte man anstatt der IO Instanz “IPS Client Socket” eine IO Instanz “Serial Port” (wie ich das in meinem alten Setup hatte).

NPort umstellen:
Zuerst den NPort im Web User Interface auf TCP Server Mode umstellen wie folgt:
[b]

Die Serial Setings dem Bedarf anpassen:[/b]

MOXA-NPort5110-Serial-Settings.jpg

Auf IPS eine Client Socket IO Instanz anlegen:
Die IP Adresse ist die IP Adresse des MOXA NPort 5110 Serial LAN Converter.
Die verwendete Port Adresse ist der “Local TCP port”, den man unter dem Operating Settings des NPort in dem WEB User Interface findet. In meinem Fall ist das Port 4001

Auf IPS ein Splitter Instanz M-Bus Gateway anlegen:
Als übergeordneter Instanz ist die gerade zuvor angelegte Client Socket Instanz auszuwählen.

M-Bus Geräte anlegen für jeden Zähler beziehungsweise jedes M-Bus Device an dem M-Bus Master:
Als übergeordneter Instanz ist jeweils für alle Device an dem jeweiligen M-Bus Master die gerade angelegte M-Bus Gateway Splitter Instanz auszuwählen.

Fertig!
Viele Grüße
Dirk