Ankündigung

Einklappen
Keine Ankündigung bisher.

event(GA), change(GA) oder nur GA?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    event(GA), change(GA) oder nur GA?

    Hallo,

    kann mir bitte jemand mal den Unterschied zwischen event(GA), change(GA) und GA erklären?

    Wenn ich das Validierungskonzept richtig verstanden habe, dann werden Ausdrücke nur ausgwertet, wenn sich diese während eines Zyklus geändert haben.

    Wo liegt dann der Unterschied zw. den 3 Möglichkeiten?

    Danke & lg,

    Peter

    #2
    Moin Peter,

    event(GA)
    - wird ausgelöst, wenn es ein Telegramm dieser GA gibt.
    Es geht noch "feiner" mit eventread, eventwrite, eventresponse
    braucht man z.B. zur Verlängerung eines Signals. Beispiel: Ein Bewegungsmelder meldet eine Bewegung nur als EIN, sendet aber kein AUS. Dann kann über diesen event die Zeitdauer der Beleuchtung wieder auf die volle Beleuchtungsdauer gesetzt werden

    change(GA)
    - wird ausgelöst, wenn sich im vorigen Schleifendurchlauf etwas geändert hat am Wert der GA
    - trifft nicht nur für GA zu sondern auch für Variablen

    Für unser obiges Beispiel wäre change ungeeignet denn wenn der BWM nur EIN sendet, wird es dort niemals ein change(GA) geben.

    GA erklären?
    Der direkte Wert der GA. Geht z.B. direkt in Berechnungen ein

    Der Bus ist ja ereignisorientiert insofern brauchst Die die event-Anweisungen um darauf zu reagieren.

    Von intern kommen aber auch Berechnungen, dafür ist change interessant, wenn Du bei einer Änderung etwas anstossen willst.

    Der direkte Wert der GA kann bei internen Berechnungen genutzt werden. Diese Ergebnisse können auch mit change() überprüft werden um etwas in Gang zu stossen.

    Gruß,
    Bernd

    Kommentar


      #3
      Hallo Bernd,

      Danke, für deine Ausführungen.
      Zitat von bmx Beitrag anzeigen
      event(GA)
      - wird ausgelöst, wenn es ein Telegramm dieser GA gibt.
      Es geht noch "feiner" mit eventread, eventwrite, eventresponse
      braucht man z.B. zur Verlängerung eines Signals. Beispiel: Ein Bewegungsmelder meldet eine Bewegung nur als EIN, sendet aber kein AUS. Dann kann über diesen event die Zeitdauer der Beleuchtung wieder auf die volle Beleuchtungsdauer gesetzt werden
      Inwiefern ist eventread, eventwrite und eventrepsonse feiner und wie kann ich bei einem Bewgungsmelder, die volle Beleuchtungsdauer wieder setzen?

      Zitat von bmx Beitrag anzeigen
      change(GA)
      - wird ausgelöst, wenn sich im vorigen Schleifendurchlauf etwas geändert hat am Wert der GA
      - trifft nicht nur für GA zu sondern auch für Variablen
      Verstehe ich das richtig, das EIN beim Bewegungsmelder kann ich nur über ein event() abfrgaen, da sich dieser nie wieder auf AUS zurücksetzt und daher auch keinen change() erfahren würde?
      Für unser obiges Beispiel wäre change ungeeignet denn wenn der BWM nur EIN sendet, wird es dort niemals ein change(GA) geben.

      Zitat von bmx Beitrag anzeigen
      Der Bus ist ja ereignisorientiert insofern brauchst Die die event-Anweisungen um darauf zu reagieren.
      Welche Events wären das? Meistens ja nur ein/aus eines Kanals am Aktor oder bei einem Taster, oder?

      Danke & lg,

      Peter

      Kommentar


        #4
        "nur GA" mit event(GA) und change(GA) verglichen kann man als "Optimierung" betrachten:

        if GA then {..}

        ist gleichbedeutend mit

        if change(GA) and ( GA == EIN ) then {..}

        Ich hab mir ein paar Makros erstellt, um Verwechslungen zu vermeiden und den Code trotzdem lesbar zu halten.
        BR
        Marc

        Kommentar

        Lädt...
        X