Seite 1 von 1

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

Verfasst: Fr Apr 30, 2021 3:25 pm
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

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

Verfasst: Fr Apr 30, 2021 9:38 pm
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.

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

Verfasst: Sa Mai 01, 2021 1:12 pm
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

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

Verfasst: Sa Mai 01, 2021 1:21 pm
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

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

Verfasst: Do Mai 20, 2021 10:35 pm
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