background image

32

 

1

Wykład 10

Wykład 10

Język schematów funkcyjnych FBD

Język schematów funkcyjnych FBD

Uwagi wstępne,

Uwagi wstępne,

Graficzne elementy programu,

Graficzne elementy programu,

Uwagi o interpretacji programu,

Uwagi o interpretacji programu,

Przykład.

Przykład.

Język strukturalny wysokiego poziomu 

Język strukturalny wysokiego poziomu 

ST.

ST.

Uwagi wstępne, 

Uwagi wstępne, 

Instrukcje:

Instrukcje:

Instrukcja przypisania,

Instrukcja przypisania,

Wyrażenia,

Wyrażenia,

Instrukcje warunkowe,

Instrukcje warunkowe,

Pętle,

Pętle,

Wywoływanie funkcji i bloków 

Wywoływanie funkcji i bloków 

funkcyjnych.

funkcyjnych.

background image

32

 

2

Język schematów funkcyjnych 

Język schematów funkcyjnych 

( FBD). 

( FBD). 

Uwagi wstępne.

Uwagi wstępne.

FBD  jest  językiem  graficznym  dedykowanym  do 

FBD  jest  językiem  graficznym  dedykowanym  do 

użytkowników  przyzwyczajonych  do  schematów 

użytkowników  przyzwyczajonych  do  schematów 

blokowych ( elektronicy, automatycy)

blokowych ( elektronicy, automatycy)

Jego  rozpowszechnieni  jest  znacznie  mniejsze,  niż 

Jego  rozpowszechnieni  jest  znacznie  mniejsze,  niż 

LD  (  w  GE  FANUC  nie  jest  stosowany,  w  SIEMENSIE 

LD  (  w  GE  FANUC  nie  jest  stosowany,  w  SIEMENSIE 

jest bardzo okrojony)

jest bardzo okrojony)

Program 

FBD 

ma 

postać 

bloków, 

Program 

FBD 

ma 

postać 

bloków, 

reprezentujących funkcje i instancje FB, połączonych 

reprezentujących funkcje i instancje FB, połączonych 

przepływami sygnałów. 

przepływami sygnałów. 

Szczegóły  reprezentacji  graficznej  zależą  od 

Szczegóły  reprezentacji  graficznej  zależą  od 

konkretnej platformy PLC.

konkretnej platformy PLC.

Ogólnie FBD jest bardzo podobny do LD: 

Ogólnie FBD jest bardzo podobny do LD: 

Program  może  być  podzielony  na  obwody  dla 

Program  może  być  podzielony  na  obwody  dla 

poprawy czytelności,

poprawy czytelności,

Użycie  wejścia  EN  i  wyjścia  ENO  jest  także 

Użycie  wejścia  EN  i  wyjścia  ENO  jest  także 

możliwe ( ale nie obowiązkowe)

możliwe ( ale nie obowiązkowe)

background image

32

 

3

Główne elementy graficzne programu. 

Główne elementy graficzne programu. 

1.

1.

Przepływy sygnałów.

Przepływy sygnałów.

Przepływ sygnału jest reprezentowany przez 

Przepływ sygnału jest reprezentowany przez 

linię  pionową  lub  poziomą,  łączącą  wyjście 

linię  pionową  lub  poziomą,  łączącą  wyjście 

FC lub FB z wejściem innej funkcji lub bloku 

FC lub FB z wejściem innej funkcji lub bloku 

funkcyjnego.  Jest  to  interpretowane  jako 

funkcyjnego.  Jest  to  interpretowane  jako 

przepływ  sygnału  od  wyjścia  jednego  bloku 

przepływ  sygnału  od  wyjścia  jednego  bloku 

do wejścia innego:

do wejścia innego:

Linia pionowa i pozioma:

Linia pionowa i pozioma:

Połączenie przepływów: 

Połączenie przepływów: 

Skrzyżowanie 

Skrzyżowanie 

przepływów bez 

przepływów bez 

połączenia

połączenia

background image

32

 

4

Narożniki przepływów:

Narożniki przepływów:

UWAGA:

UWAGA:

Norma  nie  wymaga  przesyłania  różnych 

Norma  nie  wymaga  przesyłania  różnych 

typów  sygnałów  (  logicznych  i  liczbowych) 

typów  sygnałów  (  logicznych  i  liczbowych) 

po  różnych  typach  linii  (  np.  w  różnych 

po  różnych  typach  linii  (  np.  w  różnych 

kolorach), ale w przypadkach rzeczywistych 

kolorach), ale w przypadkach rzeczywistych 

takie  rozróżnienie  występuje  i  znacznie 

takie  rozróżnienie  występuje  i  znacznie 

poprawia ono czytelność programu. 

poprawia ono czytelność programu. 

background image

32

 

5

Bloki (funkcje i instancje FB) : 

Bloki (funkcje i instancje FB) : 

( EN ) 

( EN ) 

( ENO ) 

( ENO ) 

wejścia

wejścia

wyjścia

wyjścia

Uwagi

Uwagi

1. Użycie EN i ENO nie jest obowiązkowe, 

1. Użycie EN i ENO nie jest obowiązkowe, 

2. Ich interpretacja jest podobna, jak w LD (ale gdy nie 

2. Ich interpretacja jest podobna, jak w LD (ale gdy nie 

są  podłączone  do  zmiennych  logicznych,  to  EN  jest 

są  podłączone  do  zmiennych  logicznych,  to  EN  jest 

interpretowane tak, jakby na jego wejściu była „1”).

interpretowane tak, jakby na jego wejściu była „1”).

3.  Norma  nie  opisuje  jasno,  co  się  dzieje  z  blokiem  w 

3.  Norma  nie  opisuje  jasno,  co  się  dzieje  z  blokiem  w 

przypadku  ustawienia  EN  na  „0”    (przypomnijmy  – 

przypadku  ustawienia  EN  na  „0”    (przypomnijmy  – 

wejścia i wyjścia są połączone z innymi elementami!)  

wejścia i wyjścia są połączone z innymi elementami!)  

background image

32

 

6

Negacja sygnałów boolowskich:

Negacja sygnałów boolowskich:

wejście

wejście

wyjście

wyjście

Postać równoważna – użycie funkcji NOT: 

Postać równoważna – użycie funkcji NOT: 

wejście

wejście

wyjście

wyjście

NOT

NOT

NOT

NOT

background image

32

 

7

Konektory:

Konektory:

Realizują one funkcję skoku do podanej 

Realizują one funkcję skoku do podanej 

etykietki. 

etykietki. 

LABEL

LABEL

>

>

. . . . . 

. . . . . 

>

>

LABE

LABE

L

L

>

>

Uwagi

Uwagi

Konektor  podłączony  do  wyjścia  sygnału 

Konektor  podłączony  do  wyjścia  sygnału 

typu BOOL realizuje skok warunkowy. 

typu BOOL realizuje skok warunkowy. 

Norma  IEC  1131  jest  niejasna,  jak  się 

Norma  IEC  1131  jest  niejasna,  jak  się 

zachowuje  część  programu  pominięta  przez 

zachowuje  część  programu  pominięta  przez 

skok. Są dwie alternatywne interpretacje:

skok. Są dwie alternatywne interpretacje:

1.

1.

Część ta nie jest wykonywana,

Część ta nie jest wykonywana,

2.

2.

Cały 

program 

jest 

wykonany 

Cały 

program 

jest 

wykonany 

przed

przed

 

 

realizacją skoku.  

realizacją skoku.  

Wniosek  ogólny:  użycie  skoków  jest 

Wniosek  ogólny:  użycie  skoków  jest 

nie 

nie 

zalecane. 

zalecane. 

background image

32

 

8

Fundamentalna zasada:

Fundamentalna zasada:

Typowo,  program  w  FBD  jest  wykonywany  w   

Typowo,  program  w  FBD  jest  wykonywany  w   

tej 

samej 

kolejności, 

jakiej 

został 

tej 

samej 

kolejności, 

jakiej 

został 

narysowany:

narysowany:

Od góry do dołu,

Od góry do dołu,

W  obrębie  obwodu:  od  lewej  do  prawej 

W  obrębie  obwodu:  od  lewej  do  prawej 

strony.

strony.

Ta 

kolejność 

może 

być 

zmieniona 

wyłącznie przez skoki. 

Interpretacja programu. 

Interpretacja programu. 

Ogólnie,  interpretacja  programu  jest  b. 

Ogólnie,  interpretacja  programu  jest  b. 

podobna  do  LD,  różnica  jest  taka,  że 

podobna  do  LD,  różnica  jest  taka,  że 

wszystkie  funkcje  są  reprezentowane  przez 

wszystkie  funkcje  są  reprezentowane  przez 

bloki  i  wszystkie  bloki  muszą  być  podłączone 

bloki  i  wszystkie  bloki  muszą  być  podłączone 

do przepływów sygnałów.

do przepływów sygnałów.

background image

32

 

9

Dodatkowe  reguły  wykonania  programu  (  identyczne, 

Dodatkowe  reguły  wykonania  programu  (  identyczne, 

jak w LD):

jak w LD):

1.

1.

Wykonanie  każdego  elementu  obwodu 

Wykonanie  każdego  elementu  obwodu 

(  funkcji  lub  instancji  FB)  nie  jest 

(  funkcji  lub  instancji  FB)  nie  jest 

zakończone 

dopóki 

nie 

wyznaczono 

zakończone 

dopóki 

nie 

wyznaczono 

wartości wszystkich jego wyjść,

wartości wszystkich jego wyjść,

2.

2.

Wykonanie 

całego 

obwodu 

nie 

jest 

Wykonanie 

całego 

obwodu 

nie 

jest 

zakończone, 

dopóki 

nie 

wyznaczono 

zakończone, 

dopóki 

nie 

wyznaczono 

wszystkich wyjść z tego obwodu,

wszystkich wyjść z tego obwodu,

3.

3.

Wykonanie  dowolnego  elementu  obwodu 

Wykonanie  dowolnego  elementu  obwodu 

nie  może  się  rozpocząć  dopóki  nie 

nie  może  się  rozpocząć  dopóki  nie 

zdefiniowano wszystkich jego wejść. 

zdefiniowano wszystkich jego wejść. 

4.

4.

Podczas  transferu  danych  z  jednego 

Podczas  transferu  danych  z  jednego 

obwodu  do  innego  wartości  wszystkich 

obwodu  do  innego  wartości  wszystkich 

danych  powinny  być  wyznaczone  w  tym 

danych  powinny  być  wyznaczone  w  tym 

samym  rozwiązaniu  obwodu  (  w  tym 

samym  rozwiązaniu  obwodu  (  w  tym 

samym 

cyklu 

programowym). 

Start 

samym 

cyklu 

programowym). 

Start 

drugiego 

obwodu 

powinien 

nastąpić 

drugiego 

obwodu 

powinien 

nastąpić 

dopiero po transferze wszystkich danych.

dopiero po transferze wszystkich danych.

background image

32

 

10

Realizacja sprzężenia zwrotnego:

Realizacja sprzężenia zwrotnego:

W  tym  wypadku  obowiązują  te  same  uwagi, 

W  tym  wypadku  obowiązują  te  same  uwagi, 

co w przypadku języka LD:

co w przypadku języka LD:

Dokładna  realizacja  sprzężenia  zwrotnego 

Dokładna  realizacja  sprzężenia  zwrotnego 

nie jest możliwa,

nie jest możliwa,

Wykonanie  programu  generuje  dodatkowy 

Wykonanie  programu  generuje  dodatkowy 

element opóźniający.  

element opóźniający.  

background image

32

 

11

Przykład.

Przykład.

Należy 

zbudować 

blok 

funkcyjny 

realizujący 

Należy 

zbudować 

blok 

funkcyjny 

realizujący 

otwieranie/zamykanie bramy lub zasuwy:

otwieranie/zamykanie bramy lub zasuwy:

Sygnał  otwarcia/zamknięcia  generuje  sygnał  dla 

Sygnał  otwarcia/zamknięcia  generuje  sygnał  dla 

napędu,

napędu,

Osiągnięcie  żądanej  pozycji  jest  potwierdzane 

Osiągnięcie  żądanej  pozycji  jest  potwierdzane 

sygnałem z wyłącznika krańcowego,

sygnałem z wyłącznika krańcowego,

Czas  otwarcia  i  zamknięcia  jest  ten  sam.  Wartość 

Czas  otwarcia  i  zamknięcia  jest  ten  sam.  Wartość 

tego  czasu  ma  być  sprawdzana  w  celu  sprawdzenia 

tego  czasu  ma  być  sprawdzana  w  celu  sprawdzenia 

poprawności działania układu.

poprawności działania układu.

 

 

Sytuacja, gdy po zadanym maksymalnym czasie od 

Sytuacja, gdy po zadanym maksymalnym czasie od 

załączenia 

napędu 

nie 

przyjdzie 

sygnał 

załączenia 

napędu 

nie 

przyjdzie 

sygnał 

odpowiedniego 

wyłącznika 

krańcowego, 

jest 

odpowiedniego 

wyłącznika 

krańcowego, 

jest 

interpretowana  jako  awaria  (  np.  zablokowanie 

interpretowana  jako  awaria  (  np.  zablokowanie 

bramy)  i  musi  zasygnalizowana  odpowiednim 

bramy)  i  musi  zasygnalizowana  odpowiednim 

sygnałem binarnym. 

sygnałem binarnym. 

background image

32

 

12

Parametry wejściowe:

Parametry wejściowe:

ReqOpen – żądanie otwarcia,

ReqOpen – żądanie otwarcia,

ReqClose 

– 

żądanie 

ReqClose 

– 

żądanie 

zamknięcia,

zamknięcia,

OpenLS  –  sygnał  z  wył  krańc. 

OpenLS  –  sygnał  z  wył  krańc. 

otwarcia,

otwarcia,

CLoseLS – sygnał z wył krańc

CLoseLS – sygnał z wył krańc

zamknięcia

zamknięcia

,

,

MoveTime 

– 

czas 

MoveTime 

– 

czas 

otwarcia/zamknięcia.

otwarcia/zamknięcia.

Parametry wyjściowe:

Parametry wyjściowe:

 

 

Open 

– 

sygnał 

napędu 

Open 

– 

sygnał 

napędu 

otwarcia,

otwarcia,

CLose 

– 

sygnał 

napędu 

CLose 

– 

sygnał 

napędu 

zamknięcia,

zamknięcia,

Alarm  –  sygnał  alarmowy, 

Alarm  –  sygnał  alarmowy, 

uruchamiany  w  przypadku, 

uruchamiany  w  przypadku, 

gdy  czas  ruchu  jest  dłuższy, 

gdy  czas  ruchu  jest  dłuższy, 

niż 

maksymalna 

założona 

niż 

maksymalna 

założona 

wartość. 

wartość. 

ReqOpen

ReqOpen

ReqClose

ReqClose

OpenLS

OpenLS

CLoseLS

CLoseLS

MoveTime

MoveTime

Open

Open

Close

Close

Alarm

Alarm

GATE

GATE

BOOL

BOOL

BOOL

BOOL

BOOL

BOOL

BOOL

BOOL

BOOL

BOOL

BOOL

BOOL

BOOL

BOOL

TIME

TIME

background image

32

 

13

RS

RS

S

S

R1

R1

Q

Q

TON

TON

IN

IN

PT

PT

Q

Q

OR

OR

NOT

NOT

AND

AND

AND

AND

ReqOpen

ReqOpen

ReqClose

ReqClose

Open

Open

Close

Close

Alarm

Alarm

OpenLS

OpenLS

CloseLS

CloseLS

MoveTime

MoveTime

Realizacja bloku z użyciem języka FBD:

Realizacja bloku z użyciem języka FBD:

background image

32

 

14

Język Tekst Strukturalny ( 

Język Tekst Strukturalny ( 

S

S

tructured 

tructured 

T

T

ext ) 

ext ) 

( STEP 7 SCL – SIEMENS)

( STEP 7 SCL – SIEMENS)

Uwagi wstępne.

Uwagi wstępne.

ST  jest  językiem  wysokiego  poziomu,  bardzo 

ST  jest  językiem  wysokiego  poziomu,  bardzo 

podobnym  do    PASCALa,  ale  ściśle  dostosowanym  do 

podobnym  do    PASCALa,  ale  ściśle  dostosowanym  do 

użycia w systemach PLC. 

użycia w systemach PLC. 

Część  programu  (lub  cały  program)  napisana  w  ST 

Część  programu  (lub  cały  program)  napisana  w  ST 

musi być 

musi być 

zawsze 

zawsze 

kompilowana do postaci IL. 

kompilowana do postaci IL. 

Norma  nie  definiuje  maksymalnej  długości  wyrażeń, 

Norma  nie  definiuje  maksymalnej  długości  wyrażeń, 

ilości  opcji  w  instrukcji  CASE,  itp,  ale  w  konkretnych 

ilości  opcji  w  instrukcji  CASE,  itp,  ale  w  konkretnych 

praktycznych  sytuacjach  takie  ograniczenia  mogą  się 

praktycznych  sytuacjach  takie  ograniczenia  mogą  się 

pojawić.

pojawić.

Wersja 

wykonywalna 

(FC, 

instancja 

FB) 

jest 

Wersja 

wykonywalna 

(FC, 

instancja 

FB) 

jest 

reprezentowana jako blok  w językach graficznych, a w 

reprezentowana jako blok  w językach graficznych, a w 

językach  tekstowych  jest  reprezentowana  przez  swoją 

językach  tekstowych  jest  reprezentowana  przez  swoją 

nazwę ( która jest zachowywana po kompilacji)  

nazwę ( która jest zachowywana po kompilacji)  

Do  pamięci  PLC  w  większości  przypadków  jest 

Do  pamięci  PLC  w  większości  przypadków  jest 

ładowana 

wyłącznie 

wersja 

wykonywalna 

ładowana 

wyłącznie 

wersja 

wykonywalna 

(  skompilowana),  a  nie  jest  ładowany  plik  źródłowy 

(  skompilowana),  a  nie  jest  ładowany  plik  źródłowy 

programu.

programu.

Język  ten  jest  szczególnie  wygodny  i  zalecany  do 

Język  ten  jest  szczególnie  wygodny  i  zalecany  do 

realizacji złożonych operacji arytmetycznych i pętli.   

realizacji złożonych operacji arytmetycznych i pętli.   

background image

32

 

15

Instrukcje przypisania.

Instrukcje przypisania.

Postać ogólna:

Postać ogólna:

X := Y; 

X := Y; 

Gdzie:

Gdzie:

X – zmienna ( 

X – zmienna ( 

prosta lub 

prosta lub 

złożona)

złożona)

Y – może być:

Y – może być:

- stałą,

- stałą,

- zmienną,

- zmienną,

- wyrażeniem.

- wyrażeniem.

Uwagi: 

Uwagi: 

Dane po obu stronach muszą być tego samego 

Dane po obu stronach muszą być tego samego 

typu, 

typu, 

Niespójność  typów  jest  wykrywana  przez 

Niespójność  typów  jest  wykrywana  przez 

kompilator i podawana jako błąd. 

kompilator i podawana jako błąd. 

Wyrażenie po prawej stronie może być proste 

Wyrażenie po prawej stronie może być proste 

lub  złożone  (  nawet  o  dużym  stopniu 

lub  złożone  (  nawet  o  dużym  stopniu 

złożoności).

złożoności).

background image

32

 

16

Wyrażenia.

Wyrażenia.

Wyrażenia 

są 

używane 

do 

wyliczania 

Wyrażenia 

są 

używane 

do 

wyliczania 

wartości  zmiennych  z  użyciem:  operatorów, 

wartości  zmiennych  z  użyciem:  operatorów, 

innych zmiennych, stałych i wywołań funkcji.

innych zmiennych, stałych i wywołań funkcji.

Wyrażenie  zawsze  daje  wynik  określonego 

Wyrażenie  zawsze  daje  wynik  określonego 

typu,

typu,

Wyrażenie  złożone  może  być  zbudowane  z 

Wyrażenie  złożone  może  być  zbudowane  z 

użyciem wyrażeń prostszych.

użyciem wyrażeń prostszych.

Kolejność  rozwiązywania  wyrażeń  zależy  od 

Kolejność  rozwiązywania  wyrażeń  zależy  od 

hierarchii  użytych  operatorów  i  mniejszych 

hierarchii  użytych  operatorów  i  mniejszych 

„podwyrażeń” .

„podwyrażeń” .

Podczas  przepisywania  jednej  tablicy  do 

Podczas  przepisywania  jednej  tablicy  do 

innej  dostęp  do  elementów  tych  tablic 

innej  dostęp  do  elementów  tych  tablic 

powinien być możliwy dopiero po zakończeniu 

powinien być możliwy dopiero po zakończeniu 

operacji i nie powinien być możliwy w trakcie. 

operacji i nie powinien być możliwy w trakcie. 

background image

32

 

17

Operatory i ich hierarchia.

Operatory i ich hierarchia.

Operator

Operator

Opis

Opis

Priorytet

Priorytet

(...)

(...)

Nawiasy

Nawiasy

Najwyższy

Najwyższy

F(...)

F(...)

Wywołanie FC , instancji FB

Wywołanie FC , instancji FB

**

**

potęgowanie

potęgowanie

-

-

NOT

NOT

negacja

negacja

Negacja boolowska

Negacja boolowska

*

*

/

/

MOD

MOD

Mnożenie, 

Mnożenie, 

Dzielenie,

Dzielenie,

Dzielenie modulo ( z resztą)

Dzielenie modulo ( z resztą)

+

+

-

-

Dodawanie,

Dodawanie,

Odejmowanie

Odejmowanie

<,>,<=,>=

<,>,<=,>=

Operacje porównania, 

Operacje porównania, 

=

=

<>

<>

równość

równość

nierówność

nierówność

AND, &

AND, &

AND boolowski,

AND boolowski,

XOR 

XOR 

XOR boolowski,

XOR boolowski,

OR

OR

OR boolowski

OR boolowski

Najniższy

Najniższy

background image

32

 

18

Reguły rozwiązywania wyrażeń:

Reguły rozwiązywania wyrażeń:

Kolejność 

rozwiązywania 

wyrażeń 

jest 

Kolejność 

rozwiązywania 

wyrażeń 

jest 

określona przez hierarchię operatorów.

określona przez hierarchię operatorów.

Operatory  o  tym  samym  priorytecie  są 

Operatory  o  tym  samym  priorytecie  są 

rozwiązywane od strony lewej do prawej.

rozwiązywane od strony lewej do prawej.

Wyrażenie  jest  rozwiązywane  dopóty,  dopóki 

Wyrażenie  jest  rozwiązywane  dopóty,  dopóki 

nie  można  jednoznacznie  określić  jego  wyniku, 

nie  można  jednoznacznie  określić  jego  wyniku, 

jeżeli  można,  reszta  nie  jest  już  rozwiązywana, 

jeżeli  można,  reszta  nie  jest  już  rozwiązywana, 

np.

np.

X:= A & B & C & (D OR E ) & NOT F;

X:= A & B & C & (D OR E ) & NOT F;

jeżeli  A  będzie  równa  „0”,  to  wynik  jest 

jeżeli  A  będzie  równa  „0”,  to  wynik  jest 

natychmiast  ustawiany  na  „0”  i  reszta  nie  jest 

natychmiast  ustawiany  na  „0”  i  reszta  nie  jest 

już dalej obliczana.

już dalej obliczana.

background image

32

 

19

Przykłady wyrażeń: 

Przykłady wyrażeń: 

Rate:= 13.5; // wyrażenie proste

Rate:= 13.5; // wyrażenie proste

SP:=MW8; // wyrażenie proste

SP:=MW8; // wyrażenie proste

ERR:=SP – In_Scal(PIW272); // 

ERR:=SP – In_Scal(PIW272); // 

wyrażenie z 

wyrażenie z 

wywołaniem funkcji,

wywołaniem funkcji,

PV:= Sensor.value+ Factor[n+1]; // 

PV:= Sensor.value+ Factor[n+1]; // 

wyrażenie 

wyrażenie 

złożone

złożone

A[k+1]:= a11+ SQRT( G+1.2); // 

A[k+1]:= a11+ SQRT( G+1.2); // 

użycie elementu 

użycie elementu 

tablicy

tablicy

background image

32

 

20

Instrukcje warunkowe. 

Instrukcje warunkowe. 

If ...then ...else

If ...then ...else

IF <

IF <

wyrażenie boolowskie

wyrażenie boolowskie

> THEN

> THEN

<

<

instrukcje wykonywane przy 

instrukcje wykonywane przy 

TRUE

TRUE

>

>

ELSE

ELSE

instrukcje wykonywane przy 

instrukcje wykonywane przy 

FALSE

FALSE

 >

 >

END_IF;

END_IF;

Przykład:

Przykład:

IF PV > SP THEN // Regulator II 

IF PV > SP THEN // Regulator II 

położeniowy

położeniowy

CV:=15.0 ;

CV:=15.0 ;

ELSE

ELSE

CV:=85.0 ;

CV:=85.0 ;

END_IF;

END_IF;

IF < wyrażenie boolowskie

IF < wyrażenie boolowskie

 

 

THEN

THEN

instrukcje wykonywane przy 

instrukcje wykonywane przy 

TRUE

TRUE

 

 

>

>

END_IF;

END_IF;

Część z  „else” może być pominięta:

Część z  „else” może być pominięta:

Przykład:

Przykład:

IF Temp > Temp_Max 

IF Temp > Temp_Max 

THEN 

THEN 

Temp_High:= 

Temp_High:= 

TRUE;

TRUE;

END_IF;

END_IF;

background image

32

 

21

IF <wyrażenie boolowskie> THEN

IF <wyrażenie boolowskie> THEN

<instrukcje...>

<instrukcje...>

ELSIF < wyrażenie boolowskie

ELSIF < wyrażenie boolowskie

 

 

THEN

THEN

<instrukcje...>

<instrukcje...>

ELSIF <wyrażenie boolowskie> 

ELSIF <wyrażenie boolowskie> 

THEN

THEN

<instrukcje...>

<instrukcje...>

ELSIF <wyrażenie boolowskie> 

ELSIF <wyrażenie boolowskie> 

THEN

THEN

<instrukcje...>

<instrukcje...>

.....

.....

ELSE

ELSE

<instrukcje...>

<instrukcje...>

END_IF;

END_IF;

Do  budowy  bardziej  złożonych  wyrażeń  można  użyć 

Do  budowy  bardziej  złożonych  wyrażeń  można  użyć 

dodatkowo ELSIF:  

dodatkowo ELSIF:  

Postać ogólna: 

Postać ogólna: 

Przykład: 

Przykład: 

IF A > B THEN

IF A > B THEN

D:=1;

D:=1;

ELSIF A=B+2 

ELSIF A=B+2 

THEN

THEN

D:=2;

D:=2;

ELSIF A:=B-3 

ELSIF A:=B-3 

THEN

THEN

D:=4;

D:=4;

ELSE

ELSE

D:=3;

D:=3;

END_IF;

END_IF;

background image

32

 

22

case

case

Ta konstrukcja pozwala na wykonywanie grup instrukcji 

Ta konstrukcja pozwala na wykonywanie grup instrukcji 

w  zależności  od  wartości  zmiennej  lub  wyrażenia  typu 

w  zależności  od  wartości  zmiennej  lub  wyrażenia  typu 

INT.    Norma  pozwala  także  na  użycie  jako  wskaźnika 

INT.    Norma  pozwala  także  na  użycie  jako  wskaźnika 

zmiennej  typu  wyliczeniowego  (  o  ile  jest  ona 

zmiennej  typu  wyliczeniowego  (  o  ile  jest  ona 

dopuszczona do użycia na danym sprzęcie)

dopuszczona do użycia na danym sprzęcie)

Ogólny format 

Ogólny format 

instrukcji:

instrukcji:

CASE <zmienna lub 

CASE <zmienna lub 

wyrażenie typu INT

wyrażenie typu INT

OF

OF

<wartość 1>: <

<wartość 1>: <

instrukcje

instrukcje

>

>

........

........

<wartość n>: <

<wartość n>: <

instrukcje

instrukcje

>

>

ELSE

ELSE

<instrukcje>

<instrukcje>

END_CASE;

END_CASE;

background image

32

 

23

Przykłady: 

Przykłady: 

CASE speed_set OF

CASE speed_set OF

1: speed:= 10.0;

1: speed:= 10.0;

2: speed:=20.4;

2: speed:=20.4;

3: speed:=30.0; fan1:=ON;

3: speed:=30.0; fan1:=ON;

4,5: speed:= 50.0; 

4,5: speed:= 50.0; 

fan2:=ON;

fan2:=ON;

6..10: speed:=60.0; 

6..10: speed:=60.0; 

water:=ON;

water:=ON;

ELSE

ELSE

speed:=0.0; 

speed:=0.0; 

SpeedFault:=TRUE;

SpeedFault:=TRUE;

END_CASE;

END_CASE;

1. Użycie zmiennej typu INT jako wskaźnika:

1. Użycie zmiennej typu INT jako wskaźnika:

background image

32

 

24

TYPE

TYPE

SPEED: (STOP,SLOW,MEDIUM,FAST)

SPEED: (STOP,SLOW,MEDIUM,FAST)

END_TYPE

END_TYPE

...

...

VAR

VAR

pump_speed:SPEED;

pump_speed:SPEED;

END_VAR

END_VAR

....

....

CASE pump_speed OF

CASE pump_speed OF

STOP: speed:= 0.0;

STOP: speed:= 0.0;

SLOW: speed:=10.0;

SLOW: speed:=10.0;

MEDIUM: speed:=50.0; 

MEDIUM: speed:=50.0; 

FAST: speed:= 100.0; 

FAST: speed:= 100.0; 

ELSE

ELSE

speed:=0.0; SpeedFault:=TRUE;

speed:=0.0; SpeedFault:=TRUE;

END_CASE;

END_CASE;

2. Użycie zmiennej wyliczeniowej jako wskaźnika:

2. Użycie zmiennej wyliczeniowej jako wskaźnika:

background image

32

 

25

Pętle

Pętle

Pętle  są  konstrukcją  trudną  w  realizacji  z 

Pętle  są  konstrukcją  trudną  w  realizacji  z 

użyciem innych języków,

użyciem innych języków,

Ważne  jest,  aby  nie  zbudować  pętli  „bez 

Ważne  jest,  aby  nie  zbudować  pętli  „bez 

końca”,

końca”,

Wykonanie  programu  nie  jest  kontynuowane 

Wykonanie  programu  nie  jest  kontynuowane 

dopóty, dopóki pętla nie zostanie zakończona,

dopóty, dopóki pętla nie zostanie zakończona,

Użycie  pętli  może  znacznie  wydłużyć  czas 

Użycie  pętli  może  znacznie  wydłużyć  czas 

cyklu i czas odpowiedzi układu.   

cyklu i czas odpowiedzi układu.   

Pętla FOR..DO:

Pętla FOR..DO:

Używana  do  wykonania  określonego 

Używana  do  wykonania  określonego 

zbioru instrukcji określoną ilość razy.

zbioru instrukcji określoną ilość razy.

Warunek 

jest 

sprawdzany 

przed 

Warunek 

jest 

sprawdzany 

przed 

wykonaniem pętli ( czyli może ona nie być 

wykonaniem pętli ( czyli może ona nie być 

wykonana ani jeden raz).

wykonana ani jeden raz).

background image

32

 

26

Ogólna postać: 

Ogólna postać: 

FOR <inicjalizacja zmiennej wskaźnikowej> TO< wartość końcowa> BY 

FOR <inicjalizacja zmiennej wskaźnikowej> TO< wartość końcowa> BY 

<inkrementacja zmiennej> DO

<inkrementacja zmiennej> DO

<instrukcje>

<instrukcje>

END_FOR;

END_FOR;

Uwagi:

Uwagi:

Nie 

powinno 

się 

modyfikować 

wartości 

Nie 

powinno 

się 

modyfikować 

wartości 

końcowej 

lub 

inkrementacji 

zmiennej 

końcowej 

lub 

inkrementacji 

zmiennej 

wskaźnikowej 

wskaźnikowej 

wewnątrz

wewnątrz

 pętli.

 pętli.

Inkrementacja  może  być  dodatnia  lub  ujemna, 

Inkrementacja  może  być  dodatnia  lub  ujemna, 

może też być  pominięta ( wtedy domyślnie jest 

może też być  pominięta ( wtedy domyślnie jest 

ustawiana na 1).

ustawiana na 1).

Przykład:

Przykład:

FOR i:= 100 TO 1 BY –1 DO

FOR i:= 100 TO 1 BY –1 DO

channel[I] := sensor.signal[I];

channel[I] := sensor.signal[I];

END_FOR; 

END_FOR; 

background image

32

 

27

WHILE..DO:

WHILE..DO:

Jest 

stosowana 

do 

powtarzalnego 

Jest 

stosowana 

do 

powtarzalnego 

wykonywania 

określonego 

zbioru 

wykonywania 

określonego 

zbioru 

instrukcji  dopóty,  dopóki  zmienna  lub 

instrukcji  dopóty,  dopóki  zmienna  lub 

wyrażenie 

boolowskie 

jest 

prawdą 

wyrażenie 

boolowskie 

jest 

prawdą 

logiczną. 

logiczną. 

Wartość  wyrażenia  wskaźnikowego  jest 

Wartość  wyrażenia  wskaźnikowego  jest 

testowana przed wykonaniem pętli. 

testowana przed wykonaniem pętli. 

Ogólna postać: 

Ogólna postać: 

WHILE <wyrażenie boolowskie> DO

WHILE <wyrażenie boolowskie> DO

<instrukcje>

<instrukcje>

END_WHILE;

END_WHILE;

Przykład:

Przykład:

WHILE x < xmax-10.0 DO

WHILE x < xmax-10.0 DO

x:=x+5.0*input_1;

x:=x+5.0*input_1;

END_WHILE;

END_WHILE;

background image

32

 

28

REPEAT…UNTIL

REPEAT…UNTIL

Pozwala  na  wykonanie  zestawu  instrukcji 

Pozwala  na  wykonanie  zestawu  instrukcji 

dopóty,  dopóki  wyrażenie  boolowskie  jest 

dopóty,  dopóki  wyrażenie  boolowskie  jest 

prawdą.  Wyrażenie  jest  sprawdzane  po 

prawdą.  Wyrażenie  jest  sprawdzane  po 

wykonaniu  pętli  (  czyli  musi  ona  być 

wykonaniu  pętli  (  czyli  musi  ona  być 

wykonana co najmniej jeden raz). 

wykonana co najmniej jeden raz). 

Ogólna postać: 

Ogólna postać: 

REPEAT

REPEAT

<instrukcje>

<instrukcje>

UNTIL <wyrażenie boolowskie>

UNTIL <wyrażenie boolowskie>

END_REPEAT;

END_REPEAT;

Przykład:

Przykład:

n:=0;

n:=0;

REPEAT

REPEAT

n:=n+1;

n:=n+1;

UNTIL n > 4

UNTIL n > 4

END_REPEAT

END_REPEAT

;

;

background image

32

 

29

EXIT 

EXIT 

Może być użyta wewnątrz pętli do „wyskoczenia” z niej. 

Może być użyta wewnątrz pętli do „wyskoczenia” z niej. 

Dla  pętli  zagnieżdżonych  pozwala  na  „wyskok”  tylko  o 

Dla  pętli  zagnieżdżonych  pozwala  na  „wyskok”  tylko  o 

jeden poziom. 

jeden poziom. 

RETURN

RETURN

Może być ( ale nie musi) używana wewnątrz FC i FB do 

Może być ( ale nie musi) używana wewnątrz FC i FB do 

ich  zakończenia,  np.  warunkowego.  W  takiej  sytuacji 

ich  zakończenia,  np.  warunkowego.  W  takiej  sytuacji 

należy zwracać uwagę na czytelność programu

należy zwracać uwagę na czytelność programu

Wywoływanie funkcji 

Wywoływanie funkcji 

Przykład:

Przykład:

VAR

VAR

...

...

PV_real: REAL;

PV_real: REAL;

...

...

END_VAR

END_VAR

...

...

PV_real:=WORD_TO_REAL(in:=PIW272);

PV_real:=WORD_TO_REAL(in:=PIW272);

background image

32

 

30

Przykład:

Przykład:

Parametry wejściowe:

Parametry wejściowe:

PV:REAL  – zmienna procesowa,

PV:REAL  – zmienna procesowa,

SP : REAL – wartość zadana

SP : REAL – wartość zadana

Run  –  ustawia  regulator  na  tryb 

Run  –  ustawia  regulator  na  tryb 

„RUN”    wartość  domyślna  to  „1”  . 

„RUN”    wartość  domyślna  to  „1”  . 

Jeśli  Run  jest  „0”,  regulator  jest  w 

Jeśli  Run  jest  „0”,  regulator  jest  w 

stanie STOP. 

stanie STOP. 

Parametry wyjściowe:

Parametry wyjściowe:

CV : REAL – sygnał sterowania,

CV : REAL – sygnał sterowania,

Run:  BOOL    –  jest  ustawiany  na  „1” 

Run:  BOOL    –  jest  ustawiany  na  „1” 

jeśli  jest  aktywny  tryb  „AUTO”   

jeśli  jest  aktywny  tryb  „AUTO”   

( automatyczny)

( automatyczny)

Contro

Contro

l

l

PV

PV

SP

SP

CV

CV

run

run

Run

Run

Wywoływanie bloków funkcyjnych

Wywoływanie bloków funkcyjnych

Użycie FB w ST składa się z 3 etapów:

Użycie FB w ST składa się z 3 etapów:

1.

1.

Zadeklarowanie instancji FB,

Zadeklarowanie instancji FB,

2.

2.

Wywołanie instancji,

Wywołanie instancji,

3.

3.

Zapis wyników wykonania tej instancji.

Zapis wyników wykonania tej instancji.

background image

32

 

31

VAR

VAR

....

....

Loop1: Control;  //deklaracja instancji FB

Loop1: Control;  //deklaracja instancji FB

...

...

Temp_1,SP_1: REAL; 

Temp_1,SP_1: REAL; 

Power_1:REAL;

Power_1:REAL;

Run_1:BOOL;

Run_1:BOOL;

...

...

END_VAR

END_VAR

........

........

// wywołanie z domyślną wartością „Run”:

// wywołanie z domyślną wartością „Run”:

Loop1(PV:=Temp_1,SP:=SP1);

Loop1(PV:=Temp_1,SP:=SP1);

// zapis wyników wykonania instancji:

// zapis wyników wykonania instancji:

Power_1:=Loop1.CV; 

Power_1:=Loop1.CV; 

Run_1:=Loop1.Run; 

Run_1:=Loop1.Run; 

...

...

//Równoważna forma wywołania ( opisana w normie, 

//Równoważna forma wywołania ( opisana w normie, 

ale nie 

ale nie 

// dostępna w SIEMENSie )  

// dostępna w SIEMENSie )  

Loop1(PV:=Temp_1,SP:=SP1, 

Loop1(PV:=Temp_1,SP:=SP1, 

CV=>Power,Run=>Run_1);

CV=>Power,Run=>Run_1);

background image

32

 

32

Uwagi końcowe

Uwagi końcowe

ST  może  być  użyty  do  budowy  każdego 

ST  może  być  użyty  do  budowy  każdego 

programu  na  PLC,  ale  jego  użycie  jest 

programu  na  PLC,  ale  jego  użycie  jest 

szczególnie zalecane do realizacji złożonych 

szczególnie zalecane do realizacji złożonych 

operacji matematycznych i pętli. 

operacji matematycznych i pętli. 

Nie każdy system PLC posiada ten język.

Nie każdy system PLC posiada ten język.

Własności  „real  time”  oprogramowania 

Własności  „real  time”  oprogramowania 

napisanego w  ST są tak samo dobre, jak w 

napisanego w  ST są tak samo dobre, jak w 

IL ( dlaczego?)  .

IL ( dlaczego?)  .

 

 

W  tym  języku  możemy  używać  wszystkich 

W  tym  języku  możemy  używać  wszystkich 

standardowych funkcji bloków funkcyjnych. 

standardowych funkcji bloków funkcyjnych. 


Document Outline