Norma IEC-61131-3 definiuje typy języków: graficzne: schematów drabinkowych LD, schematów blokowych FBD, tekstowe: lista instrukcji IL, tekst strukturalny ST, grafów: graf funkcji sekwencyjnych SFC, graf przepływowy FC. Język listy instrukcji IL - jest to zapis symboliczny, stanowiący ciąg kolejno ułożonych jedna pod drugą instrukcji (rozkazów). Jest to zapis bardziej zwarty operujący na skrótach literowych symbolizujących np: wejścia/wyjścia sterownika, zmienne wewnętrzne, operacje logiczne i matematyczne oraz inne bloki funkcyjne. 1
Budowa i sposób zapisu rozkazów IL Rozkaz - jest najmniejszą jednostką programu i składa się z operacji i operandu. Operacja określa rodzaj czynności, jaka w danym rozkazie ma być wykonana, natomiast operand składa się z oznaczenia i parametru. Oznaczeniem jest skrót literowy określonej zmiennej binarnej, rejestru lub innego bloku funkcyjnego, a parametrem jest adres zmiennej (zmiennych) podlegającej danej operacji w bieżącym rozkazie, wykonywanego przez sterownik programu sterującego. Użycie Listy przyporządkowującej 2
Stos - stanowi specyficzny sposób organizacji przechowywania danych. Podstawową zasadą wykorzystania stosu jest zdejmowanie (Pop) ze stosu danych w odwrotnej kolejności do ich układania (Push). Praktycznie każda operacja logiczna i blok funkcyjny w języku IL są bezpośrednio związane są z funkcją STOS-u. Stos o wymiarze 9 1 bitów 3
Rozkazy oprogramowania STEP-7, ISaGraf można podzielić na dwie zasadnicze grupy: 1. rozkazy, których wykonanie jest niezależne od aktualnej wartości pierwszego (najwyższego) bitu stosu oraz 2. rozkazy, których realizacja jest uzależniona od aktualnej wartości pierwszego bitu położonego na stosie. Warunkiem wykonania tych operacji jest to, by wartość tego bitu była równa 1. Mnemoniki rozkazów w języku IL mogą mieć inną postać niż w innych językach (np. LD lub FBD) Instrukcje typu BOOLEAN 4
Rozkazy: ładuj, iloczyn i suma logiczna 5
Rozkazy: iloczyn i suma logiczna na dwóch pierwszych bitach wierzchołka stosu 6
Rozkazy: negacja, wykrycie zbocza opadającego lub narastającego 7
Przykład : 1. LD I 0.0 2. LD I 0.1 3. A I 0.2 4. OLD 5. = Q 0.3 W 5_2 Typy języków programowania sterowników PLC (zdefiniowane w IEC-61131) 8
Przykładowe zastosowania w zadaniach sterowania procesem przemysłowym Sterowanie silnikiem elektrycznym z samopodtrzymaniem Silnik jest włączany jednym monostabilnym przyciskiem załączającym S1 na pulpicie sterującym i pracuje bez względu na stan przycisku S1. Stan pracy silnika sygnalizowany jest na pulpicie sterującym optycznie, poprzez użyte lampki kontrolne: H1 - włączony; H2 - wyłączony. Silnik jest dodatkowo zabezpieczony przed przeciążeniem przez użycie przekaźnika termicznego F3. Wyłączanie silnika - przycisk S2 Po naciśnięciu przycisku załączającego S1 następuje włączenie stycznika K1, którego styki robocze załączają silnik elektryczny. Gaśnie lampka kontrolna H2 a zapala się H1. Silnik pracuje i jest dodatkowo kontrolowany przez styk przekaźnika termicznego - F3. Po naciśnięciu przycisku S2 następuje wyłączenie K1 (w konsekwencji zatrzymanie silnika) i zapalenie H2. To samo nastąpi przy wcześniejszym rozwarciu styku F3. 9
10
Proces mieszania: Zrealizować układ sterowania procesem mieszania materiałów sypkich. Napięcie zasilania układów we/wy wynosi 24 VDC. Tabela przyporządkowująca sygnały we/wy projekt miesz słownik konfigurator we/wy. Schemat funkcjonalny 11
Opis działania układu Układ jest włączany przyciskiem Start i realizuje jednorazowy proces mieszania materiałów sypkich pochodzących z zbiorników A i B. Proces odbywa się w zbiorniku głównym C. Warunkiem rozpoczęcia procesu jest stan: zbiorniki A i B pełne (wejścia CZ1=1, CZ2=1) oraz zbiornik C pusty (wejście CP=0). W przypadku, gdy sterownik otrzyma od czujników sygnał braku choćby jednego materiału lub obecność w C, następuje włączenie lampki sygnalizującej awarię układu (wyjście alarm=1) oraz nie istnieje możliwość załączenia procesu mieszania. Sygnalizacja awarii wyłączy się po uzupełnieniu brakującego materiału (lub opróżnieniu zbiornika C) i wówczas układ jest gotowy do pracy po ponownym załączeniu przyciskiem Start. Układ można w każdej chwili wyłączyć za pomocą przycisku Stop. Ze względów bezpieczeństwa sterownik współpracuje z czujnikiem termicznym CT umieszczonym w silniku obracającym mieszadło. Ponadto wejście diagnostyczne WD sygnalizuje awarię, gdy M=1 silnik załączony przez sterownik. 12
Algorytm procesu 1 Proces przygotowany 4 T2>5min i not(cz1 lub CZ2) Start 5 Alarm zbiornik A lub B pusty 3 2 Napełnianie mieszalnika 3 CP Praca mieszalnika Stop 6 Alarm silnik lub mieszadło T1>20min 4 Wysyp mieszanki T2>5min i (CZ1 i CZ2) 1 Program w języku IL projekt miesz w ISaGraf. 7 1 Proces zatrzymany CT i not WD i CZ1 i CZ2 13
14
15
Język strukturalny ST Język strukturalny należy do grupy języków tekstowych. Podstawowymi elementami tego języka są wyrażenia i polecenia. Języka ST użyto do przedstawienia w postaci tekstowej zdefiniowanych w normie standardowych funkcji i bloków funkcyjnych. Wyrażenie (expression) - stanowi element języka, który z chwilą wykonania dostarcza wartość odpowiadającą jednemu z typów danych zdefiniowanych w IEC-61131. Wyrażenie składa się z operatorów i operandów. Operandem może być zmienna, stała, wywoływana funkcja lub inne wyrażenie. Obliczanie wartości wyrażenia polega na stosowaniu operatorów do operandów według kolejności odpowiadającej miejscu w tej tabeli (pozycja 1 najwyższy priorytet, pozycja 17 - najniższy). Operatory o wyższym priorytecie są wykonywane przed operatorami o priorytetach niższych. Operatory posiadające ten sam priorytet (operatory umieszczone w jednym wierszu tablicy) wykonywane są w kolejności występowania w wyrażeniu, tzn. poczynając od lewej do prawej strony. 16
Tab. 5.1. Operatory języka ST Reguły: 1. Jeżeli operator posiada dwa operandy, to operand z lewej strony jest obliczany najpierw, np. SIN(A)*COS(B) 2. Wartości wyrażeń logicznych mogą być obliczane tylko w stopniu koniecznym do określenia wyniku końcowego, np. jeżeli w trakcie obliczania wartości logicznej wyrażenia (A>B) & (C<D) okaże się, że A<=B, to tylko wyrażenie (A>B) będzie sprawdzane, ponieważ wynik i tak będzie równy O, bez względu na wynik sprawdzenia wyrażenia (C<D). Operator potęgowania ** powinien działać w ten sposób, by wynik obliczenia wyrażenia A**B był taki sam, jak wynik wyrażenia EXP(B*LN(A)). 17
Polecenia - Tab. 5.2 zawiera listę poleceń języka ST. Polecenie należy zakończyć znakiem średnika (;): Przypisanie - zastępuje wartość bieżącą zmiennej (pojedynczej lub wieloelementowej) przez wynik obliczenia wyrażenia. Składa się ono z nazwy zmiennej, operatora przypisania := oraz wyrażenia. Blok funkcyjny, funkcja - wywołanie odbywa się na drodze wprowadzenia do wyrażenia nazwy funkcji z listą argumentów umieszczoną w nawiasach. Powrót z funkcji lub bloku funkcyjnego następuje po dojściu do ich fizycznego końca albo przez polecenie RETURN, które jest zwykle wynikiem wykonania polecenia IF. Wyboru: IF oraz CASE - umożliwiają wykonanie jednego polecenia (lub grupy poleceń) w zależności od spełnienia określonego warunku. Pętla - polecenia umożliwiające powtarzanie pewnych sekwencji poleceń w pętli. Jeżeli liczba iteracji (powtórzeń) jest znana, to wykorzystuje się polecenie FOR. W przeciwnym przypadku należy użyć poleceń WHILE lub REPEAT. 18
W 5_2 Typy języków programowania sterowników PLC (zdefiniowane w IEC-61131) Tabela 5.2. Lista poleceń ST 19
W poleceniu IF określona grupa poleceń będzie wykonana tylko w przypadku, gdy skojarzone z poleceniem wyrażenie logiczne przyjmie wartość 1. Jeżeli warunek nie jest spełniony, to albo nie jest wykonywane żadne polecenie albo wykonana jest grupa poleceń występujących po słowie kluczowym ELSE (lub słowie ELSEIF, jeśli skojarzony z nim warunek jest spełniony). Polecenie CASE zawiera wyrażenie typu INT stanowiące wybierak (selector) oraz listę grup poleceń, z których każda posiada swoją etykietę. Wykonana będzie ta grupa poleceń, która posiada etykietę odpowiadającą obliczonej wartości wybieraka. Jeżeli wartość wybieraka nie odpowiada żadnemu z podanych zakresów, to wykonana będzie sekwencja poleceń występujących po słowie ELSE, jeśli występuje ono w poleceniu CASE, a w przypadku jego braku nie będzie wykonane żadne polecenie. Polecenie FOR oznacza, że sekwencja poleceń do słowa kluczowego END_FOR będzie powtarzana wraz z odpowiednią modyfikacją zmiennej kontrolnej pętli. FOR powoduje zmianę wartości zmiennej kontrolnej od wartości początkowej (określonej na drodze podstawienia) do końcowej (wyrażenie za TO) zgodnie z określonym przyrostem (wyrażenie po BY). Wartością domyślną dla przyrostu jest 1. Testowanie warunku końca pętli odbywa się na początku każdej iteracji. Gdy wartość początkowa jest większa niż końcowa, to sekwencja poleceń w pętli nie będzie wykonana. 20
Polecenie WHILE powoduje powtarzanie sekwencji poleceń do słowa END_WH1LE dopóki skojarzone z nim wyrażenie logiczne jest prawdziwe. Jeżeli wartość początkowa tego wyrażenia jest fałszywa, to grupa poleceń nie będzie w ogóle wykonana. Polecenie REPEAT powoduje wykonanie sekwencji poleceń do słowa UNTIL zawierającego warunek logiczny, którego prawdziwość oznacza zakończenie pętli. Tak więc, w przeciwieństwie do pętli FOR oraz WHILE, tu sprawdzanie warunku zakończenia pętli następuje na końcu, co oznacza, że pętla ta jest wykonywana co najmniej jeden raz. EXIT - umożliwia wcześniejsze opuszczenie pętli, zanim zostanie spełniony warunek końca pętli. Jeśli polecenie EXIT jest umieszczone w pętlach zagnieżdżonych, to wyjście następuje tylko z tej pętli, w której ono się znajduje, tzn. sterowanie jest przekazywane do polecenia znajdującego się za pierwszym ogranicznikiem pętli (END_FOR, END_WHILE, END_REPEAT) występującym po poleceniu EXIT. 21