KONFIGURACJA, ZMIENNE I SFC
W IEC 61131-3 wprowadzono też pojęcie konfiguracji. Termin ten można wyjaśnić w oparciu o model oprogramowania przedstawiony na rysunku 2. Przyjmuje się w nim, że program niezbędny do realizacji danego zadania sterowania jest specyficznym dla konkretnego systemu sterowania połączeniem wielu komponentów sprzętowych (m.in. jednostek przetwarzania oraz pamięci).
W obrębie w ten sposób rozumianej konfiguracji można wyróżnić zasoby, które realizują konkretne zadania. Te ostatnie odpowiadają za wykonanie programów oraz bloków funkcyjnych. W obrębie zasobu można zdefiniować kilka zadań, które są wykonywane okresowo lub w momencie wystąpienia sygnału wyzwalającego, na przykład zmiany wartości danej zmiennej.
Programy składają się z kolei z funkcji oraz bloków funkcyjnych napisanych w jednym z języków programowania znormalizowanych w IEC 61131-3. W normie określono też kilka typów zmiennych, które różnią się zasięgiem. Na przykład zmienne lokalne są dostępne tylko w obrębie jednostki organizacyjnej, w której zostały zadeklarowane.
Zmienne globalne z kolei służą do wymiany danych między różnymi jednostkami. Unika się w ten sposób błędów spowodowanych powtarzającymi się nazwami zmiennych. IEC 61131-3 obejmuje też przedstawienie sposobu tworzenia tzw. sekwencyjnych schematów funkcyjnych (Sequential Function Chart, SFC).
Służą one do graficznego przedstawiania algorytmu sterowania za pomocą oddzielnych kroków oraz przejść między nimi (rys. 3 a, b). Z tymi ostatnimi powiązane są warunki - jeżeli dany jest spełniony, następuje przełączenie z kroku bieżącego na następny. Każdy krok z kolei składa się z zestawu instrukcji zwanych akcjami. Kroki, warunki oraz akcje są implementowane w wybranym języku programowania.
Przykład deklaracji bloku funkcyjnegoFUNCTION_BLOCK Blok_funkcji Fragment programu w kodzie STl := 25; |
JĘZYKI PROGRAMOWANIA PLC
W IEC 61131-3 zdefiniowano cztery języki programowania sterowników (rys. 4), przy czym wyróżnić można tutaj dwie grupy - tekstowe oraz graficzne. Do pierwszej zaliczane są języki listy instrukcji (Instruction List, IL) oraz tekstu strukturalnego (Structured Text, ST). W grupie języków graficznych są natomiast języki schematów drabinkowych ( Ladder Diagram, LD) oraz schematów bloków funkcyjnych (Function Block Diagram, FBD).
Język listy instrukcji jest językiem niskiego poziomu i ma składnię podobną do języków typu asembler. Program w tym przypadku składa się z sekwencji rozkazów, z których każdy kolejny zaczyna się w nowej linii. Każda instrukcja składa się z operatora, który określa działanie do wykonania oraz operandu, czyli stałej lub zmiennej.
Przykładami operatorów są: LD, który ładuje operand, JMP, który wykonuje skok do etykiety o nazwie określonej operandem, CAL, który wywołuje blok funkcyjny o nazwie takiej jak operand tej instrukcji oraz RET realizujący powrót z wywołanego wcześniej bloku lub funkcji. Dostępne są też operatory arytmetyczne (ADD, SUB, MUL, DIV), porównania (GT, GE, EQ, NE, LE, LT) oraz logiczne (AND, OR, XOR, NOT).
Z kolei ST, drugi język typu tekstowego, jest językiem wysokiego poziomu. Jego składnia jest podobna do składni na przykład języków C lub Pascal. Jej podstawowymi elementami są wyrażenia oraz instrukcje, m.in. przypisania (:=), wyboru (IF, CASE), pętle (FOR - gdy liczba powtórzeń jest znana, WHILE oraz REPEAT - gdy liczba iteracji jest nieokreślona) oraz wywołania bloku funkcyjnego (listing 2). W wypadku języka tekstu strukturalnego w jednej linii można zamieścić kilka instrukcji, a każda z nich powinna być zakończona średnikiem.
GRAFICZNE JĘZYKI PROGRAMOWANIA
W językach zaliczanych do tej grupy algorytm sterowania implementowany jest z wykorzystaniem standardowych symboli graficznych. W drabinkowym, który jest jednym z najczęściej używanych i prawdopodobnie najlepiej znanych języków programowania sterowników programowalnych, symbole te umieszcza się w obwodach przypominających szczeble w schematach układów przekaźnikowych.
Są one z dwóch stron ograniczane przez szyny prądowe, a ich podstawowymi elementami są styki oraz cewki. Te pierwsze elementy przekazują do połączenia po prawej stronie styku stan z jego lewej strony, jednocześnie nie modyfikując wartości przypisanej im zmiennej. Zestandaryzowane typy styków to: normalnie otwarte, normalnie zamknięte oraz reagujące na zbocze narastające i opadające.
Cewki przekazują natomiast stan połączenia z lewej strony na prawą, równocześnie powodując zmianę wartości przypisanej im zmiennej. Dostępne są następujące znormalizowane typy cewek: normalne, negujące, ustawiające, kasujące oraz reagujące na zbocze narastające i opadające. Oprócz tego specyfikacja języka LD dopuszcza też stosowanie funkcji oraz bloków funkcyjnych (rys. 5).
Obwód może mieć przypisaną etykietę. Poszczególne instrukcje są wykonywane z lewej strony do prawej, a kolejne obwody przetwarzane są jeden po drugim. Można też wykonać skok do obwodu o określonej etykiecie. Język schematów bloków funkcyjnych jest bardzo podobny do języka LD, z tą różnicą że nie są w nim wykorzystywane styki oraz cewki (rys. 6).
W zamian używane są symbole obrazujące funkcje lub bloki funkcyjne, które połączone tworzą obwód. Kolejność przetwarzania obwodów można zmienić podobnie jak w języku drabinkowym, wykonując przejście do obwodu o określonej etykiecie.