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 :
LT - Less Then - Mniejsze Niż
LE - Less or Equel - Mniejsze lub Równe
GT - Great Then - Większe Niż
GE - Great or Equel - Większe lub Równe
EQ - Equel - Równe
LT - Less Then - Mniejsze Niż
Dla wartości IN1 mniejszej od wartości IN2 wyjście Q funkcji zostanie ustawione na "1"
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"
GT - Great Then - Większe Niż
Dla wartości IN1 większej od wartości IN2 wyjście Q funkcji zostanie ustawione na "1"
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"
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 .
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 .
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
|
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 | |
|
||||
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 :
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 :
powoduje odpowiednie ustawienie bitów w bajcie MB0.0 w tym przypadku jest to:
wartość danej = 50 |
MB 0.0 = 50 ( usint ) |
M0.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
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.
PODSTAWY
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. |
OZNACZENIA I SYMBOLE
Oznaczenia i symbole stosowane przy tworzeniu programów na sterowniki PLC w języku drabinkowym .
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 . |
styki
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 . |
cewki
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
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 :
CTU - CounT Up - zliczanie w górę
CTD - CounT Down zliczanie w dół
CTUD - CounT Up / Down zliczanie w górę i dół
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 .
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ę
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ół
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ę )
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.
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 ).
Timery ( przekaźniki czasowe ) - Funkcje realizujące zależności czasowe w sterowniku . Norma IEC 61131-3 przewiduje jako podstawowe trzy rodzaje timerów
TON Time on delay (opóźnione załączenie)
TOF Time off delay (opóźnione wyłączenie)
TP Time pulse (impuls) .
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 )
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 )
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 )
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.
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.
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ść .
Linia czerwona oznacza stan wysoki czyli „1” .
Linia czarna oznacza stan niski czyli „0”
Stan 0 : Sterownik pracuje i wykonuje program , lecz nie podano sygnału na wejście I0.0 i nie ma żadnych efektów.
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.
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 .
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.
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