Jump to content

Empfohlene Beiträge

Geschrieben (bearbeitet)

Hallo,
beim Ereignis 'Variable wird gesetzt' wird die Bedingung wahr, wenn man im Wert nichts eingibt und die Variable tatsächlich auf einen leeren Eintrag gesetzt wurde.
Das ist gut!
Aber leider fehlt die Gegenfunktion. Es ist nicht möglich zu prüfen, ob die Variable auf irgendeine Zeichenkette außer (nichts) gesetzt wurde.
Behelfen kann man sich, wenn man bei jedem Setzen einer solchen Textvariablen eine Parallelvariable auf einen Zahlenwert setzt und diesen dann befragt.
Da geht > und < ja, und in der Regel ist >-1 meistens ausreichend.
Eine schöne Lösung ist das nicht.
Vielleicht wäre es möglich auf >(nichts weiter) zu prüfen. Wobei dann natürlich das Zeichen > als Text verloren gehen würde.
Besser vielleicht ein Negationshäkchen, wie in der Bedingung vielleicht? Das würde auch für ungleich Zahlenwert Sinn machen.
Es wäre im ersten Moment vielleicht etwas irreführend, weil man denken könnte, es würde sich auf 'Ereignis tritt nicht ein' beziehen, also anstelle des Texts 'Negieren' vielleicht 'Vergleich negieren' schreiben.

Gruß
  Andy

p.s. gebraucht wird das, um einen Variablenwert in eine Beschriftung rüber zu bringen, wobei ich das nicht dort haben möchte, wo die Variable gesetzt wird.
Das hat wieder was mit Objektvariablen zu tun.

Bearbeitet von Andy
p.s.
Geschrieben

Hallo Andy,

das Problem wird in V5 durch die globalen Ereignisse gelöst. Dort kannst du auf eine Änderung reagieren, ohne dich auf einen Wert beschränken zu müssen.

Viele Grüße,

Neo

Geschrieben (bearbeitet)

Hallo Neo,

das ist schonmal prima.

Jetzt aber nochmal ein ähnliches Thema.
In 'normalen' Maschinensteuerungen haben wir viele einfache logische Netzwerke, die jeden Zyklus durchgerechnet werden.
Wir sind uns einig, dass es keinen Sinn macht, sie wieder und wieder durchzurechnen, wenn sich sowieso nichts an den Variablen geändert hat.
Jetzt haben wir da aber ein komplexes Netz mit sagen wir mal 5 Variablen.
In der (bisherigen) EV würde ich das gleiche Netz jetzt als 5 Ereignisse programmieren, mit dem Ereigniskopf "Variable A wird gesetzt', dann mit B, C, D und E.
Da muß er jetzt aber auch 5-mal checken, ob das Ereignis passiert ist. Viel dürfte er jetzt nicht gewonnen haben.

In meinen letzten komplexen Steuerungen habe ich deshalb den (skriptfähigen) Variablen etwas Besonderes mit auf den Weg gegeben.
Sie haben ein Flag gezogen, wenn ihr Wert geändert wurde. Also, nicht nur gesetzt, sondern außerdem unterschiedlich zum letzten Inhalt.
Das Flag wurde bereits mit dem Skript irgendwo 'angemeldet' (also eine Art Gruppenereignis, Link zur Laufzeit vorhanden) und daraufhin wurde dann auch das o.g. Netz durchgerechnet. Kann Dir das weiter helfen?

Gruß
  Andy

p.s.: Warte, die Antwort kannst Du Dir sparen. Ich glaube, ich habe die Funktion Ereignis de/aktivieren gewaltig unterschätzt.

Bearbeitet von Andy
p.s.
Geschrieben (bearbeitet)

Hallo Andy,

vor 14 Stunden schrieb Andy:

beim Ereignis 'Variable wird gesetzt' wird die Bedingung wahr, wenn man im Wert nichts eingibt und die Variable tatsächlich auf einen leeren Eintrag gesetzt wurde.
Das ist gut!
Aber leider fehlt die Gegenfunktion.

Die Gegenfunketion gibt es bereits. Hierzu gehst Du wie folgt vor:

Definiere das Ereignis

Variable wird gesetzt   Name = xyz, Wert = $xyz

wenn xyz Deine zu checkende Variable ist. Dann wird das Ereignis immer ausgelöst, wenn diese Variable gesetzt wird - unabhängig von ihrem Wert.

Prüfe nun die Bedingung

Variable besitzt den Wert   Name = xyz, Wert =

ohne eine Wertangabe für den Wert (auch kein Leerzeichen! - es wird dann mit <nichts> verglichen).

Wenn Du dann noch das Häkchen für das Negieren setzt,hast Du genau die Gegenfunktion, die Du angespriochen hast.

Viele Grüße
BahnLand

Bearbeitet von BahnLand
Geschrieben

Hallo @BahnLand,

Du faszinierst mich immer wieder.
Dagegen bleibe ich immer wieder kleben. Das p.s., das ich oben geschrieben habe, war aufgrund einer Eingebung, die dann doch wieder nicht so göttlich war.
Wenn ich da doch wieder hängen bleibe mußt Du mal mit einer PN von mir rechnen. Wahrscheinlich hast Du da auch wieder was in der Trickkiste.
Aber ich denke, über den Dreh hier wird sich der Frank auch freuen. (y)

Gruß
  Andy

Geschrieben

Hallo Andy und Bahnland,

das Thema mit dem „negierten Nichts“ hatten wir auch schon mal an andere Stelle. Diese Funktion ist auch schon auf einer veröffentlichten Anlage (Kleine Anlage mit vollautomatischer Steuerung) von mir zum Einsatz gekommen.

Gruß Frank

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto besitzen, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen.

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...