Code: Alles auswählen
"Module": [
["Break",["$VAR<Inhibit?>"] ],
["BinaryMultiplexer",["$In1_","$In2_","$In3_","$In4_"],"$InStat"],
["Multiplexer",["$Out2_","$Out1_","$Out2_","$Out0_","$Out2_","$Out1_","$Out2_","$Out3_","$Out4_","$Out1_","$Out4_","$Out0_","$Out4_","$Out1_","$Out4_","$Out3_"],"$Out","$InStat"]
],
Zunächst werden mit dem BinaryMultiplexer alle möglichen Zustände der 4 Eingänge ($In1_ bis "$In4_) in einen Dezimalwert (als Integer) übersetzt. Bei 4 boolean Eingängen ergeben sich insgesamt 16 (2 hoch 4) Kombinationsmöglichkeiten.
1) FALSE (0) FALSE (0) FALSE (0) FALSE (0) => Binär 0000 = Dezimal 0
2) FALSE (0) FALSE (0) FALSE (0) TRUE (1) => Binär 0001 = Dezimal 1
3) FALSE (0) FALSE (0) FALSE (1) FALSE (0) => Binär 0010 = Dezimal 2
4) FALSE (0) FALSE (0) TRUE (1) TRUE (1) => Binär 0011 = Dezimal 3
5) FALSE (0) TRUE (1) FALSE (0) FALSE (0) => Binär 0100 = Dezimal 4
...
16) TRUE (1) TRUE (1) TRUE (1) TRUE (1) => Binär 1111 = Dezimal 15
Der Dezimalwert wird in die Ausgangs-Variable $InStat geschrieben.
$InStat ist dann der Eingang für den zweiten Baustein Multiplexer
Jedem möglichen Eingangswert (Zustand) 0-15 wird hier über die Variablen $Out0 bis $Out5 (die in der Variablen-Definition mit den Konstanten 0 bis 5 belegt wurden) ein Ausgang (der gewünschte Hausstatus) zugeordnet.
0 = $Out2_ => 2
1 = $Out1_ => 1
2 = $Out2_ => 2
3 = $Out0_ => 0
usw.,
Eigentlich ganz einfach und "logisch", wenn man mal dahinter gekommen ist
Wenn ich das richtig sehe, könnte man das aber statt in einer Customlogik auch mit den Standardbausteinen "Binärmultiplexer" und "Multiplexer" in zwei getrennten Logiken machen.