• Nie Znaleziono Wyników

Standardowe funkcje i bloki funkcjonalne

W dokumencie Sterowniki programowalne (Stron 48-60)

3. Programowanie sterowników PLC

3.5. Standardowe funkcje i bloki funkcjonalne

3.5.1. PODZIAŁ FUNKCJI I BLOKÓW FUNKCJONALNYCH

W części trzeciej normy IEC 61131 określono pewną grupę standardowych funkcji i bloków funkcjonalnych, które mogą występować we wszystkich zdefiniowanych językach programowania sterowników PLC. Przyjęto, że funkcjami będą nazywane elementy realizujące podstawowe operacje logiczne i arytmetyczne, natomiast do bloków funkcjonalnych zaliczać się będą elementy, które charakteryzują się pamięcią stanu (np. przerzutniki, czasomierze, liczniki).

Według normy, funkcje standardowe zostały podzielone na 7 grup: • Funkcje konwersji typów,

• Funkcje liczbowe,

• Funkcje na ciągach bitów, • Funkcje wyboru i porównania, • Funkcje na ciągach znaków, • Funkcje na typach czasowych, • Funkcje na typach wyliczeniowych.

Spośród standardowych bloków funkcjonalnych wyróżnić można następujące grupy:

• Elementy bistabilne (dwustanowe), • Detektory zbocza,

• Liczniki, • Czasomierze.

Dostępność wyżej wymienionych elementów funkcyjnych zależy od producenta oraz typu sterownika programowalnego. Może się tak zdarzyć, że oprogramowanie inżynierskie do edycji programów sterujących nie będzie posiadać w swojej bibliotece wszystkich przedstawionych funkcji i bloków standardowych. W tej sytuacji użytkownik musi zastąpić brakujące bloki innymi funkcjami (programami), które realizują tą samą lub podobną procedurę sterującą. Najczęściej jednak jest tak, że oprogramowanie narzędziowe nowoczesnych sterowników PLC wyposażone jest w bogate biblioteki programowe, które zawierają wiele gotowych bloków funkcyjnych, realizujących złożone funkcje, takie jak: funkcje skalowania sygnałów analogowych, procedury dwukierunkowej komunikacji sieciowej, regulatory PID, zaawansowane operacje matematyczne, algorytmy sterowania napędów.

W kolejnych rozdziałach niniejszego skryptu omówiono działanie wybranych funkcji standardowych oraz bloków funkcjonalnych.

3.5.2. FUNKCJE KONWERSJI TYPÓW

Funkcje konwersji typów przetwarzają typy danych, które reprezentują wartości liczbowe, stałe, zmienne oraz sygnały wejściowe i wyjściowe. W wyniku konwersji typu zmienia się sposób interpretacji zapisanych danych, a czasem także wielkość zajmowanego przez nie obszaru w pamięci sterownika.

Ogólna postać funkcji konwersji typu przedstawiona została na rysunku 3.9a. Symbolem (*) zaznaczono typ zmiennej wejściowej, zaś symbol (**) przedstawia wyjściowy typ zmiennej, po przetworzeniu. Przykładowe funkcje konwersji typów to:

INT_TO_REAL, BYTE_TO_WORD, BCD_TO_INT, itp. Do funkcji konwertującej typ danej należy także funkcja TRUNC (rys.3.9b), która obcina część ułamkową liczby typu rzeczywistego, przekształcając ją do postaci liczby całkowitej.

* _TO_ ** TRUNC BCD_TO_ * * _TO_BCD * ** ANY_BIT ANY_INT ANY_INT ANY_BIT ANY_INT ANY_REAL a) b) c) d)

Rys.3.9. Przykładowe funkcje konwersji typów.

Wśród funkcji standardowych, zdefiniowanych przez normę, spotyka się również takie funkcje, które operują na zmiennych o dowolnych typach (tzw. typ ANY). Funkcje takie nazywa się funkcjami przeciążonymi (ang. overloaded functions). Na rysunku 3.9c–d przedstawiono funkcje dwustronnej konwersji pomiędzy typami całkowitymi i BCD. W tym wypadku zmienna typu ANY_BIT może być reprezentowana przez dowolny typ binarny (BYTE, WORD, DWORD, LWORD), zaś zmienna ANY_INT może wyrażać dowolną liczbę całkowitą w formacie INT, SINT,

DINT czy LINT [5].

3.5.3. FUNKCJE LICZBOWE

Funkcje liczbowe wykonują operacje na liczbach o różnych typach danych. Ogólnie dzielą się na dwie grupy:

• funkcje jednej zmiennej (np. pierwiastek kwadratowy, funkcje logarytmiczne, trygonometryczne),

• funkcje wielu zmiennych (funkcje arytmetyczne takie jak: dodawanie, odejmowanie, mnożenie, dzielenie itp.).

Funkcje jednej zmiennej występują jako funkcje przeciążone w zakresie typów uniwersalnych (np. ANY_REAL, ANY_INT), lub jako funkcje o określonym typie danych. Funkcje wielu zmiennych mogą wykonywać operacje arytmetyczne na danych liczbowych należących do tego samego typu. W grupie tych funkcji można wyróżnić:

• funkcje o rozszerzalnej liczbie wejść (np. dodawanie, mnożenie); • funkcje o stałej liczbie wejść (np. dzielenie, odejmowanie).

Na rysunku 3.10a przedstawiono ogólną postać funkcji liczbowej jednej zmiennej. Symbol (*) oznacza typ danych wejściowych i wyjściowych, natomiast (**) oznacza nazwę funkcji. Z kolei rysunek 3.10b przedstawia ogólną postać funkcji wielu zmiennych, gdzie symbol (***) oznacza nazwę funkcji, a uniwersalny typ danych

ANY_NUM może reprezentować dowolne liczby całkowite (INT, SINT, ...) lub rzeczywiste (REAL, LREAL).

W tabeli 3.7 przedstawiono wybrane standardowe funkcje liczbowe jednej i wielu zmiennych.

Tab.3.7. Standardowe funkcje liczbowe.

Nazwa funkcji Opis

ABS Wartość bezwzględna

SQRT Pierwiastek kwadratowy

LN Logarytm naturalny

LOG Logarytm dziesiętny

EXP Funkcja wykładnicza ex

SIN Sinus [rad]

COS Cosinus [rad]

TAN Tangens [rad]

ASIN Arcus sinus

ACOS Arcus cosinus

ATAN Arcus tangens

ADD Dodawanie

MUL Mnożenie

SUB Odejmowanie

DIV Dzielenie

Rys.3.10. Ogólna postać funkcji liczbowych: a) – jednej zmiennej, b) – wielu zmiennych.

3.5.4. FUNKCJE NA CIĄGACH BITÓW

Funkcje standardowe operujące na ciągach bitów przeprowadzają operacje bitowe na danych należących do dowolnego typu binarnego ANY_BIT (np. BYTE, WORD,

DWORD). Funkcje te dzielą się na: • funkcje przesuwania bitów, • funkcje logiczne.

Na rysunku 3.11 przedstawiono ogólną postać funkcji przesuwania bitów (a) oraz standardowej funkcji logicznej (b). Symbol (***) określa nazwę funkcji.

Rys.3.11. Ogólna postać funkcji na ciągach bitów: a) – funkcja przesuwania bitów, b) – funkcja logiczna.

Funkcje przesuwania bitów są zazwyczaj dwuargumentowe: pierwsze wejście jest przeznaczone dla danej wejściowej typu uniwersalnego ANY_BIT, a na drugie wejście podaje się liczbę rzeczywistą typu ANY_INT, określającą krotność przesunięcia bitowego. Standardowe funkcje logiczne, za wyjątkiem funkcji NOT, przeważnie występują jako dwuargumentowe lub rozszerzalne i wykonują operacje na danych typu ANY_BIT. W tabeli 3.8 przedstawiono standardowe funkcje na ciągach bitów.

Tab.3.8. Standardowe funkcje na ciągach bitów.

Nazwa funkcji Opis działania

S t a n d a r d o w e f u n k c j e p r z e s u w a n i a b i t ó w

SHL

Przesunięcie logiczne bitów w lewo o N pozycji

SHR

Przesunięcie logiczne bitów w prawo o N pozycji

ROL

Przesunięcie cykliczne (rotacja) bitów w lewo o N pozycji

ROR

Przesunięcie cykliczne (rotacja) bitów w prawo o N pozycji

S t a n d a r d o w e f u n k c j e l o g i c z n e

AND Iloczyn logiczny

OR Suma logiczna

XOR Alternatywa wykluczająca (Exclusive OR)

NOT Negacja

3.5.5. FUNKCJE WYBORU I PORÓWNANIA

Na rysunku 3.12 przedstawiono standardowe funkcje wyboru, które operują na argumentach typu uniwersalnego ANY, przy założeniu, że dane wejściowe i wyjściowe są tego samego typu. Funkcja MAX znajduje wartość maksymalną spośród

wszystkich sygnałów wejściowych i wyprowadza ją na wyjście funkcji. Analogicznie działa funkcja MIN, z tą różnicą, że wyszukuje wartość najmniejszą. Funkcja SEL jest funkcją wyboru jednego z dwóch wejść (przełącznik). Jeżeli na wejściu G panuje niski stan logiczny, to na wyjściu pojawia się taka sama wartość jak na wejściu IN0. Jeżeli wejście G przyjmie wysoki stan logiczny, to do wyjścia zostaje podłączony sygnał z wejścia IN1. Funkcja MUX jest to multiplekser N-wejściowy (przełącznik 1 z N), który przenosi na wyjście sygnał z wejścia o numerze określonym przez parametr K. Sygnał sterujący K musi być liczbą całkowitą z przedziału (0 ... N-1), w przeciwnym wypadku zostanie wygenerowany błąd systemu [5].

SEL BOOL ANY ANY ANY G IN0 IN1 MUX ANY_INT ANY ANY ANY N MAX ANY ANY ANY ANY MIN ANY ANY ANY ANY a) b) c) d)

Rys.3.12. Standardowe funkcje wyboru: a) – maksimum, b) – minimum, c) – wybór 1 z 2, d) – multiplekser.

W tabeli 3.9 zestawiono standardowe funkcje porównania – tzw. komparatory. Funkcje te operują na danych wejściowych dowolnego typu. Wyjściem komparatorów jest sygnał logiczny, który przyjmuje wartość logiczną 1, wtedy gdy warunek porównania jest spełniony. Funkcje te występują przeważnie jako dwuargumentowe, chociaż spotyka się czasem komparatory wielowejściowe, które realizują sekwencję operacji relatywistycznych. W tym przypadku funkcja przyjmuje na wyjściu wartość logiczną „1”, jeżeli poszczególne warunki porównania są spełnione w ustalonej kolejności – od wejścia pierwszego do ostatniego (np. dla komparatora GT musi zachodzić relacja: WE1>WE2>WE3>...>WEN).

Tab.3.9. Standardowe funkcje porównania.

Nazwa Symbol Opis działania

GT >

Komparator „większy niż” (ang. Greater Than) Wyjście przyjmuje stan 1, gdy zachodzi relacja:

WE1 > WE2 > ... > WEN

GE >=

Komparator „większy lub równy” (ang. Greater or Equal) Wyjście przyjmuje stan 1, gdy zachodzi relacja:

WE1 ≥ WE2 ≥ ... ≥ WEN

EQ =

Komparator „równy” (ang. Equal) Wyjście przyjmuje stan 1, gdy zachodzi relacja:

WE1 = WE2 = ... = WEN

LE <=

Komparator „mniejszy lub równy” (ang. Less or Equal) Wyjście przyjmuje stan 1, gdy zachodzi relacja:

WE1 ≤ WE2 ≤ ... ≤ WEN

LT <

Komparator „mniejszy niż” (ang. Less Than) Wyjście przyjmuje stan 1, gdy zachodzi relacja:

WE1 < WE2, < ... < WEN NE <>

Komparator „nie równy” (ang. Not Equal) Wyjście przyjmuje stan 1, gdy zachodzi relacja:

WE1 ≠ WE2 ≠ ... ≠ WEN 3.5.6. ELEMENTY BISTABILNE

Elementy bistabilne (dwustanowe) są zaliczane do grupy standardowych bloków funkcjonalnych, które występują w każdym sterowniku PLC. Do podstawowych przedstawicieli tej grupy należą dwa rodzaje przerzutników bistabilnych: RS i SR. Przerzutniki są to elementy dwuwejściowe, które charakteryzują się pamięcią stanu. Oznacza to, że stan logiczny wyjścia przerzutnika zależy nie tylko od aktualnych stanów logicznych na jego wejściach, ale także od zmian wartości sygnałów wejściowych występujących w przeszłości.

Na rysunku 3.13 przedstawiono symbole graficzne oraz wykresy czasowe wyjaśniające działanie przerzutników RS i SR. Załączenie wyjścia przerzutników następuje z chwilą pojawienia się stanu wysokiego na wejściu ustawiającym S (Set), natomiast wyłączenie wyjścia występuje po podaniu stanu wysokiego na wejście kasujące R (Reset). Różnica pomiędzy tymi elementami dotyczy specyfiki działania, przy jednoczesnym podaniu wartości logicznej „1” na oba wejścia (R i S). Otóż w przerzutniku RS dominującym wejściem jest wejście kasujące R, zaś w przerzutniku SR priorytetowym jest sygnał ustawiający S.

W języku drabinkowym często do realizacji funkcji przerzutników stosuje się rozdzielone pary sygnałów wyjściowych (cewek) S i R. W tym przypadku określenie dominującej funkcji przerzutnika zależy od kolejności występowania cewek w programie. Jeśli obwód z cewką R występuje w programie jako ostatni, wówczas

realizowana jest funkcja przerzutnika RS, a jeśli ostatnią użytą cewką jest cewka ustawiająca S, to jest to przerzutnik SR.

Rys.3.13. Symbole graficzne i zasada działania przerzutników RS (a) i SR (b).

3.5.7. DETEKTORY ZBOCZA

Do standardowych bloków funkcjonalnych, umożliwiających detekcję zbocza sygnałów cyfrowych należą:

detektor zbocza narastającego R_TRIG (ang. Rising Trigger), detektor zbocza opadającego F_TRIG (ang. Falling Trigger).

Elementy te należą do bloków dynamicznych, gdyż reagują na zmianę wartości sygnałów wejściowych. Na rysunku 3.14 przedstawiono symbole graficzne oraz przebiegi czasowe obrazujące zasadę działania tych elementów.

0 1 0 1 CLK Q 1 cykl 1 cykl 0 1 0 1 CLK Q 1 cykl 1 cykl R_TRIG CLK Q BOOL BOOL F_TRIG CLK Q BOOL BOOL a) b)

Detektor R_TRIG wykrywa zmianę stanu logicznego na wejściu CLK z wartości 0 na 1, powodując ustawienie na wyjściu wysokiego stanu logicznego na czas jednego cyklu przetwarzania sterownika. Detektor F_TRIG działa podobnie, z tą różnicą, że reaguje na zmianę stanu logicznego z 1 na 0. Pomimo, że czas trwania wysokiego stanu logicznego na wyjściach tych bloków jest bardzo krótki, detektory zbocza umożliwiają ustawienie lub skasowanie przerzutników, taktowanie liczników czy też wyzwolenie czasomierzy.

3.5.8. LICZNIKI

Liczniki należą do standardowych bloków funkcjonalnych, umożliwiających zliczanie impulsów. W grupie tych elementów wyróżnia się:

• licznik zliczający w górę CTU (ang. Counter Up), • licznik odliczający w dół CTD (ang. Counter Down), • licznik dwukierunkowy CTUD (ang. Counter Up-Down).

Na rysunku 3.15 przedstawiono symbole graficzne podstawowych liczników.

Rys.3.15. Symbole graficzne liczników: a) – CTU, b) – CTD, c) – CTUD.

Na rysunku 3.16 przedstawiono wykres czasowy wyjaśniający działanie licznika CTU. Każdy impuls wejściowy, rozumiany jako zmiana stanu logicznego na wejściu CU z 0 na 1, powoduje inkrementację licznika, którego aktualna wartość dostępna jest na wyjściu CV (ang. Current Value). Wyjście Q zostanie ustawione, jeżeli wartość licznika CV osiągnie lub przekroczy wartość zadaną na wejściu PV (ang. Preset

Value). Podanie wysokiego stanu logicznego na wejście R (Reset) powoduje wyzerowanie licznika.

Z kolei na rysunku 3.17 przedstawiono wykres czasowy objaśniający działanie licznika CTD. Zmiana stanu na wejściu CD z wysokiego na niski powoduje dekrementację wartości licznika CV. Wyjście Q przyjmuje wysoki stan logiczny, jeśli wartość licznika jest równa lub mniejsza od zera. Wejście LD (Load) powoduje wpisanie do licznika wartości zadanej, podanej na wejściu PV.

Rys.3.16. Wykres czasowy objaśniający działanie licznika CTU.

Rys.3.17. Wykres czasowy objaśniający działanie licznika CTD.

Licznik CTUD jest połączeniem liczników CTU i CTD i umożliwia dwukierunkowe zliczanie impulsów. Posiada dwa wyjścia cyfrowe, na których sygnalizuje następujące stany:

• wyjście QU zostaje ustawione wtedy, gdy CV ≥ PV • wyjście QD zostaje ustawione wtedy, gdy CV ≤ 0.

Licznik ten posiada cztery wejścia cyfrowe o następujących funkcjach:

• CU – zbocze narastające na tym wejściu powoduje inkrementację wartości CV; • CD – zbocze narastające na tym wejściu powoduje dekrementację wartości CV; • R – wejście kasujące, stan wysoki na tym wejściu wpisuje wartość 0 do CV;

• LD – wejście ładowania wartości początkowej – stan wysoki powoduje wpisanie do CV wartości z wejścia PV.

Podczas pracy z licznikami należy pamiętać, że elementy te w żaden sposób nie ograniczają wartości osiąganych na wyjściu CV. Oznacza to, że liczniki CTU i CTUD po osiągnięciu wartości zadanej PV, będą nadal zliczać impulsy pojawiające się na wejściu CU, powodując inkrementację wartości CV. Analogicznie, liczniki CTD i CTUD po osiągnięciu wartości zerowej będą w dalszym ciągu zliczać impulsy na wejściu CD, co spowoduje, że wyjście CV osiągnie wartości ujemne.

3.5.9. CZASOMIERZE

Czasomierze (ang. Timers), potocznie nazywane tajmerami, należą do standardowych bloków funkcjonalnych, które realizują funkcje sterowania z uwzględnieniem uwarunkowań czasowych. Norma IEC 61131 w grupie czasomierzy definiuje następujące elementy podstawowe [5]:

czasomierz TON (ON-delay), realizujący funkcję opóźnionego załączenia; czasomierz TOF (Off-delay), realizujący funkcję opóźnionego wyłączenia; czasomierz TP (Pulse), realizujący funkcję generatora monostabilnego;

Na rysunku 3.18 przedstawiono symbol graficzny i wykres czasowy ilustrujący zasadę działania czasomierza TON. Blok ten steruje załączeniem wyjścia Q z opóźnieniem w stosunku do sygnału wejściowego. Podanie wysokiego stanu logicznego na wejście IN powoduje rozpoczęcie zliczania czasu ET (ang. Elapsed

Time), którego wartość jest wyprowadzona na wyjściu ET. Jeżeli czas ET osiągnie wartość podaną na wejściu PT (ang. Preset Time), nastąpi zatrzymanie odliczania czasu i wysterowanie wyjścia Q. Stan ten utrzymuje się dopóty, dopóki na wejściu IN panuje wysoki stan logiczny. Z chwilą, gdy na wejściu IN pojawi się wartość logiczna 0, następuje wyzerowanie czasomierza i natychmiastowe wyłączenie wyjścia Q.

Czasomierz TOF realizuje funkcję przekaźnika czasowego, wyłączającego wyjście Q z opóźnieniem w stosunku do wejścia sterującego IN. Symbol graficzny i wykres czasowy ilustrujący zasadę działania czasomierza TOF zostały przedstawione na rysunku 3.19. Wartość opóźnienia zadawana jest na wejściu PV. Podanie wysokiego stanu logicznego na wejście IN powoduje natychmiastowe wysterowanie wyjścia Q. Z chwilą zaniku sygnału wyzwalającego IN rozpoczyna się odliczanie czasu ET. Jeżeli czas ET osiągnie wartość podaną na wejściu PV, nastąpi wyłączenie wyjścia Q. Warunek ten będzie spełniony, jeżeli w międzyczasie nie zostanie ponownie ustawione wejście sterujące IN, powodując wyzerowanie czasu ET.

Rys.3.19. Symbol graficzny i wykres czasowy ilustrujący działanie czasomierza TOF.

Czasomierz TP generuje na wyjściu Q impuls o ustalonym czasie trwania, którego wartość jest zadawana na wejściu PT. Warunkiem wyzwolenia czasomierza jest pojawienie się zbocza narastającego sygnału na wejściu sterującym IN. Czas trwania stanu wysokiego na wyjściu Q jest stały i nie zależy od czasu trwania sygnału wyzwalającego. Symbol graficzny i wykres czasowy czasomierza TP przedstawiono na rysunku 3.20.

W dokumencie Sterowniki programowalne (Stron 48-60)

Powiązane dokumenty