Jak řešit dvojstisk/trojstisk tlačítka v prostředí Mosaic (strukturovaný text)?
Slavomír Skopalík:
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.
Citace: Pavel Urbancik 22.05.2012, 11:27
Ř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.
Navigace
[0] Index zpráv
[*] Předchozí strana