Seite 1 von 1

[v1.6 IP1] Custom-Logik zeigt kein Error, kann aber nicht gespeichert werden

Verfasst: Mi Jul 29, 2020 10:29 am
von Robosoc
Wenn ich folgenden Code als nagelneue Customlogik anlege, kann ich das Modul nicht speichern. Beim Klick auf die Diskette passiert einfach nichts...Aber andere Logikzellen kann ich problemlos bedienen (Löschen, Aktivieren/Deaktivierien,...). Die Seite ist also nicht abgestürzt.

Ich schließe nicht aus, dass ich noch einen Fehler im Code habe, aber dann müsste ja zumindest ein Error entstehen.

Code: Alles auswählen

{
    "Level": [
        ["$Manuell", "bool", false],
		["$Sonne", "bool", false],
		["$t_Kollektor", "float", 56.0],
		["$t_VL_pr", "float", 50.0],
		["$t_RL_pr", "float", 50.0],
		["$t_VL_se", "float", 50.0],
		["$t_RL_se", "float", 50.0],
        ["$Solar_Freigabe", "bool", false],
        ["$Grenze_Kollektor_aus", "float", 48],
        ["$Grenze_Kollektor_ein", "float", 53],
        ["$Pufferspeicher_oben", "float", 50.0],
		["$Pufferspeicher_unten", "float", 50.0],
		["$Temperaturkoeffizient_VLpr_Puffer_oben", "float", 1.0],
		["$Temperaturkoeffizient_VLpr_Puffer_unten", "float", 1.0],
        ["$Koeff_VLpr", "float", 1.15],
		["$VLpr_gt_oben", "bool", false],
        ["$VLpr_gt_unten", "bool", false],
        ["$Solarpumpe", "bool", false],
        ["$Pufferpumpe", "bool", false],
		["$Energie_Ertrag", "float", 0.0],
		["$Betriebsstunden_Solarpumpe", "float", 0.0],
		["$Betriebsstunden_Pufferpumpe", "float", 0.0],
		["$AnstelleNull", "float", 0.1]
	],
	"Input": [
	    ["Manuelle Steuerung","Manuelle Steuerung beider Pumpen (Zwangssteuerung)","$Manuell","c"],
		["Sonne","Wird Sonnenschein erkannt","$Sonne","u"],
		["Temp Kollektor","Temperatur des Kollektors","$t_Kollektor","u"],
		["Untere Grenze Kollektor","Ausschalttemperator Kollektor","$Grenze_Kollektor_aus","u"],
		["Obere Grenze Kollektor","Einschaltgrenze Kollektor","$Grenze_Kollektor_ein","u"],
		["VL Primär","VL der Solaranlage primär","$t_VL_pr","u"],
		["RL Primär","RL der Solaranlage primär","$t_RL_pr","u"],
		["VL Sekundär","VL der Solaranlage sekundär","$t_VL_se","u"],
		["RL Sekundär","RL der Solaranlage sekundär","$t_RL_se","u"],
		["Speicher oben","","$Pufferspeicher_oben","u"],
		["Speicher unten","","$Pufferspeicher_unten","u"],
		["Koeff VLpr","Koeffizient für Dach Temp","$Koeff_VLpr","u"]
    ],
	"Output": [
	    ["Solarfreigabe","Freigabe der Solaranlage","$Solar_Freigabe","c"],
		["Solarpumpe","","$Solarpumpe","c"],
		["Pufferpumpe","","$Pufferpumpe","c"],
		["Energie Ertrag","","$Energie_Ertrag","c"],
		["Beitriebsstunden Solarpumpe","","$Betriebsstunden_Solarpumpe","c"],
		["Beitriebsstunden Pufferpumpe","","$Betriebsstunden_Pufferpumpe","c"],
		["pufferspeicher-oben", "","$Pufferspeicher_oben","c"]
    ],
    "Module": [
        ["Comparator" , "$t_Kollektor" , "$Solar_Freigabe" , ["$Grenze_Kollektor_aus" , "$Grenze_Kollektor_ein"] ],
		["Or" , ["$Sonne" , "$Solar_Freigabe"] , "$Solarpumpe"],
		["Latch","$Manuell","$Solarpumpe","$Manuell",3],
		["Multiplexer",["$AnstelleNull"],"$Pufferspeicher_oben","$Pufferspeicher_oben"],
        ["Ratio" , "$t_VL_pr" , "$Temperaturkoeffizient_VLpr_Puffer_oben" , "$Pufferspeicher_oben"],
        ["Comparator" , "$Temperaturkoeffizient_VLpr_Puffer_oben" , "$VLpr_gt_oben" , "$Koeff_VLpr"],
        ["Ratio" , "$t_VL_pr" , "$Temperaturkoeffizient_VLpr_Puffer_unten" , "$Pufferspeicher_unten"],
        ["Comparator" , "$Temperaturkoeffizient_VLpr_Puffer_unten" , "$VLpr_gt_unten" , "$Koeff_VLpr"],
		["Or" , ["$VLpr_gt_oben" , "$VLpr_gt_unten"] , "$Pufferpumpe"],
		["Latch","$Manuell","$Pufferpumpe","$Manuell",3]
    ]
}
Vielleicht kann jemand den Code mal eben in der 1.6 RC2 reinschubsen und prüfen ob das Problem da dann auch existiert.

Re: [v1.6 IP1] Custom-Logik zeigt kein Error, kann aber nicht gespeichert werden

Verfasst: Mi Jul 29, 2020 10:34 am
von Robosoc
Nur noch ein Hinweis: Meine Vermutung zur Ursache geht in die Richtung, dass der Multiplexer als Selektor einen float-Wert bekommt. Mir war bewusst, dass dies problematisch sein könnte, ich wollte es lediglich test.

Ein zweiter Grund könnte sein, dass ich im Multiplexer lediglich einen Rückgabewert angelegt habe, was ja keinen Sinn macht, weil der dann immer verwendet wird...

Ich teste das selber noch weiter, aber für ElabNet soll das hier lediglich ein Hinweis sein, dass das was ich hier erzeugt habe zu einem scheinbar undefinierten Zustand führt.

Re: [v1.6 IP1] Custom-Logik zeigt kein Error, kann aber nicht gespeichert werden

Verfasst: Mi Jul 29, 2020 10:41 am
von Robosoc
Okay am Multiplexer liegt es nicht, wenn ich den ändere oder gar auskommentiere, speichert die Logik noch immer nicht.

Re: [v1.6 IP1] Custom-Logik zeigt kein Error, kann aber nicht gespeichert werden

Verfasst: Mi Jul 29, 2020 10:59 am
von Robosoc
Neue Vermutung: Wahrscheinlich liegt es daran, dass ich eine Variable in Level sowohl in Input, als auch als Output genutzt habe. Seit ich das entdeckt und geändert habe, kann ich die Logik speichern.

Der Multiplexer funktioniert dann auch, trotz des float auf dem Integer-Eingang. Da ich ja lediglich die 0 ausschließen will und mein Prozess in der Regel mit Werten deutlich über 30 arbeiten soll, reicht mir die interne Umsetzung von Float auf Integer (es könnte ja sonst bei Werten nahe 0 zu Problemen kommen).

Re: [v1.6 IP1] Custom-Logik zeigt kein Error, kann aber nicht gespeichert werden

Verfasst: Mo Aug 03, 2020 1:05 pm
von Robosoc
Ich habe hier einiges an Zeit investiert und würde mich freuen, wenn das nicht verloren geht. Wollt oder könnt Ihr dem Thema eine WD-Nummer verpassen? Dann findet man es auch in einem halben Jahr oder wann auch immer ihr das Error-Handling im KNX-Editor angeht auch wieder.

Zussamenfassung:
Wenn der Anwender den Fehler macht ein Level sowohl als Input als auch als Output zu verwenden, dann führt das scheinbar dazu, dass die Logikzelle oder Error oder oder Hinweis einfach nicht speichert. Bei mir wirkte es so, als würde der Speicher-Button einfach funktionsfrei sein.

Re: [v1.6 IP1] Custom-Logik zeigt kein Error, kann aber nicht gespeichert werden

Verfasst: Mo Aug 03, 2020 2:39 pm
von Dragonos2000
Zumindest aus der jüngeren Vergangenheit kenne ich ein Problem, dass Du denselben Level nicht sowohl als Input, als auch als Output definieren darfst. Ist wohl immer noch so und deine gelb hinterlegte Vermutung richtig.