Jak řešit dvojstisk/trojstisk tlačítka v prostředí Mosaic (strukturovaný text)?

<< < (2/2)

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