Ich habe in einer Gebäudesteuerung mehrere Wago 750-841 Controller. Momentan lese und schreibe ich diverse Variablen bzw Controllerausgänge mittels der ModBus-DLL von Wago zyklisch einzeln aus um diese dann über ein eigenes TCP Protokoll an verschiedene Visualisierungs Oberflächen zu senden.
Allerdings ergibt sich durch das zyklische auslesen eine recht hohe Latenz. D.h. wenn der Benutzer auf dem Touchpanel auf eine Schaltfläche tippt, zeigt diese erst verzögert den tatsächlichen Status des dazugeörigen Ausganges an. Das führt dazu, dass der Benutzer meint, das Antippen hätte nicht funktioniert und tippt nocheinmal...
Ich bin nun auf der Suche nach einer Lösung, dass der 841er bei einer Wertänderung einer Variablen von sich aus ein Telegramm an eine Serverapplikation schickt. Diese dient als "Message-Hub" und leitet die Telegramme an alle aktiven Clients weiter.
Ein Telegramm sieht dann etwa so aus:
SETSIGNAL 4711 1
Ich denke man müsste etwa so vorgehen:
Der Controller baut eine TCP Verbindung zum MessageHub auf.
An jedem Ausgang greiffe ich dessen Wert in einen Funktionsblock ab. Der Funktionsblock schreibt den Wert und die Signalnummer in ein Array.
Ein zentraler Funktionsblock Arbeitet das Array ab und versendet die Telegramme.
Ich denke das müsste über die syslibethernet (oder wie die Lib heisst) machbar sein. Allerdings finde ich nirgends eine gescheite Doku zu dieser Lib.
Hat jemand eine Doku oder sogar ein Beispielprogramm zum versenden von Strings via TCP?
Gruss
Chregu
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Ich werde dies demnächst in einem Veruchsaufbau testen.
Gruss
Chregu
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Anonymous
-
2007-09-12
Originally created by: ch-hunn
debug hat geschrieben:
Hallo Chregu,
bist Du sicher, dass es verzögert ankommt und du nicht mit diesem Problem gerade beschäftigst?
Hallo Debug
Danke für Deine Anregung
Ich benutze nicht die integrierte WebVisu des Controllers. Als Visualisierung wird eine .NET Applikation eingesetzt. Dies aus dem Grund, da mit dieser Oberfläche nicht nur 841er visualisiert und gesteuert werden, sondern auch weitere andere Schnittstellen angesprochen werden (Videoüberwachung, Audiosteuerung, Mail, etc.) und die grafischen Gestaltungsmöglichkeiten der WebVisu nicht ausreichen.
Die Werte des Controllers werden zyklisch via ModBus ausgelesen. Wenn ich jetzt über 100 Werte der Reihe nach auslese, dauert so ein Zyklus über 2 Sekunden.
Deshalb suche ich nach einer Möglichkeit, die Daten ereignisgesteuert an den Server zu senden. D.h. sobald sich ein Wert ändert ein Telegramm versendet wird.
Gruss
Chregu
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Originally created by: ch-hunn
Hallo Profis!
Ich habe in einer Gebäudesteuerung mehrere Wago 750-841 Controller. Momentan lese und schreibe ich diverse Variablen bzw Controllerausgänge mittels der ModBus-DLL von Wago zyklisch einzeln aus um diese dann über ein eigenes TCP Protokoll an verschiedene Visualisierungs Oberflächen zu senden.
Allerdings ergibt sich durch das zyklische auslesen eine recht hohe Latenz. D.h. wenn der Benutzer auf dem Touchpanel auf eine Schaltfläche tippt, zeigt diese erst verzögert den tatsächlichen Status des dazugeörigen Ausganges an. Das führt dazu, dass der Benutzer meint, das Antippen hätte nicht funktioniert und tippt nocheinmal...
Ich bin nun auf der Suche nach einer Lösung, dass der 841er bei einer Wertänderung einer Variablen von sich aus ein Telegramm an eine Serverapplikation schickt. Diese dient als "Message-Hub" und leitet die Telegramme an alle aktiven Clients weiter.
Ein Telegramm sieht dann etwa so aus:
SETSIGNAL 4711 1
Ich denke man müsste etwa so vorgehen:
Der Controller baut eine TCP Verbindung zum MessageHub auf.
An jedem Ausgang greiffe ich dessen Wert in einen Funktionsblock ab. Der Funktionsblock schreibt den Wert und die Signalnummer in ein Array.
Ein zentraler Funktionsblock Arbeitet das Array ab und versendet die Telegramme.
Ich denke das müsste über die syslibethernet (oder wie die Lib heisst) machbar sein. Allerdings finde ich nirgends eine gescheite Doku zu dieser Lib.
Hat jemand eine Doku oder sogar ein Beispielprogramm zum versenden von Strings via TCP?
Gruss
Chregu
Hallo ch-hunn,
schau mal unter
http://www.wago.com/wagoweb/documentation/app_note/a1122/a112200d.htm
die Beispiele dort sollten auch mit dem 841 funktionieren.
Uwe
Hallo Chregu,
Problem gerade beschäftigst?
Originally created by: ch-hunn
Danke Uwe
Ich werde dies demnächst in einem Veruchsaufbau testen.
Gruss
Chregu
Originally created by: ch-hunn
Hallo Debug
Danke für Deine Anregung
Ich benutze nicht die integrierte WebVisu des Controllers. Als Visualisierung wird eine .NET Applikation eingesetzt. Dies aus dem Grund, da mit dieser Oberfläche nicht nur 841er visualisiert und gesteuert werden, sondern auch weitere andere Schnittstellen angesprochen werden (Videoüberwachung, Audiosteuerung, Mail, etc.) und die grafischen Gestaltungsmöglichkeiten der WebVisu nicht ausreichen.
Die Werte des Controllers werden zyklisch via ModBus ausgelesen. Wenn ich jetzt über 100 Werte der Reihe nach auslese, dauert so ein Zyklus über 2 Sekunden.
Deshalb suche ich nach einer Möglichkeit, die Daten ereignisgesteuert an den Server zu senden. D.h. sobald sich ein Wert ändert ein Telegramm versendet wird.
Gruss
Chregu