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

[Problem] [V2.0 IP4] Verständnisproblem oder Bug: doppeltes Triggern

Informationen und Diskussionen über Logik-Engine und Logik-Editor
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
TobiasLessing
Reactions:
Beiträge: 56
Registriert: Do Dez 10, 2020 11:24 pm
Wohnort: Zwochau
Hat sich bedankt: 36 Mal
Danksagung erhalten: 54 Mal

[V2.0 IP4] Verständnisproblem oder Bug: doppeltes Triggern

#1

Beitrag von TobiasLessing »

Hallo Zusammen,

ich habe einen Hänger. Es geht um folgenden Code:

Code: Alles auswählen

{
  "Input": [
      ["In","Eingang","$In","c"]
  ],
  "Output": [
      ["Out","Ausgang","$Out","c"]
  ],
  "Level": [
      ["$In","float",0],
      ["$Out","float",0]
  ],
  "Module": [
      ["Interpolation","$In","$In",[[0,0],[100,255]]],
      ["Polynomial","$In","$Out",[0,1]]
  ]
}
Mein Ziel ist es, einen Eingangswert zu skalieren. Z.B. von 0%...100% (DPT 5.001) nach 0...255 (DPT 5.005). Alles andere (0...1 oder 47...2209) ist aber auch denkbar. Das funktioniert über das Interpolationsmodul sehr gut. Nun wollte ich auf eine zusätzliche interne Variable verzichten und habe Input-Variable=Output-Variable im Interpolationsmodul gesetzt [Nicht im Input- bzw. Output-Array der JSON! Dass dies nicht geht ist mir bewusst].

Das an sich funktioniert. Mir ist aber aufgefallen, dass die Logik die Interpolation doppelt ausführt, wenn ich mit dem Wert weiterarbeite. Nachfolgend ein BEISPIEL mit Interpolation, in dem nichts anderes macht wird, als das Ergebnis dann doch auf einen Ausgang zu bekommen. Habe sowohl über den Doktermodus aber auch über ein Objekt den Eingangswert "100" geschrieben und erhalte folgendes Ergebnis:
Dok-Mod(Input=100)_Triggertestlogik-POLYNOMIAL.png
Ihr seht, die Variable "$In" wird zweimal interpoliert. Das Ergebnis ist folglich gleich dem Quadrat aus der ersten Interpolation von "$In".
Hier konkret: 100-->255-->65025

Was habe habe ich noch getestet:
1) nur das Modul Interpolation ohne weitere Verarbeitung. Laut Grafane macht es was es soll:
Single-Interpolation(input=100).png
2) ein Latch als Ergebnisspeicher macht auch was ich erwarte:

Code: Alles auswählen

"Module": [
      ["Interpolation","$In","$In",[[0,0],[100,255]]],
      ["Latch","$In","$Out","$true",0]
  ]
Dok-Mod(Input=100)_Triggertestlogik-LATCH.png
Ich habe gelernt, dass die Logik-Zelle Zeile für Zeile abarbeitet wird

Kann jemand mein "Problem" nachvollziehen? Es geht mir nicht direkt um eine funktionierende Code-Alternativ. Die habe ich mit dem Latch ja bereits. Es geht mir viel eher darum meine Wissenslücke zu schließen (oder im Zweifelsfall einen Bug zu melden :handgestures-salute: ). Ist der Verzicht auf die interne Variable eigentlich schlechter Stil, weil fehleranfälliger oder handhabt ihr das regelmäßig auch so?

Eine Anmerkung noch: ich habe zwar oben die 2.0-IP4 vermerkt, aufgefallen war mir das aber schon in der 1.6 vor dem Update.

Vielen Dank soweit.
Viele Grüße

Tobias
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
TWS 950Q ID:458, vormals 960Q mit FreshUp, VPN offen, Reboot erlaubt nach Rücksprache
TWS 950Q ID:488, offline
PBM SN 1048

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

#2

Beitrag von Robosoc »

Ich glaube es liegt daran, dass Du im polinomial Modul den Wert 1 nutzt. Wenn sich das nicht irgendwann geändert hat und ich es dann nicht mitbekommen hat ist nur die 0 eine allgemein gültige Konstante. Eine 1 und auch sonst alle anderen Zahlen, musst Du dagegen im Level als Konstante definieren.

Der Interpolationsbaustein lässt dagegen glaube ich tatsächlich alle Zahlen zu.

Ich hätte allerdings erwartet, dass der Code mit error nicht ausgeführt wird.
VG, Sven - TWS 950Q ID:335 & 291, VPN offen, Reboot OK

Ersteller
TobiasLessing
Reactions:
Beiträge: 56
Registriert: Do Dez 10, 2020 11:24 pm
Wohnort: Zwochau
Hat sich bedankt: 36 Mal
Danksagung erhalten: 54 Mal

#3

Beitrag von TobiasLessing »

Hallo Sven,

Tatsache! Vielen Dank. Mit

Code: Alles auswählen

[...]
	["$A0","integer",0],
	["$A1","integer",1]
[...]
	["Polynomial","$In","$Out",["$A0","$A1"]]
komme ich zum richtigen Ergebnis.
Dann scheint das wohl doch ein Bug zu sein. Zumindest, dass es nicht per ERROR unterbunden wird.

Vielen Dank. Ziel erfüllt: Wissenslücke geschlossen.

Schönen Feiertag euch alle noch!
Viele Grüße

Tobias
TWS 950Q ID:458, vormals 960Q mit FreshUp, VPN offen, Reboot erlaubt nach Rücksprache
TWS 950Q ID:488, offline
PBM SN 1048

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 »

Gerne. Und danke für die Rückmeldung.

["$A0","integer",0] wäre nicht notwendig, die 0 ist als Zahl nutzbar, aber Du kannst auch nichts falsch machen, wenn Du dafür eine Variable definierst. Aber ich glaube das hattest Du aus meinem vorherigen Artikel auch schon so verstanden.

Ich bin eigentlich auch der Meinung gewesen, dass das Ganze auch in der KB gut beschrieben war, habe es gestern aber selber nicht gefunden
VG, Sven - TWS 950Q ID:335 & 291, VPN offen, Reboot OK

Robert_Mini
Reactions:
Beiträge: 3741
Registriert: So Aug 12, 2018 8:44 am
Hat sich bedankt: 1164 Mal
Danksagung erhalten: 2058 Mal

#5

Beitrag von Robert_Mini »

Wobei das nicht ganz richtig ist:
0 ist eine Null-Referenz und ist primär für nicht benutzt Levels in Modulen gedacht:
Siehe:
app.php/kb/viewarticle?a=115#Multiplexer

Kann sein, dass das auch bei Eingangsvariablen als 0 interpretiert wird, ist aber nicht die Idee dahinter.

Lg
Robert
Timberwolf Server 2500 / #117 (VPN offen + reboot nach Rückfrage) / zusätzlich: 3500M/#935, 3500L/#1297
Antworten

Zurück zu „Logikengine & Logik-Editor“