Ankündigung

Einklappen
Keine Ankündigung bisher.

- √ - delay-Beispiel im Handbuch : Verständnisproblem

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

    [Handbuch] - √ - delay-Beispiel im Handbuch : Verständnisproblem

    Hallo,

    im Handbuch findet sich auf Seite 56 folgendes Beispiel für den Einsatz von "delay":
    (Die Sache mit dem Zähler habe ich weggelassen, da hier nicht relevant.)

    Code:
    if event('1/0/0'b01) and (SchaltVorgang==AUS) then \\
         SchaltVorgang=EIN; \\
         write('1/1/1'b01,EIN); \\
         endif
    if (delay(SchaltVorgang==EIN, 180000u64)) then \\
         write('1/1/1'b01,AUS); \\
         SchaltVorgang=AUS; \\
         endif
    Was ich nun nicht vestehe ist, wie hier nachgetriggert werden soll.

    Nach meinem Verständnis ändert die Variable "SchaltVorgang" während des delays nicht mehr ihren Wert (da sie im ersten "if" abgefragt wird). Daher habe ich den Eindruck, dass auch mehrfaches Senden auf 1/0/0 keinerlei Auswirkungen haben wird.
    Oder habe ich einen Denkfehler?

    Gespannt auf Aufklärung,
    Jens.

    #2
    mit event() hast Du ja immer ein "true", wenn auf dieser Adresse was gesendet wird. D. h. solange SchaltVorgang==AUS ist, wird die if Abfrage bei jedem Senden auf 1/0/0 ausgeführt
    ....und versuchen Sie nicht erst anhand der Farbe der Stichflamme zu erkennen, was Sie falsch gemacht haben!

    Kommentar


      #3
      Bei diesem Codesnippet wäre ich auch überrascht wenn ein Nachtriggern möglich wäre, aber ich bin auch schon öfters überrascht worden

      Kommentar


        #4
        Zitat von DerRenovator Beitrag anzeigen
        Hallo,
        Was ich nun nicht vestehe ist, wie hier nachgetriggert werden soll.
        Da sind viellleicht die Gedanken bei der Anleitung durcheinander geraten. Fakt ist, wenn Schaltvorgang wieder auf AUS und dann EIN geht, so wird delay erneut getriggert. Das sollte das wohl aussagen... Werde ein besseres Beispiel einbauen.
        offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
        Enertex Produkte kaufen

        Kommentar


          #5
          Hallo Michael,
          danke für die Antwort!

          Sehen wir es positiv: Die Anleitung ist so gut, dass ich die Funktionsweise von "delay" wohl richtig verstanden habe :-)

          Hier ist nun meine erste Verwendung der Präzisionstimer. Ist es eine gute Idee, für's Einschalten (bei Präsenz von mindestens x Minuten) "after" zu benutzen und für's Ausschalten (y Minuten nach dem letztenVerlassen des Raumes) "delay"?

          [highlight=epc]
          varLuefterBadIstAutomatischErhoeht=AUS // Ist der Luefter aktuell hochgefahren?
          //Luft steigern : wenn 6 Minuten Anwesenheit (und nicht schon erhoeht)
          if after("Bad EG Präsenz-6/1/70",360000u64) and "Bad EG Präsenz-6/1/70" and varLuefterBadIstAutomatischErhoeht==AUS then {
          varLuefterBadIstAutomatischErhoeht=EIN;
          write("Arbeiten Luefter Binaercode-4/5/80",varLuefterStufeErhoeht)
          } endif
          // Luft reduzieren : 30 Minuten nach Verlassen des Raumes (nur falls automatisch erhoeht wurde)
          if delay("Bad EG Präsenz-6/1/70"==AUS,1800000u64) and "Bad EG Präsenz-6/1/70"==AUS and varLuefterBadIstAutomatischErhoeht then {
          varLuefterBadIstAutomatischErhoeht=AUS;
          write("Arbeiten Luefter Binaercode-4/5/80",varLuefterStufeDauer)
          } endif
          [/highlight]

          Die if-Abfragen mit den 3 Bedingungen kommen mir noch etwas sperrig vor. Geht das vielleicht etwas einfacher?

          Dankbar für Anregungen,
          Jens.

          Kommentar


            #6
            Zitat von DerRenovator Beitrag anzeigen
            Sehen wir es positiv: Die Anleitung ist so gut, dass ich die Funktionsweise von "delay" wohl richtig verstanden habe :-)
            Das Beispiel sollte besser folgenden Code nutzen
            Code:
             if (delay(event('1/0/0'b01), 180000u64)) then \\
            Die if-Abfragen mit den 3 Bedingungen kommen mir noch etwas sperrig vor. Geht das vielleicht etwas einfacher?
            Drei Bedingungen sind nun wirklich nicht zuviel für den EibPC. V.a. brauchst Du die von der Logik, "einfacher" wird's nur, wenn du eine andere Logik oder rein optisch kürzere Variablennamen nimmst. Das wird nicht gewünscht sein.
            Du kannst Dich dann höchstens noch mit Makros beschäftigen, da könnte der Code noch lesbarer werden, wenn es das ist, was Dich stören sollte.
            offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
            Enertex Produkte kaufen

            Kommentar

            Lädt...
            X