[Gelöst] Zwei Werte synchron aufaddieren

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

terseek
Reactions:
Beiträge: 206
Registriert: Mi Sep 05, 2018 1:09 pm
Hat sich bedankt: 348 Mal
Danksagung erhalten: 95 Mal

#11

Beitrag von terseek »

Eine wirklich richtige Lösung wird es aber weder mit dem Tiefpass noch mit jeder anderen potentiell denkbaren nachgeschalteten Logik.

Ich denke ein Ansatz könnte sein herauszufinden, welcher der beiden Werte zuerst vom Sensor gesendet wird. Dann müßte man das Eintreffen des zweiten Wertes als Trigger für die Addition verwenden.
Zuletzt geändert von terseek am Mo Feb 21, 2022 11:22 pm, insgesamt 1-mal geändert.
TWS 2600 ID:186 + 3 PBM, TWS 950Q ID:559, VPN offen, Reboot nach Vereinbarung

Robosoc
Reactions:
Beiträge: 1668
Registriert: Di Okt 09, 2018 9:26 am
Hat sich bedankt: 574 Mal
Danksagung erhalten: 654 Mal

#12

Beitrag von Robosoc »

Einfachste Lösung : Tiefpass, würde ich damit wohl machen.

Alternative im Custom Code: Du könntest ermitteln, ob das aktuelle Ergebnis des Codes ( bevor Du ihn auf den Ausgang schreibst) größer als z.B. 0,5 % vom vorherigen Ergebniswert abweicht) und wenn ja, änderst Du den Ausgang nicht. Ob dafür die Sprunghöhen ausreichend sind, bin ich mir aber nicht sicher.
VG, Sven - TWS 950Q ID:335 & 291, VPN offen, Reboot OK

Robosoc
Reactions:
Beiträge: 1668
Registriert: Di Okt 09, 2018 9:26 am
Hat sich bedankt: 574 Mal
Danksagung erhalten: 654 Mal

#13

Beitrag von Robosoc »

Zugschlus hat geschrieben: Mo Feb 21, 2022 10:47 pm Dabei war das neue Wiki wirklich hilfreich
Sehr schön, freut mich zu hören!
VG, Sven - TWS 950Q ID:335 & 291, VPN offen, Reboot OK
Benutzeravatar

Ersteller
Zugschlus
Reactions:
Beiträge: 335
Registriert: Di Okt 02, 2018 4:28 pm
Wohnort: St. Ilgen, Baden-Württemberg
Hat sich bedankt: 110 Mal
Danksagung erhalten: 76 Mal
Kontaktdaten:

#14

Beitrag von Zugschlus »

Robosoc hat geschrieben: Di Feb 22, 2022 6:36 am Alternative im Custom Code: Du könntest ermitteln, ob das aktuelle Ergebnis des Codes ( bevor Du ihn auf den Ausgang schreibst) größer als z.B. 0,5 % vom vorherigen Ergebniswert abweicht) und wenn ja, änderst Du den Ausgang nicht. Ob dafür die Sprunghöhen ausreichend sind, bin ich mir aber nicht sicher.
Man könnte auch alles was mehr als 5 hPa von der letzten Messung abweicht als offensichtlichen Messfehler ignorieren. Dann ignoriert man bei einem Ausreißer zwei Werte (die beiden Flanken, nach dem zweiten Leseprozess sind die beiden Werte wieder zusammen passend), der dritte passt wieder, wird genommen und am Ende sieht das so aus als würden da einfach zwei Werte fehlen.

Beispiel:
ZeitpunktWert AWert BSummeErgebnis
19901991akzeptiert
29909999abgelehnt
39809989akzeptiert
49807987akzeptiert
In dieser SItuation ist 2 eine Fehlmessung, der tatsächliche Wert sei 989, Wert A wurde zuerst gelesen und zeigt noch in die 990er-Range, wärhend der später gelesene Wert B schon die zu 989 passende 9 enthält. Der Sprung von 991 auf 999 wäre dann zu groß, der Wert wird abgelehnt, der nächste Wert 989 passt zu 991 und wird wieder genommen.

Ich versuch das mal.

Grüße
Marc
Zuletzt geändert von Zugschlus am Di Feb 22, 2022 2:45 pm, insgesamt 1-mal geändert.
--
Marc Haber, St. Ilgen
TWS 950Q #326, 3.0 RC5.1,VPN offen, Reboot erlaubt

Robosoc
Reactions:
Beiträge: 1668
Registriert: Di Okt 09, 2018 9:26 am
Hat sich bedankt: 574 Mal
Danksagung erhalten: 654 Mal

#15

Beitrag von Robosoc »

Ja, eas meinte ich ja und entspricht etwa den 0,5%

Aber bei dem Fehler ganz rechts in Deinem Screenshot könnte es schon sein, dass es nicht mehr funktioniert. Da hast Du einen vergleichsweise lang anliegenden Fehlerwert, der zu klein ist, während der eigentlich korrekte Messwert steigt...aber probiere es mal...zumindest ist es eine gute CustomCode Übung.
VG, Sven - TWS 950Q ID:335 & 291, VPN offen, Reboot OK

Robosoc
Reactions:
Beiträge: 1668
Registriert: Di Okt 09, 2018 9:26 am
Hat sich bedankt: 574 Mal
Danksagung erhalten: 654 Mal

#16

Beitrag von Robosoc »

Zu deinem Customcode hätte ich noch zwei Hinweise...aber nichts Falsches oder so.

Du hast bei den Ein- und Ausgängen den Namen (Parameter 1)und die Beschreibung/Tooltipp (Parameter2) gleich gewählt...das ist irgendwie sinnlos...wenn ich meine den Tooltipp nicht zu brauchen , lasse ich ihn tatsächlich leer = "", ansonsten fülle ich ihn gerne auch mit längerem Text, der mir den gewünschten Inthalt des Wertes genauer erklärt. Aber so wie Du es jetzt gemacht hast funktioniert es natürlich, ich war mir bloß nicht sicher, ob Du den Zweck des zweiten Parameters kanntest.

Du hast jeden Ein- und Ausgang mit dem Verhalten a definiert. Das ist an sich auch nicht falsch und du kannst es ja in der GUI überschreiben. Aber das birgt eine Gefahr. Solltest Du das Verhalten in der GUI umdefiniert haben und den CustomCode nachträglich mal ändern oder die Zelle kopieren, verlierst Du die in der GUI definierten Verhalten...deshalb würde ich dringend empfehlen das Triggerverhalten bereits im Code korrekt zu definieren.
VG, Sven - TWS 950Q ID:335 & 291, VPN offen, Reboot OK
Benutzeravatar

Ersteller
Zugschlus
Reactions:
Beiträge: 335
Registriert: Di Okt 02, 2018 4:28 pm
Wohnort: St. Ilgen, Baden-Württemberg
Hat sich bedankt: 110 Mal
Danksagung erhalten: 76 Mal
Kontaktdaten:

#17

Beitrag von Zugschlus »

Zugschlus hat geschrieben: Di Feb 22, 2022 2:43 pm Ich versuch das mal.
So sieht das jetzt aus:

Code: Alles auswählen

{
  "_Meta": { // Optional
    "Description": "",
    "Version": "1.00",
    "Icon": "" // format: "data:image/svg+xml;base64,ENCODED_FILE"
  },
  "Input": [
    ["Summand","Summand","$VAR<Summand!>","ai"],
    ["Differenz","Differenz","$diff","ai"]
  ],
  "Output": [
    ["LimLow","LimLow","$LimLow","a"],
    ["LimHigh","LimHigh","$LimHigh","a"],
    ["CompRes","CompRes","$CompRes","a"],
    ["Luftdruck","Luftdruck","$Out","c"],
    ["Summe","Summe","$Summe","a"],
    ["Dummy","Dummy","$Dummy","a"],
    ["Valid","Valid","$Valid","a"]
  ],
  "Module": [
    ["Polynomial","$ConstOne","$Summe",["$VAR<Summand!>"]],
    ["CalcFormula",["$Summe","$diff"],"$LimLow","$SubFormel"],
    ["CalcFormula",["$Summe","$diff"],"$LimHigh","$AddFormel"],
    ["Limiter","$Out","$Dummy","$Valid",["$LimLow","$LimHigh"]],
    ["Latch","$Summe","$Intermed","$Valid",0],
    ["Multiplexer", ["$Summe", "$Summe", "$Summe", "$Summe", "$Summe", "$Summe", "$Summe", "$Summe", "$Summe", "$Summe", "$Summe", "$Intermed"],"$Out","$Out"]
  ],
  "Level": [
    ["$VAR<Summand!>","float",0],
    ["$diff","float",0],
    ["$Summe","float",0],
    ["$LimLow","float",0],
    ["$LimHigh","float",0],
    ["$CompRes","float",0],
    ["$AddFormel","string","X1+X2"],
    ["$SubFormel","string","X1-X2"],
    ["$Dummy","float",0],
    ["$Valid","bool",true],
    ["$Intermed","float",0],
    ["$Out","float",0],
    ["$ConstOne","float",1]
  ]
}
Bild

Das funktioniert jetzt seit Februar, und in der Zeit in der es funktioniert hat, habe ich wohl vergessen wie das Ding funktioniert. Also, bloß nicht anfassen ;-)

Grüße
Marc
--
Marc Haber, St. Ilgen
TWS 950Q #326, 3.0 RC5.1,VPN offen, Reboot erlaubt
Antworten

Zurück zu „Logikengine & Logik-Editor“