Ankündigung

Einklappen
Keine Ankündigung bisher.

- √ - Hilfe bei Logikproblem (Abfrage Ereignis innerhalb einer Zeitspanne)

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

    - √ - Hilfe bei Logikproblem (Abfrage Ereignis innerhalb einer Zeitspanne)

    Hallo zusammen,

    stehe irgendwie auf der Leitung, wie ich das folgende Logikproblem codetechnisch im EIBPC abbilden soll.

    Hier die Anforderung:

    Es soll ein Ereignis3 ausgelöst werden, wenn Ereignis1 eintritt UND innerhalb von einer Zeit t ein Ereignis2 NICHT eingetreten ist.

    Möchte das ganze in meine EKEY-Logik miteinbauen, sprich:
    Ereignis1=Fehlversuch
    Ereignis2=Türe geöffnet
    t=Zeit, inneralb der die Türe geöffnet wird oder nicht
    Ereignis3=Alarmmeldung

    Irgendwie komme ich nicht drauf, wie ich ein Ereignis innerhalb einer Zeit abfragen kann, da Ereignis2 ja innerhalb von t schon von 0 auf 1 und wieder auf 0 gewechselt haben kann.

    Irgendwelche Ideen?
    Vielen Dank & viele Grüße, Oliver

    #2
    Hallo Oliver,

    von der Logik-Funktion wäre das ein XOR.

    if after(Ereignis1,t) then Logik=Ein endif
    if Logik==Ein xor Ereignis2==Aus then Ereignis3=Ein endif

    So 'mal schnell aus der Hüfte als Idee ...

    Viele Grüße

    Michael

    Kommentar


      #3
      oder

      if ereignis1 then zeitlauft=1 endif
      if after (ereignis1,xxx) then zeitende=1 endif
      If ereignis2 then zeitlauft=0;zeitende=0 endif

      If zeitende then ereignis3=1;zeitlauft=0;zeitende=0 endif

      oder vermutlich auch:

      if ereignis1 then zeitlauft=1 endif
      if after (zeitlauft,xxx) and zeitlauft then ereignis3=1; zeitlauft=0 else zeitlauft=0 endif

      If ereignis2 then zeitlauft=0 endif
      Der schöne Niederrhein läßt Grüssen

      Andreas


      Alter Hof mit neuer Technik

      Kommentar


        #4
        Hallo Michael, Andreas,
        erst einmal vielen Dank für Eure Tips. Ich denke diese werden mir weiterhelfen.
        @Michael: Stehe evtl. noch auf dem Schlauch, aber auch mit XOR fange ich m.E. Ereignis2 nicht innerhalb von t ab, sondern erst nach t, oder?
        @Andreas: Guter Ansatz mit der Hilfsvariable "zeitlauft". Ich war/bin mir nicht sicher, ob es einen Befehl gibt, der sowas in einem macht (so a la after), aber damit sollte es klappen.

        Auf jeden Fall habt Ihr beide es geschafft meine Denkblockade einzureisen. Werde mich an das Testen/Implementieren machen und das Ergebnis mitteilen.
        Vielen Dank & viele Grüße,
        Oliver

        Kommentar


          #5
          Zitat von Sandman60 Beitrag anzeigen
          @Andreas: Guter Ansatz mit der Hilfsvariable "zeitlauft". Ich war/bin mir nicht sicher, ob es einen Befehl gibt, der sowas in einem macht (so a la after), aber damit sollte es klappen.
          In der nächsten Version gibt es eine Funktion Afterc, bei der auch die verstrichene Zeit abgefragt werden kann.
          offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
          Enertex Produkte kaufen

          Kommentar


            #6
            Zitat von Sandman60 Beitrag anzeigen
            @Michael: Stehe evtl. noch auf dem Schlauch, aber auch mit XOR fange ich m.E. Ereignis2 nicht innerhalb von t ab, sondern erst nach t, oder?
            Hi Oliver,

            da hast Du natürlich Recht.

            Innerhalb t sollte es so gehen:

            if Ereignis1==Ein then Logik=Ein endif
            if after(Ereignis1,t) then Logik=Aus endif
            if Logik==Ein xor Ereignis2==Aus then Ereignis3=Ein endif

            Viele Grüße

            Michael

            Kommentar


              #7
              So, Thema gelöst wie oben beschrieben... Bin am Anfang (mal wieder) in die IF-Verschachtelungsfalle getappt, aber ansonsten klappt es beschrieben.
              Vielen Dank an alle!

              Kommentar

              Lädt...
              X