Hallo Yves,
ich denke das "tot" sein bei Timern liegt direkt im Hauptfunktionsteil, dort wird nur bei $doTheWork = true die Berechnung weiter getriggert.
Durch die
else if (LB_LBSID_isTimerFinished())
Anweisung in Zeile 505 kommt es gar nicht zur Abfrage der eigentlichen Trigger und $doTheWork wird auch immer false bleiben.
Einzig der E1 Trigger oder eine Änderung an E13 könnten somit während eines laufenden Timers mit $doTheWork = true zu Berechnungen im LBS führen.
Ankündigung
Einklappen
Keine Ankündigung bisher.
LBS 19000145 - Beschattungssteuerung-NG
Einklappen
X
-
das passt zu meinen Beobachtungen, daß in Zuständen in denen ein Timer aktiv ist, der LBS quasi "tot" (z.B. auch nicht auf neue Trigger reagiert) ist und erst nach Ablauf des Timers wieder reagiert. Ich wollte mir das jetzt auch mal am Wochenende genauer ansehen, vmtl. liegt es aber daran daß bei laufendem Timer der LBS erstmal hart bis zum Ablauf des Timers wartet.Zitat von baumhaus123 Beitrag anzeigenGestern habe ich ein anderes Verhalten bemerkt: die automatische Deaktivierung bei manuellem Verstellen der Raffstoren hat nicht in jedem Behang-Status funktioniert (aktuell sind sie OPEN (0), da funktioniert es prima). Leider weiß ich nicht mehr genau, welcher Status es war, müsste aber einer der Status mit Timer gewesen sein (ich vermute "3").
Einen Kommentar schreiben:
-
ja, das wäre sehr schön. Ich passe diese Werte jedesmal händisch an, da bei mir sonst ständig der LBS deaktiviert wird.Zitat von starwarsfan Beitrag anzeigenMglw. sollten diese beiden Werte auch noch konfigurierbar sein...
Einen Kommentar schreiben:
-
Hi Matthias
Super, freut mich zu hören.Zitat von baumhaus123 Beitrag anzeigenkurzes Zwischenfazit: mit den SBCs klappt es jetzt!
Baustein fährt nach Re-Aktivierung wieder in die vorherige Position ohne zusätzliches Schließen der Lamellen.
Ich vermute, die Verstellung war nicht gross genug. Der Baustein rechnet intern mit einer gewissen Toleranz (Höhe +/- 8%, Winkel +/- 5%). Wenn die Verstellung in diesem Range bleibt, wird sich der Baustein nicht abschalten. Mglw. sollten diese beiden Werte auch noch konfigurierbar sein...Zitat von baumhaus123 Beitrag anzeigendie automatische Deaktivierung bei manuellem Verstellen der Raffstoren hat nicht in jedem Behang-Status funktioniert
Einen Kommentar schreiben:
-
Hi Yves,Zitat von starwarsfan Beitrag anzeigen(...) In Daten und Wahrheit hat sich die Höhe nicht geändert aber das kann der Baustein nicht wissen. Danach wird dann vom Aktor der Winkel angefahren und erst damit besteht wieder der erwartete Zustand.
Evtl. lässt sich das mit einem SBC verhindern, mit dem Baustein selbst wird es aber vermutlich nicht funktionieren.
kurzes Zwischenfazit: mit den SBCs klappt es jetzt!
Baustein fährt nach Re-Aktivierung wieder in die vorherige Position ohne zusätzliches Schließen der Lamellen.
Gestern habe ich ein anderes Verhalten bemerkt: die automatische Deaktivierung bei manuellem Verstellen der Raffstoren hat nicht in jedem Behang-Status funktioniert (aktuell sind sie OPEN (0), da funktioniert es prima). Leider weiß ich nicht mehr genau, welcher Status es war, müsste aber einer der Status mit Timer gewesen sein (ich vermute "3"). Ich weiß, eine recht ungenaue Beschreibung. Ich liefere noch ein Beispiel, sobald ich wieder über einen solchen Fall stolpere, wollte es nur schonmal durchgeben.
Einen Kommentar schreiben:
-
super, dann warte ich mal ab. Es hat sich ja immer sehr gelohnt und Du hast immer tolle Lösungen im Code gefunden, ich dachte nur ich versuche zumindest bei den "Anforderungen" zu helfen, manchmal hilft ja da auch eine weitere Meinung.
Einen Kommentar schreiben:
-
Hi Andi,
joa, so in etwa schwebt mir das auch vor. Das Problem ist im Moment jedoch, dass es relevant ist, an welchem Punkt in der State-Machine der Trigger erfolgt, welcher sofort gesetzt werden soll. Also ohne Timer. Da braucht es jeweils noch dedizierte Abbruchbedingungen, da die State-Machine sonst in keinem Status einen Timer verwendet und schlagartig durch alle Status hindurchrauscht. Und das kann es ja nicht sein, es sollte schon nur im jeweils gerade aktiven Status sofort reagiert werden, der Rest dann aber normal weiterlaufen.
Aber wie immer: Ich bin dran...
Einen Kommentar schreiben:
-
Hallo Yves,
ok das passt nun so zu meinen Beobachtungen und erklärt das aktuelle Verhalten.
Grundsätzlich ist mein Verständnis beim eventbasierten System: E1 und E40/E60 können doch eh nie genau gleichzeitig geändert werden sondern nur nacheinander... Für mich ist das daher kein Problem bzgl. Vorrang solange man eh immer nur auf einen "refresh" reagiert. Der User bzw. die Logik hat es damit eigentlich selbst in der Hand was er macht, das letzte Event gewinnt halt.Zitat von starwarsfan Beitrag anzeigenEin mögliche Lösung wäre, explizit bei Reaktivierung des Beschattungs- oder Dämmerungsmodus ein sofortiges Neupositionieren des Behangs auszulösen. Allerdings stellt sich dann die Frage, wer Vorrang hat: E1 oder E40 bzw. E1 oder E60! Das ist relevant, da der Trigger E1 den Behang auf die Werte aus der letzten Positionierung fährt, also nicht explizit die Position neu errechnet.
Und: Warum berechnest Du nicht einfach auch bei E1 die Position neu? Sollte ja dann dasselbe Ergebnis rauskommen falls sich an den Eingängen nichts geändert hat bzw. wenn sich an anderen Eingängen was (ggf. auch bewusst durch eine andere Vorschalt-Logik!) geändert hat sollten die aktuellen Eingänge doch auch berücksichtigt sein.
Damit wäre E1 / E40/60 auch gleich zu handeln: Alle lösen Neupositionsberechnung direkt aus nur das Schreiben auf die Ausgänge wäre unterschiedlich.
Ich würde folgendes Verhalten in den Raum schmeissen:
- E1 löst komplette Berechnung aus und schreibt immer die Ausgänge. Ob hier nun die Timer berücksichtigt werden oder nicht wäre für mich offen (ich wäre eigentlich für sofortiges schreiben ohne Timer...)
- E2 löst komplette Berechnung aus und schreibt nur bei Änderung ggü. Vorgängerwert die Ausgänge (so hab ich das aus der Hilfe interpretiert, ist aber ja noch nicht implementiert, so wie ich Deine Antwort interpretiere wäre das aber nahe am heutigen E1 Verhalten)
- E40/60 refresh mit 1 löst Berechnung aus und schreibt immer direkt ohne Timer auf die Ausgänge (analog zum Verhalten E40/60=0 wie es in RC3 schon funktioniert)
Einen Kommentar schreiben:
-
Hallo Andi
Es ist sogar noch ein wenig komplexer. Wenn der Beschattungs- oder Dämmerungsmodus erneut aktiviert wird und sich der Baustein in einem entsprechenden Status befindet, dann macht der Baustein im Moment gar nichts. Er prüft den aktuellen Zustand, der hat sich nicht verändert und somit muss auch nichts neu positioniert werden. Habe das eben hier explizit durchgespielt.Zitat von starwarsfan Beitrag anzeigenDas ist korrekt, da Du die Funktion ja aus bzw. ein schaltest. Beim einschalten wird der ganz normale Betrieb aufgenommen und somit laufen dann zunächst die jeweiligen Timer ab.
Ein mögliche Lösung wäre, explizit bei Reaktivierung des Beschattungs- oder Dämmerungsmodus ein sofortiges Neupositionieren des Behangs auszulösen. Allerdings stellt sich dann die Frage, wer Vorrang hat: E1 oder E40 bzw. E1 oder E60! Das ist relevant, da der Trigger E1 den Behang auf die Werte aus der letzten Positionierung fährt, also nicht explizit die Position neu errechnet.
Muss da mal noch etwas länger drüber nachdenken...
Einen Kommentar schreiben:
-
Hoi Andi
Das ist korrekt, da Du die Funktion ja aus bzw. ein schaltest. Beim einschalten wird der ganz normale Betrieb aufgenommen und somit laufen dann zunächst die jeweiligen Timer ab.Zitat von tger977 Beitrag anzeigenWenn ich dann aber direkt wieder eine "1" an E60 sende bleibt die Jalousie leider (erstmal) oben. Erst nach ein paar Minuten (scheint so als ob da irgendein Timer läuft) geht dann die Jalousie wieder runter. Wie war das von Dir gedacht: Ist beim Reaktivieren noch ein Timer aktiv oder wird dort wie beim Deaktivieren ohne Timer die neue Position geschrieben?
Einen Kommentar schreiben:
-
Hi Matthias
Das kann ich Dir nicht sagen. Muss an deiner Logik oder dem Aktor liegen, da es ohne SBC ja funktioniert. Irgendwie bekommt der Aktor eine 0 auf die Höhe und fährt deshalb nach oben.Zitat von baumhaus123 Beitrag anzeigenEdit: Wenn ich SBC am Ausgang verwende fährt der Raffstore nach Reaktivierung komplett hoch. Aufgrund welcher Konfiguration macht er das denn? Wenn der Baustein neu aktiviert wird sollte doch die letzte Pos. vor der Deaktivierung angefahren werden, oder? Die war ja 100 / 50 bei mir.
Einen Kommentar schreiben:
-
Hallo Yves,
konnte nun nicht mehr warten, da ich sehr gespannt auf die Änderungen war... Der LBS läuft nun seit ein paar Minuten auf aktueller Version.
die gute Nachricht: Im Dämmerungszustand -4 funktioniert nun eine "0" an E60 wie gewollt: Jalousie fährt sofort auf Position E68/69!
Wenn ich dann aber direkt wieder eine "1" an E60 sende bleibt die Jalousie leider (erstmal) oben. Erst nach ein paar Minuten (scheint so als ob da irgendein Timer läuft) geht dann die Jalousie wieder runter. Wie war das von Dir gedacht: Ist beim Reaktivieren noch ein Timer aktiv oder wird dort wie beim Deaktivieren ohne Timer die neue Position geschrieben?
Mehr Tests dann hoffentlich morgen wenn es wieder hell ist...
Einen Kommentar schreiben:
-
Ich denke hier müssten die Werte aus E68 (100%) und E69 (50%) gezogen haben (Nach-Dämmerung). Auf Zustand 0 bin ich gekommen, als ich mir den Wert des remantenten iKOs an E11 und A10 angesehen habe.Zitat von starwarsfan Beitrag anzeigenDa es auf dem Screenshot nicht zu sehen ist: Als Default passt das aber nicht zusammen, da im Status OPEN (0) sowohl Höhe als auch Winkel jeweils 0 sind. Wie/wo genau hast Du das also eingestellt?
Ah, du hat vollkommen recht! Habe es eben getestet. Behang auf 100% macht bei einem Fahrbefehl ebenfalls auf 100% erst ganz zu und dann die vorherige Lamellenposition - wie du sagst klar ein Aktoren-Thema. Ist mir bisher noch gar nicht aufgefallen. Das lässt sich ja recht einfach über die Logik abfangen.Zitat von starwarsfan Beitrag anzeigen(...) Damit werden also alle Ausgänge neu beschrieben und damit fährt der Aktor zunächst die Höhe von (in dem Fall) 100% an, wobei die Lamellen geschlossen werden. Das ist eigentlich ein Aktor-Problem, wenn er nicht wirklich Höhe und Winkel separat handhaben kann. Wenn er sich auf 100% Höhe befindet und bekommt erneut die Info, auf 100% Höhe zu fahren, dann sollte er das nicht machen, da er ja schon dort ist.
In Daten und Wahrheit hat sich die Höhe nicht geändert aber das kann der Baustein nicht wissen. Danach wird dann vom Aktor der Winkel angefahren und erst damit besteht wieder der erwartete Zustand.
Evtl. lässt sich das mit einem SBC verhindern, mit dem Baustein selbst wird es aber vermutlich nicht funktionieren.
Danke!
Edit: Wenn ich SBC am Ausgang verwende fährt der Raffstore nach Reaktivierung komplett hoch. Aufgrund welcher Konfiguration macht er das denn? Wenn der Baustein neu aktiviert wird sollte doch die letzte Pos. vor der Deaktivierung angefahren werden, oder? Die war ja 100 / 50 bei mir.
Einen Kommentar schreiben:
-
Hallo Matthias
Da es auf dem Screenshot nicht zu sehen ist: Als Default passt das aber nicht zusammen, da im Status OPEN (0) sowohl Höhe als auch Winkel jeweils 0 sind. Wie/wo genau hast Du das also eingestellt?Zitat von baumhaus123 Beitrag anzeigengerade ist er im Behangzustand Open (0). Gemäß meinen Einstellungen sind die Raffstoren auf 100% und die Lamellen auf "Durchblick" mit 50% (ich habe Typ 1).
Das ist korrekt und ich wüsste auch nicht, wie ich das verhindern sollte. Der Wunsch war, dass beim Reaktivieren die letzte Position angefahren wird. Damit werden also alle Ausgänge neu beschrieben und damit fährt der Aktor zunächst die Höhe von (in dem Fall) 100% an, wobei die Lamellen geschlossen werden. Das ist eigentlich ein Aktor-Problem, wenn er nicht wirklich Höhe und Winkel separat handhaben kann. Wenn er sich auf 100% Höhe befindet und bekommt erneut die Info, auf 100% Höhe zu fahren, dann sollte er das nicht machen, da er ja schon dort ist.Zitat von baumhaus123 Beitrag anzeigenWenn ich die Lamellen jetzt auf 75% verstelle deaktiviert sich der Baustein. Mit einer "1" auf E12 fahren die Lamellen nun aber erst auf 100% und direkt danach auf 50%. Ich hätte erwartet, dass direkt die Durchsichtsposition angefahren wird. Dasselbe Verhalten habe ich auch beim Beschatten beobachtet (erst komplett Verschlossen, danach auf die berechnete Position) - hier fehlt mir aber aktuell ein Beispiel.
In Daten und Wahrheit hat sich die Höhe nicht geändert aber das kann der Baustein nicht wissen. Danach wird dann vom Aktor der Winkel angefahren und erst damit besteht wieder der erwartete Zustand.
Evtl. lässt sich das mit einem SBC verhindern, mit dem Baustein selbst wird es aber vermutlich nicht funktionieren.
Einen Kommentar schreiben:
-
Hi Yves,
ich habe das Re-Aktivieren des Bausteins nach automatischer Deaktivierung eben nochmal getestet. Gestern war der LBS ja im Dämmerungszustand, gerade ist er im Behangzustand Open (0). Gemäß meinen Einstellungen sind die Raffstoren auf 100% und die Lamellen auf "Durchblick" mit 50% (ich habe Typ 1). Wenn ich die Lamellen jetzt auf 75% verstelle deaktiviert sich der Baustein. Mit einer "1" auf E12 fahren die Lamellen nun aber erst auf 100% und direkt danach auf 50%. Ich hätte erwartet, dass direkt die Durchsichtsposition angefahren wird. Dasselbe Verhalten habe ich auch beim Beschatten beobachtet (erst komplett Verschlossen, danach auf die berechnete Position) - hier fehlt mir aber aktuell ein Beispiel.
Anbei ein Screenshot nach Deaktivierung duch Verstellen auf 75% Lamelle und direkt vor Senden einer "1" auf E12 (die 1 auf dem Screen kommt einfach vom letzten Senden des Wertes).
Beschattung1.png
Einen Kommentar schreiben:


Einen Kommentar schreiben: