www.eprace.edu.pl » scada » Rodzina języków programowania sterowników PLC » Charakterystyka języków programowania

Charakterystyka języków programowania

Graf sekwencji SFC

Element oprogramowania sterownika może być zorganizowany w postaci grafu sekwencji SFC (Sequential Function Chart), który składa się z wzajemnie sprzężonych etapów (steps) i przejść (transitions). Z każdym etapem jest skojarzony zbiór odpowiednich działań (actions) a każdemu przejściu miedzy etapami towa­rzyszy warunek przejścia (transition condition).

Ponieważ wymienione elementy SFC wymagają pamięci dla przechowania informacji o stanie systemu, jedynymi elementami oprogramowania, które mogą być z nich zbudowane są bloki funkcyjne i programy. Jeżeli jakakolwiek cześć takiego elementu jest programowana przy użyciu SFC, to w ten sam sposób powinien być programowany cały element. Jeżeli element oprogramowania nie jest zorganizowany w postaci grafu SFC, to powinien być traktowany jako pojedyncze działanie wykonywane pod kontrolą jednostki wy­wołujące ją.

Etap określa sytuacje, w której zachowanie się elementu oprogramowania w odniesieniu do jego wejść i wyjść jest zdefiniowane przez skojarzony z etapem zestaw działań. Etap może być aktywny (active) lub nieaktywny (inactive). W każdej chwili stan elementu oprogramowania jest określony przez zestaw ak­tywnych etapów oraz wartości zmiennych wewnętrznych i wyjściowych tego elementu.

Etap jest przedstawiany graficznie jako prostokąt zawierający nazwę etapu lub w postaci tekstowej za pomocą konstrukcji STEP ... END_STEP. Łączenie kolej­nych etapów wykonuje się za pomocą linii pionowych (wejście u góry, wyjście na dole) lub odpowiednio, za pomocą zestawu deklaracji TRANSITION ... END_TRANSITION.

Aktywność etapu określa wskaźnik etapu (step flag), który jest reprezentowany przez zmienną logiczną ***.X, gdzie *** jest nazwą etapu. Przyjmuje on wartość 1 dla etapu aktywnego i 0 dla etapu nieaktywnego.

Czas aktywności etapu (step elapsed time) jest określony przez zmienną ***.T typu TIME . Wartość tej zmiennej pozostaje bez zmian, gdy etap przechodzi w stan nieaktywny.

Zakres stosowania nazw etapów, ich wskaźników i czasów aktywności jest lokalny w ramach elementu oprogramowania, w którym się pojawiają.

Stan początkowy elementu oprogramowania jest określony przez wartości początkowe jego zmiennych wewnętrznych i wyjściowych oraz zbiór etapów początkowych (initial steps), tj. etapów aktywnych w chwili początkowej. Każda siec SFC lub jej tekstowy odpowiednik powinny zawierać tylko jeden etap początkowy. Etap początkowy zaznacza się jako prostokąt rysowany podwójną linią, a w przypadku reprezentacji tekstowej jako konstrukcje INITIAL_STEP ... END_STEP. Zmienne ***.X oraz ***.T nie mogą być modyfikowane przez program użytkownika, ich wartości mogą być tylko odczytywane.

Domyślną wartością początkową dla czasu aktywności etapu jest t#0s, a dla wskaźnika etapu logiczne FALSE, za wyjątkiem etapu początkowego, którego wskaźnik z chwilą inicjalizacji przyjmuje wartość TRUE.

Przejście (transition) przedstawia warunki logiczne, których spełnienie jest wymagane do przeniesienia sterowania z etapu poprzedzającego przejście, do etapu lub etapów występujących za przejściem. Przejście przedstawiane jest graficznie jako poziomy odcinek przecinający linię łączącą etapy.

Z każdym przejściem jest skojarzony warunek przejścia (transition condition), który jest wynikiem rozwiązania pojedynczego wyrażenia logicznego. Warunek przejścia zawsze prawdziwy oznacza się symbolem 1 lub słowem kluczowym TRUE.

Sposoby kojarzenia warunków przejścia z przejściem z wykorzystaniem rożnych języków opisanych w normie IEC 1131-3 przedstawiono poniższej tabeli.

Tabela 5.2. Sposoby kojarzenia warunków przejścia z przejściem


Lp. Przykład opis
1 Krok poprzedzający

Warunek przejścia w języku ST

Krok następny

2 Krok poprzedzający

Warunek przejścia w języku LD

Krok następny

3 Krok poprzedzający

Warunek przejścia w języku FBD

Krok nastepny

4 Użycie łącznika:

Krok poprzedzający

Łącznik przejścia

Krok następny

4a Warunek przejścia w języku LD
4b Warunek przejścia w języku FBD
5

Użycie nazwy przejścia:

Krok poprzedzający

Nazwa przejścia

Krok następny


5a Warunek przejścia w języku LD
5b Warunek przejścia w języku FBD
5c TRANSITION TRAN23:

LD %I1

AND %I2

END TRANSITION

Warunek przejścia w języku IL
5d TRANSITION TRAN23:=

%I1 & %I2

END TRANSITION

Warunek przejścia w języku ST

Warunki początkowe grafu SFC są określone przez krok początkowy (ang. initial step), który jest w stanie aktywnym z chwilą inicjowania programu. Zmiana stanu procesu polega na przechodzeniu między krokami aktywnymi a kolejnymi, bezpośrednio połączonymi z nimi krokami, i zależy od spełnienia warunków przejścia.

Przejście (tranzycja) jest dozwolone (ang. enabled) tylko wtedy, gdy wszystkie bezpośrednio

poprzedzające je kroki są aktywne. Jeżeli przejście jest dozwolone i jednocześnie jest

spełniony związany z nim warunek przejścia, to następuje kasowanie przejścia oraz

dezaktywacja (lub reset) wszystkich bezpośrednio poprzedzających je kroków i aktywacja

wszystkich kroków występujących bezpośrednio po symbolu przejścia. Taki sposób działania,

w którym atrybut stanu aktywnego jest przekazywany do kolejnych kroków, przypomina

przekazywanie żetonu (ang. token passing) między kolejnymi stacjami w sieci, i bywa też

czasem tak nazywany.

Kolejne kroki i przejścia muszą zawsze występować naprzemiennie w połączeniach

elementów SFC, tzn.:

Przejście może mieć większą liczbę kroków poprzedzających lub występujących za nim.

Prosta kombinacja kroków i przejść jest nazywana sekwencją. Po wykonaniu kroku można

wybrać jedną z kilku różnych sekwencji albo dokonać aktywacji kilku sekwencji

równocześnie.

Podsumowanie własności języka SFC

Jednostka POU napisana w SFC składa się z jednej lub kilku sieci, w których występują kroki, przejścia i połączenia między nimi:

Z chwilą wywołania POU zawierającego strukturę SFC aktywny jest krok początkowy sieci. W każdej sieci może znajdować się tylko jeden krok początkowy. Dalszy rozwój sieci polega na przechodzeniu między kolejnymi krokami według następujących zasad:

Wykonywanie kroków aktywnych podlega następującym regułom:

W klasycznych językach programowania jednostka POU zawiera sekwencje instrukcji

(w językach graficznych występujących w postaci obwodów), które wykonywane są jedna za

drugą, tak jak występują w programie. Sekwencja instrukcji może zostać przerwana przez

użycie instrukcji skoku lub wywołania innego POU. Mechanizm sterowania wykonywaniem

sekwencji w SFC jest inny. W sieci SFC nie występuje bowiem sekwencyjne wykonywanie

instrukcji, ale cykliczne ustalanie wartości statusu kroków i przejść.

Język schematów drabinkowych LD

Język schematów drabinkowych LD należy do grupy języków graficznych i umożliwia realizacje zadania sterowania za pomocą standaryzowanych symboli graficznych. Symbole te umieszcza się w obwodach schematów drabinkowych dla przekaźnikowych układów sterowania.

Obwód (network) jest definiowany jako zbiór wzajemnie połączonych elementów graficznych. Z obwodem może być skojarzona etykieta (nazwa lub liczba dziesiętna bez znaku zakończona dwukropkiem) Stosowanie etykiety jest lokalne w zakresie elementu organizacyjnego oprogramowania w którym występuje. Obwód LD ograniczony jest z lewej i prawej strony przez szyny prądowe, nie będące elementami obwodu. Języki graficzne są używane do przedstawiania przepływu odpowiednich wielkości przez kolejne obwody reprezentujące pewną strategie sterowania. W przypadku języka LD wykonywanie programu polega na „przepływie prądu” , analogicznie jak w schematach przekaźników elektromechanicznych . Obowiązują przy tym następujące zasady:

Elementy sterujące wykonywaniem programu

Tabela 5.3. Elementy języka LD sterujące wykonywaniem programu.

Skok bezwarunkowy

Skok warunkowy

Warunek skoku

Miejsce docelowe skoku

Powrót warunkowy

Powrót bezwarunkowy

Elementy obwodu mogą być łączone poziomo lub pionowo. Stan elementów łączących oznacza się jako ON lub OFF. Określenie stanu połączeń jest synonimem określenia „przepływ prądu”. Stan lewej szyny powinien być uważany za ON, o ile nie występuje ona w nieaktywnym etapie grafu SFC. Nie definiuje się stanu dla prawej szyny. Połączenie poziome przekazuje stan elementu znajdującego się bezpośrednio po stronie lewej do elementu po stronie prawej.

Połączenie pionowe odpowiada sumie logicznej OR dla stanów połączeń poziomych występujących po lewej stronie połączenia pionowego, tzn.:

W języku LD dostępne są następujące elementy logiczne:

Styk (contact) – jest elementem przekazującym do połączenia poziomego stan będący wynikiem mnożenia logicznego AND stanu linii łączącej po lewej stronie styku oraz wartość przypisanej mu logicznej zmiennej wejściowej wyjściowej lub pamięciowej. Styk nie modyfikuje wartości skojarzonej z nim zmiennej. W środowisku WAGO-IO-PRO dysponujemy dwoma rodzajami styków :


Stan połączenia styku z lewej strony jest przenoszony na prawą stronę jeżeli skojarzona z nim zmienna logiczna ma wartość „1”, w przeciwnym wypadku stan połączenia jest jako OFF.


Stan połączenia styku z lewej strony jest przenoszony na prawą stronę jeżeli skojarzona z nim zmienna logiczna ma wartość „0”, w przeciwnym wypadku stan połączenia jest jako OFF.

Cewka (coil) – przekazuje stan połączeń z lewej strony na prawa stronę bez zmian, powodując jednoczesne zapamiętanie stanu połączenia po swej lewej stronie przez przypisaną jej zmienną logiczna.





W schematach drabinkowych funkcja przerzutnika RS może być zrealizowana albo z użyciem styku przekaźnika w obwodzie wzbudzenia jego cewki, albo w postaci pary cewek sprzężonych przypisanych do jednej zmiennej, z których jedna umożliwia tylko ustawianie (cewka S) a druga tylko zerowanie zmiennej (cewka R). Obydwa sposoby są przedstawione na rysunkach 5.1 i 5.2.

Rysunek 5.1. Pierwszy sposób realizacji przerzutnika RS w języku schematów drabinkowych

Rysunek 5.2. Drugi sposób realizacji przerzutnika RS w języku schematów drabinkowych


Lp. Przykład Reguła
1 Sekwencja pojedyncza

Kroki przejścia są powtarzane kolejno po sobie

Przykład:

Przejście z kroku S2 do S3 jest możliwe tylko wtedy , gdy krok S2 jest aktywny i jest spełniony warunek a

2a


Wybór sekwencji - rozbieżność

Wybór między różnymi sekwencjami jest reprezentowany przez tyle przejść umieszczonych pod linią pozioma ile jest możliwych sekwencji. Gwiazdka oznacza pierwszeństwo wyboru od lewej do prawej.

Przykład:

Przejście z kroku S3 do S4 wystąpi tylko wtedy, gdy S3 jest aktywny i jest spełniony warunek b, a przejście z S3 do S5 wtedy, gdy S3 jest aktywny i jest spełniony warunek c a nie jest spełniony warunek b.

2b Wybór sekwencji – rozbieżnośc

Gwiazdka i numerowane gałęzie wskazują na zadeklarowane pierwszeństwo sprawdzania przejścia. Gałęzie o niższym numerze maja wyższy priorytet.

Przykład:

Przejście z kroku S3 do S5 wystąpi tylko wtedy, gdy S3 jest aktywny i jest spełniony warunek c a przejście z s# do S4 wtedy, gdy S3 jest aktywny i jest spełniony warunek b a nie jest spełniony warunek c

2c Wybór sekwencji – rozbieżności

Połączenie gałęzi oznacza, że kolejne warunki przejścia muszą się wzajemnie wykluczać (gdyz nie ma tu określonego priorytetu gałęzi).

Przykład:

Przejście z kroku S3 do S4 wystąpi tylko wtedy, gdy S3 jest aktywny i jest spełniony warunek b , a przejście z S3 do S5 tylko wtedy, gdy S5 jest aktywny nie nie jest spełniony warunek b, a jest spełniony warunek c

3

Tabela 13a. Rodzaje przejść pomiędzy poszczególnymi krokami

Tabela 13a. Rodzaje przejść pomiędzy poszczególnymi krokami

Język strukturalny ST

Jest to język o składni podobnej do języka C lub PASCAL. Umożliwia on użycie instrukcji warunkowych, wyboru, przypisania , realizacje pętli programowych.

Poniższa tabela obrazuje schematy zastosowania tych funkcji:


Instrukcja Przykład
RETURN RETURN;
IF D:=B*B;

IF D<0.0 THEN

C:=A;

ELSIF D=0.0 THEN

C:=B;

ELSE

C:=D;

END_IF;

CASE CASE INT1 OF

1:BOOL1 := TRUE;

2:BOOL2 := TRUE;

ELSE

BOOL1 := FALSE;

BOOL2 := FALSE;

END_CASE;

FOR J:=101;

FOR I:=1 TO 100 BY 2 DO

IF ARR[I] = 70 THEN

J:=I;

EXIT;

END_IF;

END_FOR;

WHILE J:=1;

WHILE J<= 100 AND ARR[J] <> 70

DO

J:=J+2;

END_WHILE;

REPEAT J:=-1;

REPEAT

J:=J+2;

UNTIL J= 101 OR ARR[J] = 70

END_REPEAT;

EXIT EXIT;

Tabela . Schemat zastosowania instrukcji języka ST



komentarze

Copyright © 2008-2010 EPrace oraz autorzy prac.