Cześć.
W pierwszych słowach pragnę Ci podziękować za poruszenie tematu programowania sterowników PLC.
Osobiście poleciłbym Ci język FBD (Function Block Diagram) zamiast ST, czyli w skrócie bloczki. Dlaczego?
Ludzie są głównie wzrokowcami, zatem obraz kilku bloczków jest łatwiej przyswoić i przeanalizować niż obraz kodu tekstowego napisanego w kilku linijkach. Ponadto w ST musisz pamiętaćo deklaracjach, połączeniach, funkcjach, itp., natomist FBD realizuje część kodu za Ciebie.
Z Twojego opisu wynika, że system ma realizować 4 stany (otwieranie, stop_otwieranie, zamykanie, stop_zamykanie) po każdorazowym kliknięciu.
Można użyć np. licznika od 0 do 3. Wejście licznika poprzedzone bloczkiem wykrywającym zbocze narastające, czyli po każdym kliknięciu licznik zwiększa wartość o 1 do wartości 3. Na wejście resetujące licznik podaj zależność, gdy wyjście licznika równe_większe 4. W ten sposób licznik zacznie od 0.
Poniżej prezentuje prosty sytem napisany w FBD w środowisku CoDeSys 2.3.
Pozdrawiam, Andrzej