Najlepiej załącz fragment kodu, łatwiej będzie znaleźć rozwiązanie problemu.
Wrzucam moją implementację bloku CLICK_MODE.
W sekcji deklaracji zmiennych:
VAR
Light_1, Light_2, Light_3: Fb_LatchingRelay;
LongShort_IN80 : CLICK_MODE;
END_VAR
W sekcji kodu programu:
LongShort_IN80( IN := IN80 );
Light_1(xSwitch := LongShort_IN80.SINGLE OR VIS_SalonS1);
xOut_SalonS1 := Light_1.xActuator;
Light_2(xSwitch:=LongShort_IN80.DOUBLE OR VIS_SalonS2);
xOut_SalonS2 := Light_2.xActuator;
Light_3(xSwitch := LongShort_IN80.LONG OR VIS_SalonN1);
xOut_SalonN1 := Light_3.xActuator;
W pierwszej linii przypisuję do zmiennej typu CLICK_MODE wejście fizyczne, którego sposób wciśnięcia będzie rozpoznawany.
W trzeciej, szóstej i dziewiątej linii definiuję zmienne typu Fb_LatchingRelay przypisując im sposób wciśnięcia, które będzie je aktywowało, przy okazji OR-uję zmienne wykorzystane do sterowania z wizualizacji.
Zmienne xOut... w kolejnych liniach to nazwy fizycznych wyjść karty wago, które połączone są z przekaźnikami poszczególnych świateł.
W ten sposób poprawnie działa obsługa jednego wyłącznika w trybie pojedynczego kliknięcia, podwójnego kliknięcia i dłuższego przytrzymania.