Sterowanie Programem
Przepływ i Wykonanie
Opanuj logiczny przepływ swojego programu. Od skoków warunkowych po narzędzia diagnostyczne w czasie rzeczywistym — zoptymalizuj strukturę wykonania swojego sterownika.
Czym są operacje sterowania programem w TIA Portal?
Operacje sterowania programem pozwalają na zmianę sekwencyjnej kolejności wykonywania sieci. Są używane do pomijania części kodu (Skoki), tworzenia złożonych rozgałęzień (Rozdzielacze) lub zarządzania wewnętrznym zachowaniem CPU (Stop, Watchdog, Pomiar czasu).
Instrukcje te są potężne, ale muszą być używane ostrożnie, szczególnie instrukcja WAIT, która blokuje cykl, lub skoki, które przy zbyt dużej liczbie mogą utrudnić debugowanie. TIA Portal oferuje również nowoczesne narzędzia do przechwytywania błędów lokalnie w każdym bloku.
Skoki i Przepływ
Instrukcje przekierowania programu
JMP / JMPN — Skoki warunkowe
JMPCo robi
JMP przerywa sekwencyjne wykonywanie i skacze do etykiety (LABEL), jeśli RLO wynosi 1. JMPN robi to samo, jeśli RLO wynosi 0.
Kiedy używać
Pominięcie sekcji kodu, która nie powinna być wykonywana w specyficznym trybie, lub tworzenie prostych pętli w LAD/FBD.
Porady Pro
Cel skoku (LABEL) musi znajdować się w tym samym bloku (FC lub FB).
Nie używaj skoków wstecz do tworzenia pętli bez warunku wyjścia, ponieważ ryzykujesz przekroczenie czasu cyklu.
W SCL używaj raczej struktur IF...THEN lub CASE...OF.
SWITCH — Rozdzielacz wieloprzypadkowy
SWITCHCo robi
Porównuje wartość wejściową z kilkoma wartościami docelowymi i skacze do sieci odpowiadającej pierwszemu sprawdzonemu przypadkowi. Graficzny odpowiednik Switch/Case.
Kiedy używać
Zarządzanie stanami maszyny (prosty Grafcet), wybór trybów pracy lub kierowanie części według kodu typu.
Porady Pro
Czystsze i bardziej czytelne niż seria komparatorów == połączonych szeregowo.
Użyj wejścia 'ELSE' do obsługi przypadków, gdy żadna wartość nie pasuje.
Idealne do struktur menu na HMI.
RET — Powrót
RETCo robi
Wymusza zakończenie wykonywania bieżącego bloku (FC/FB) i powraca do bloku wywołującego.
Kiedy używać
Wcześniejsze zakończenie funkcji, jeśli na początku bloku wykryto błąd lub jeśli warunek bezpieczeństwa nie został spełniony.
Porady Pro
Pomocne w optymalizacji czasu cyklu poprzez nieprzetwarzanie reszty kodu bez potrzeby.
Zachowaj czujność: wyjścia bloku, które nie zostały jeszcze przetworzone, zachowają swój ostatni stan.
W SCL używaj instrukcji RETURN;
Kontrola Runtime
Zarządzanie cyklem CPU i pomiary wydajności
RUNTIME — Pomiar czasu
RUNTIMECo robi
Mierzy czas wykonywania części programu lub całego bloku w mikrosekundach (µs).
Kiedy używać
Optymalizacja kodu, diagnozowanie ciężkich sieci lub obliczenia wydajności maszyny.
Porady Pro
Wywołaj RUNTIME raz, aby zainicjować pomiar, a drugi raz, aby uzyskać wynik.
Użyj typu danych LReal do przechowywania wyniku pomiaru.
Przydatne do sprawdzania, czy złożona pętla FOR nie zbliża się do limitów watchdog.
WAIT — Stałe opóźnienie
WAITCo robi
Zawiesza wykonywanie programu na określony czas w mikrosekundach. UWAGA: w przeciwieństwie do Timera, WAIT całkowicie blokuje cykl CPU.
Kiedy używać
Oczekiwanie kilku mikrosekund na ustabilizowanie sygnału elektronicznego na bardzo szybkiej karcie I/O.
Porady Pro
Używaj z umiarem. Zbyt długi WAIT wywoła błąd Watchdog i zatrzyma PLC.
Nigdy nie używaj do opóźnień procesowych (sekundy/minuty); do tego używaj Timerów TON.
Dostępne tylko na S7-1500.
STP — Stop CPU
STPCo robi
Wymusza przejście CPU w tryb STOP.
Kiedy używać
Stan błędu krytycznego, w którym maszyna nie powinna być już sterowana, lub test diagnostyczny.
Porady Pro
Zatrzymanie jest natychmiastowe. Do ponownego uruchomienia wymagana będzie interwencja ręczna (HMI lub przełącznik).
W miarę możliwości preferuj zarządzanie alarmami z bezpiecznym stanem zastępczym zamiast gwałtownego zatrzymania CPU.
Pomocne w projektach uruchomieniowych do zrobienia 'brejka' w konkretnym miejscu.
Obsługa Błędów
Lokalne przechwytywanie błędów wykonania
GET_ERROR / GET_ERR_ID
Co robią
Pobierają informacje o pierwszym błędzie, który wystąpił wewnątrz bloku (np. dostęp do nieistniejącego indeksu tablicy).
Kiedy używać
Uczynienie bloków odpornymi poprzez przechwytywanie błędów programistycznych bez zatrzymywania PLC.
Porady Pro
GET_ERROR dostarcza szczegółową strukturę, GET_ERR_ID zwraca tylko numer błędu.
Umieść te instrukcje na końcu swoich krytycznych bloków.
Pozwala na stworzenie własnego dziennika błędów.
Skoki vs Struktury sterujące
Której metody użyć do przekierowania programu?
| Potrzebujesz... | Zalecana instrukcja | Dlaczego? |
|---|---|---|
| Prosty skok w Ladder | JMP | Pominąć sieć |
| Złożony wybór wielokrotny | SWITCH / CASE | Czytelniejsze niż 10 JMP |
| Mierzyć czas wewnętrzny | RUNTIME | Optymalizacja wydajności |
| Natychmiastowe zatrzymanie | STP | Błąd krytyczny sprzętowy |
| Bardzo krótkie czekanie | WAIT | Stabilizacja elektroniczna |
| Lokalna diagnostyka | GET_ERROR | Uniknięcie STOPu CPU |
Często Zadawane Pytania
Jaka jest różnica między JMP a JMP_LIST?
JMP to pojedynczy skok do celu. JMP_LIST pozwala zdefiniować listę celów. W zależności od indeksu numerycznego, program skacze do 1., 2. lub N-tej etykiety z listy.
Czy instrukcja WAIT jest niebezpieczna?
Tak, jeśli jest niewłaściwie użyta. Zawiesza ona wykonywanie CAŁEGO programu użytkownika. Jeśli suma Twoich WAITów i kodu przekroczy czas watchdog (często 150ms), CPU przejdzie w tryb STOP.
Jak zmierzyć całkowity czas cyklu PLC?
Do tego nie potrzebujesz instrukcji RUNTIME. Możesz odczytać tę informację bezpośrednio we właściwościach CPU online lub użyć zmiennych systemowych bloku OB1.
Gdzie umieszczać etykiety LABEL?
LABEL można umieścić na początku dowolnej sieci. W LAD pojawiają się one nad lewą szyną zasilającą. Nazwa etykiety musi być unikalna wewnątrz bloku.