SP 10

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

w

FBD

ma

postać

bloków,

Program

w

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,

w

jakiej

został

tej

samej

kolejności,

w

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ł

z

załączenia

napędu

nie

przyjdzie

sygnał

z

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

używane

do

wyliczania

Wyrażenia

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


Wyszukiwarka

Podobne podstrony:
SP WYKŁAD 1 10 12 OD OLI
DSW 05 10 kl3 sp instrukcja(1)
Sp asp cz V 2010 Kom Sp 24 01 10
linia napow, aaa, studia 22.10.2014, Materiały od Piotra cukrownika, materialy Kamil, Szkoła, Labola
ar 159 blumenav sp 60389122 10 2007
10 Sp kom Mat kl 4 podst
Rozwój psychofizyczny od 2 do 10 lat, SP - prace
Załącznik nr 1 do zapytania ofertowego SP.EKS.272.117.2012 - formularz oferty, Przegrane 2012, Rok
rozkl pol sp 4, Rok szkolny 2009-10
rozkl pol sp 5, Rok szkolny 2009-10
10 przykazań - sprawdzian, kl 2 SP
10 PRZYKAZAŃ BOŻYCH - TEST KLASA II, kl 2 SP
Q PG SP Wyk 7-10, szkoła, polityka zagraniczna
Załącznik nr 2 do zapytania ofertowego SP.EKS.272.117.2012 - wykaz usług, Przegrane 2012, Rok 2012,
Załącznik Nr 3 do zapytania ofertowego SP.EKS.272.117.2012 - projekt umowy, Przegrane 2012, Rok 2012
SP WYKLAD 1 10 12

więcej podobnych podstron