Pro vycestisk pouzivam tento kod:
Sv1On:=R112_WS1IN.BTN.UP1 or R112_WS2IN.BTN
.UP1 or R112_WS3IN.BTN
.UP1 or R112_WS4IN.BTN
.UP1;
// Postupne rozsvetceni sekci
R112.Svetlo1a.
BtnUp:=Sv1On;
if Sv1On and not R112.Svetlo1a.
Old_BtnUp then // Hack for positive edge on button
if R112.Svetlo1a.
OutputBool then
R112.Svetlo1b.
BtnUp:=true;
end_if;
if R112.Svetlo1b.
OutputBool then
R112.Svetlo1c.
BtnUp:=true;
end_if;
end_if;
Tento kod postupne (na kazdy stisk jedna sekce) rozvetcuje lustr o 3 sekcich.
Jinak v beznych PLC se na to pouziva prikaz "Positive edge", ale jeho pouziti u foxtrotu je trochu krkolomne, ale principialne mozne.
Řešil jsem stejný problém a napsal si vlastní funkci která rozlišuje držení, stisknutí a dvouklik.
Vyhodnocování krátkého a dlouhého stisku má taky celkem vtipný důsledek, protože musíme počkat až uživatel pustí tlačítko a tak si většina návštěv nedokáže rozsvítit :-)
Možná by stačilo poladit čas pro rozlišení, ale takto je to větší zábava.