WinCC Flex - Variable initialisieren

Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo!
Sehr interessant was Ihr zu diesem Thema schreibt! Ich bin auch schon mit dieser Gegebenheit konfrontiert worden.
Den Gedanken mit einer internen Variable ist meiner Meinung nach ein guter.

Mehrfach angewendet und ohne Probleme funktionier auch folgendes.

Ihr legt eine Interne INT-Variable an mit dem definierten Startwert 0.
In den Eigenschaften des Startbilds unter Bild Aufgebaut diese Variable auf den Wert 1 schreiben. Dies passiert also nur beim ersten Aufbau des Startbilds.

Des weiteren in den Eigenschaften der INT-Variable die Obergrenze fest auf 0 definieren und bei der Überschreitung der Obergrenze keine Meldung generieren lassen (Haken entfernen)

Bei dem Ereignis Obergrenze überschritten ist es dann möglich Scripte oder sonstiges zu Starten oder auszulösen. Die Ereignisse werden dann auch nur beim Runtime-Start ausgeführt.

Alle Skripte die ich aus der SPS heraus auslösen will starte ich mit dem Ereignis Obergrenze überschritten. Das ist einfach sicherer als eine Wertänderung. Wenn das Skript durch ist schreibe ich diese Variable wieder zurück auf 0. So ist man sicher dass es geklappt hat und bekommt ohne eine zweite Variable in der SPS mit ob das Skript durch ist.

Vielleicht hat jemand Lust und Zeit beides mal zu testen.
mfg
 
Hallo Harald,
ergehen wir uns jetzt in Spitzfindigkeiten ?
Hallo Larry,
klar hast Du meine Aussage bestätigt, daß die Idee von ssound1de nicht funktionieren
wird. Wir wissen beide, was geht und was nicht.

Allerdings interpretiere ich und womöglich andere Leser diese Deine Aussage
Bei internen Variablen werden keine Ereignisse ausgewertet.
so, daß bei internen Variablen grundsätzlich keine Ereignisse "Wertänderung"
ausgelöst werden würden. Doch das ist ja nicht so.
Kommt die Wertänderung von außen, dann wird bei allen Variablen das Ereignis
"Wertänderung" ausgelöst, kommt die Wertänderung Panel-intern, dann wird das
Ereignis nicht ausgelöst. Bei internen Variablen ist eine Wertänderung von außen
allerdings nur über ein Eingabefeld möglich (eventuell auch über einen Schalter?).

Daß Deine Aussage nur ungenau formuliert war, habe ich nicht herauslesen.
Sonst sind Deine Aussagen ja fast immer sehr korrekt formuliert.
Meine penible Interpretation von Aussagen kommt einfach vom jahrelangen Umgang mit
Kunden, die in der Regel nicht genau beschreiben können, was sie eigentlich wollen.
Übrigens: Mein Wort für "Spitzfindigkeiten" ist "Goldwaage", meint aber das selbe.

Die Begründung des warum es geht bei einer Tastatur-Eingabe und warum nicht bei einer Wert-Änderung über Script halte ich aber für etwas dürftig. Professionelle Programme (so wie z.B. Visual-Studio) können so einen "Zirkel-Bezug" auch sofort erkennen.
Ich kann nichts dafür, daß Siemens sich in WinCCflex nicht die Mühe macht,
Zirkelbezüge zu erkennen, sondern schon die theoretische Möglichkeit dafür mit dem
loop breaker einfach grundsätzlich unterbindet.
Vielleicht sollte man WinCCflex nicht mit professionellen Programmen vergleichen ;)

Ich meine aber, daß ssound1de aus meiner Erklärung verstanden hat, warum seine
eigentlich gute Idee praktisch nicht funktionieren wird.

Gruß
Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Mehrfach angewendet und ohne Probleme funktionier auch folgendes.

Ihr legt eine Interne INT-Variable an mit dem definierten Startwert 0.
In den Eigenschaften des Startbilds unter Bild Aufgebaut diese Variable auf den Wert 1 schreiben. Dies passiert also nur beim ersten Aufbau des Startbilds.

Des weiteren in den Eigenschaften der INT-Variable die Obergrenze fest auf 0 definieren und bei der Überschreitung der Obergrenze keine Meldung generieren lassen (Haken entfernen)

Bei dem Ereignis Obergrenze überschritten ist es dann möglich Scripte oder sonstiges zu Starten oder auszulösen. Die Ereignisse werden dann auch nur beim Runtime-Start ausgeführt.
Hallo MrMarc,

es wäre interessant, wenn Du mal schreibst, unter welcher WinCCflex-Version
Dein mehrfach angewendetes Vorgehen tatsächlich funktioniert.

WinCCflex 2008 SP2 Upd1 meldet zwar die versuchte Grenzwertüberschreitung,
löst aber das Ereignis "Obergrenze überschritten" erwartungsgemäß nicht aus.

Gruß
Harald
 
Des weiteren in den Eigenschaften der INT-Variable die Obergrenze fest auf 0 definieren und bei der Überschreitung der Obergrenze keine Meldung generieren lassen (Haken entfernen)

Bei dem Ereignis Obergrenze überschritten ist es dann möglich Scripte oder sonstiges zu Starten oder auszulösen. Die Ereignisse werden dann auch nur beim Runtime-Start ausgeführt.
Klingt interessant, geht aber nicht. Wenn ich mit dem Ereignis 'Bild aufgebaut' die Init-Var über den Grenzwert setzen möchte, wird der Wert automatisch auf das Maximum (Grenzwert) begrenzt. Es findet keine Grenzwert-Überschreitung statt, also auch kein Script-Aufruf.
 
Hallo Harald!

Ich habe mir nun das SP2 Update 1 installiert und muss dir leider zustimmen.
Es funktioniert nicht mehr so wie ich das beschrieben habe.

Es funktioniert noch wenn die Grenzwertüberschreitung durch einen Wert aus der SPS entsteht.

Aber das hat ja nichts mit dem Ereignis RT-Start zu tun.

Gruß,
Marc
 
Zurück
Oben