Ankündigung

Einklappen
Keine Ankündigung bisher.

Logikproblem für Steinel IHF 3D KNX

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

    #31
    Zitat von saegefisch Beitrag anzeigen
    Kommen die beiden exakt gleichzeitig im LBS an?
    Das geht garnicht... "Gleichzeitig" gibt es nicht, da jedes Telegramm in einer Queue landet und erst verarbeitet wird, wenn der Vorgänger verarbeitet wurde.
    EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)

    Kommentar


      #32
      Das ist genau der Punkt. Wenn jemand schnell reingeht, gibts Probleme. Geht das langsam(er) funktionierts. Ich schliesse daraus, der 2. Trigger kommt schneller als die Zykluszeit.
      Das war der Grund für die Einführung der Statusvariablen (Triggersperre). Wenn Entfernung 1 oder 3 kommt wird getriggert und gesperrt, egal was folgt. Geht aber auch nicht, und noch minimalistischer fällt mir nicht ein.
      >>Smelly One<<
      >> BURLI <<
      Grüße Armin

      Kommentar


        #33
        saegefisch
        Gut, dann mache ich 3 LBSen und schreibe die Ereigniszeit jeweils in ein iKO. Errechne daraus den ersten Trigger und arbeite damit weiter.
        Meine Hoffnung tendiert langsam gegen Null. Am Anfang dachte ich, ist easy, nach dem X. LBS Versuch mit gleichem Ergebnis, nämlich "nicht zuverlässig" sieht das anders aus.
        >>Smelly One<<
        >> BURLI <<
        Grüße Armin

        Kommentar


          #34
          Ich glaube Du hast Dich tatsächlich etwas verrannt - oder ich kapiere das Problem nicht?!

          Stellen wir uns einfach 3 Taster vor (anstelle von irgendwelchen Bewegungs-GAs). Du (LBS) willst doch nur wissen, in welcher Reihenfolge die Taster betätigt wurden, richtig? Unabhängig von irgendwelchen Zeiten, aber natürlich braucht's eine Art "Gesamtzeitraum" (Timeout), weil vermutlich nicht immer alle(!) Taster betätigt werden. Im Grunde also ein LBS zur Auswertung einer Schaltfolge (können sogar manche KNX-Geräte, z.B. der UK/S 32).

          Ähnlich wie ein Codeschloss also - oder habe ich die Problematik nicht verstanden?
          EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)

          Kommentar


            #35
            Stimmt, ich habe mich total verrannt. Das kommt, von der inzwischen wochenlangen, Testerei. Mal gehts, dann wieder nicht.
            Es ist wie Du sagst eine Schaltfolge (1->2->3 oder 3->2->1) die so im 50-100ms Abstand reinkommt, das ist der Normalfall. Wenn ich mit dem Auto in die Einfahrt fahre und aussteige, ist das dann 2->1. Das wars auch schon.

            Im Moment schreibe ich mit einem LBS einen Timestamp für jede Entfernung in den Steinel LBS.
            Code:
            function LB_LBSID($id) {
                if ($E=logic_getInputs($id)) {
                    if ($E[1]['value']!=0 && $E[1]['refresh']==1) {
                        logic_setOutput($id,1,getMicrotime(true));
                    }
                }
            }
            Und dann hier die Auswertung:

            Code:
            [name        =Steinel PWM    ]
            
            [e#1        =Zeit Entfernung 1                ]
            [e#2        =Zeit Entfernung 2                ]
            [e#3        =Zeit Entfernung 3                ]
            [e#4        =Kommend                ]
            [e#5        =Gehend                    ]
            
            [a#1        =Kommend                ]
            [a#2        =Gehend                    ]
            [a#3        =Status                    ]
            
            [v#1        =0                        ]
            ###[/DEF]###
            
            
            ###[HELP]###
            ###[/HELP]###
            
            
            ###[LBS]###
            <?
            function LB_LBSID($id) {
                if ($E=logic_getInputs($id))  {
            
                    if ($E[1]['refresh']==1 && $E[1]['value']<$E[3]['value']) {
                                logic_setOutput($id,2,$E[5]['value']);
                    }
                    elseif ($E[3]['refresh']==1 && $E[3]['value']<$E[1]['value']) {
                                logic_setOutput($id,1,$E[4]['value']);
                    }
            
                }
            }
            ?>
            ###[/LBS]###
            So als ersten groben Versuch. Mal sehen ...
            >>Smelly One<<
            >> BURLI <<
            Grüße Armin

            Kommentar

            Lädt...
            X