# Codesys v3.5, Webvisu, Button als Taster und Modbus



## ogaw (25 Dezember 2018)

Hallo Forum,

ich nutze privat 2 Wago-Controller 750-880 bzw.  750-881 welche jeweils eine Webvisu (Codesys v2.3) hosten und damit  Bedienung über Android-Geräte ermöglichen.

Nun möchte ich einen  Raspberry Pi mit Codesys v3.5 nutzen, um beide Visualisierungen  zusammenzuführen und auch die Darstellung und Bedienung in üblichen  Browsern zu ermöglichen.
Die Kommunikation zwischen Raspberry Pi und beiden Controllern soll über Modbus TCP erfolgen.

Wie weit bin ich?

es  gibt einen Datentyp zum Datenaustausch zwischen Visu und Controller  (bezüglich eines Antrieb-FBs, digitaler Ausgang) bestehend aus:
Control-Struct (Hand, Automatik, Ein, Aus, Verriegelt, Entriegelt) 
Status-Struct (Hand, Automatik, Ein, Aus, Verriegelt, Entriegelt, Freigabe, Störung) 
zusätzlichen Status-Infos (Bezeichnung, Betriebsstunden, Symbolfarbe) 
 
auf der Controller-Seite gibt es einen Antriebs-FB, der ebendiese Signale von der Visu an einem In/Out-Eingang bekommt
Control-Struct wird hier ausschließlich gelesen 
Status-Struct wird hier geschrieben (und gelesen) 
 
auf der Raspberry Pi-Seite gibt es ein instanziierbares Parameter-Bild, welches
die Elemente des Control-Structs tastet 
die Elemente des Status-Structs visualisiert (Button-Füllfarbe, sowie Textfelder) 
 
sowie  instanziierbare Symbolbilder welche schematisch eine Pumpe, Ventil oder  Lampe darstellen und über die Symbolfarbe den Betriebszustand abbilden  und die Parameter-Bilder-Instanzen öffnen 


Die Kommunikation und die Verarbeitung funktioniert.

Wo gibt es Probleme?

mein Problem ist das Timing zwischen Bedienung im Browser und der Modbus-Kommunikation
bediene  ich in der Codesys-Online-Sicht auf die Visualisierung oder im Browser  am PC, muss ich meine tastenden Buttons so lange drücken, dass das  entsprechende Control-Struct-Element zum Zeitpunkt der  Modbus-Kommunikation gedrückt ist 
es ist bei kurzem  Buttondruck möglich im Raspberry Pi das Tastsignal zu sehen, es aber zum  Zeitpunkt der Modbus-Übertragung schon wieder zurückgesetzt zu haben 
bediene ich die Control-Tasten  im Browser auf einem Mobiltelefon ist scheinbar gar kein längerer  Tastendruck möglich - ich muss sehr häufig tasten, um das High-Signal  zufällig zum Zeitpunkt der Modbus-Kommunikation anstehend zu haben 
 

Meine Ideen zur Lösung:

Raspberry Pi schaltet die Control-Signale um anstatt zu tasten
Verworfen,  weil ich die Control-Elemente in der Steuerung resetten und zurück  schreiben müsste (Zuordnung senden/empfangen würde verloren gehen) 
 
Logik auf dem Raspberry Pi
die Button-Tastimpulse in einem FB auf dem Raspberry Pi halten und strecken bis sie gesendet wurden 
ich würde ungern zu jedem Taster noch diese Logik hinzufügen 
 


Was fällt euch noch ein?
Eine  Eigenschaft des Control-Elements "Schaltfläche" welche die Impulszeit  des Tastsignals parametriert habe ich leider nicht gefunden.

Frohes Fest
ogaw


----------



## ogaw (26 Dezember 2018)

gelöst!

wenn man die ModbusTCP-E/A-Abbilder im Zyklus des Main-Tasks aufruft sind die Taster-Impulse und die Modbus-Kommunikation synchron.


----------



## Dr.MirakulixX (27 Dezember 2018)

Alternative wenn du magst und es möglich ist...
Statt Modbus kannst du Netzvar‘s nutzen. 
Ich meine bei denen besteht das Problem nicht. Habe es aber auch nicht probiert bzw wenn ist es schon was länger her...


----------

