Das ist mir auch schon aufgefallen.
Ist das ggf ein kleiner Bug, dass fest verdrahtete Parameter in den Eingängen nicht über den LE-Code wiederhergestellt werden?
Das ist mir auch schon aufgefallen.
Ganz kann ich eurer Diskussion nicht folgen.
Code: Alles auswählen
//================ Schritt 5 =====================
//Fuellstand und Zähler Rückspülungen berechnen
{
"Input": [
["Temperatur Rueckspülung","Temperatur gemessen an der Rückspülleitung","$I_Temp","a"],
["Delta T Rückspülung","Schwelle zur Erkennung Temperaturabfall bei Rückspülung","$I_DeltaT","c"],
["Zeitkonstante Glättung","Zeitkonstante der geglätteten Temperatur, gegen die Delta T gemessen wird","$I_Glaettung","c"],
["Dauer Rückspülung","Dauer für Ausgabe Rückspülung aktiv","$I_RS_Dauer","c"],
["Sperrzeit nach Rückspülung","Mindestzeit, bevor wieder eine Rückspülung erkannt wird","$I_Sperrzeit","c"],
["Trigger nachfüllen","Trigger für Nachfüllen je Sack","$I_TriggerNachfuellen","c"],
["Füllstandserhöhung je Sack","","$I_HoeheSack","c"],
["Füllstandsverringerung je Rückspülung","","$I_HoeheRueckspuelung","c"]
],
"Output": [
["Rückspülung Jahr","Anzahl Rückspülungen im aktuellen Jahr","$RS_Anzahl","c"],
["Füllstand aktuell","Aktueller Füllstand","$Fuellstand","c"],
["Warnung Füllstand","Trigger GA für Warnung","$Warnung","c"],
["Temperatur geglättet","Temperatur nach Tiefpassfilter","$TempGeglaettet","c"],
// Debug Ausgänge
["_Temp_CResult","Vergleich der Temperaturen","$Temp_CResult","c"],
["_And_Sperrre_Aktiv","Temperatur nach Tiefpassfilter","$Sperre_Aktiv","c"],
["_And_RS_Neu","Temperatur nach Tiefpassfilter","$Rueckspuelung_Neu","c"],
["_Rückspülung Aktiv","Rückspülung läuft","$RS_Stat","c"]
],
"Level": [
["$I_Temp","float",20.0],
["$TempGeglaettet","float",20.0],
["$I_DeltaT","float",3.0],
["$I_Sperrzeit","float",3.0],
["$I_RS_Dauer","float",3.0],
["$I_Glaettung","float",36000.0],
["$I_TriggerNachfuellen","bool",false],
["$I_HoeheSack","float",25.0],
["$I_HoeheRueckspuelung","float",2.0],
["$RS_Anzahl","integer",0],
["$Fuellstand","float",0.0],
// Zusätzlich
["$FuellstandNeu","float",0.0],
["$RS_AnzahlNeu","integer",0],
["$Warnung","bool",false],
//
["$Temp_Schwelle","float",0.0],
["$Temp_CResult","bool",false],
["$TimerStat","bool",false],
["$RS_Stat","bool",false],
["$Sperre_Aktiv","bool",false],
["$Sperrzeit_Gesamt","float",3.0],
["$Rueckspuelung_Neu","bool",false],
["$KonstTrue","bool",true],
["$KonstFalse","bool",false],
["$Konst0","float",0.0],
["$Konst1","float",1.0]
],
"Module": [
// Temperatur Glättung
["Lowpass","$I_Temp","$TempGeglaettet","$I_Glaettung"],
// Vergleich T aktuell < (T geglättet - DeltaT)
["Polynomial", "$Konst1", "$Temp_Schwelle",["$TempGeglaettet", "-$I_DeltaT"]],
["Comparator" , "$I_Temp" , "-$Temp_CResult" , "$Temp_Schwelle"],
// Rueckspuelung erkennen
["And",["$Temp_CResult","-$Sperre_Aktiv"], "$Rueckspuelung_Neu"],
["Polynomial", "$Konst1", "$Sperrzeit_Gesamt",["$I_RS_Dauer", "$I_Sperrzeit"]],
// Fuellstand neu berechnen und merken, wenn Rueckspuelung erkannt
["Polynomial", "$Konst1", "$FuellstandNeu",["$Fuellstand", "-$I_HoeheRueckspuelung"]],
["Latch","$FuellstandNeu","$Fuellstand","$Rueckspuelung_Neu",0],
// Zaehler neu berechnen und merken, wenn Rueckspuelung erkannt
["Polynomial", "$Konst1", "$RS_AnzahlNeu",["$RS_Anzahl", "$Konst1"]],
["Latch","$RS_AnzahlNeu","$RS_Anzahl","$Rueckspuelung_Neu",0],
// Timer Sperre und Rückspülung
["Polynomial", "$Konst1", "$Sperrzeit_Gesamt",["$I_RS_Dauer", "$I_Sperrzeit"]],
["Monoflop","$Temp_CResult","$KonstFalse","$RS_Stat","$I_RS_Dauer",0],
["Monoflop","$Temp_CResult","$KonstFalse","$Sperre_Aktiv","$Sperrzeit_Gesamt",0]
// Trigger Nachfuellung => Fuellstand erhöhen
]
}
Code: Alles auswählen
//================ Schritt 6 =====================
//Trigger Nachfüllen => Fuellstand und Zähler Säcke neu berechnen
{
"Input": [
["Temperatur Rueckspülung","Temperatur gemessen an der Rückspülleitung","$I_Temp","a"],
["Delta T Rückspülung","Schwelle zur Erkennung Temperaturabfall bei Rückspülung","$I_DeltaT","c"],
["Zeitkonstante Glättung","Zeitkonstante der geglätteten Temperatur, gegen die Delta T gemessen wird","$I_Glaettung","c"],
["Dauer Rückspülung","Dauer für Ausgabe Rückspülung aktiv","$I_RS_Dauer","c"],
["Sperrzeit nach Rückspülung","Mindestzeit, bevor wieder eine Rückspülung erkannt wird","$I_Sperrzeit","c"],
["Trigger nachfüllen","Trigger für Nachfüllen je Sack","$I_TriggerNachfuellen","c"],
["Füllstandserhöhung je Sack","","$I_HoeheSack","c"],
["Füllstandsverringerung je Rückspülung","","$I_HoeheRueckspuelung","c"]
],
"Output": [
["Rückspülung Jahr","Anzahl Rückspülungen im aktuellen Jahr","$RS_Anzahl","c"],
["Füllstand aktuell","Aktueller Füllstand","$Fuellstand","c"],
["Warnung Füllstand","Trigger GA für Warnung","$Warnung","c"],
["Temperatur geglättet","Temperatur nach Tiefpassfilter","$TempGeglaettet","c"],
// Debug Ausgänge
["_Temp_CResult","Vergleich der Temperaturen","$Temp_CResult","c"],
["_And_Sperrre_Aktiv","Temperatur nach Tiefpassfilter","$Sperre_Aktiv","c"],
["_And_RS_Neu","Temperatur nach Tiefpassfilter","$Rueckspuelung_Neu","c"],
["_Rückspülung Aktiv","Rückspülung läuft","$RS_Stat","c"]
],
"Level": [
["$I_Temp","float",20.0],
["$TempGeglaettet","float",20.0],
["$I_DeltaT","float",3.0],
["$I_Sperrzeit","float",3.0],
// zusätzlich
["$I_RS_Dauer","float",3.0],
["$I_Glaettung","float",36000.0],
["$I_TriggerNachfuellen","bool",false],
["$I_HoeheSack","float",25.0],
["$I_HoeheRueckspuelung","float",2.0],
["$RS_Anzahl","integer",0],
["$RS_AnzahlNeu","integer",0],
["$Fuellstand","float",0.0],
["$FuellstandNeu","float",0.0],
// Zusätzlich
["$Saecke_Anzahl","integer",0],
["$Saecke_AnzahlNeu","integer",0],
["$Warnung","bool",false],
//
["$Temp_Schwelle","float",0.0],
["$Temp_CResult","bool",false],
["$TimerStat","bool",false],
["$RS_Stat","bool",false],
["$Sperre_Aktiv","bool",false],
["$Sperrzeit_Gesamt","float",3.0],
["$Rueckspuelung_Neu","bool",false],
["$KonstTrue","bool",true],
["$KonstFalse","bool",false],
["$Konst0","float",0.0],
["$Konst1","float",1.0]
],
"Module": [
// Temperatur Glättung
["Lowpass","$I_Temp","$TempGeglaettet","$I_Glaettung"],
// Vergleich T aktuell < (T geglättet - DeltaT)
["Polynomial", "$Konst1", "$Temp_Schwelle",["$TempGeglaettet", "-$I_DeltaT"]],
["Comparator" , "$I_Temp" , "-$Temp_CResult" , "$Temp_Schwelle"],
// Rueckspuelung erkennen
["And",["$Temp_CResult","-$Sperre_Aktiv"], "$Rueckspuelung_Neu"],
["Polynomial", "$Konst1", "$Sperrzeit_Gesamt",["$I_RS_Dauer", "$I_Sperrzeit"]],
// Fuellstand neu berechnen und merken, wenn Rueckspuelung erkannt
["Polynomial", "$Konst1", "$FuellstandNeu",["$Fuellstand", "-$I_HoeheRueckspuelung"]],
["Latch","$FuellstandNeu","$Fuellstand","$Rueckspuelung_Neu",0],
// Zaehler neu berechnen und merken, wenn Rueckspuelung erkannt
["Polynomial", "$Konst1", "$RS_AnzahlNeu",["$RS_Anzahl", "$Konst1"]],
["Latch","$RS_AnzahlNeu","$RS_Anzahl","$Rueckspuelung_Neu",0],
// Timer Sperre und Rückspülung
["Polynomial", "$Konst1", "$Sperrzeit_Gesamt",["$I_RS_Dauer", "$I_Sperrzeit"]],
["Monoflop","$Temp_CResult","$KonstFalse","$RS_Stat","$I_RS_Dauer",0],
["Monoflop","$Temp_CResult","$KonstFalse","$Sperre_Aktiv","$Sperrzeit_Gesamt",0],
// Trigger Nachfuellung => Fuellstand + Sackanzahl erhöhen
["Polynomial", "$Konst1", "$Saecke_AnzahlNeu",["$Saecke_Anzahl", "$Konst1"]],
["Latch","$Saecke_AnzahlNeu","$Saecke_Anzahl","$I_TriggerNachfuellen",0],
["Polynomial", "$Konst1", "$FuellstandNeu",["$Fuellstand", "$I_HoeheSack"]],
["Latch","$FuellstandNeu","$Fuellstand","$I_TriggerNachfuellen",0],
// Triggereingang auf False setzen
["Multiplexer",["$I_TriggerNachfuellen","$KonstFalse"],"$I_TriggerNachfuellen","$I_TriggerNachfuellen"],
]
}
Code: Alles auswählen
//================ Schritt 7 =====================
//Aufräumen + Jahresreset + Output Saecke
{
"Input": [
["Temperatur Rueckspülung","Temperatur gemessen an der Rückspülleitung","$I_Temp","a"],
["Zeitkonstante Glättung","Zeitkonstante der geglätteten Temperatur, gegen die Delta T gemessen wird","$I_Glaettung","c"],
["Delta T Rückspülung","Schwelle zur Erkennung Temperaturabfall bei Rückspülung","$I_DeltaT","c"],
["Dauer Rückspülung","Dauer für Ausgabe Rückspülung aktiv","$I_RS_Dauer","c"],
["Sperrzeit nach Rückspülung","Mindestzeit, bevor wieder eine Rückspülung erkannt wird","$I_Sperrzeit","c"],
["Füllstandsverringerung je Rückspülung","","$I_HoeheRueckspuelung","c"],
["Trigger nachfüllen","Trigger für Nachfüllen je Sack","$I_TriggerNachfuellen","c"],
["Füllstandserhöhung je Sack","","$I_HoeheSack","c"]
],
"Output": [
["Rückspülung Jahr","Anzahl Rückspülungen im aktuellen Jahr","$RS_Anzahl","c"],
["Rückspülung Aktiv","Rückspülung läuft","$RS_Stat?","c"],
["Füllstand aktuell","Aktueller Füllstand","$Fuellstand","c"],
["Säcke Jahr","Anzahl der nachgefüllten Säcke im laufenden Jahr","$Saecke_Anzahl","c"],
["Warnung Füllstand","Trigger GA für Warnung","$Warnung","c"],
["Temperatur geglättet","Temperatur nach Tiefpassfilter","$TempGeglaettet?","c"]
//["_And_Sperrre_Aktiv","Temperatur nach Tiefpassfilter","$Sperre_Aktiv","c"],
// Debug Ausgänge
//["_Temp_CResult","Vergleich der Temperaturen","$Temp_CResult","c"],
//["_And_RS_Neu","Temperatur nach Tiefpassfilter","$Rueckspuelung_Neu","c"],
],
"Level": [
["$I_Temp","float",20.0],
["$TempGeglaettet","float",20.0],
["$I_DeltaT","float",3.0],
["$I_Sperrzeit","float",3.0],
// zusätzlich
["$I_RS_Dauer","float",3.0],
["$I_Glaettung","float",36000.0],
["$I_TriggerNachfuellen","bool",false],
["$I_HoeheSack","float",25.0],
["$I_HoeheRueckspuelung","float",2.0],
["$RS_Anzahl","integer",0],
["$RS_AnzahlNeu","integer",0],
["$Fuellstand","float",0.0],
["$FuellstandNeu","float",0.0],
["$Saecke_Anzahl","integer",0],
["$Saecke_AnzahlNeu","integer",0],
// Zusätzlich
["$ResetJahr","string","1 0 0 1 1 *"],
["$ResetJahrTrigger","bool",false],
["$Warnung","bool",false],
//
["$Temp_Schwelle","float",0.0],
["$Temp_CResult","bool",false],
["$TimerStat","bool",false],
["$RS_Stat","bool",false],
["$Sperre_Aktiv","bool",false],
["$Sperrzeit_Gesamt","float",3.0],
["$Rueckspuelung_Neu","bool",false],
["$KonstTrue","bool",true],
["$KonstFalse","bool",false],
["$Konst0","float",0.0],
["$Konst1","float",1.0]
],
"Module": [
["Cron","$KonstTrue","$ResetJahrTrigger",0,"$ResetJahr"],
// Temperatur Glättung
["Lowpass","$I_Temp","$TempGeglaettet","$I_Glaettung"],
// Vergleich T aktuell < (T geglättet - DeltaT)
["Polynomial", "$Konst1", "$Temp_Schwelle",["$TempGeglaettet", "-$I_DeltaT"]],
["Comparator" , "$I_Temp" , "-$Temp_CResult" , "$Temp_Schwelle"],
// Rueckspuelung erkennen
["And",["$Temp_CResult","-$Sperre_Aktiv"], "$Rueckspuelung_Neu"],
["Polynomial", "$Konst1", "$Sperrzeit_Gesamt",["$I_RS_Dauer", "$I_Sperrzeit"]],
// Fuellstand neu berechnen und merken, wenn Rueckspuelung erkannt
["Polynomial", "$Konst1", "$FuellstandNeu",["$Fuellstand", "-$I_HoeheRueckspuelung"]],
["Latch","$FuellstandNeu","$Fuellstand","$Rueckspuelung_Neu",0],
// Zaehler neu berechnen und merken, wenn Rueckspuelung erkannt
["Polynomial", "$Konst1", "$RS_AnzahlNeu",["$RS_Anzahl", "$Konst1"]],
["Latch","$RS_AnzahlNeu","$RS_Anzahl","$Rueckspuelung_Neu",0],
// Timer Sperre und Rückspülung
["Polynomial", "$Konst1", "$Sperrzeit_Gesamt",["$I_RS_Dauer", "$I_Sperrzeit"]],
["Monoflop","$Rueckspuelung_Neu","$KonstFalse","$RS_Stat","$I_RS_Dauer",0],
["Monoflop","$Rueckspuelung_Neu","$KonstFalse","$Sperre_Aktiv","$Sperrzeit_Gesamt",0],
// Trigger Nachfuellung => Fuellstand + Sackanzahl erhöhen
["Polynomial", "$Konst1", "$Saecke_AnzahlNeu",["$Saecke_Anzahl", "$Konst1"]],
["Latch","$Saecke_AnzahlNeu","$Saecke_Anzahl","$I_TriggerNachfuellen",0],
["Polynomial", "$Konst1", "$FuellstandNeu",["$Fuellstand", "$I_HoeheSack"]],
["Latch","$FuellstandNeu","$Fuellstand","$I_TriggerNachfuellen",0],
// Triggereingang auf False setzen
["Multiplexer",["$I_TriggerNachfuellen","$KonstFalse"],"$I_TriggerNachfuellen","$I_TriggerNachfuellen"],
// Trigger Reset Jahr => Anzahl Rueckspuelungen auf 0 setzen
["Latch","$Konst0","$RS_Anzahl","$ResetJahrTrigger",0],
["Latch","$Konst0","$Saecke_Anzahl","$ResetJahrTrigger",0]
]
}