Hab's nicht früher geschafft, den Code einzustellen. Blockdiagramm kommt dann auch noch, sonst keine Change den Code zu verstehen, glaube ich:
Code: Alles auswählen
################################## Hysterese hinzugefügt
########### V2.0 ########### Sonnenwinkel / -richtung auf Standard LE Funktion für Logikeingänge reduziert
################################## Keine Verzögerung mehr für Sonnenhöhe und Sonnenwinkel
{
"Level": [
["$Null","integer",0],
["$Eins","integer",1],
["$Zwei","integer",2],
["$Sonne","bool",true],
["$Azi_in_range","bool",false],
["$Alti_in_range","bool",false],
["$S1_Pos","integer",50],
["$S2_Pos","integer",102],
["$PosC","integer",200],
["$PosD","integer",160],
["$PosDwn","integer",255],
["$PosUp","integer",0],
["$PrioPos","integer",0],
["$MaxPos_Tilted","integer",100],
["$Lux","float",0],
["$I_Lux_A","float",10000],
["$I_Lux_B","float",50000],
["$Hysteresis","float",1000],
["$Lux_A_Hysteresis","float",0],
["$Lux_B_Hysteresis","float",0],
["$I3_Light_CResult_A","bool",false],
["$I3_Light_CResult_B","bool",false],
["$I4_Day","bool",false],
["$I5_Auto","bool",false],
["$Shade","bool",false],
["$Sun_in_range_select","bool",false],
["$Lvl_1_select","integer",0],
["$Lvl_1_result","integer",0],
["$Lvl_1_delayed_result","integer",0],
["$Lvl_1_T1_trigger","bool",false],
["$Lvl_1_T2_trigger","bool",false],
["$Lvl_1_delayed_select","bool",false],
["$Sun_in_range_result","integer",0],
["$Holddown_up","integer",5],
["$Holddown_dn","integer",5],
["$Lvl_2_select","integer",0],
["$Lvl_2_result","integer",0],
["$Lvl_2_PrioResult","integer",0],
["$Lvl_3_select","integer",0],
["$Lvl_3_result","integer",0],
["$Lvl_3_result_MaxPos_Tilted","integer",0],
["$Lvl_4_select","integer",0],
["$Output_window","integer",0],
["$Presence","bool",false],
["$Heat","bool",false],
["$Prio_select","bool",false],
["$Open","bool",false],
["$Tilted","bool",false],
["$VAR<Inhibit?>","bool",false]
],
"Module": [
["Break",["$VAR<Inhibit?>"]],
["Polynomial","$Eins","$Lux_A_Hysteresis",["$I_Lux_A","-$Hysteresis"]],
["Polynomial","$Eins","$Lux_B_Hysteresis",["$I_Lux_B","-$Hysteresis"]],
["Comparator","$Lux","$I3_Light_CResult_A",["$I_Lux_A","$Lux_A_Hysteresis"]],
["Comparator","$Lux","$I3_Light_CResult_B",["$I_Lux_B","$Lux_B_Hysteresis"]],
["And",["$Sonne","$I3_Light_CResult_A"],"$Shade"],
["Polynomial","$Zwei","$Lvl_1_select",["$Shade","$I3_Light_CResult_B"]],
["Multiplexer",["$PosUp","$S1_Pos","$PosUp","$S2_Pos"],"$Lvl_1_result","$Lvl_1_select"],
["Comparator","$Lvl_1_delayed_result","$Lvl_1_T1_trigger","$Lvl_1_result"],
["Comparator","$Lvl_1_result","$Lvl_1_T2_trigger","$Lvl_1_delayed_result"],
["Monoflop","$Lvl_1_T1_trigger","$Lvl_1_T2_trigger","$Lvl_1_T1_trigger","$Holddown_up",3],
["Monoflop","$Lvl_1_T2_trigger","$Lvl_1_T1_trigger","$Lvl_1_T2_trigger","$Holddown_dn",3],
["Or",["$Lvl_1_T1_trigger","$Lvl_1_T2_trigger"],"$Lvl_1_delayed_select"],
["Multiplexer",["$Lvl_1_result","$Lvl_1_delayed_result"],"$Lvl_1_delayed_result","$Lvl_1_delayed_select"],
["And",["$Alti_in_range","$Azi_in_range"],"$Sun_in_range_select"],
["Multiplexer",["$Null","$Lvl_1_delayed_result"],"$Sun_in_range_result","$Sun_in_range_select"],
["Polynomial","$Zwei","$Lvl_2_select",["$Presence","$Heat"]],
["Multiplexer",["$Sun_in_range_result","$Sun_in_range_result","$PosC","$PosD"],"$Lvl_2_result","$Lvl_2_select"],
["Multiplexer",["$Lvl_2_result","$PrioPos"],"$Lvl_2_PrioResult","$Prio_select"],
["Polynomial","$Zwei","$Lvl_3_select",["$I5_Auto","$I4_Day"]],
["Multiplexer",["$PosDwn","$PosDwn","$PosUp","$Lvl_2_PrioResult"],"$Lvl_3_result","$Lvl_3_select"],
["Limiter","$Lvl_3_result","$Lvl_3_result_MaxPos_Tilted",0,["$Null", "$MaxPos_Tilted"]],
["Polynomial","$Zwei","$Lvl_4_select",["$Tilted","$Open"]],
["Multiplexer",["$Lvl_3_result","$Lvl_3_result_MaxPos_Tilted","$PosUp","$PosUp"],"$Output_window","$Lvl_4_select"]
],
"Input": [
["SonnenHoehe","Sonne: Höhe über Horizont","$Alti_in_range","c"],
["Sonnenrichtung","Sonne Kompassrichtung","$Azi_in_range","c"],
["Sonne","Eingang, ob Sonne scheint (fix auf true, wenn unbenutzt)","$Sonne","c"],
["Lux","Helligkeitseingang","$Lux","c"],
["LuxSchw1","Schwellwert für Behangposition 1","$I_Lux_A","u"],
["LuxSchw2","Schwellwert für Behangposition 2","$I_Lux_B","u"],
["Hysterese","Hysterese: Schwellwert - Hysterese","$Hysteresis","u"],
["HöheSchw1","Behangposition für Schwelle 1","$S1_Pos","u"],
["HöheSchw2","Behangposition für Schwelle 2","$S2_Pos","u"],
["Praesenz","Hitzeschutz steuern nach Anwesenheit","$Presence","c"],
["Hitzeschutz","Hitzeschutz auslösen","$Heat","c"],
["HitzePosAn","Behanghöhe für Hitzeschutz bei Anwesenheit","$PosD","u"],
["HitzePosAb","Behanghöhe für Hitzeschutz bei Abwesenheit","$PosC","u"],
["Tag/Nacht","Tag/Nacht Eingang","$I4_Day","c"],
["Beschatten","Beschattung aktivieren","$I5_Auto","c"],
["Gekippt","Fenster gekippt","$Tilted","c"],
["Geöffnet","Fenster geöffnet","$Open","c"],
["MaxPosGekippt","Begrenzung untere Behangstellung bei gekipptem Fenster","$MaxPos_Tilted","u"],
["DelayAuf","Verzögerungszeit beim Zurückfahren des Behangs","$Holddown_up","u"],
["DelayAb","Verzögerungszeit beim Ablassen des Behangs","$Holddown_dn","u"],
["Priorität","Übersteuert Beschattungs- und Hitzeschutzpositionen mit einer Prioritätsstellung","$Prio_select","c"],
["PrioPos","Höhe der Prioritätsstellung","$PrioPos","u"],
["Inhibit","INHIBIT","$VAR<Inhibit?>","u"]
],
"Output": [
["Pos_o_Fenster","Behangposition ohne Auswertung Fensterkontakte (Fassadensteuerung)","$Lvl_3_result","c"],
["Pos_m_Fenster","Behangposition mit Auswertung Fensterkontakte (Fenstersteuerung)","$Output_window","c"]
]
}