INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

bitte Hilfe, wieder Problem bei Datasocket Lesen/Schreiben



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

22.08.2014, 06:57 (Dieser Beitrag wurde zuletzt bearbeitet: 22.08.2014 07:11 von rolfk.)
Beitrag #4

rolfk Offline
LVF-Guru
*****


Beiträge: 2.317
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
RE: bitte Hilfe, wieder Problem bei Datasocket Lesen/Schreiben
(21.08.2014 10:26 )LabviewLearning schrieb:  Moin alle,

Ich habe eine Verbindung zwischen der SPS und HMI Labview über OPC Server eingerichtet. Das Ziel ist es, dass man die Sollwerte entweder bei der SPS oder im HMI verändern kann.

ich möchte Euch einen kleinen Code zeigen, in dem ich zwei Bedien- bzw. Anzeigeelemente für Sollwertsänderungen habe.

Wenn ich die Sollwerte im HMI einstellen möchte, werden diese Werte vom HMI zur SPS über OPC Server geschickt und auf dem Display bei SPS bei der Anzeige- und Bedienelementen angezeigt. Diese Variante funktioniert einwandfrei.

Umgekehrt funktioniert leider nicht. Nachdem ich die Sollwerte bei der Bedienelemten auf SPS Display eingestellt habe, konnten dieser Werte nicht auf dem Bedienelement von HMI schreiben.

Wie kann ich die Werte bidirektional bedienen und aktuallisieren.

Kann jemand von Euch mir eine Idee geben. Ich bedanke mich im Voraus und begrüße,

Phuong

Wie das genau kann weiss ich jetzt auch nicht aber grundsätzlich ist das keine gute Idee. Du hast dann das Problem von Race-Conditions die fast gar nicht zu verhindern sind. Sobald eine der Seiten unterschiedliche Statusse für ein Kontroll sieht beginnen sie frisch fröhlich einander diese Statusveränderung hin und her zu zu pingen, mit dem Effekt dass Dein Kontrol im Takt der Datenverzögerung in der Kommunikation beginnt zu flippern. Die notwendige Logik dazu um das zu verhindern ist meist ziemlich kompliziert, anfällig auf kleine Anpassungen in Deiner Applikation und grundsätzlich schwer unterhaltbar. Multipliziere das mit der Anzahl der möglichen bidirektional gespiegelten Kontrolls und du hast eine Applikation mit der Du Dir den Rest des Lebens ein Einkommen garantierst, bis der Chef bestimmt dass das viel zu teuer ist und die ganze Applikation zum Fenster rauswirft, im schlimmsten Fall mit dem Verursacher dieses Verbrechens hintennach. Big Grin

Die einzige einigermassen funktionierende Methode ist es die beiden Richtungen ganz zu trennen. Also je zwei Variablen für ein solches Kontroll, eine die durch die SPS beschrieben und LabVIEW gelesen wird und umgekehrt. Dann musst Du noch auf beiden Seiten Logik einbauen um zu erkennen dass eine Änderung von der einen Seite durch die andere bestätigt wird. Das kann implizit indem Du jeweils lokal einen Status/Merker unterhältst der bei einer lokalen Änderung solange wartet bis er diese Änderung in der anderen Variablen zurücksieht (aufpassen bei Fliesskommazahlen!!! Durch die beschränkte Auflösung von solchen Zahlen in Computern ist eine einfache Vergleichung auf Übereinstimmung nicht genügend um festzustellen dass zwei solche Zahlen gleich sind. Es kann durchaus sein dass Du zwar auf beiden Seiten 3.11 siehst aber dass diese Zahlen effektive jeweils 3.11000000000001 und 3.1099999999999 sind und dann ist das Resultat bei == halt falsch auch wenn es optisch anders aussieht.) Diese Logik musst Du für jedes Kontroll dass auf beiden Seiten verändert werden kann und auch auf beiden Seiten implementieren! Gute Nacht wenn das mehr dan ein oder zwei Kontrolls sind.

Rolf Kalbermatter
Technische Universität Delft, Dienst Elektronik und Mechanik
https://blog.kalbermatter.nl
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Nachrichten in diesem Thema
RE: bitte Hilfe, wieder Problem bei Datasocket Lesen/Schreiben - rolfk - 22.08.2014 06:57

Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  DataSocket - alle Verbindungen anzeigen Marius89 2 3.633 10.03.2023 14:09
Letzter Beitrag: Marius89
  Problem mit Datasocket Ping Pong Hubert R. 6 6.623 10.11.2021 14:17
Letzter Beitrag: Martin.Henz
  DataSocket Connection Muaadh 4 5.726 26.11.2019 23:28
Letzter Beitrag: Muaadh
  OPC und DataSocket: Verstehe den Code nicht tuhpon 2 4.332 10.07.2019 14:53
Letzter Beitrag: tuhpon
  Mit Datasocket OPC schneller 1ms lesen? PreVIEW 4 6.913 25.08.2016 12:02
Letzter Beitrag: PreVIEW
  Daten lesen/schreiben Vorrangproblem Variablen buettnerstefan 6 8.197 26.05.2015 21:48
Letzter Beitrag: jg

Gehe zu: