Dies funktioniert zwar zuverlässig, hat aber ein paar Schwächen, die mich immer schon gestört haben.
- Beim MDT Gerät ist es nicht möglich einen bestimmten Zählerstartwert vorzugeben. Der Zähler startet von 0 und kennt auch nur ganzzahlige Werte (ich glaube DPST 12.001).
- Bei Geräte-Neustart, z.B. durch partielles Programmieren wird der Zähler auf 0 gesetzt.
Zusatzinfos:
- Der Eingang 1 sollte kein Impulswert sein, sondern ein Zahlenwert eines Zählers!
- Die Persistenz-Option der Logikzelle sollte aktiviert werden
- Nulleingangserkennung: Wenn Eingang 1 einmal kleiner sein sollte, als der letzte empfangene Wert auf Eingang 1, (z.B. weil der Zähler am Eingang durch ein Wertüberlauf wieder von 0 beginnt oder weil das KNX-Gerät aus irgendeinem Grund zurückgesetzt wurde) so zählt der Zähler dennoch weiter nach oben
- Mit dem Eingang 2 kann man die Nachkommastellenverschiebung des Eingangs 1 beeinflussen. Beispiel: Wenn ein Impuls = 0,01 Zählerwerte sind, dann ist der Teiler 100.
- Auf Eingang 3 wird bei Bedarf ein initialer Zählerwert per Doktormodus-Eingabe vorgegeben. Wenn man die Logik wie in meinem Beispiel erst erstellt, wenn der Zähler schon Jahre lang gezählt hatte, dann gibt man hier den Wert ein, den man aktuell erreicht hat.
Code: Alles auswählen
/**
* Zählerlogik mit Nulldurchgangserkennung und Wertvorgabe
*
* Nutzungsrechte:
* Der Schöpfer dieser Custom Logik überträgt die Nutzungsrechte gemäß der TOLL ("Timberwolf Open Logikblock License") die unter https://wrgt.news/TOLL zum Download zur Verfügung steht.
*/
{
"Input":[
["ext. Zähler","Wert des externen Impuls-Zählers","$CountExt","c"],
["Teiler","Teiler zum Herstellen des korrekten Zählerwertes. Beispiel: Wenn ein Impuls = 0,01 Zählerwerte sind, dann ist der Teiler 100","$Teiler","u"],
["Startwert","Startwert für den Zähler","$CountInit","c"]
],
"Output":[
["Zählerwert","Wert des Zählers","$Value","c"]
],
"Level":[
["$CountExt", "integer", 0],
["$CountInit", "float", 0.0],
["$lastCountExt", "integer", 0],
["$Reset", "bool", false],
["$Value", "float", 0.0],
["$ValueAdder", "float", 0.0],
["$constTrue", "bool", true],
["$const1", "integer", 1],
["$Teiler", "integer", 100]
],
"Module":[
["Comparator" , "$lastCountExt" , "$Reset" , "$CountExt"],
["Latch","$Value","$CountInit","$Reset",0],
["Latch","$CountExt","$lastCountExt","$constTrue",0],
["Ratio","$CountExt","$ValueAdder", "$Teiler"],
["Polynomial", "$const1", "$Value",["$CountInit", "$ValueAdder"]]
]
}