Ich habe mal wieder eine knifflige Frage, die denke ich für viele Anwendungen spannend ist.
Entwickle derzeit eine Erweiterung des Betriebsstundenzählers (Hobbsmeter ).
Dabei möchte ich einem Aufruf der Logik den letzten Wert des Zählers verarbeiten (Code nach // Betriebsdauer merken) und DANACH den Zähler resetten. Wenn ich den Wert vorher speichere fehlt mir ein Teil der Betriebszeit (Siehe Anhang), nach dem Aufruf der Stoppuhr (spriche wenn ich "// Betriebsdauer merken" unter den Aufruf des Hobbsmeters schiebe) ist der Wert aber bereits 0.
Hier viewtopic.php?f=24&t=1710&p=18788&hilit=Stoppuhr#p18050 gab es bez. Stoppuhr von dir schon mal eine Aussage, die hier vermutlich auch das Problem ist.
Diesmal fehlt es mit aber an einem Workaround...
Ich habe zwar ein wenig ein Reset gesendet über Aus/Eingang im Kopf, das ist aber sehr unsmart. Genauso wie ein 2. Hobbsi, der um einen Aufruf verzögert resettet wird.
EDIT:
Genaugenommen bräuchten alle Zeitbausteine (Stoppuhr, Monoflop, Betriebsstundenzähler) eine Variable $Val_beforeReset, damit man in Custom Logiken sauber resetten und weiterarbeiten kann.
Generell (gilt auch für den Standardbaustein) braucht es aber ohnehin eine Rückkopplung des Reset auf einen Eingang, da sonst Bei laufendem Zähler der Letztstand vor dem Reset nie gesendet wird.
Danke und lg
Robert
Code: Alles auswählen
{
"Input": [
["Aktiv","True wenn in Betrieb","$I_State","c"],
["Zyklisch Senden","Sendeintervalle aktivieren","$I_Interval_Enable","c"],
["Sendeintervall 1","Sendeintervall im Zustand EIN","$I_Interval_On","c"],
["Sendeintervall 2","Sendeintervall im Zustand AUS","$I_Interval_Off","c"]
],
"Output": [
["Betriebsstunden Tag","Betriebsdauer in h seit Tageswechsel","$Betriebsdauer_Tag","ct"],
["Betriebsstunden Monat","Betriebsdauer in h seit Monatswechsel","$Betriebsdauer_Monat","ct"]
],
"Level": [
["$I_State","bool",false],
["$ResetTag","bool",false],
["$ResetMonat","bool",false],
["$Betriebsdauer_Tag","float",0.0],
["$Betriebsdauer_Monat","float",0.0],
["$KonstTrue","bool",true],
["$KonstFalse","bool",false],
["$I_Interval_Enable","bool",true],
["$I_Interval_On","float",300.0],
["$I_Interval_Off","float",3600.0],
["$I_Interval","float",3600.0],
["$StartZeitTag","string","9 19 8 * * *"],
["$StartZeitMonat","string","10 19 8 1 * *"]
],
"Module": [
// Tag Zurücksetzen
["Cron","$KonstTrue","$ResetTag",0,"$StartZeitTag"],
["Cron","$KonstTrue","$ResetMonat",0,"$StartZeitMonat"],
// Betriebsdauer merken
["Multiplexer",["$Betriebsdauer_Monat","$Betriebsdauer_Tag"],"$Betriebsdauer_Monat","$ResetTag"],
// Betriebsdauer aktualisieren
["HobbsMeter","$I_State","$Betriebsdauer_Tag","$ResetTag"],
// ResetTag auf 0 setzen
["Multiplexer",["$ResetTag","$KonstFalse"],"$ResetTag","$ResetTag"],
//Sendeintervall setzen
["Multiplexer",["$I_Interval_Off","$I_Interval_On"],"$I_Interval","$I_State"],
["Clocksignal","$I_Interval_Enable",0,"$I_Interval"]
]
}