Es geht los: Erste Doku zu Logik

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

Ersteller
Robert_Mini
Reactions:
Beiträge: 3907
Registriert: So Aug 12, 2018 8:44 am
Hat sich bedankt: 1275 Mal
Danksagung erhalten: 2220 Mal

Es geht los: Erste Doku zu Logik

#1

Beitrag von Robert_Mini »

Nachdem ich unlängst ein wenig in Logiken eingetaucht bin, hab ich gleich auch mit der Doku für die KB begonnen!
Der Anfang ist damit gemacht, die ersten Kapitel zur Logik sind online und werden bald weiter wachsen!

Wie immer: Feedback highly welcome!

LG Robert

4.6 Logikeditor
4.6.1 Einleitung
4.6.2 Beschreibung der wichtigsten Basis-Logikbausteine
4.6.3 Mehrere Logikbausteine verknüpfen
4.6.4 Custom-Logikbausteine
4.6.5 Verwendung von Standard Logikbausteinen in Custom-Logiken
4.6.6 Beispiele für Custom Logikbausteine
4.6.6.1 Custom-Logik: Sensorauswertung mittels Polynomfunktionen
4.6.6.2 Custom-Logik: Einfache Solarsteuerung mit 3-Wege-Ventil
Zuletzt geändert von Robert_Mini am Do Jun 13, 2019 7:36 am, insgesamt 3-mal geändert.
Timberwolf Server 2500 / #117 (VPN offen + reboot nach Rückfrage) / zusätzlich: 3500M/#935, 3500L/#1297
Benutzeravatar

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

#2

Beitrag von 773H »

Hallo. Bei der Polynomfunktion wäre es hilfreich, wenn man Infos hätte, was man machen soll, wenn die eigene Funkton von der idealen Form a + xa1 + a2x2 + a3x3 ... abweicht.
Will sagen: was mache ich, wenn ich z.B. die Formel P0=P/(1-h/44330) hoch 5.255 eingeben möchte ...

Gruß
Stephan
Zuletzt geändert von 773H am Fr Jun 07, 2019 9:33 pm, insgesamt 1-mal geändert.
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

blaubaerli
Reactions:
Beiträge: 2696
Registriert: Sa Sep 15, 2018 10:26 am
Wohnort: Kerpen
Hat sich bedankt: 1016 Mal
Danksagung erhalten: 809 Mal

#3

Beitrag von blaubaerli »

Hi Robert, prüf bitte mal den ersten Link.

Gruß
jens
timberwolf168(2600er)VPN offenReboot nach Vereinbarung
timberwolf1699(3500XL)VPN offenReboot jederzeit
wiregate1250
Bitte WIKI lesen.

Ersteller
Robert_Mini
Reactions:
Beiträge: 3907
Registriert: So Aug 12, 2018 8:44 am
Hat sich bedankt: 1275 Mal
Danksagung erhalten: 2220 Mal

#4

Beitrag von Robert_Mini »

Einleitung gibt’s noch nicht...
Timberwolf Server 2500 / #117 (VPN offen + reboot nach Rückfrage) / zusätzlich: 3500M/#935, 3500L/#1297

blaubaerli
Reactions:
Beiträge: 2696
Registriert: Sa Sep 15, 2018 10:26 am
Wohnort: Kerpen
Hat sich bedankt: 1016 Mal
Danksagung erhalten: 809 Mal

#5

Beitrag von blaubaerli »

Ach soooooooo :confusion-scratchheadyellow:
timberwolf168(2600er)VPN offenReboot nach Vereinbarung
timberwolf1699(3500XL)VPN offenReboot jederzeit
wiregate1250
Bitte WIKI lesen.

gbglace
Reactions:
Beiträge: 4105
Registriert: So Aug 12, 2018 10:20 am
Hat sich bedankt: 1434 Mal
Danksagung erhalten: 1924 Mal

#6

Beitrag von gbglace »

sehr gut, so wird es einfacher die LE sich zu erschließen.
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
#PV 43,2 kWh Akku; 3x VE MP2 5000; 6,7 kWp > 18 Panele an 4x HM1500 + 1 HM800 WR; Open-DTU

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

#7

Beitrag von S. Kolbinger »

Hallo Stephan,

ein guter Punkt:
773H hat geschrieben: Fr Jun 07, 2019 9:30 pm Hallo. Bei der Polynomfunktion wäre es hilfreich, wenn man Infos hätte, was man machen soll, wenn die eigene Funkton von der idealen Form a + xa1 + a2x2 + a3x3 ... abweicht.
Will sagen: was mache ich, wenn ich z.B. die Formel P0=P/(1-h/44330) hoch 5.255 eingeben möchte ...
Dann möchte ich mal an diesem Beispiel zeigen, wie man hier vorgehen kann.

Mit der Basisfunktion "Ratio" haben wir schon die Möglichkeit den Quotienten A/B zu berechen.
In unserem Fall ist A der Druck (P), also brauchen wir noch eine Möglichkeit das B, den Korrekturterm (1-h/44330)5.255, zu berechnen.
Ich will das über die Polynomfunktion machen und erstelle mir in EXEL oder LibreOffice Calc eine Wertetabelle für den gewünschten Bereich:
Bild

Dann gehe ich auf eine WEB-Page mit der ich mir passende Polynom-Koeffizienten berechnen lassen kann, z.B.: https://www.arndt-bruenner.de/mathe/scripts/regr.htm, und versuche es mal mit einem Polynom 5.Grades
Bild

Und siehe da, es bleibt nur ein Polynom 2.Grades übrig und die Koeffizienten wähle ich mal auf sechs Stellen genau:
a0 = 1.0
a1 = -0.000118543
a2 = 5.68913e-9

Damit ergibt sich folgende Custom-Logic:

Code: Alles auswählen

{
    "Level": [
        ["$SensorWert","float",2.0],
        ["$Hoehe","float",550.0],
        ["$P_Abs","float",900.0],
        ["$P_Rel","float",1013.0],
        ["$P_Offset","float",700.0],
        ["$P_Gradient","float",3.2],
        ["$Korr_A0","float",1.0],
        ["$Korr_A1","float",-0.000118543],
        ["$Korr_A2","float",5.68913e-9],
        ["$H_Korr","float",0.9]
    ],
    "Module": [
        ["Polynomial","$SensorWert","$P_Abs",["$P_Offset","$P_Gradient"]],
        ["Polynomial","$Hoehe","$H_Korr",["$Korr_A0","$Korr_A1","$Korr_A2"]],
        ["Ratio","$P_Abs","$P_Rel","$H_Korr"]
    ],
    "Input": [
        ["SensorWert","Wert des Barometersensors","$SensorWert","c"],
        ["Höhe","Höhe über Meeresspiegel","$Hoehe","c"]
    ],
    "Output": [
        ["P(abs)","Absoluter Druck","$P_Abs","c"],
        ["P(rel)","Realtiver Druck, bezogen auf Meereshöhe","$P_Rel","c"]
    ]
}
Bild

Jetzt mache ich noch eine Abschätzung, wie groß der Fehler mit dieser Näherung ist.
Dazu erweitere ich meine EXEC-Tabelle mit der Näherungsformel und berechne den relativen Fehler für den normierten Luftdruck.
Bild

Man sieht hier, dass unter 1500m ü.NN der Fehler kleiner als 0,1% ist. Das ist vermutlich für den Großteil der Anwender ausreichend genau.

Damit aber unser Timberwolf auch noch auf Lager 4 am Mount Everest eine vernünftige Wetterprognose möglich macht, müssen wir genauer werden:

Dazu Teilen wir die Berechnung des Korrekturterms (1-h/44330)5.255 in zwei Schritte (Polynomfunktionen) auf:

1. Schritt: x = 1-h/44330 = 1 - 0.000022558 * h

2. Schritt: Korrekturterm_B = x5.255

Für das erste Polynom können wir die Koeffizienten direkt ablesen:
a0 = 1.0
a1 = -0.000022558

Für das zweite Polynom machen ich mir wieder eine Wertetabelle und lasse mir die Koeffizienten berechnen:
Bild

Bild

Daraus bauen wir folgende Custom-Logic:

Code: Alles auswählen

{
    "Level": [
        ["$SensorWert","float",2.0],
        ["$Hoehe","float",550.0],
        ["$P_Abs","float",900.0],
        ["$P_Rel","float",1013.0],
        ["$P_Offset","float",700.0],
        ["$P_Gradient","float",3.2],
        ["$Korr_A0","float",1.0],
        ["$Korr_A1","float",-0.000022558],
        ["$Wert_X","float",1.0],
        ["$Korr_B0","float",-0.950185],
        ["$Korr_B1","float",5.271796],
        ["$Korr_B2","float",-11.773697],
        ["$Korr_B3","float",13.356636],
        ["$Korr_B4","float",-7.983565],
        ["$Korr_B5","float",3.079016],
        ["$H_Korr","float",0.9]
    ],
    "Module": [
        ["Polynomial","$SensorWert","$P_Abs",["$P_Offset","$P_Gradient"]],
        ["Polynomial","$Hoehe","$Wert_X",["$Korr_A0","$Korr_A1"]],
        ["Polynomial","$Wert_X","$H_Korr",["$Korr_B0","$Korr_B1","$Korr_B2","$Korr_B3","$Korr_B4","$Korr_B5"]],
        ["Ratio","$P_Abs","$P_Rel","$H_Korr"]
    ],
    "Input": [
        ["SensorWert","Wert des Barometersensors","$SensorWert","c"],
        ["Höhe","Höhe über Meeresspiegel","$Hoehe","c"]
    ],
    "Output": [
        ["P(abs)","Absoluter Druck","$P_Abs","c"],
        ["P(rel)","Realtiver Druck, bezogen auf Meereshöhe","$P_Rel","c"]
    ]
}
Bild

Eine erneute Fehlerberechnung des Näherungsformel ergibt:
Bild

Und damit sind wir vermutlich viele, viele Größenordnungen genauer, als der Messwert des Drucksensors.
Gruß,
Stefan K.
Benutzeravatar

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

#8

Beitrag von 773H »

Hallo Stefan, absolut topp!
Danke für die ausführliche Anleitung.

Gruß
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

blaubaerli
Reactions:
Beiträge: 2696
Registriert: Sa Sep 15, 2018 10:26 am
Wohnort: Kerpen
Hat sich bedankt: 1016 Mal
Danksagung erhalten: 809 Mal

#9

Beitrag von blaubaerli »

Moin zusammen,

oh mein Gott, hätt ich in Mathe mal besser aufgepasst :confusion-scratchheadyellow:

Beste Grüße
Jens
timberwolf168(2600er)VPN offenReboot nach Vereinbarung
timberwolf1699(3500XL)VPN offenReboot jederzeit
wiregate1250
Bitte WIKI lesen.

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

#10

Beitrag von StefanW »

Der Hammer, was für ein Beitrag Stefan.

Liebe Foristen, jetzt wisst ihr, warum Stefan die Logikengine programmiert hat.

Das eigentlich geilste Feature ist das, was man am wenigsten sieht:
Jede der zig angelegten Logiken läßt sich unabhängig von allen anderen Logikzellen einzeln stoppen, starten, verändert. Das war eine der schwierigsten Aufgaben hierbei überhaupt. Wer die Wettbewerbsprodukte kennt: Bei den meisten wird die ganze Logik komplett neu gestartet, wenn man an einer Logik auch nur ein Fitzelchen geändert hat. Und so ein Neustart kann auch Minuten dauern, wobei in der Zeit nichts funktioniert. Bei uns am Timberwolf Server alles andere weiter und man kann auch noch die Ein- und Ausgänge live abknipsen, was ebenfalls ein Alleinstellungsmerkmal ist.

==> Das sind sehr wichtige Eigenschaften, bitte bei Berichten in anderen Foren auch herausstellen, weil die meisten achten bei Ihrer Kaufentscheidung nicht auf solche Details (klar, der Wettbewerb stellt das in seinen schönen Farbprospekten auch nicht heraus, dass die Logik immer komplett neu gestartet werden muss und in dieser Zeit nicht verfügbar ist) und daher sollt Ihr uns bitte dabei helfen zu vermitteln, dass es mittlerweile auch ein modernes Produkt mit modernen EIgenschaften gibt: Den Timberwolf Server, bei dem nix von vorne gestartet werden muss, wenn man was daran verändert - weil das gilt auch für alle anderen Engines (selbst beim WireGate Server wurde der Prozess neu gestartet, wenn man an der 1-Wire Einstellungsseite was geändert hat).

Danke fürs Beachten.

lg

Stefan
Zuletzt geändert von StefanW am Sa Jun 08, 2019 12:41 pm, insgesamt 1-mal geändert.
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 „Logikengine & Logik-Editor“