Fatek bez tajemnic cz. V – Programowanie krokowe

Programowanie krokowe jest niezastąpione tam, gdzie występują sekwencyjne układy sterowania. Umożliwia programiście szybsze pisanie programów i łatwiejszą diagnostykę – interesuje nas tylko obecnie wykonywany krok, nie musimy skupiać się na warunkach występujących w innych częściach programu. Dodatkową korzyścią takiej metody programowania jest dobra czytelność i łatwość przy edycji programu. Aplikacje sterujące, składające się z wielu sekwencyjnie wykonanych zadań, zazwyczaj są trudne w diagnostyce i wprowadzaniu zmian, gdy są oparte na klasycznym języku drabinkowym.

Podstawowym elementem programowania krokowego jest krok [STP] – interesuje nas warunek wejścia do kroku, następnie, gdy już w nim jesteśmy – to, co ma się w nim wykonać, a potem warunek przejścia do kolejnego kroku.

Aby dodać elementy języka krokowego do programu należy wybrać przycisk funkcje [F] i umieścić w obszarze programu, jak pokazano poniżej:

programowanie krokowe

Podstawowym elementem języka krokowego, jak już wspomniano, jest krok. Po wybraniu z funkcji zakładki programowanie krokowe i funkcji STP, pojawi nam się następujące okno dialogowe:

programowanie krokowe

W pole [S:] możemy wprowadzić numer kroku. Kroki początkowe, rozpoczynające sekwencję, numerowane są od S0 do S7. Po wybraniu tego kroku, funkcja zmieni nazwę na [STPI]:

Kroki kolejne numerowane są od S20-S999, oznaczane jako [STP]:

Aby przejść do danego kroku lub rozpocząć sekwencję poprzez wejście w krok inicjujący, należy wykorzystać funkcję [TO] i podać numer kroku, do którego będzie się odwoływać:

Przechodząc między krokami, można również wykorzystać funkcję [FROM] w połączeniu z funkcją [TO]:

Po dodaniu nowego kroku, po prawej stronie mamy dostępny tylko obszar (1), w którym umieszczamy poszczególne komendy do wykonania w danym kroku. Aby mieć dostęp do obszaru (2), w którym umieszczamy warunek przejścia do kolejnego kroku oraz funkcję [TO], należy linię pionową umieścić w obszarze kwadratu funkcji [STP]:

programowanie krokowe

W najprostszym układzie możemy utworzyć pojedynczą ścieżkę, z warunkami wejścia do poszczególnych kroków, komendami wykonywanymi w krokach oraz warunkami przejścia do kolejnego kroku. W bardziej zaawansowanych aplikacjach można zastosować rozejście selektywne, gdzie wychodząc z danego kroku możemy dać wybór ścieżki, którą wykona program. Alternatywnym rozwiązaniem jest skorzystanie z rozejścia równoległego, gdzie poszczególne ścieżki wykonują się w tym samym czasie. Przy zejściu równoległym program oczekuje na wykonanie wszystkich ścieżek i dopiero wtedy realizuje kolejne kroki:

Aby zrealizować ścieżki selektywne należy przy wyjściu z kroku zastosować co najmniej dwie funkcje [TO] wraz z odpowiednim warunkiem, a następnie można skorzystać z takiej samej ilości funkcji [FROM], co jednak w tym przypadku nie jest koniecznie:

programowanie krokowe

W przypadku ścieżki równoległej należy przy wyjściu z kroku zastosować co najmniej dwie funkcje [TO] wraz z odpowiednim warunkiem, jednakże łączącą linię pionową należy umieścić na funkcji [TO]. Pojawią się dwie pionowe kreski, jak pokazano poniżej. Następnie konieczne jest skorzystanie z takiej samej ilości funkcji [FROM]:

programowanie krokowe

Kroki nie muszą być wykonywane kolejno, po warunku przejścia można umieścić dowolny krok w tej samej lub innej pętli, jak pokazano poniżej:

programowanie krokowe

Pętla może działać w cyklu zamkniętym, wykonywać pojedynczy cykl lub można wykorzystać obie funkcje w programowaniu krokowym:

programowanie krokowe

Jak pokazano na poniższym obrazie, pojedynczą pętlę można rozbudować w znacznym stopniu w zależności od złożoności aplikacji:

programowanie krokowe

Część praktyczna

Wypróbujmy program realizujący sekwencyjną pracę manipulatora, którego szkic poglądowy przedstawiono na poniższym rysunku (gdzie: wyjścia Y0~Y3 – kierunki ruchu członów manipulatora, Y4 – zamknięcie chwytaka, X0~X3 – czujniki krańcowe ruchu).

Sekwencja ruchów:
– otwarcie chwytaka przy uruchomieniu programu
– ruch w prawo (Y1) do krańcówki X1
– opuszczenie chwytaka (Y3) do krańcówki X3
– odczekanie 2s
– zamknięcie chwytaka
– podniesienie chwytaka (Y2) do krańcówki X2
– ruch w lewo (Y0) do krańcówki X0
– otwarcie chwytaka
– odczekanie 2s
– rozpoczęcie cyklu od początku
programowanie krokowe

Rozwiązanie klasyczne tego zagadnienia wyglądałoby następująco:

programowanie krokowe

Wykorzystując programowanie krokowe, program realizujący ten algorytm może wyglądać następująco:

programowanie krokowe

Aby uzyskać więcej informacji na temat programowania krokowego polecamy skorzystać z instrukcji.

lub obejrzeć poniższy film:

Zapraszam