Kurs PLC(1), automatyka, Step 7


WSTĘP

0x01 graphic

Niniejszy kurs skierowany jest do wszystkich osób chcących zapoznać sią z budową i działaniem sterowników PLC. W chwili obecnej sterowanie stanowi podstawę każdej produkcji w większych i mniejszych zakładach . Ze względu na znacznie , w ciągu ostatnich lat , zmniejszone ceny a zwiększoną różnorodność sterowników PLC stanowią one podstawę wszystkich układów sterowania automatycznego.

Opracowanie to skierowane jest w równym stopniu do początkujących w tym zakresie automatyków jak i innych osób - elektryków - mechaników , dla których wiedza o działaniu sterownika PLC jest niezbędna w pracy , czy hobbystów chcących zautomatyzować dowolne urządzenie .

0x01 graphic

Sterownik PLC

0x01 graphic

Sterownik PLC ( Programable Logic Controller ) w dosłownym tłumaczeniu oznacza Programowalny Sterownik Logiczny w wolnym tłumaczeniu Sterownik Swobodnie Programowalny czyli sterownik , którego działanie zależne jest od wprowadzonego programu i nie ma z góry narzuconego algorytmu pracy.

Na potrzeby tego opracowania przyjąć należy , że Sterownik PLC to "czarna skrzynka " , która posiada określone właściwości oraz peryferia typu wejścia i wyjścia

Wspólną właściwością dla obu typów sygnałów analogowych jest ich rozdzielczość , którą określa się w ilości bitów których trzeba użyć do przedstawienia wartości . Tak na przykład rozdzielczość 8 bitów oznacza , że sygnał 0÷10V w sterowniku będzie "widziany" jako wartość 0 ÷ 255 , więcej o tym w rozdziale typy danych

PODSTAWY

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

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)  

 

0x01 graphic

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)  

 

0x01 graphic

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)  

 

0x01 graphic

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

0x01 graphic

styki

0x01 graphic

symbol

typ zmiennej  

 

opis

|---

-

0x01 graphic

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

---|

-

0x01 graphic

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

--| |--

Boolean

0x01 graphic

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

0x01 graphic

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

0x01 graphic

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

0x01 graphic

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

0x01 graphic

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

-

0x01 graphic

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

-

0x01 graphic

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

0x01 graphic

cewki

0x01 graphic

symbol

typ zmiennej  

 

opis

--( )--

Boolean

0x01 graphic

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

--(/)--

Boolean

0x01 graphic

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

0x01 graphic

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

0x01 graphic

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

0x01 graphic

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

0x01 graphic

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

0x01 graphic

Podstawowe Funkcje

0x01 graphic


0x01 graphic

 

 

0x01 graphic

Proste przepisanie wartości z zmiennej M1 do zmiennej M2. Zmienne M1 i M2 mogą być właściwie typu _ANY czyli dowolnego jednak obie muszą być tego samego typu.


0x01 graphic

 

 

0x01 graphic

Realizacja funkcji NOT zmienne mogą być tylko typu bool.


0x01 graphic

 

 

0x01 graphic

Realizacja funkcji OR, w tym przypadku zmienne mogą być tylko typu BOOL

tablica stanów funkcji

OR

M1

M2

M3

Stan 1

0

0

0

Stan 2

0

1

1

Stan 3

1

0

1

Stan 4

1

1

1


0x01 graphic

 

 

0x01 graphic

Realizacja funkcji AND, w tym przypadku zmienne mogą być tylko typu BOOL

tablica stanów funkcji

AND

M1

M2

M3

Stan 1

0

0

0

Stan 2

0

1

0

Stan 3

1

0

0

Stan 4

1

1

1


0x01 graphic

 

 

0x01 graphic

Realizacja funkcji XOR, w tym przypadku zmienne mogą być tylko typu BOOL

tablica stanów funkcji

XOR

M1

M2

M3

Stan 1

0

0

0

Stan 2

0

1

1

Stan 3

1

0

1

Stan 4

1

1

0


0x01 graphic

 

 

0x01 graphic

Realizacja funkcji NAND, w tym przypadku zmienne mogą być tylko typu BOOL

tablica stanów funkcji

NAND

M1

M2

M3

Stan 1

0

0

1

Stan 2

0

1

1

Stan 3

1

0

1

Stan 4

1

1

0


0x01 graphic

 

 

0x01 graphic

Realizacja funkcji NOR, w tym przypadku zmienne mogą być tylko typu BOOL

tablica stanów funkcji

NOR

M1

M2

M3

Stan 1

0

0

1

Stan 2

0

1

0

Stan 3

1

0

0

Stan 4

1

1

0

copyright © plc@plcs.net.pl    www.plcs.net.pl

 

 

 

 

 

 

 

 

 

 

 

 

0x01 graphic
0x01 graphic
0x01 graphic
0x01 graphic

0x01 graphic
0x01 graphic
0x01 graphic

0x01 graphic
0x01 graphic
0x01 graphic

Typy i rodzaje danych.

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.

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

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 :

0x08 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 :

0x08 graphic
powoduje odpowiednie ustawienie bitów w bajcie MB0.0 w tym przypadku

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

0x01 graphic
0x01 graphic
0x01 graphic
0x01 graphic

0x01 graphic
0x01 graphic
0x01 graphic

0x01 graphic
0x01 graphic
0x01 graphic

Timery

0x01 graphic

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 . Poniżej omówimy poszczególne typy .

0x01 graphic

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

0x01 graphic

0x01 graphic
  TON reprezentacja graficzna

0x01 graphic
  TON wykres czasowy

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” .

^

0x01 graphic

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

0x01 graphic

0x01 graphic
  TOF reprezentacja graficzna

0x01 graphic
TOF wykres czasowy

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 .

^

0x01 graphic

TP- impuls czasowy ( Time Pulse )

0x01 graphic

0x01 graphic
  TP reprezentacja graficzna

0x01 graphic
  TP wykres czasowy

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

^

0x01 graphic

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

0x01 graphic

0x01 graphic
widok programu

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

^

0x01 graphic

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

0x01 graphic

0x01 graphic
widok programu

0x01 graphic
Przebiegi czasowe

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 .

0x08 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.

0x08 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

^

0x01 graphic

Podstawowe bloki funkcyjne

Komparatory ( Comparators ) - Funkcje porównujące między sobą wartości liczbowe . W sterownikach PLC występuje pięć takich funkcji , omówimy je kolejno.

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ą 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 właściwie pominięcie warunku w programie ( i to również można wykorzystać) .

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

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 .


Liczniki- Counters

0x01 graphic

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"

0x01 graphic

CTD - CounT Down - Licznik zliczający w dół

0x01 graphic

0x01 graphic
  CTD Reprezentacja graficzna

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 .

^

0x01 graphic

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

0x01 graphic

0x01 graphic
  CTU Reprezentacja graficzna

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"

^

0x01 graphic

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

0x01 graphic

0x01 graphic
  CTUD reprezentacja graficzna

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.

^

0x01 graphic

UWAGI

0x01 graphic

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
t
pi >= 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ł.

^

0x01 graphic

Przykład 1 :

0x01 graphic

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 ).

^



Wyszukiwarka

Podobne podstrony:
KOMENDY S7, Automatyka, STEP
sterownik PLC, Automatyka
Kurs PLC
Sterowniki PLC w automatyce i robotyce
automating with step 7 in lad and fbd simatic (1)
Przesterowanie i rozruch-kwit, Akademia Morska, kurs na 2eng, automatyka
regulator pręd obr hydrauliczny, Akademia Morska, kurs na 2eng, automatyka
GCU sygnały sterowania, Akademia Morska, kurs na 2eng, automatyka
Zabezpieczenie silnika-kwit, Akademia Morska, kurs na 2eng, automatyka
cw6 PLC elementy automatyki prz Nieznany
PLC, Politechnika Lubelska, Studia, Studia, organizacja produkcji, laborki-moje, AUTOMATYKA V. sem
szczesny-plc -dlugopis, Akademia Morska -materiały mechaniczne, szkoła, GRZES SZKOLA, szkoła, automa
Sterownik PLC LOGO, LOGO! Automatyka
obliczenia żurawia, Akademia Morska, kurs na 2eng, automatyka
GCU, Akademia Morska, kurs na 2eng, automatyka
żuraw hydrauliczny, Akademia Morska, kurs na 2eng, automatyka
cw5 PLC elementy automatyki prz Nieznany

więcej podobnych podstron