Podstawy programowania plc


Komparatory ( Comparators ) - Funkcje porównujące między sobą wartości liczbowe . Programując sterownik PLC , a właściwie realizując na nim określony algorytm pracy, funkcja porównania jest jedną z podstawowych . W artykule tym przybliżymy działanie funkcji :

0x01 graphic
LT - Less Then - Mniejsze Niż
Dla wartości IN1 mniejszej od wartości IN2 wyjście Q funkcji zostanie ustawione na "1"

0x01 graphic
LE - Less or Equel - Mniejsze lub Równe
Dla wartości IN1 mniejszej lub równej wartości IN2 wyjście Q funkcji zostanie ustawione na "1"

0x01 graphic
GT - Great Then - Większe Niż
Dla wartości IN1 większej od wartości IN2 wyjście Q funkcji zostanie ustawione na "1"

0x01 graphic
GE - Great or Equel - Większe lub Równe
Dla wartości IN1 większej lub równej wartości IN2 wyjście Q funkcji zostanie ustawione na "1"

0x01 graphic
EQ - Equel - Równe
Dla wartości IN1 równej wartości IN2 wyjście Q funkcji zostanie ustawione na "1"

UWAGA : Przy używaniu funkcji EQ ( Równe ) należy pamiętać o cyklicznym odczytywaniu wartości z wejść przez sterownik . Może się zdarzyć , że wartość mierzona "przeskoczy" wartość zadaną w ciągu jednego cyklu programu  tzn. po pierwszym odczycie wartość mierzona będzie równa np. 120 a po drugim 125 i wtedy sterownik przy wartości zadanej równej 123 jej nie "zobaczy" , spowoduje to nie przewidywalne działanie programu, a ściśle pominięcie warunku w programie  .

Przykład 1:Sterowanie napełnianiem zbiornika z analogowym (ciągłym) pomiarem poziomu .

 

0x01 graphic


Pomiar poziomu w zbiorniku realizowany jest poprzez wejście analogowe IA0 , poziom załączenia ustawiony na 50 a poziom wyłączenia na 100.

Działanie programu wygląda następująco :

Przy poziomie poniżej 50 zadziała komparator CP1 ustawiając swoje wyjście na "1" co spowoduje ustawienie wyjścia sterownika Q0.1 na "1" na sztywno (S) . Wyjście Q0.1 pozostanie załączone do momentu kiedy nie zadziała komparator CP2. Po przekroczeniu nastawionego poziomu 100 komparator CP2 ustawi swoje wyjście na "1" co spowoduje RESET ( wyłączenie ) wyjścia Q0.1 

Analizując powyższy program warto zwrócić uwagę na to , że wiodącym (priorytetowym) jest WYŁĄCZENIE ( Reset) wyjścia Q0.1 , czyli zawsze po przekroczeniu wartości zadanej w CP2 (CP2.Q=1) zostanie wyłączone wyjście sterownika Q0.1 .

Uwaga praktyczna 1 : Należy pamiętać w tak prostym programie o odpowiednim ustawieniu wartości zadanych ( CP1.IN2 i CP2.IN2) czyli wartość zadanej dla CP1 - załączenie musi być mniejsza niż wartość zadana CP2 - wyłączenie , w innym przypadku wyjście sterownika Q0.1 zostanie załączone dla spełnionego warunku CP1.Q=1 i takim pozostanie , czyli po załączeniu nigdy nie wyłączy się wyjście sterownika.

Uwaga praktyczna 2 : Z kolei przy poprawnie ustawionych wartościach zadanych CP1.IN2 > CP2.IN2 ale zbyt małej różnicy ( histerezie ) pomiędzy nimi w stosunku do możliwych nie wymuszonych zmian wartości mierzonej np. falowanie cieczy w zbiorniku spowodujemy zbyt częste ząłączanie/wyłączanie wyjścia Q0.1. W praktyce "migotanie " stycznika

Wartością mierzoną w przykładzie 1 jest poziom cieczy w zbiorniku , jednak zmiana z układu napełniania zbiornika z cieczą na układ utrzymania ciśnienia itp. nie powoduje zmian w programie a tylko w podłączonych urządzeniach .

Typy danych w sterownikach PLC

W tym rozdziale opiszemy typy i zakresy danych występujących w programach . Z rozdziałem tym warto dokładnie się zapoznać , gdyż informacje tu zawarte są niezbędne przy pisaniu programów na sterowniki PLC na każdym etapie zaawansowania. 

 

Typy danych

W naszym przypadku danymi są wszystkie informacje przychodzące do sterownika „I” ( wejścia cyfrowe, analogowe itd. ), wychodzące ze sterownika „Q” (wyjścia cyfrowe .... itd. ) oraz wewnętrzne sterownika „M” ( zmienne czyli markery ) .

Podstawową jednostką „miary” jest bit może on przyjmować tylko dwie wartości - 0 lub 1 kolejne jednostki składają się z odpowiedniej ilości bitów. jak w tabeli poniżej

0x01 graphic
0x01 graphic
 

oznaczenie

typ danej

ilość bitów

zakres wartości

opis

BOOL

Boolean

1

0-1

Zmienne tego typu mogą przyjmować tylko dwie wartości czyli "0" lub "1" .

BYTE

ciąg 8 bitów

8

nie posiada wartości numerycznej

WORD

ciąg 16 bitów

16

nie posiada wartości numerycznej

DWORD

ciąg 32 bitów

32

nie posiada wartości numerycznej

LWORD

ciąg 64 bitów

64

nie posiada wartości numerycznej

Typy zmiennych o wartości wyrażonej w systemie dziesiętnym , są to liczby całkowite ( integer ), których wartość wyliczana jest ze stanu odpowiednich bitów (konwersja z zapisu dwójkowego na zapis dziesiętny)

SINT

short integer

8

-128 : 127

"Krótka" liczba całkowita .

INT

integer

16

-32 768 : 32 767

Liczba całkowita .

DINT

double integer

32

-231 : (231-1)

"Podwójna" liczba całkowita .

LINT

long integer

64

-263 : (263-1)

"Długa" liczba całkowita .

USINT

unsigned Short integer

8

0 : 255

"Krótka" liczba całkowita nieznakowana ( przyjmuje tylko wartości dodatnie).

UINT

unsigned integer

16

0 : 65535

Liczba całkowita nieznakowana ( przyjmuje tylko wartości dodatnie).

UDINT

unsigned double integer

32

0 : (232-1)

" Podwójna "liczba całkowita nieznakowana ( przyjmuje tylko wartości dodatnie).

ULINT

unsigned long integer

64

0 : (264-1)

" długa "liczba całkowita nieznakowana ( przyjmuje tylko wartości dodatnie).

 

STRING

-

-

Dowolne znaki czyli litery i cyfry , jednak cyfry będą traktowane jako znak a nie określona wartość .

TIME

czas

-

typ danej występujący w timerach format zapisu T#XdXhXmXsXms gdzie X to określona wartość i kolejno d- dni, h-godziny,m-minuty, s-sekundy, ms- milisekundy

Pamięć sterownika

Pamięć w sterowniku PLC podzielona jest na dwa główne obszary :

- Obszar pamięci programu , tutaj przechowywany jest kod wprowadzonego programu

- Obszar pamięci danych w której , przechowywane są wszystkie dane wykorzystywane przez sterownik , a dokładniej przez wprowadzony program

Sposób oznaczania i adresowania komórek pamięci przedstawia diagram poniżej :

 

0x01 graphic

 

Poniżej tabela przedstawiająca strukturę pamięci w której przechowywane są dane.

 

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

M0.0

M0.1

M0.2

M0.3

M0.4

M0.5

M0.6

M0.7

M1.0

M1.1

M1.2

M1.3

M1.4

M1.5

M1.6

M1.7

MB 0

MB 1

MW0

M4.0

M4.1

M4.2

M4.3

M4.4

M4.5

M4.6

M4.7

M5.0

M5.1

M5.2

M5.3

M5.4

M5.5

M5.6

M5.7

MB 4

MB 5

MW4

Jak widać w tabeli powyżej, i należy o tym zawsze pamiętać, marker nr 0 typu WORD ( MW0 ) składa się z bajtów 0 i 1 (MB0 i MB1) te z kolei z bitów 0.0 do 0.7 i 1.0 do 1.7 . , analogicznie następne MW2 , MW4 itd.

Adresując komórkę typu WORD jako adres podajemy numer „młodszego” bajta .

Wpisanie konkretnej wartości liczbowej w kodzie dziesiętnym np. 50 :

 

0x01 graphic

 

powoduje odpowiednie ustawienie bitów w bajcie MB0.0 w tym przypadku jest to:

 

wartość danej = 50

MB 0.0 = 50 ( usint )

M0.0

M0.1

M0.2

M0.3

M0.4

M0.5

M0.6

M0.7

0

1

0

0

1

0

0

0

wynikające z konwersji wartości dziesiętnej na dwójkową .

Warto zwrócić uwagę na sposób numeracji bitów , ale także zmiennych typu BYTE , WORD , która rozpoczyna się od 0. Czyli bit pierwszy w kolejności (najmłodszy) będzie miał oznaczenie np M0.0 a nie jak wydawałoby się w sposób naturalny M 0.1.Dotyczy to również pozostałych typów zmiennych.

Często popełnianym przez początkujących programistów błędem jest wpisanie wartości w bajta np. jak wyżej a potem wykorzystanie w programie bitu wchodzącego w skład tego samego bajta co powoduje zmianę jego wartości i to w sposób znaczący.

Na przykład ustawienie „1” w markerze M0.0 spowoduje zmianę wartości MB0 z 50 na 51 jednak już zmiana na „1” w markerze M0.7 zmieni wartość w MB0 na 178. Sterownik wszystkie dane zachowuje w kodzie dwójkowym i tylko w zależności od zadeklarowanego typu markera odpowiednio je przedstawia. Szerzej zajmiemy się tym zagadnieniem w rozdziale o operacjach na bitach.

Kolejną rzeczą na którą należy zwracać szczególną uwagę jest zakres wartości jakie mogą przyjmować zmienne . Jako , że każda zmienna ma określoną wartość maksymalną zdarzyć się może "przekręcenie " wartości . Na przykład dodanie 1 do zmiennej typu USINT ( 0 : 255) kiedy posiada już wartość równą 255 spowoduje ustawienie w tej zmiennej wartości 0 a nie 256

Podstawowowe oznaczenia i symbole PLC

Podstawowe pojęcia i dane dotyczące najpopularniejszego języka programowania sterowników PLC tzn języka drabinkowego. Jest to język graficzny i nazwę zawdzięcza wyglądowi struktury programu faktycznie drabinki.

0x01 graphic

PODSTAWY

0x01 graphic

 

Wszystkie użyte symbole są zgodne z normą IEC 61131-3 dotyczącą normalizacji symboliki i funkcji języków programowania sterowników PLC jednak należy pamiętać , że producenci sterowników PLC w swoim oprogramowaniu używają niekiedy zmodyfikowanej symboliki . W przykładach podano różnice jakie wystepują w sterownikach różnych producentów .

UWAGA : W chwili obecnej większość producentów dostarcza oprogramowanie narzędziowe "zgodne z IEC 61131-3" i takie ono jest jednak nie wszystkie funkcje zawarte w normie muszą być zaimplementowane w oprogramowaniu . Oznaczenie " zgodne z IEC 61131-3 " oznacza jedynie ,że funkcje które posiada dane oprogramowanie jest zgodne co do działania i symboliki z zaleceniami normy.

 

0x01 graphic

0x01 graphic
0x01 graphic
OZNACZENIA I SYMBOLE

Oznaczenia i symbole stosowane przy tworzeniu programów na sterowniki PLC w języku drabinkowym .

0x01 graphic

oznaczenie

rodzaj

opis

I

Input (Wejście)

W każdym sterowniku PLC mają takie samo oznaczenie , mogą być przypisywane tylko do symboli styków informują o stanie wejść na sterowniku.

Q

Output (Wyjście)

W każdym sterowniku PLC mają takie samo oznaczenie , mogą być przypisywane zarówno do symboli cewek (wtedy ustawiają konkretne wyjście sterownika) jak i styków gdzie informują o stanie wyjść .

M

Marker (Zmienna Wewnętrzna)

Tym symbolem określa się zmienne wewnętrzne sterownika , wykorzystywane są jako cewki i styki. elementy pośrednie programu .

0x01 graphic

0x01 graphic

styki

0x01 graphic

symbol

rodzaj

opis

|---

-

Symbol ten oznacza początek lini , występuje zawsze skrajnie po lewej stronie i jego stan jest równy 1 "TRUE" - lewa strona drabinki.

---|

-

Symbol ten oznacza koniec lini , występuje zawsze skrajnie po prawej stronie - prawa strona drabinki.

--| |--

Boolean

Stan występujący po lewej stronie jest przenoszony na prawą stronę w momencie występowania w przypisanej zmiennej stanu "1 - TRUE" . W każdym innym przypadku stan z prawej strony równy jest "0 - FALSE"

--| / |--

Boolean

Stan występujący po lewej stronie jest przenoszony na prawą stronę w momencie występowania w przypisanej zmiennej stanu "0 - FALSE". W każdym innym przypadku stan z prawej strony równy jest "0 - FALSE"

--|P|--

Boolean

Stan występujący po lewej stronie jest przenoszony na prawą stronę na jeden cykl programu w momencie przejścia zmiennej ze stanu "0 - FALSE" na "1 - TRUE". W każdym innym przypadku stan z prawej strony równy jest "0 - FALSE".

Jest to tzw. zbocze narastające ( z ang. positive transition ) . W praktyce działanie wygląda w ten sposób , że w momencie pojawienia się sygnału "1" w przypisanej zmiennej sygnał z lewej strony symbolu jest przenoszony tylko w tym samym cyklu wykonywania programu , w cyklu kolejnym nie ma znaczenia utrzymywanie się sygnału "1" w przypisanej zmiennej - sygnał nie będzie przenoszony.

--|N|--

Boolean

Stan występujący po lewej stronie jest przenoszony na prawą stronę na jeden cykl programu w momencie przejścia zmiennej ze stanu "1 - TRUE" na "0 - FALSE". W każdym innym przypadku stan z prawej strony równy jest "0 - FALSE".

Jest to tzw. zbocze opadające ( z ang. negative transition ) . W praktyce działanie wygląda w ten sposób , że w momencie pojawienia się sygnału "1" w przypisanej zmiennej sygnał nie jest przenoszony dalej . Sygnał z lewej zostanie przeniesiny dopiero kiedy stan zmiennej zmieni się na "0" i to tylko w tym samym cyklu wykonywania programu.

---» xxxx

-

Symbol skoku (z ang. jump) gdzie xxxx to nazwa powiązanej etykiety - Jeżeli z lewej strony symbolu pojawi się "1" zostanie wykonany skok do powiązanej etykiety ( z ang. label ).

Wykonanie skoku oznacza ,że linie programu znajdujące się pomiędzy instrukcją skoku a etykietą nie będą wykonywane .

---« xxxx

-

Etykieta skoku (z ang. label) gdzie xxxx to jej nazwa - adres docelowy instrukcji skoku .

 

0x01 graphic

cewki

0x01 graphic

 

Symbol

typ zmiennej

opis

--( )--

Boolean

Stan występujący po lewej stronie jest kopiowany do przypisanej zmiennej i na prawą stronę.

--( / )--

Boolean

Stan występujący po lewej stronie jest kopiowany do przypisanej zmiennej w taki sposób ,że dla stanu "ON" z lewej strony do zmiennej przepisywany jest stan "OFF" i na odwrót.

--( P )--

Boolean

Do zmiennej jest przepisywany "ON" tylko na jeden cykl programu po zmianie stanu z lewej strony z "OFF" na "ON" tzw. zbocze narastające.

--( N )--

Boolean

Do zmiennej jest przepisywany "ON" tylko na jeden cykl programu po zmianie stanu z lewej strony z "ON" na "OF" tzw. zbocze opadające.

--( S )--

Boolean

Stan występujący po lewej stronie jest kopiowany "zatrzaskowo" do przypisanej zmiennej.Powrót zmiennej do stanu "OFF" możliwy jest tylko przy użyciu cewki RESET. -> patrz dalej

--( R )--

Boolean

W przypadku wystąpienia stanu "ON" po lewej stronie zmienna jest resetowana do stanu "OFF"

Liczniki ( counters ) - w sterownikach PLC

Liczniki- Counters

Liczniki- Counters - Funkcje umożliwiające zliczanie impulsów w sterownikach PLC . Mogą to być impulsy pochodzące z obiektu podłączone do wejść sterownika , ale również generowane wewnętrznie w programie .

W tym rozdziale opisane zostały trzy typy liczników występujących w normie IEC 61131-3 :

We wszystkich licznikach wartość początkowa CV ( wartość aktualna ) wynosi "0" i dopiero przepisanie wartości - wykonanie polecenia powoduję zmianę tego stanu. Liczniki są jednymi z podstawowych funkcji w sterownikach PLC i wykorzystywane są w różnorodny sposób , często w powiązaniu z komparatorami .

0x01 graphic

CD - Count Down - wejście zliczające impulsy - typ danej BOOL
LPV - Load Preset Value - załadowanie wartości początkowej - typ danej BOOL
PV - Preset Value - Nastawiana wartość początkowa licznika - typ danej INT ( Integer)
Q - wyjście sygnalizujące osiągnięcie przez licznik wartości "0" - typ danej BOOL
CV - Current Value - aktualna wartość licznika - typ danej INT ( Integer)

Działanie : Po podaniu sygnału na wejście LPV bloku, zostanie przepisana wartość z wejścia PV ( wartość nastawy ) do licznika , następnie każdy impuls podawany na wejście CD spowoduje zmniejszenie wartości licznika o "1" co będzie widoczne na wyjściu CV ( wartość aktualna). Wyjście Q zostanie ustawione na "1" w momencie gdy wartość CV osiągnie wartość równą lub mniejszą od "0" czyli licznik doliczy do zadanej ilości impulsów .

CTU - CounT UP - Licznik zliczający w górę

0x01 graphic
0x01 graphic

CU - Count UP - wejście zliczające impulsy (BOOL)
R - Reset - kasowanie licznika (BOOL)
PV - Preset Value - Nastawiana wartość licznika (INT)
Q - wyjście sygnalizujące osiągnięcie przez licznik nastawionej wartości ( BOOL )
CV - Current Value ( INT) - aktualna wartość licznika .

Działanie : Po podaniu sygnału na wejście zliczające CU wartość licznika zostaje zwiększona o "1" . Wyjście Q zostanie ustawione na "1" w chwili gdy wartość aktualna licznika CV przekroczy wartość nastawioną PV . W odróżnieniu od licznika zliczającego w dół wartość nastawiana PV przepisywana jest w licznik " automatycznie" w momencie jego wywołania. Wejście R ( Reset) służy do kasowania wartości aktualnej licznika do "0" w momencie pojawienia się na nim sygnału "1"

CTUD - CounT Up Down - Licznik zliczający w górę i w dół

0x01 graphic
0x01 graphic

CU - Count Up - wejście zliczające impulsy w góre -dodaj- (BOOL)
CD - Count Down - wejście zliczające impulsy w dół -odejmuje- (BOOL)
LPV - Load Preset Value - załadowanie wartości początkowej (BOOL)
R - Reset - kasowanie licznika (BOOL)
PV - Preset Value - Nastawiana wartość licznika (INT)
QU - wyjście sygnalizujące osiągnięcie przez licznik nastawionej wartości ( BOOL )
QD - wyjście sygnalizujące osiągnięcie przez licznik wartości "0" ( BOOL )
CV - Current Value ( INT) - aktualna wartość licznika .

Działanie :Po podaniu sygnału na wejście zliczające CU wartość licznika zostaje zwiększona o "1" , podanie sygnału na wejście CD powoduje zmniejszenie wartości licznika o "1" . Wyjście QU zostanie ustawione na "1" w chwili gdy wartość aktualna licznika CV przekroczy wartość nastawioną PV , wyjście QD zostanie ustawione na "1" dla wartości aktualnej licznika równej "0" .W momencie pojawienia się "1" na wejściu LPV zostanie załadowana wartość początkowa ustawiana na wejściu PV . Wejście R ( Reset) służy do kasowania wartości aktualnej licznika do "0" bez względu na pozostałe warunki.

Należy w tym przypadku pamiętać o cykliczności pracy sterownika PLC tzn odczyt wejść -> wykonanie programu -> ustawienie wyjść . Wykonywanie programu trwa określony czas i mimo , że jest on bardzo krótki to w przypadku liczników bardzo istotny Liczniki odczytują zmianę stanu wejścia z 0 na 1 czyli zbocze narastające sygnału , tak że stan sygnału wejściowego musi zmienić się z powrotem na "0" aby "zaliczony" został kolejny impuls . Ilustruje to diagram poniżej gdzie: tp to czas wykonywania programu a CU stan wejścia bloku CTU ( zliczanie w górę )

0x01 graphic

Jak widać sygnały zbyt krótkie mogą nie zostać policzone przez licznik , dlatego należy zakładać , że impuls na wejściu licznika powinien trwać przynajmniej dwa razy dłużej niż cykl programu , to samo dotyczy przerwy między zliczanymi sygnałami .

Przykład :

tp - czas cyklu programu sterownika
ti - minimalny czas impulsu zliczanego
tpi - minimalny czas przerwy między impulsami
fi - częstotliwość impulsów wejściowych

ti >= 2 x tp
tpi >= 2 x tp

Czyli dla czasu wykonywania programu tp = 20 [ms] minimalny czas trwania impulsu (ti) wynosi 40 [ms] i taki sam minimalny czas dla przerwy pomiędzy impulsami tpi >= 40[ms] . Co przekłada się bezpośrednio na częstotliwość impulsów wejściowych , która w tym przypadku ( tp=20[ms] ) nie może przekroczyć fi >= 1/( ti + tpi) 12,5 Hz.

Jednak przy wolniej działających sterownikach lub większych programach gdzie czas cyklu wynosi np. 150 [ms] maksymalna częstotliwość wynosi już tylko 1,6 Hz .
Jak z powyższego widać wykorzystanie "zwykłych" liczników w procesach szybko zmiennych ( np. pozycjonowanie ) nie wchodzi w rachubę , do tego służą tzw. liczniki szybkie umożliwiające zliczanie impulsów w trakcie wykonywania przez sterownik programu . Szybkim licznikom poświęcimy osobny rozdział.

Przykład 1 :

Zliczanie osób wchodzących/wychodzących z/do budynku za pomocą np. barier optycznych.
Program umożliwia śledzenie ilości osób obecnych w budynku przy czym :
I0.0 to impuls z bariery 1 zliczającej osoby wchodzące .
I0.1 to impuls z bariery liczącej osoby wychodzące .
Ilość osób obecnych widoczna jest w markerze MB0 .

W przypadku przekroczenia ilości osób , które mogą jednocześnie przebywać w budynku uruchomione zostanie wyjście Q0.0 na przykład jako alarm. Maksymalna ilość osób ustawiana jest na wejściu PV bloku CTUD w tym przypadku wartość ustawiona jest jako stała ( constans) na 100. Resetowanie licznika możliwe jest za pomocą wejścia I0.2.

0x01 graphic

Dla powyższego przykładu warto pamiętać , iż dla wyjścia CV ( wartość aktualna ) zastosowano marker typu BAJT ( MB - USINT ) , którego wartość maksymalna wynosi 255 dlatego też wartość nastawiana PV ( w tym przypadku maksymalna liczba osób przebywających w budynku ) nie może przekroczyć tej wartości . Przy zastosowaniu, dla wyjścia CV markera typu WORD ( np. MW0 ) wielkość ta zwiększa się do 65 535 ( UINT ).

Przekaźniki czasowe - Timery

Timery ( przekaźniki czasowe ) - Funkcje realizujące zależności czasowe w sterowniku . Norma IEC 61131-3 przewiduje jako podstawowe trzy rodzaje timerów

Przy pomocy tych trzech typów można zbudować właściwie każde uzależnienie czasowe . W rozdziale tym omówione zostaną spsoby działania w sterowniku PLC , który różni się nieco od działania tradycyjnych przekaźnikow

TON - Opóźnione załączenie ( Time ON Delay )

 

0x01 graphic
0x01 graphic

EN - Enable - uruchomienie bloku - typ danej - BOOL
PT - Preset Time - nastawiany czas działania - typ danej - TIME

QV-Output Value - aktualnie odmierzany czas - typ danej - TIME
Q - Output - wyjście bloku - typ danej - BOOL

Działanie bloku wygląda następująco : po podaniu sygnału „1” na wejście EN rozpoczyna się odmierzanie nastawionego czasu PT po jego odmierzeniu zostaje załączone wyjście Q . Wyjście zostaje wyłączone ( deaktywowane ) w przypadku zmiany stanu na wejściu EN na „0” .

TOF- Opóźnione wyłączenie ( Time OFf Delay )

0x01 graphic

0x01 graphic

EN- Enable - uruchomienie bloku - typ danej - BOOL
PT-Preset Time - nastawiany czas działania - typ danej - TIME
QV - Output Value - aktualnie odmierzany czas - typ danej - TIME
Q- Output - wyjście bloku - typ danej - BOOL

Działanie bloku wygląda następująco : po podaniu sygnału „1” na wejście EN zostaje załączone wyście Q po zmianie sygnału z „1” na „0” rozpoczyna się odmierzanie nastawionego czasu PT . Wyjście Q zostaje wyłączone ( deaktywowane ) dopiero po odliczeniu nastawionego czasu .

TP- impuls czasowy ( Time Pulse )

0x01 graphic

0x01 graphic

EN - Enable - uruchomienie bloku - typ danej - BOOL
PT- Preset Time - nastawiany czas działania - typ danej - TIME
QV- Output Value - aktualnie odmierzany czas - typ danej - TIME
Q - Output - wyjście bloku - typ danej - BOOL

Działanie bloku wygląda następująco : po podaniu sygnału „1” na wejście EN zostaje załączone wyjście Q oraz rozpoczyna się odmierzanie nastawionego czasu PT . Wyjście zostaje wyłączone ( deaktywowane ) po odliczeniu nastawionego czasu

Przykład1 : Proste załączenia wyjścia z opóźnieniem.

0x01 graphic
 

Sposób działania : W przykładzie tym po podaniu sygnału „1” na wejście I 0.0 rozpoczęte zostanie odmierzanie czasu w timerze T 01 , po jego upłynięciu zostanie załączone wyjście Q 0.0 . Warto zauważyć , że wyjście nie zostanie załączone jeżeli czas trwania sygnału „1” na wejściu I 0.0 nie będzie odpowiednio długi - większy niż ustawiony w timerze T 0.1

Przykład 2 :Kombinacja dwóch rodzaji timer'ów. Załączenie z opóźnieniem na określony czas, praca cykliczna.

 

0x01 graphic

0x01 graphic

Sposób działania : W przykładzie tym po podaniu sygnału „1” na wejście I 0.0 rozpoczęte zostanie odmierzanie czasu w timerze T 01 , po jego upłynięciu zostanie załączone wyjście Q 0.0 i jednocześnie zacznie być odmierzany czas w timerze T 02 po upłynięciu którego wyjście Q 0.0 zostanie wyłączone i dopóki wejście I0.0 będzie aktywne cykl będzie się powtarzał od początku. Przerwanie działania możliwe jest tylko w momencie odmierzania czasu przez timer T01 ( Q0.1 wyłączone) , jeżeli wyjście Q0.1 zostanie załączone, pozostanie już takie do upłynięcia czasu w T02.

Poniżej przeanalizujemy działanie powyższego programu krok po kroku , a właściwie cykl po cyklu .

UWAGA! Ilustracje poniżej pokazują stan sterownika na zakończenie pojedynczego cyklu pracy tzn po wykonaniu programu tuż przed ustawianiem wyjść .

0x08 graphic
Linia czerwona oznacza stan wysoki czyli „1” .

0x08 graphic
Linia czarna oznacza stan niski czyli „0

0x01 graphic
Stan 0 : Sterownik pracuje i wykonuje program , lecz nie podano sygnału na wejście I0.0 i nie ma żadnych efektów.

0x01 graphic
Stan 1 : Podano sygnał „1” na wejście I0.0. Zostaje on przeniesiony dalej przez zanegowaną bramkę wyjścia timera T02 (T02.Q=0) w ten sposób uaktywniając timer T01 (T01.EN=1), który rozpoczyna pomiar nastawionego czasu . Wyjście T01.Q pozostaje niezałączone . Ten stan trwa do momentu doliczenia przez timer T01 ustawionego czasu.

0x01 graphic
Stan 2 : Po doliczeniu czasu przez timer T01 zostaje ustawione jego wyjście (T01.Q=1) co jednocześnie uruchamia timer T02 ( T02.EN=1) , który załącza swoje wyjście ( T02.Q=1) oraz wyjście Q 0.1 sterownika .

0x01 graphic
Stan 3 : Po załączeniu wyjścia timera T02 zostaje wyłączony timer T01 (T02.Q=1), a timer T02 rozpoczyna pomiar czasu.
W tym momencie jak widać przestaje być istotny stan wejścia I0.0 , wyjście Q0.1 pozostaje załączone do czasu gdy timer T02 odmierzy nastawiony czas.

0x01 graphic
Stan 4 : Po odmierzeniu czasu przez timer T02 jego wyjście zostaje wyłączone co wyłącza równocześnie wyjście sterownika Q 0.1.
W zależności od wejścia I0.0 sterownik powraca do:
Stanu 1 dla wejścia załączonego
Stanu 0 dla wejścia wyłączonego



Wyszukiwarka

Podobne podstrony:
Podstawy programowania sterowników PLC (2)
Podstawy programowania sterowników PLC (2)
Podstawy programowania sterowników PLC (2)
Nowa podstawa programowa WF (1)
1 Podstawy programowania dialogowego
nowa podstawa programowa sp
11-nkb~1, wisisz, wydzial informatyki, studia zaoczne inzynierskie, podstawy programowania, l2
2-eukl~1, wisisz, wydzial informatyki, studia zaoczne inzynierskie, podstawy programowania, l2
Zmiany w podstawie programowej w zakresie edukcji matematycznej, Wczesna edukacja, Materiały do prac
1-algo~1, wisisz, wydzial informatyki, studia zaoczne inzynierskie, podstawy programowania, l2
c-zadania-w3, wisisz, wydzial informatyki, studia zaoczne inzynierskie, podstawy programowania, kol
Wychowanie w nowej podstawie programowej katechezy, szkoła, Rady Pedagogiczne, wychowanie, profilakt
PP temat6, Podstawy programowania

więcej podobnych podstron