NEWS
Timeout innerhalb eines Triggers ?
-
Hi
noch eins wo mein Hirn blockiert...
hab einen Trigger (Wert oder Zeit), wenn die Kalkulation dann eine Änderung meiner Steuerung berechnet, soll ein Timeout sein, dass nicht sofort wieder die Kalkulation durchlaufen wird.
(Ladesteuerung einer Wallbox, die braucht Zeit zu reagieren)
Besten Dank!
dort wo der Timout ist, soll der Timout getriggert werden.worum geht's, die PV-Überschuss geführte Ansteuerung der Wallbox. Die PV reagiert schnell auf Sonnenspiele, der Zähler muss es erkennen, die Wallbox und das E-Auto reagieren träge. Was ich suche ist hier eine sozsg. verschliffene Regelung (PID). Schnell muss reagiert werden, wenn die PV einbricht, sanft der Ladestrom wieder hochgefahren werden... Ich hab da noch keine wirklich saubere Lösung, ist schon mein zigfacher Ansatz, würde mich da über Input freuen!
-
Ich sehe da keinen Timeout.
@humidor sagte in Timeout innerhalb eines Triggers ?:
dort wo der Timout ist, soll der Timout getriggert werden.
Nix versteh!
-
@meister-mopper die Pause halt, ziemlich weit unten
ein Trigger, wenn die Berechnung innerhalb des Triggers eine Änderung des Ladestroms errechnet, dann soll die nächste Änderung erst nach Bsp. 10s erfolgen dürfen..
dh, der Trigger soll dann 10s blockiert werden, bzw. nicht auslösen... -
Bei mir ist es so:
Wenn vom Dach >4100 W kommen, kann geladen werden.
Um arge Schwankungen zu vermeiden, schaue ich mir den Durchschnittswert der letzten fünf Minuten an, ist dieser >4100 W, wird der Ladevorgang gestartet. Ist er niedriger, wird der Ladevorgang gestoppt.
Das funktioniert für mich zufriedenstellend.
-
@meister-mopper Ist auch ein Ansatz, sowas ähnliches mit einem Grid-Offset hatte ich bisher, aber bei dem schei... ähm super Wetter verliere ich zuviel Energie ans Netz. Eine Regelung um den 0-Punkt fkt. nicht schlecht mit dem goECharger, nur meine Stromänderungen sind aktuell zu sprunghaft
bisher habe ich einen separaten Wert als Timer programmiert, das finde ich aber nicht sauber, darum frage ich euch, wie man das sauber macht. -
@humidor Dieses benötigt eine hilfsvariable "CalculationAllowed". - Am Anfang des Skriptes auf true setzen.
- Da wo die Berechnung durchgeführt werden auf "falsch" setzen
- Am Anfang des Skriptes den gesamten Rest des Skriptes hinter ein "falls Calculation allowed" setzen
- Als ersten Baustein innerhalb des Falls ein "Ausführen Timeout in x Sekunden. Im Timeout die Variable "CalculationAllowed" wieder auf wahr setzen.
Fettich
A.
p.s. ich weiss das es Ansätze ohne diese Variable gibt - es ist so aber leichter nachzuvollziehen was passieren soll. -
@humidor sagte: der Trigger soll dann 10s blockiert werden
Prinzip:
-
@asgothian so?
haben wir da nicht wieder das Problem, dass bei jedem Trigger ein 10s timeout erzeugt wird?
wie verhindere ich das, ohne den korrekten 10s timeout zu stoppen
ich denke, das geht so nicht. -
@humidor Nein:
-
@asgothian das müsste einen einzelnen Timeout erzeugen
-
@humidor sagte: dort wo der Timout ist, soll der Timout getriggert werden.
Ersetze die Pause durch Timeout und erweitere die Prüfungen zu Beginn um ein
"und nicht Verzögerung timeout" -
@paul53 so?
-
@humidor sagte: so?
Ja, wenn du oben die richtige Timeout-Variable selektierst.
-
@paul53 ja, hab ich schon. ist eine noch einfachere Variante, danke euch!
-
@paul53 so, der Zoe hängt dran, die Ladung läuft
aber der Timeout fkt. nicht
oben das nicht Timer
unten der Timer mit Zeit -
@humidor sagte: der Timeout fkt. nicht
Du prüfst oben nur einen Timeout. Setze den Timeout unter die letzten Prüfungen.
-
@paul53 versteh ich nicht
wozu prüfe ich?
die Änderung innerhalb des Timeouts?- Timeout zum Schluss bringt das gewünschte Ergebnis, ich möchte aber 2 unterschiedl. Timer?
- bei Bezug will ich sofort den Strom reduzieren, 2s Sytemdurchlaufzeit
- bei Lieferung will ich soft hochfahren, 4-10s
-
@humidor sagte: ich möchte aber 2 unterschiedl. Timer?
Dann müssen beide Timer geprüft werden.
-
@paul53 ja aber wie starte ich die Timeouts? innerhalb vom Falls fkt. nicht
was genau macht das? ist der UND nur erfüllt, wenn der Timeout = 0 ist?
bzw. UND ist TRUE wenn keine Verzögerung durch den Timeout aktiv istwie können 2 Timeouts mit Bedingung gesetzt werden?
-
@humidor sagte: ist der UND nur erfüllt, wenn der Timeout = 0 ist?
Ja, wenn Timeout = null ist. Das macht Blockly seit Version 7.0.5 automatisch, wenn die Zeit abgelaufen ist.