Insider Preview 3 veröffentlicht

Bild

Wir haben seben die Insider Preview 3 zur Version 4.8 veröffentlicht
Komplett überarbeiteter Logik Katalog mit verbesserter Übersicht und Suche für einfachere Auswahl der Lgik Module
Sechs neue Logiken für Farbraum-Umrechnungen (siehe Bild)
Fünfzehn neue Logiken aus der Community
Damit sind es nun 99 Logiken
Einundzwanzig neue winterliche Hintergründe für die VISU
Verbesserte Mouse-Over im VISU Editor für klarere Information
Das HTTP-API Subsystem liefert nun im Header stets Header Access-Control-Allow-Origin = * aus
Der Modbus Register Auswahlassistent erlaubt nun verschiedene Sortierungen beim Anlegen einer Transaktion
Viele Bugfixes


Release Notes: https://elabnet.atlassian.net/wiki/x/AYDD0

AKTION: Wir haben noch viele tolle Updates und 150 Videos (und 800 Wiki Seiten) geplant. Bitte unterstütze uns mit einem Software-Wartungsvertrag, damit wir dieses alles erreichen können. Und damit Dein Server weiterhin Updates, Upgrades und Support erhält. Jetzt in der Aktion schenken wir Dir den Insider Club mit derselben Laufzeit wie der am längsten laufende aktive Wartungsvertrag dazu - bei sofortigem Laufzeitbeginn. Damit profitierst Du auch von einer vorzeitigen Verlängerung. Alle Infos: https://elabnet.atlassian.net/wiki/x/GQB8z

LE: Universeller RTR

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
Robosoc
Beiträge: 1908
Registriert: Di Okt 09, 2018 9:26 am
Hat sich bedankt: 644 Mal
Danksagung erhalten: 798 Mal

LE: Universeller RTR

#1

Beitrag von Robosoc »

Hier teile ich einmal meine Gedanken und Arbeit zu einem universellen RTR ( Raumtemperaturregler), was gleichzeitig meine erste Customer-Logik ist :dance: .

Ich würde mich freuen, wenn der Eine oder Andere hier mitmacht und mitdenkt ... denn es soll ja ein universeller Baustein werden. Ich habe sicher auch nicht alles perfekt gemacht (ist ja mein erster Custom-Versuch). Und vielleicht kann ElabNet das Ergebnis ja später in die Bibliothek aufnehmen.

Hier erstmal meine Gedankenskizze (kann ich hier irgendwo Powerpoint-Dateien hinterlegen, damit man in einer gemeinsamen Datei arbeiten könnte?):
[hsimg]ext/dmzx/imageupload/files/96da7f1957d3 ... 551f28.jpg[/hsimg]
Bild

Soweit mein Code:

Code: Alles auswählen

/**
 *  RTR V1.0
*/
{
  "Level":[
    ["$Switch","bool",false],
    ["$CompSwitch","bool",false],
    ["$Alarm_Temp", "bool",false],
    ["$dummyTrue","bool",true],
    ["$dummyFalse","bool",false],
    ["$VAR<TempIn!>","float",15],
    ["$watchdogTime","integer",360],
    ["$Status","bool",false],
    ["$internStatus","bool",false],
    ["$TempCompInaktiv","float",18],
    ["$Reference","float",20],
    ["$Controlled","float",20],
    ["$Manipulate","float",0],
    ["$Kp","float",0],
    ["$Ki","float",0],
    ["$Kd","float",0],
    ["$Konst50","float",50],
    ["$Konst1","float",1],
    ["$Out","float",0]
  ],
  "Module":[
    ["Comparator","$Reference","$CompSwitch","$TempCompInaktiv"],
    ["And",["$CompSwitch","$Switch"],"$internStatus"],
    ["Multiplexer",["$dummyFalse",0],"$Out","$internStatus"],
    ["Multiplexer",["$dummyFalse",0],"$Status","$internStatus"],
    ["Break",["-$Status"]],
    ["Monoflop","$VAR<TempIn!>",0,"$internStatus","$watchdogTime",1],
    ["Multiplexer",["$dummyFalse",0],"$Out","$internStatus"],
    ["Multiplexer",["$dummyFalse",0],"$Status","$internStatus"],
    ["Multiplexer",["$dummyTrue",0],"$Alarm_Temp","$internStatus"],
    ["Break",["-$Status"]],
    ["Statistic",["$VAR<TempIn!>"],0,0,"$Controlled",0],
    ["PID controller","$Reference","$Controlled","$Manipulate","$Kp","$Ki","$Kd"],
    ["Limiter","$Manipulate","$Manipulate",0,["-$Konst50","$Konst50"]],
    ["Polynomial","$Manipulate","$Out",["$Konst50","$Konst1"]],
    ["Comparator","$Out","$internStatus",0],
    ["Multiplexer",["$internStatus","$dummyTrue"],"$Status","$internStatus"]
  ],
  "Input":[
    ["Sw","Schalter","$Switch","c"],
    ["TempIn","Temperatur Messung","$VAR<TempIn!>","a"],
    ["Const_TempInaktiv","Schwellwert ob Regelung notwendig","$TempCompInaktiv","u"],
    ["watchdogTime","Überwachungszeit","$watchdogTime","u"],
    ["Soll","Soll-Wert","$Reference","c"],
    ["Kp","Proportional-Term","$Kp","u"],
    ["Ki","Integral-Term","$Ki","u"],
    ["Kd","Diverential-Term","$Kd","u"]
  ],
  "Output":[
    ["Stell","Stellgröße","$Out","a"],
    ["FuehlerAlarm","bei 1 kein Temperaturwert innerhalb der Überwachungszeit","$Alarm_Temp","c"],
    ["Status","HK aktiv oder inaktiv","$Status","a"]
  ]
}
Erste Tests waren vielversprechend!

Aber sobald ich einen zweiten Temperatureingang wähle, lässt sich die Logik nicht mehr ausführen (Ich habe einige Räume, in denen ich das gerne nutzen würde).

Noch ein Hinweis: Der Ausgang Heizkreis-"Status" soll bewusst nicht einfach nur eine Rückmeldung zum Ausführen des Eingang "Schalter" sein. Der Status soll unterm Strich anzeigen, ob das Ventil offen ist oder nicht. In einer weiteren Logik würde ich dann z.B. über ein OR-Baustein aus allen Heizkreis-Stati ermitteln, ob die Umwälz-Pumpe der Fußbodenheizungen laufen muss oder nicht.

Was mir auch noch fehlt sind gute Initial PID-Werte für eine
  • Luft-Temperatur-Regler
  • Estrich-Temperatur-Regler
Zuletzt geändert von Robosoc am So Sep 15, 2019 7:53 am, insgesamt 4-mal geändert.
VG, Sven - 3500 XL ID:1369 | 3500 L ID:1355, VPN offen, Reboot OK

StefanW
Elaborated Networks
Elaborated Networks
Beiträge: 10973
Registriert: So Aug 12, 2018 9:27 am
Wohnort: Frauenneuharting
Hat sich bedankt: 5411 Mal
Danksagung erhalten: 9231 Mal
Kontaktdaten:

#2

Beitrag von StefanW »

Hallo Sven,

eine sehr schöne Arbeit! Super.

==> Wir nehmen das am Ende gerne in die Liste der Bausteine auf, das ist ja auch der Sinn der Sache

lg

Stefan
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.
Benutzeravatar

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

#3

Beitrag von 773H »

Hallo.
Für Komfortanwendungen braucht man noch eine Möglichkeit zur Sollwertumschaltung (Nachtabsenkung, daheim, unterwegs, Party, ...)
Für einfache Anwendungen (FBH, elektrisch) reicht evtl. ein Zweipunktregler.

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

andy_m
Beiträge: 98
Registriert: Mo Aug 13, 2018 1:38 pm
Hat sich bedankt: 40 Mal
Danksagung erhalten: 53 Mal

#4

Beitrag von andy_m »

Hi Sven,
aus gegebenem Anlass (mein Wiregate hat sich verabschiedet, nach 9 Jahren bravem Dienst), möchte ich die RTR Funktion jetzt auf den TW ziehen. Könntest Du mal einen Screenshot von einem fertig 'beschalteten' Baustein zeigen!? Welche Werte hast Du z.B. für den PID Regler benutzt, etc.
Ich muss gestehen, ich kenne mich mit dem LE noch nicht viel aus :(

Gruß Andy

PS: Zum Thema Diagramme online, schau Dir das mal an: https://www.draw.io/
Zuletzt geändert von andy_m am Mi Sep 18, 2019 10:08 pm, insgesamt 1-mal geändert.
TWS 2600 #175 + PBM 3x80 | TWS 950 #1783 | Wiregate #187 *RIP*
Wartungs-VPN auf Nachfrage offen, Reboot nach Rückfrage

Ersteller
Robosoc
Beiträge: 1908
Registriert: Di Okt 09, 2018 9:26 am
Hat sich bedankt: 644 Mal
Danksagung erhalten: 798 Mal

#5

Beitrag von Robosoc »

Ich bin hier aufgrund fehlender Zeit noch nicht viel weiter.

Die Sensorüberwachung schmeiss ich am Wochenende raus und realisiere Sie separat. Dazu habe ich ja einen eigen Thread laufen. Eine AntiWindUp Funktion habe ich implementiert (ganz simpler Schwellwertschalter).

Und ich habe noch keine Pid Regler Einstellungen, die was taugen.daran bin ich schon vor einigen Monaten gescheitert und in den letzten Tagen nochmal. Also natürlich probiere ich erstmal nur einen PI Regler. Stephan‘s (773H) Meinung oben, bei FBH könnte ein Zweipunktregler reichen kann ich nicht teilen. Ich denke dafür ist meine Temperaturmessung im Estrich viel zu träge. Vielleicht würde es bei Anlegefühlern passen.

S. Klobiger hatte uns ja vor Monaten einen skalierbaren (mit Vorlage 0-100%) PID Regler gebastelt, den ich in meiner RTR Logik auch eingebunden habe. Dabei hat er auch beschrieben, dass der TWS PID Regler im Sekundentakt arbeitet, wir also niedrige Ki werte verwenden müssen, eher bei 0,001 bis 0,0001. Das konnte ich nachvollziehen, dachte ich.

Zuletzt habe ich mal versucht meine RTR-Einstellungen aus dem Wiregate Server umzusetzen (Plugin Multi-RTR, ich glaub geschrieben vom User ChrissM , welches letztlich auch PI Regelung macht), die bei mir ausreichend brauchbare Ergebnisse liefern. Dort verwende ich z.B. für die Estrichregelung ein proportionalGain von 3 und eine IntegralTime von 160. Wenn ich es richtig verstehe skaliert der Multi-RTR aber die Zeit durch Multiplikation mit 60auf Minuten.

Demnach müsste man meines Erachtens im TWS ein Kp von 1/3 und ein Ki von 1/(60x160) nehmen um auf ein gleiches Ergebnis zu kommen. Kd= 0. aber das Ergebis war bei mir ein so krasser Überschwinger, dass ich erstmal die Überhitzungsshwelle programmiert habe :doh:

Lange Rede, wenn jemand mal gute Ideen für erste PI Einstellungen hat, gerne her damit
Zuletzt geändert von Robert_Mini am Mi Sep 18, 2019 11:02 pm, insgesamt 1-mal geändert.
VG, Sven - 3500 XL ID:1369 | 3500 L ID:1355, VPN offen, Reboot OK

Ersteller
Robosoc
Beiträge: 1908
Registriert: Di Okt 09, 2018 9:26 am
Hat sich bedankt: 644 Mal
Danksagung erhalten: 798 Mal

#6

Beitrag von Robosoc »

andy_m hat geschrieben: Mi Sep 18, 2019 10:06 pm PS: Zum Thema Diagramme online, schau Dir das mal an: https://www.draw.io/
Sehr interessant, danke
VG, Sven - 3500 XL ID:1369 | 3500 L ID:1355, VPN offen, Reboot OK

Dragonos2000
Beiträge: 2208
Registriert: So Aug 12, 2018 1:38 pm
Wohnort: Karlsruher Raum
Hat sich bedankt: 502 Mal
Danksagung erhalten: 902 Mal

#7

Beitrag von Dragonos2000 »

Robosoc hat geschrieben: So Sep 15, 2019 7:45 am Aber sobald ich einen zweiten Temperatureingang wähle, lässt sich die Logik nicht mehr ausführen (Ich habe einige Räume, in denen ich das gerne nutzen würde).
Hast Du eingrenzene können wo es herkommt? Ich tippe mal auf das Monoflop/Watchdog.
Lg
Jochen
____________________________________________________________
TW 2600 #188
VPN offen, Zugriff jederzeit, Experimente jederzeit, Reboot jederzeit

Ersteller
Robosoc
Beiträge: 1908
Registriert: Di Okt 09, 2018 9:26 am
Hat sich bedankt: 644 Mal
Danksagung erhalten: 798 Mal

#8

Beitrag von Robosoc »

Dragonos2000 hat geschrieben: Mi Sep 18, 2019 11:05 pm Hast Du eingrenzene können wo es herkommt? Ich tippe mal auf das Monoflop/Watchdog.
Ja, ist geklärt. Kann nicht gehen. Siehe
https://forum.timberwolf.io/viewtopic.php?f=24&t=1425
VG, Sven - 3500 XL ID:1369 | 3500 L ID:1355, VPN offen, Reboot OK

Ersteller
Robosoc
Beiträge: 1908
Registriert: Di Okt 09, 2018 9:26 am
Hat sich bedankt: 644 Mal
Danksagung erhalten: 798 Mal

#9

Beitrag von Robosoc »

andy_m hat geschrieben: Mi Sep 18, 2019 10:06 pm Könntest Du mal einen Screenshot von einem fertig 'beschalteten' Baustein zeigen!?
Fall Dir das jetzt schon hilft (PI Einstellung ist ein reiner Spielwert und funktioniert nicht gut!!!):
Bild
Die binären Ausgänge habe ich noch nicht verschaltet, die schaue ich mir im Moment noch rein im Dok-Modus an.

Der aktuelle Code, den ich aber noch ändern werde (habe die MonoflopZeile, die nicht funktionieren wird, hier einfach auskommentiert) ist Folgender:

Code: Alles auswählen

/**
 *  RTR V1.1
*/
{
  "Level":[
    ["$Switch","bool",false],
    ["$CompSwitch","bool",false],
    ["$Alarm_Sensor", "bool",false],
    ["$Alarm_MaxTemp", "bool",false],
    ["$dummyTrue","bool",true],
    ["$dummyFalse","bool",false],
    ["$VAR<TempIn!>","float",15],
    ["$watchdogTime","integer",360],
    ["$Status","bool",false],
    ["$internStatus","bool",false],
    ["$TempCompInaktiv","float",18],
    ["$TempCompMaxWarm","float",30], 
    ["$Reference","float",20],
    ["$Controlled","float",20],
    ["$Manipulate","float",0],
    ["$Kp","float",0],
    ["$Ki","float",0],
    ["$Kd","float",0],
    ["$Konst50","float",50],
    ["$Konst1","float",1],
    ["$Out","float",0]
  ],
  "Module":[
    ["Comparator","$Reference","$CompSwitch","$TempCompInaktiv"],
    ["And",["$CompSwitch","$Switch"],"$internStatus"],
    ["Multiplexer",["$dummyFalse",0],"$Out","$internStatus"],
    ["Multiplexer",["$dummyFalse",0],"$Status","$internStatus"],
    ["Break",["-$internStatus"]],
//["Monoflop","$VAR<TempIn!>",0,"$internStatus","$watchdogTime",1],
    ["Multiplexer",["$dummyFalse",0],"$Out","$internStatus"],
    ["Multiplexer",["$dummyFalse",0],"$Status","$internStatus"],
    ["Multiplexer",["$dummyTrue","$dummyFalse"],"$Alarm_Sensor","$internStatus"],
    ["Break",["-$internStatus"]],
    ["Statistic",["$VAR<TempIn!>"],0,0,"$Controlled",0],
    ["Comparator","$Controlled","-$internStatus","$TempCompMaxWarm"],
    ["Multiplexer",["$dummyFalse",0],"$Out","$internStatus"],
    ["Multiplexer",["$dummyFalse",0],"$Status","$internStatus"],
    ["Multiplexer",["$dummyTrue","$dummyFalse"],"$Alarm_MaxTemp","$internStatus"],
    ["Break",["-$internStatus"]],
    ["PID controller","$Reference","$Controlled","$Manipulate","$Kp","$Ki","$Kd"],
    ["Limiter","$Manipulate","$Manipulate",0,["-$Konst50","$Konst50"]],
    ["Polynomial","$Manipulate","$Out",["$Konst50","$Konst1"]],
    ["Comparator","$Out","$internStatus",0],
    ["Multiplexer",["$dummyFalse","$dummyTrue"],"$Status","$internStatus"]
  ],
  "Input":[
    ["Sw","Schalter","$Switch","c"],
    ["TempIn","Temperatur Messung","$VAR<TempIn!>","a"],
    ["Const_TempInaktiv","Schwellwert ob Regelung notwendig","$TempCompInaktiv","u"],
    ["Const_TempMax","Schwellwert, ob Temperatur zu hoch","$TempCompMaxWarm","u"],
    ["watchdogTime","Überwachungszeit","$watchdogTime","u"],
    ["Soll","Soll-Wert","$Reference","c"],
    ["Kp","Proportional-Term","$Kp","u"],
    ["Ki","Integral-Term","$Ki","u"],
    ["Kd","Diverential-Term","$Kd","u"]
  ],
  "Output":[
    ["Stell","Stellgröße","$Out","a"],
    ["FuehlerAlarm","bei 1 kein Temperaturwert innerhalb der Überwachungszeit","$Alarm_Sensor","c"],
    ["HitzeAlarm","bei 1 zu Hohe gemessene Temperatur","$Alarm_MaxTemp","c"],
    ["Status","HK aktiv oder inaktiv","$Status","a"]
  ]
}
Zuletzt geändert von Robosoc am Do Sep 19, 2019 6:29 am, insgesamt 1-mal geändert.
VG, Sven - 3500 XL ID:1369 | 3500 L ID:1355, VPN offen, Reboot OK

Gecks
Beiträge: 106
Registriert: Mi Okt 31, 2018 12:53 am
Hat sich bedankt: 116 Mal
Danksagung erhalten: 77 Mal

#10

Beitrag von Gecks »

@Robosoc im Studium erinnere ich mich daran Mal was von Reglereinstellungen gehört zu haben :geek:
Irgendwas mit Übertragungsfunktion und Sprungantwort. Da gibt es auch ein paar praktische Möglichkeit um näherungsweise die pasenden Werte zu finden. Auf die Schnelle habe ich von Honeywell folgendes PDF gefunden.
https://www.google.com/search?q=honeywe ... metrierung
Da gab es aber noch ne andere Faustformel :?: Vielleicht dämmert es mir noch :idea:
TWS 950 ID: 352, VPN offen, Reboot jederzeit
Antworten

Zurück zu „Logikengine & Logik-Editor“