Die Eingänge "Triggerintervall" und "Trigger 1" müssen die selbst Zeitkonstante haben.
Der Parameter "Schwelle" bestimmt, wie groß das Delta des Zählwerts sein muss, damit der Ausgang aktualisiert wird.
(Damit nicht, wie in meinem Beispiel alle zwei Sekunden ein Wert auf den Ausgang geschrieben wird.)
Code: Alles auswählen
/**===========================================================
Integral Intervall
W rein -> kWh raus
============================================================*/
{
"_Meta": { // Optional
"Description": "Integral Intervall",
"Version": "1.00",
"Icon": "" // format: "data:image/svg+xml;base64,ENCODED_FILE"
},
"Level":[
["$Leistung","float",0.0],
["$Arbeit_Wh","float",0.0],
["$Arbeit_kWh","float",0.0],
["$Arbeit_Rest_Wh","float",0.0],
["$Arbeit_Merker_kWh","float",0.0],
["$Arbeit_Merker_Schwelle_kWh","float",0.0],
["$Triggerintervall","float",2.0],
["$Teiler","float",1.0],
["$Time","float",1.0],
["$pluskWh","float",0.0],
["$Konst0","float",0.0],
["$Konst1","float",1.0],
["$Konst3600","float",3600.0],
["$Konst1000","float",1000.0],
["$plus1","bool",false],
["$Gate","bool",false],
["$Diff","float",0.0],
["$Schwelle","float",0.1],
["$KonstFalse","bool",false],
["$Formel_Time","string","X1/X2"],
["$Formel_Teiler","string","X1*X2"],
["$Formel_Arbeit_Wh","string","X1+X2"],
["$Formel_Arbeit_Rest_Wh","string","X1-X2"],
["$Formel_Arbeit_Merker_kWh","string","X1+X2"],
["$Formel_Arbeit_kWh","string","X1+(X2/X3)"],
["$Formel_Arbeit_Schwelle_kWh","string","X1-X2"]
],
"Module": [
//3600 Sekunden / Triggerintervall = Time
["CalcFormula",["$Konst3600","$Triggerintervall"],"$Time","$Formel_Time"],
//Time * 1000 = Teiler
["CalcFormula",["$Time","$Konst1000"],"$Teiler","$Formel_Teiler"],
//Leistung + Arbeit_Wh = Arbeit_Wh
["CalcFormula",["$Leistung","$Arbeit_Wh"],"$Arbeit_Wh","$Formel_Arbeit_Wh"],
//Arbeit_Wh größer Teiler? -> plus1 = 1
["Comparator","$Arbeit_Wh","$plus1","$Teiler"],
//Arbeit_Wh - Teiler = Arbeit_Rest_Wh
["CalcFormula",["$Arbeit_Wh","$Teiler"],"$Arbeit_Rest_Wh","$Formel_Arbeit_Rest_Wh"],
//Wenn plus1 = 1, dann Arbeit_Rest_Wh = Arbeit_Wh, ansonten nichts tun
["Multiplexer",["$Arbeit_Wh","$Arbeit_Rest_Wh"],"$Arbeit_Wh","$plus1"],
// Wenn plus1 = 1, dann pluskWh = 1, ansonten pluskWh = 0
["Multiplexer",["$Konst0","$Konst1"],"$pluskWh","$plus1"],
// Arbeit_Merker_kWh + pluskWh) = Arbeit_Merker_kWh
["CalcFormula",["$Arbeit_Merker_kWh","$pluskWh"],"$Arbeit_Merker_kWh","$Formel_Arbeit_Merker_kWh"],
// Arbeit_Merker_kWh + (Arbeit_Wh / Teiler) = Arbeit_Merker_Schwelle_kWh
["CalcFormula",["$Arbeit_Merker_kWh","$Arbeit_Wh","$Teiler"],"$Arbeit_Merker_Schwelle_kWh","$Formel_Arbeit_kWh"],
["CalcFormula",["$Arbeit_Merker_Schwelle_kWh","$Arbeit_kWh"],"$Diff","$Formel_Arbeit_Schwelle_kWh"],
["Comparator" , "$Diff" , "$Gate" , "$Schwelle"],
["Latch","$Arbeit_Merker_Schwelle_kWh","$Arbeit_kWh","$Gate",0]
],
"Input": [
["Leistung in W","in Watt","$Leistung","u"],
["Triggerintervall","Hier muss die Zeit vom Trigger rein","$Triggerintervall","u"],
["Schwelle","Differenz am Ausgang","$Schwelle","u"]
],
"Output": [
["Arbeit in kWh","in Kilowattstunden","$Arbeit_kWh","c"]
]
}
Der Schöpfer dieser Custom Logik überträgt die Nutzungsrechte gemäß der TOLL ("Timberwolf Open Logikblock License") die unter
zum Download zur Verfügung steht.