Seite 1 von 1

[v1.6 IP1] Division durch Null bei Customlogik trotz defaultWert für Nennervariable

Verfasst: Di Jul 28, 2020 8:13 pm
von Robosoc
Hallo @S. Kolbinger :

in folgendem Code werden beide Latch-Module korrekt ausgeführt.
Wenn ich aber auch nur eine der Zeilen dazwischen aktiviere (sind hier durch Auskommentieren deaktiviert), dann wirkt das zweite Latch-Modul nicht mehr! Das kann ich nicht nachvollziehen, daher tippe ich auf einen Bug. Schau Dir das bitte mal an. Zum testen einfach den ersten Eingang "Manuell" toggeln, dann sollten durch die Latch's zwei Ausgänge mit-toggeln:

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]
	],
	"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"]
    ],
    "Module": [
        	["Comparator" , "$t_Kollektor" , "$Solar_Freigabe" , ["$Grenze_Kollektor_aus" , "$Grenze_Kollektor_ein"] ],
		["Or" , ["$Sonne" , "$Solar_Freigabe"] , "$Solarpumpe"],
		["Latch","$Manuell","$Solarpumpe","$Manuell",3],
      	 	//["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]
    ]
}
Der Code an sich ist noch eine absolute Zwischenlösung, daher beschreibe ich ihn hier nicht weiter. Mir ist nur dieses Fehlverhalten gerade aufgefallen.

Re: [v1.6 IP] eventuell fehlverhalten bei zwei Latch auf gleichen Trigger

Verfasst: Di Jul 28, 2020 9:48 pm
von Robosoc
okay, ich muss es präzisieren...das Problem scheinen nicht die Latch-Zeilen zu sein, sondern die Ratio-Zeilen. Denn das Fehlverhalten entsteht nur, wenn mindestens eine der Ratio-Zeilen aktiv ist...

Re: [v1.6 IP] eventuell fehlverhalten bei zwei Latch auf gleichen Trigger

Verfasst: Di Jul 28, 2020 10:10 pm
von S. Kolbinger
Division durch 0 ???

Re: [v1.6 IP] eventuell fehlverhalten bei zwei Latch auf gleichen Trigger

Verfasst: Di Jul 28, 2020 10:11 pm
von Robosoc
Okay, habe das Problem gefunden...es ist kein Codefehler, sondern eine Division durch Null, die aber meines Erachtens Nur aufgrund eines Fehlers entsteht.

Der Eingang ‚Pufferspeicher-oben‘ soll = 50.0 sein, wenn der Wert nicht definiert ist (siehe Levels). Er wird momentan bei mir nicht beschrieben und der Dokmodus zeigt von Beginn an 0 an (nicht 50). Deshalb läuft der Code scheinbar ab diesem Modul dann vermutlich in einen Error und führt die nachfolgenden Zeilen nicht weiter aus.

Re: [v1.6 IP] eventuell fehlverhalten bei zwei Latch auf gleichen Trigger

Verfasst: Di Jul 28, 2020 10:14 pm
von Robosoc
S. Kolbinger hat geschrieben: Di Jul 28, 2020 10:10 pm Division durch 0 ???
Ja, hab ich auch gerade gesehen...hast recht. War dann naheliegend wo ich das Ratio als Ursache ausgemacht habe. Aber ich finde es ist trotzdem ein Fehler, weil der Level-Initialwert scheinbar missachtet wird, eventuell aber erst durch das aktivieren des Doktor Modus...das konnte ich Noch nicht testen.

Re: [v1.6 IP] Division durch Null bei Customlogik trotz defaultWert für Nennervariable

Verfasst: Di Jul 28, 2020 10:22 pm
von Robosoc
Passt dazu und ist auch noch offen
viewtopic.php?f=31&t=1455#p15136

Re: [v1.6 IP1] Division durch Null bei Customlogik trotz defaultWert für Nennervariable

Verfasst: Mi Jul 29, 2020 11:01 am
von Robosoc
Auch durch meine heutigen Tests würde ich am ehesten darauf schließen, dass das Problem in meinem Fall erst auftritt, wenn ich den Doktormodus starte und dieser dann mit 0 statt 50 arbeitet.

Re: [v1.6 IP1] Division durch Null bei Customlogik trotz defaultWert für Nennervariable

Verfasst: Mo Aug 03, 2020 1:00 pm
von Robosoc
@StefanW und @S. Kolbinger :

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?

Ich fasse noch einmal zusammen, was ich zumindest vermute:
Der Defaultwert eines Float-Inputs (und ggf. auch eines Integer-Inputs) wird im Doktormodus, wenn es seit dem Speichern der Logik noch keinen empfangenen Wert auf dem Eingang gibt, immer mit 0 beschrieben, egal welchen Wert man man im Code der Customlogik dieser Variablen in der Leveldeklaration gegeben hat.

Das ist meiner Ansicht nach ein Fehler und führt bei mir dazu, dass ein Ratio-Baustein eine Division durch 0 gemacht hat, was ich so nicht erwartet habe.

Re: [v1.6 IP1] Division durch Null bei Customlogik trotz defaultWert für Nennervariable

Verfasst: Mo Aug 03, 2020 2:47 pm
von Robert_Mini
Musst du für diesen Fall nicht den Startwert an der Oberfläche der Logik setzen?

Lg
Robert