UPGRADE IP 9 verfügbar!
Timberwolf VISU jetzt mit NEUEM Layout Editor
Freie Anordnung, Reihenfolge und Größe der Widgets - viele weitere Verbesserungen
Infos im Wiki: https://elabnet.atlassian.net/l/cp/06SeuHRJ

NEU! Insider & Leistungsmerkmale FÜR ALLE freigeschaltet
Damit kann nun jeder das Upgrade vornehmen und VISU & IFTTT testen. Alle Info hier: viewtopic.php?f=8&t=5074

[Frage] Wie Differenz Vorgänger zu Aktuellem Wert gegen Schwelle/Faktor prüfen?

Hier bitte Eure Diskussionen und Feature Requests zu neuen Logikmodulen und Funktionen des Logik-Editors

Ersteller
tger977
Reactions:
Beiträge: 740
Registriert: So Aug 12, 2018 9:25 am
Hat sich bedankt: 205 Mal
Danksagung erhalten: 274 Mal

Wie Differenz Vorgänger zu Aktuellem Wert gegen Schwelle/Faktor prüfen?

#1

Beitrag von tger977 »

Hallo zusammen,

Ich wollte mich mal wieder am Logikeditor versuchen, aber leider scheitere ich wie schön öfters an Ansätzen und der m.E. leider nach wie vor geringen Standardbausteine. Wie kann ich von einem Objekt den Vorgängerwert gegen den aktuellen Wert vergleichen?

Wenn dieser Objektwert z.B. um einen Faktor größer 9 springt würde ich das gerne detektieren und eine Ausgabe des aktuellen Wertes verhindern und erstwieder neue Werte ausgeben wollen wenn der ursprüngliche Vorgängerwert wieder mit Faktor z.B. kleiner 2 wieder kommt.

Bsp.: Wertefolge 299, 3000, 3001, 303: hier soll die 3000 und 3001 nicht gesendet werden.

Danke, falls mir jemand Hinweise hat.
Zuletzt geändert von tger977 am Mo Apr 26, 2021 8:49 pm, insgesamt 1-mal geändert.
Gruß
Andi

TW2500 #440 (ex Timberwolf 2400 #111) mit PBM #124, Support VPN nur auf Anfrage, Reboot bitte nur nach Absprache

gbglace
Reactions:
Beiträge: 3585
Registriert: So Aug 12, 2018 10:20 am
Hat sich bedankt: 1253 Mal
Danksagung erhalten: 1649 Mal

#2

Beitrag von gbglace »

Hmm so wie ich den Logikeditor hier erlesen habe müsstest am Ausgang der Logik den Eingangswert jedesmal nochmal in ein eigenes Objekt rausschreiben was nicht direkt von KNX /ModBus oder so beschrieben wird. Jenes kannst Du dann auch als Eingang nutzen und mit dem neu einlaufenden extern beschriebenen vergleichen. Ein extern beschriebenes ist dann ja schon nur mit neuem Wert in der Logik. Und der LE macht keine Aufrufe in einer Datenbank um Historien rauszuholen. Das ist da alles wie im KNX eventgetrieben und letzter Change als aktueller Zustand noch bekannt.
Grüße
Göran

#1 Timberwolf 2600 Velvet Red TWS #225 / VPN aktiv / Reboot OK
#2 Timberwolf 2600 Organic Silver TWS #438 / VPN aktiv / Reboot OK
#3 PBM 3 Kanäle, #4 Modbus-Extension

Robosoc
Reactions:
Beiträge: 1876
Registriert: Di Okt 09, 2018 9:26 am
Hat sich bedankt: 635 Mal
Danksagung erhalten: 775 Mal

#3

Beitrag von Robosoc »

Also mit einem Standardbaustein alleine wird das auf jeden Fall nicht gehen, die Aufgabe ist aber auch schon ein wenig speziell.
Aber als Custom wird es glaub ich nicht so schwer.

Ich halte hier mal ein paar Gedanken fest, morgen kann ich sicher mal ein paar Zeilen Code besteuern, wenn nicht ein Anderer schneller ist.

Was passiert bei einem erstmaligen Start? Ist der eingehende Wert dann beispielsweise sicher bei 0 oder kann es da auch beliebig bei z.B. 400 losgehen? Bei einem späteren Neustart könnte die Persistenzoption ja aktiv sein, aber der erste initiale Start scheint mir nicht trivial.

Zählt das Ganze immer nur fortan hoch oder gibt es auch einen Reset? Kann es also z.B. sein, dass du irgendwann von 303 bewusst auf 0 oder irgendeinen anderen niedrigeren Wert als 303 gehen wirst?

Bisher verstandener Ablauf:
Differenz aus Ausgabewert und aktuellem Eingangswert, der die Logik triggert, bilden (polynomial)
Prüfung ob Differenz > 9, (Comperator)
wenn ja dann nichts machen
Wenn nein wird der aktuelle Eingangswert zum Ausgangswert (latch)

Eingang mit Parameter a
Ausgangswert mit Parameter c
Zuletzt geändert von Robosoc am Mo Apr 26, 2021 10:54 pm, insgesamt 3-mal geändert.
VG, Sven - TWS 950Q ID:335 & 291, VPN offen, Reboot OK

Robosoc
Reactions:
Beiträge: 1876
Registriert: Di Okt 09, 2018 9:26 am
Hat sich bedankt: 635 Mal
Danksagung erhalten: 775 Mal

#4

Beitrag von Robosoc »

Code: Alles auswählen

/**
* 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": [
      ["In","","$in","a"]
  ],
  "Output": [
      ["Out","","$out","c"]
  ],
  "Level": [
    ["$in","integer",0],
    ["$out","integer",0],
    ["$dif","integer",0],
    ["$konst1","integer",1],
    ["$treshold","integer",9],
    ["$gate","bool",false]
  ],
  "Module": [
      ["Polynomial", "$konst1", "$dif",["$in", "-$out"]],
      ["Comparator" , "$dif" , "$gate" , "$treshold"],
      ["Latch","$in","$out","-$gate",0]
  ]
}
Diese Customlogik erfüllt glaube ich Deine Zieldefinition, aber startet bei jeder echten Neuinitialisierung bei 0...Nun musst Du noch einmal überlegen, wie Du das genau definieren willst UND Du kannst Dir die Schwelle auch auf einen Eingang legen um diese ggf. besser über einen Parameter einstellen zu können.
Zuletzt geändert von Robosoc am Di Apr 27, 2021 9:38 pm, insgesamt 1-mal geändert.
VG, Sven - TWS 950Q ID:335 & 291, VPN offen, Reboot OK

Ersteller
tger977
Reactions:
Beiträge: 740
Registriert: So Aug 12, 2018 9:25 am
Hat sich bedankt: 205 Mal
Danksagung erhalten: 274 Mal

#5

Beitrag von tger977 »

Wahnsinn, danke!!!

Ich kann mir das morgen oder übermorgen leider erst ansehen und testen. Die Erstinitalisierung ist völlig unproblematisch, da der Objektwert alle 2s gelesen und bei 1% Änderung sofort ein neuer Wert kommt.

Beim Lesen fällt mir auf dass du vmtl. die Differenz der Werte gegen die Schwelle vergleichst, ich brauche aber den Quotienten der Werte. Aber ich schau morgen mal selbst ob ich da die custom logik soweit verstehe...
Zuletzt geändert von tger977 am Di Apr 27, 2021 10:35 pm, insgesamt 1-mal geändert.
Gruß
Andi

TW2500 #440 (ex Timberwolf 2400 #111) mit PBM #124, Support VPN nur auf Anfrage, Reboot bitte nur nach Absprache

Ersteller
tger977
Reactions:
Beiträge: 740
Registriert: So Aug 12, 2018 9:25 am
Hat sich bedankt: 205 Mal
Danksagung erhalten: 274 Mal

#6

Beitrag von tger977 »

Robosoc hat geschrieben: Mo Apr 26, 2021 10:41 pm
Zählt das Ganze immer nur fortan hoch oder gibt es auch einen Reset? Kann es also z.B. sein, dass du irgendwann von 303 bewusst auf 0 oder irgendeinen anderen niedrigeren Wert als 303 gehen
Nein das ist der Leistungswert meiner PV Anlage, der schwankt im Bereich 0 bis ca. 7800. Leider kommen aber aufgrund von Modbus Inkonstistenzen auf die zu kurzzeitigen Sprüngen von Faktor 10 führen die ich eben "abfangen" möchte.
Gruß
Andi

TW2500 #440 (ex Timberwolf 2400 #111) mit PBM #124, Support VPN nur auf Anfrage, Reboot bitte nur nach Absprache

Robosoc
Reactions:
Beiträge: 1876
Registriert: Di Okt 09, 2018 9:26 am
Hat sich bedankt: 635 Mal
Danksagung erhalten: 775 Mal

#7

Beitrag von Robosoc »

Differenz....Quotient...ist doch alles das Gleiche ......:doh: Sorry, das habe ich falsch interpretiert, aber wie Du schon schreibst ist es zunächst kein großes Thema den Polinomial-Baustein gegen etwas anderes einzutauschen.

Aber ein Quotient ist auch nicht ganz trivial, weil Du Dich dann zwangsweise mit dem "Division durch Null" Thema beschäftigen wirst müssen und da wäre ein wenig Frust für Dich als Custom-Logiken-Einsteiger möglich, daher weise ich Dich lieber noch einmal drauf hin:
viewtopic.php?f=31&t=1455&start=10

Da Du ja Modbs-Nutzer bist und daher eventuell V2.0 IP4 installiert hast, wäre es eventuell auch möglich den neuen Baustein "freie Formel" als Alternative zu verwenden, in dem die "Div durch 0"-Problematik ja abgefangen wird. Aber da ich die IP4 noch nicht installiert habe, kann ich Dir dazu noch keine Tipps geben.
Zuletzt geändert von Robosoc am Mi Apr 28, 2021 4:13 pm, insgesamt 1-mal geändert.
VG, Sven - TWS 950Q ID:335 & 291, VPN offen, Reboot OK

Robosoc
Reactions:
Beiträge: 1876
Registriert: Di Okt 09, 2018 9:26 am
Hat sich bedankt: 635 Mal
Danksagung erhalten: 775 Mal

#8

Beitrag von Robosoc »

tger977 hat geschrieben: Di Apr 27, 2021 10:34 pm Die Erstinitalisierung ist völlig unproblematisch, da der Objektwert alle 2s gelesen und bei 1% Änderung sofort ein neuer Wert kommt.
Vorsicht, dass schau Dir lieber auch noch einmal genauer an und versuche es genau zu verstehen. Der Code den ich vorbereitet habe geht nach dem initialisieren davon aus, dass Du bei 0 bist und als nächster valider Werte eine Wert kommt, der nicht größer als 9 ist. Aber wenn Du die Logik quasi am Tag mit Ertrag erstellst, dann würdes Du bis abends keinen Wert auf den Ausgang geben...und Dein Ausgang wirkt erst am nächsten Tag.

Aktivierst Du den Persistenz Modus, dann ist das Problem aber für die allermeisten Fälle vermutlich egal und betrifft nur den ersten Aktivierungstag. Aber aus meiner Sicht wäre es netter den Startwert durch einen weiteren Eingang vorgeben zu können, den Du dann im Doktormodus beschalten würdest.
Das wäre auch nur zwei oder drei weitere Zeilen Code.
VG, Sven - TWS 950Q ID:335 & 291, VPN offen, Reboot OK

Robosoc
Reactions:
Beiträge: 1876
Registriert: Di Okt 09, 2018 9:26 am
Hat sich bedankt: 635 Mal
Danksagung erhalten: 775 Mal

#9

Beitrag von Robosoc »

Ich bin mir nicht sicher, ob Dir diese Geschichte am Ende ein zufriedenstellendes Bild bringt...denn ich könnte mir vorstellen, dass Du bei schnell fliegenden Wolken auch mal Tage und Zeiten hast, wo der Faktor 9 durch Wolkenverschattung auch auf natürliche Weise entsteht. Aber da ich keine PV Anlage betreibe und wenig Erfahrung damit habe, bin ich mir da nicht so sicher.
Zuletzt geändert von Robosoc am Mi Apr 28, 2021 7:12 pm, insgesamt 1-mal geändert.
VG, Sven - TWS 950Q ID:335 & 291, VPN offen, Reboot OK

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

#10

Beitrag von StefanW »

Hi Andi,

frag doch mal den Hersteller ob er nicht eine Firmware-Version hat, welche zumindest das (häufige) Wechseln des Exponenten unterlässt. Weil mit mathematischen und zeitlichen Zusammenhängen zwischen verschiedenen Registern kommt kein Modbus Gateway gut zurecht. Genau dafür gibt es ja die Möglichkeit mehrere Register zusammenfassen zu können, damit man große Werte bei toller Auflösung übertragen kann.

Da müssten ja auch andere Nutzer auf Probleme stoßen. Was sagen die einschlägigen Foren dazu?

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 „Feature Requests & Diskussionen Timberwolf Logik (Module & Editor)“