NEU! UPGRADE IP 12 verfügbar!
Verbessertes LICHTWIDGET - MQTT Geräte Manager Update - sowie viele weitere Verbesserungen
Infos im Wiki: https://elabnet.atlassian.net/l/cp/bCsDsqM8

Insider & Leistungsmerkmale FÜR ALLE freigeschaltet
Ab sofort kann jeder die neue VISU & IFTTT testen. Info: viewtopic.php?f=8&t=5074

Release V 4 am 15. Juni 2024
Es gibt nun einen fixen Termin. Info: viewtopic.php?f=8&t=5117

NEU! Ausführliches Video Tutorial zur VISU
Jetzt werden alle Fragen beantwortet. Das Video: https://youtu.be/_El-zaC2Rrs

[NEUHEIT] Custom-Logik Zählerbaustein aus Impulse-Zählern

Hier stellen Foristen und Kunden Ihre EIGENEN Logikbausteine vor. Diese Logikbausteine stehen jedem im Rahmen der vom Autor eingeräumten / genannten Lizenz zur Verfügung.
Forumsregeln
  • Denke bitte an aussagekräftige Titel und gebe dort auch die [Firmware] an. Wenn ETS oder CometVisu beteiligt sind, dann auch deren Version
  • Bitte mache vollständige Angaben zu Deinem Server, dessen ID und dem Online-Status in Deiner Signatur. Hilfreich ist oft auch die Beschreibung der angeschlossener Hardware sowie die verwendeten Protokolle
  • Beschreibe Dein Projekt und Dein Problem bitte vollständig. Achte bitte darauf, dass auf Screenshots die Statusleiste sichtbar ist
  • Bitte sei stets freundlich und wohlwollend, bleibe beim Thema und unterschreibe mit deinem Vornamen. Bitte lese alle Regeln, die Du hier findest: https://wiki.timberwolf.io/Forenregeln
Antworten

Ersteller
Robosoc
Reactions:
Beiträge: 1886
Registriert: Di Okt 09, 2018 9:26 am
Hat sich bedankt: 639 Mal
Danksagung erhalten: 778 Mal

Custom-Logik Zählerbaustein aus Impulse-Zählern

#1

Beitrag von Robosoc »

Ich verwende einen KNX Binäreingangsgerät von MDT, welches eine Zählerfunktion implementiert hat. Daran habe ich Impuls-Geber (Magnetische Schließerkontakte) von meinen Wasser- und Gaszählern angeschlossen.

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.
Aus diesem Grund habe ich mir diesen recht simplen Zählerbaustein erstellt.
Bild

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"]]
  ]
}
Zuletzt geändert von Robosoc am Mo Dez 30, 2019 6:32 am, insgesamt 3-mal geändert.
VG, Sven - 3500 XL ID:1369 | 3500 L ID:1355, VPN offen, Reboot OK

StefanW
Elaborated Networks
Reactions:
Beiträge: 9917
Registriert: So Aug 12, 2018 9:27 am
Wohnort: Frauenneuharting
Hat sich bedankt: 4907 Mal
Danksagung erhalten: 7904 Mal
Kontaktdaten:

#2

Beitrag von StefanW »

Wow, tolle Arbeit, bin beeindruckt!

lg

Stefan
Stefan Werner
Product Owner für Timberwolf Server, 1-Wire und BlitzART
Bitte WIKI lesen. Allg. Support nur im Forum. Bitte keine PN
Zu Preisen, Lizenzen, Garantie, HW-Defekt an service at elabnet dot de

Link zu Impressum und Datenschutzerklärung oben.
Antworten

Zurück zu „Zusätzliche Logikbausteine“