WinCC flex, EA-Felder aktualisieren nicht

Harry

Level-1
Beiträge
76
Reaktionspunkte
6
Zuviel Werbung?
-> Hier kostenlos registrieren
...immer!

Mit diesem Problem kämpfe ich immer wieder, es scheint also so zu sein, dass ich grundlegend irgendwo einen Ueberlegungsfehler mache.
Die Ungereimtheit trat sowohl bei WinCCflex 2005 advanced als auch bei der Version 2007 auf.

Das Problem lässt sich am besten anhand eines Beispiels erklären:
Ich projektiere ein E/A-Feld mit der Einstellung "Eingabe/Ausgabe" und weise die Variable eines DB's zu.
Dieses Feld kopiere ich und lasse es unverändert.
Wenn ich nun die RT starte, kann es sein, dass ich in einem der Felder eine Eingabe mache, diese aber im andern Feld nicht angezeigt wird.
Ebenso ist es möglich, dass sich nur der Wert in einem Feld aktualisiert, wenn ich den Wert im DB manuell ändere, das andere Feld jedoch immer noch den alten Wert anzeigt.

Aber: egal in welchem Feld ich einen Wert eingebe: im DB wird dieser Wert immer korrekt hineingeschrieben.


Bis jetzt habe ich jedoch noch keine andern Gesetzmässigkeiten erkannt. Mal gehts, mal nicht...
Hab auch schon unterschiedliche Kombinationen der Erfassungsart von "zyklisch fortlaufend" und "zyklisch bei Verwendung" ausprobiert. Teilweise funktionert es nach einer Änderung wieder und plötzlich irgendwann wieder nicht mehr.

Hatte jemand auch schon dieses Problem?

Besten Dank für die Hilfe !
 
:confused: du hast 2 Ein-Ausgabe-Felder auf der gleichen Seite projektiert, die auf die gleiche Variable zugreifen sollen ?
Wenn ja, dann ist das für die Visu (ist kein Flex-Problem) etwa so, als wenn du auf der Fahrer- und Beifahrer-Seite deines Auto's je ein Lenkrad hast. Was soll das Auto machen, wenn du als Fahrer nach links lenkst und das Beifahrer-Lenkrad weiter nach geradeaus zeigt ...?
Zum Verständnis, die beiden EA's sind erst in der SPS gekoppelt ... und bis dahin kann viel passieren ...

Gruß
LL
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hinkt der Vergleich nicht ein wenig?

Ich stelle mir das so vor (wenn wir mal bei den Lenkrädern bleiben):

Wir sind in einem Helikopter mit Doppelsteuer. Das Steuerwerk ist gekoppelt mit der Lenkvorrichtung für den Fluglehrer sowie für den Flugschüler und würde der SPS entsprechen.
Gibt ein Pilot einen Befehl (entspricht einer Werteingabe auf der Visu) so wird dies dem Steuerwerk (SPS) übergeben und weitergemeldet an den anderen Piloten. (Ausgabe auf der Visu)
Bei den zwei E/A-Felder ist es ja niemals so, dass gleichzeitig Eingaben auf unterschiedlichen Feldern gemacht werden können, schliesslich kann ich ja nur ein Feld aufs mal anwählen.

Hab in der Zwischenzeit auch noch folgende "Entdeckung" gemacht:
Lösche ich die temporären Dateien, so ändern sich die Effekte.
 
Hinkt der Vergleich nicht ein wenig?

Nein, nach meiner bisherigen Erfahrung nicht. Da ist es so, dass jedes EA-Feld für sich selbst verantwortlich ist. Das heißt in deinem konkreten Fall, dass das EA-Feld 1 der Variable xyz der Wert 1 und das EA-Feld 2 der gleichen Variable zeitgleich unter Umständen einen völlig anderen Wert (z.B. 2) zuweist. Welche Zuweisung ist nun richtig ? Wie schon gesagt gilt das nur, wenn sich beide Felder auf der gleichen Seite befinden (welchen Sinn das auch immer hat). Das Problem käme z.B. nicht zum Tragen, wenn du ein EA-Feld und ein Ausgabe-Feld hättest.

Gruß
LL
 
Hallo

..... ist kein Flex-Problem ...
:confused:

Bei InTouch von Wonderware funktioniert diese Konstellation ohne Probleme.:D
Es kann in einem Bild doch nur immer ein EA-Feld für die Eingabe aktiv sein (Problem Zeitgleich).
Wird im EA-Feld 1 ein neuer Wert eingegeben, so wird die Variable mit diesem Wert gesetzt, zur Steuerung gesendet und anschliessend müsste EA-Feld 2 (welche ja die gleiche Variable besitzt) auch aktuallisiert werden.

Gruss Hoyt
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also, ich versuche mal wie eine Visu-Software zu "denken" und das Phänomen zu erklären.

Das ganze besteht im prinzip aus 3 Schichten
1. SPS-Ebene
2. IO-Treiber der Visu-Software
3. Visu-Applikation.

1. Grundsätzlich werden die anzuzeigenden Tags (variablen) vom IO-Treiber aus der SPS gepollt (also ständig gelesen). Ändert sich hier ein Wert, wird an die Visu-Applikation mitgeteilt, dass sich der Wert verändert hat --> Visu-Applikation aktualisiert die Ein-/Ausgabefelder
Das sollte sich testen lassen, indem Du der Variable in der SPS (per Variablentabelle) einen neuen Wert zuweist. Beide Felder sollten aktualisiert werden

2. Wird nun beim 1. Eingabefeld der Wert geändert geschieht folgendes:
- Visu-Applikation meldet an IO-Treiber, dass ein Eingabefeld ein Tag geändert hat und übermittelt den geänderten Wert an den IO-Treiber
- der IO-Treiber schreibt nun den Wert zur SPS und liest ihn wieder
- da der IO-Treiber den gleichen Wert aus der SPS liest wie der, der zuvor geschrieben wurde, ist für den IO-Treiber die Geschichte beendet weil: im Puffer des IO-Treibers hat das tag den gleichen Wert die die SPS - es besteht also keine Veranlassung, an die Visu eine "Wertänderung" zu senden.

3. die Visu-Applikation wiederum aktualisiert die "Ausgabefelder" nur dann, wenn vom IO-Treiber eine Wertänderung gemeldet wird

Soweit logo?


So, nun ein einfacher Trick, wie sich das ganze umgehen lassen sollte:
- lege für die beiden EA-Felder jeweils eine eigenes Tag an (einfac kopieren) - beide tags greifen aber auf die gleiche Adresse in der SPS zu
- da nun der IO-Treiber 2 eigenständige Tags pollt (welche "zufällig" auf die gleiche Adresse zugreifen), sollte das ganze problemlos funktionieren.


Muss zugeben, dass ich das jetzt nicht unmittelbar getestet habe - aber das beschriebene Phänomen deutet auf genau ein solches Problem hin.


mfg Maxl
 
Danke Maxl, Deine Erklärung leuchet mir eigentlich ein.
Es ist tatäschlich so, dass sich das Problem löst, sobald ich pro E/A-Feld einen eigenen Tag projektiere welcher dann in der SPS auf die gleiche Adresse greift.
 
Zurück
Oben