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

[Implemented] Logik: Look-up-Tabelle

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

Ersteller
Chris M.
Reactions:
Beiträge: 1190
Registriert: Sa Aug 11, 2018 10:52 pm
Wohnort: Oberbayern
Hat sich bedankt: 234 Mal
Danksagung erhalten: 853 Mal
Kontaktdaten:

Logik: Look-up-Tabelle

#1

Beitrag von Chris M. »

Bei den Logiken fehlt mir eine Look-up-Tabelle:
  • Input und Output Datentyp frei wählbar (=> z.B. wäre neben dem üblichen float/float auch ein bool/string sinnvoll, dass Zustände in Text übersetzt)
  • Config ob interpolierend oder nächst bester Wert (ggf. mit der Wahl zwischen auf/ab/kaufmännisch runden)
  • Config ob extrapolierend oder Clamp auf min/max Wert
  • Für den Anfang sollte Kennlinie und Kennfeld (also 1D und 2D reichen)
Zuletzt geändert von Robert_Mini am Mo Nov 18, 2019 11:12 am, insgesamt 1-mal geändert.
CometVisu Entwickler - Bitte keine PNs, Fragen gehören in das Forum, damit jeder was von den Antworten hat!

CometVisu Fragen, Bugs, ... bitte im Entwicklungs-Forum, hier nur spezifisches für CV<->Timberwolf.

TWS 2500 ID: 76 + TP-UART - VPN offen, Reboot nur nach Absprache

S. Kolbinger
Elaborated Networks
Reactions:
Beiträge: 588
Registriert: Mi Aug 15, 2018 11:34 am
Hat sich bedankt: 82 Mal
Danksagung erhalten: 558 Mal

#2

Beitrag von S. Kolbinger »

Hallo Chris,

Eine einfache Lookup-Tabelle lässt sich mit den Multiplexern umsetzen.
Die eigentlichen Eingänge als Parameter auslegen und mit dem Selektor erfolgt dann die Auswahl.
Damit lassen sich dann auch Integer-Werte in Texte/Strings umwandeln.
Die Multiplexer werden, neben Integer, auch Boolean (false = 0 ; true = 1) als Selektor akzeptieren.
Aktuell kannst du das aber leider noch nicht ausprobieren, da müssen wir noch die Oberfläche gerade ziehen.

Wenn du Lookup-Tabelle mit Interpolation für die Nachbildung von beliebigen Funktionskurven benötigst, kann man das auch gut mit der Polynomialfunktion annähern. Bei gegebenen Wertepaaren (auch statistische Werte) lassen sich die Koeffizienten ganz gut hier bestimmen:
https://www.arndt-bruenner.de/mathe/scripts/regr.htm (als Term ein Polynom n.Grades auswählen)

Eine 2D oder mehr-D Lookup-Tabelle ließe sich mit einer Verkettung von mehreren Polynomialfunktionen erreichen, aber da wird es dann aufwändiger.

Gruß,
Stefan K.
Zuletzt geändert von S. Kolbinger am Mo Apr 22, 2019 12:03 pm, insgesamt 1-mal geändert.
Gruß,
Stefan K.
Benutzeravatar

Ersteller
Chris M.
Reactions:
Beiträge: 1190
Registriert: Sa Aug 11, 2018 10:52 pm
Wohnort: Oberbayern
Hat sich bedankt: 234 Mal
Danksagung erhalten: 853 Mal
Kontaktdaten:

#3

Beitrag von Chris M. »

Hallo Stefan,

bei Polynominterpolation sollte man auf alles über Kubisch verzichten, da das Ergebnis sonst gerne mal nicht stabil sein wird.

Umgedreht ist eine (lineare) Interpolation von Look-up-Tabellen sehr stabil und es lassen sich beliebige Funktionsverläufe beliebig genau approximieren, das auch noch bei sehr guter Performance. Nicht umsonst sind die in professionellen Steuer- und Regelsystemen in großer Anzahl vorhanden. Polynome dagegen nur sehr selten.

(Mit stabil meine ich nicht die triviale numerische Definition, sondern das, was praktisch übrig bleibt)
CometVisu Entwickler - Bitte keine PNs, Fragen gehören in das Forum, damit jeder was von den Antworten hat!

CometVisu Fragen, Bugs, ... bitte im Entwicklungs-Forum, hier nur spezifisches für CV<->Timberwolf.

TWS 2500 ID: 76 + TP-UART - VPN offen, Reboot nur nach Absprache

S. Kolbinger
Elaborated Networks
Reactions:
Beiträge: 588
Registriert: Mi Aug 15, 2018 11:34 am
Hat sich bedankt: 82 Mal
Danksagung erhalten: 558 Mal

#4

Beitrag von S. Kolbinger »

Hallo @Chris M.,

ich habe deinen Vorschlag Interpolations-Funktion aufgegriffen und als Modul für die LE umgesetzt.

Syntax: ["Interpolation","$In", "$Out", [ [x1,y1] , [x2,y2] , ... , [xn,yn ] ] ]
  • "Interpolation" (Modulbezeichner)
  • "$In" (Referenz auf Eingangs-Level)
  • "$Out" (Referenz auf Ausgangs-Level)
  • [ [x1,y1] , [x2,y2] , ... , [xn,yn ] ] (Stützpunkte der Interpolatioin)
Die Stützpunkte [xi,yi] müssen folgende Bedingung erfüllen:
xi < xi+1 , d.h. die Stützpunkte müssen nach ihren x-Werten aufsteigend sortiert sein und x-Werte dürfen nicht doppelt vorkommen

Die Berechnung des Ausgangswertes erfolgt mit abschnittweiser linearer Interpolation.
Zusätzlich werden die Ein- und Ausgangswerte auf den Wertebereich der Stützpunkte limitiert:
Eingangswert (X)Ausgangswert (Y)
X < x1y1
X = xiyi
xi < X < xi+1yi + (yi+1 - yi) / (xi+1 - xi) * (X - xi)
X > xnyn

Einfaches Beispiel für Verhältniszahl (0 - 1.0) => Prozent (0 - 100)

Code: Alles auswählen

{
    "Level": [
        ["$In", "float", 0.0],
        ["$Out", "float", 0.0]
    ],
    "Module": [
        ["Interpolation","$In", "$Out", [[0,0],[1,100]]]
    ],
    "Input": [
        ["Eingang","Eingangswert (x)", "$In", "a"]
    ],
    "Output": [
        ["Ausgang","Ausgangswert (y)","$Out", "a"]
    ]
}
Bild
Zuletzt geändert von S. Kolbinger am Do Jul 18, 2019 1:58 pm, insgesamt 2-mal geändert.
Gruß,
Stefan K.
Benutzeravatar

773H
Reactions:
Beiträge: 428
Registriert: Mo Okt 15, 2018 9:24 pm
Hat sich bedankt: 103 Mal
Danksagung erhalten: 208 Mal

#5

Beitrag von 773H »

... und x-Werte dürfen nicht doppelt vorkommen...
D.h. der Wert für "z" in der (Temperaturwerte)Reihe 23, 24, 24, z, 23, 23 liesse sich damit nicht interpolieren?

Gruss
Stephan
TWS 2500 ID:677, PBM ID:495 & ID:632, TWS 2500 ID:574, TWS 2500 ID:220, PBM ID:1022, VPN offen, Neustart kein Problem

S. Kolbinger
Elaborated Networks
Reactions:
Beiträge: 588
Registriert: Mi Aug 15, 2018 11:34 am
Hat sich bedankt: 82 Mal
Danksagung erhalten: 558 Mal

#6

Beitrag von S. Kolbinger »

Hallo Stephan,
773H hat geschrieben: Do Jul 18, 2019 2:17 pm D.h. der Wert für "z" in der (Temperaturwerte)Reihe 23, 24, 24, z, 23, 23 liesse sich damit nicht interpolieren?
ich bin mir nicht sicher, ob ich die Frage richtig verstehe.
Darum glaube ich, dass es sich hier um ein Missverständnis handelt.

Bei der linearen Interpolation wird eine Abbildungsfunktion, also eine Abbildung eines Eingangswertes x auf einen Ausgangswert y = f(x) angenähert.
Damit lassen sich z.B. nichtlineare Kennlinien von Sensoren korrigieren.

So kann man auch logarithmische Dimmkurven für LED-Leuchten erzeugen:

Bild

Das dazugehörige Modul würde dann so aussehen:
["Interpolation","$In", "$Out", [ [0,0] , [80,5] , [150,25] , [200,76] , [234,161] , [255,255] ] ]
Gruß,
Stefan K.
Benutzeravatar

773H
Reactions:
Beiträge: 428
Registriert: Mo Okt 15, 2018 9:24 pm
Hat sich bedankt: 103 Mal
Danksagung erhalten: 208 Mal

#7

Beitrag von 773H »

Dann war es ein Missverständnis. Ich ziehe die Frage zurück.
:shifty:
TWS 2500 ID:677, PBM ID:495 & ID:632, TWS 2500 ID:574, TWS 2500 ID:220, PBM ID:1022, VPN offen, Neustart kein Problem

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

#8

Beitrag von Robert_Mini »

Super - Danke für die perfekte Umsetzung!!!
Wieder einen (vielfach nutzbaren) Kundenwunsch erfüllt :clap: ;) .

Und in die KB rutscht dein Beitrag auch gleich rein...

@Stefan K.: Hattest du schon mal Gelegenheit diesen Fehler zu analysieren?
viewtopic.php?f=31&t=1172

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

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

#9

Beitrag von Robert_Mini »

KB online, eingearbeitet in folgendende Artikel:
app.php/kb/viewarticle?a=87
app.php/kb/viewarticle?a=101

@S. Kolbinger: Wird es diesen Baustein auch als Standardbaustein geben?

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

Zurück zu „Feature Requests & Diskussionen Timberwolf Logik (Module & Editor)“