Osnova přednášky. Informační a řídicí systémy I. Programování PLC III. IEC Schémata z funkčních bloků (FBD)

Podobné dokumenty
Knihovny pro programování PLC Tecomat podle IEC

Algoritmizace a programování

Osnova přednášky. Informační a řídicí systémy I. Programování PLC II. IEC Program ve strukturovaném textu. Strukturovaný text (ST)

- speciální symboly + - * / =., < > <> <= >= a další. Klíčová slova jsou chráněnými útvary, které nelze použít ve významu identifikátorů.

Úvod do programovacích jazyků (Java)

Programovací jazyk Pascal

Pascal. Katedra aplikované kybernetiky. Ing. Miroslav Vavroušek. Verze 7

1.1 Struktura programu v Pascalu Vstup a výstup Operátory a některé matematické funkce 5

Osnova přednášky. Informační a řídicí systémy I. Programování PLC IV. IEC Role ostatních jazyků. Role jazyka SFC.

Inovace a zkvalitnění výuky prostřednictvím ICT Základy programování a algoritmizace úloh. Ing. Hodál Jaroslav, Ph.D. VY_32_INOVACE_25 09

Výrazy a operátory. Operátory Unární - unární a unární + Např.: a +b

Programování dle normy IEC Strukturovaný text (ST)

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Object Pascal je přísně typový procedurální jazyk, který umožňuje jak strukturované, tak objektově orientované programování.

5 Přehled operátorů, příkazy, přetypování

Přednáška 7. Celočíselná aritmetika. Návratový kód. Příkazy pro větvení výpočtu. Cykly. Předčasné ukončení cyklu.

LabView jako programovací jazyk II

MQL4 COURSE. By Coders guru -4 Operace & Výrazy

LEKCE 6. Operátory. V této lekci najdete:

NPRG030 Programování I, 2018/19 1 / :25:37

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Paměť počítače. alg2 1

Operátory, výrazy. Tomáš Pitner, upravil Marek Šabo

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Sada 1 - Základy programování

SEKVENČNÍ LOGICKÉ OBVODY

Algoritmizace a programování

Průvodní zpráva k projektu

Logické operace. Datový typ bool. Relační operátory. Logické operátory. IAJCE Přednáška č. 3. může nabýt hodnot: o true o false

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15

VÝRAZY výrazy = operandy prokládané operátory, vyhodnocované podle priority operátorů

a operačních systémů

Instrukční sada pro používání ControlLogix a CompactLogix výňatek

PŘETĚŽOVÁNÍ OPERÁTORŮ

Strojový kód. Instrukce počítače

Psaní programu pro PLC SIMATIC S7-300 pomocí STEP 7

for (i = 0, j = 5; i < 10; i++) { // tělo cyklu }

Princip funkce počítače

Obsah přednášky. programovacího jazyka. Motivace. Princip denotační sémantiky Sémantické funkce Výrazy Příkazy Vstup a výstup Kontinuace Program

Čísla, reprezentace, zjednodušené výpočty

Jazyk VHDL zápis čísel, znaků a řetězců. Jazyk VHDL základní datové typy a operátory. Kurz A0B38FPGA Aplikace hradlových polí

Úvod do programování. Lekce 1

Knihovna EpsnetLib TXV první vydání září 2012 změny vyhrazeny

- znakové konstanty v apostrofech, např. a, +, (znak mezera) - proměnná zabírá 1 byte, obsahuje kód příslušného znaku

Architektura počítačů Logické obvody

Pohled do nitra mikroprocesoru Josef Horálek

6 Příkazy řízení toku

IB015 Neimperativní programování. Časová složitost, Typové třídy, Moduly. Jiří Barnat Libor Škarvada

Architektura počítačů Logické obvody

Příklady popisu základních obvodů ve VHDL

Algoritmizace a programování

Algoritmizace a programování. Ak. rok 2012/2013 vbp 1. ze 44

Příklady: (y + (sin(2*x) + 1)*2)/ /2 * 5 = 8.5 (1+3)/2 * 5 = /(2 * 5) = 1.3. Pavel Töpfer, 2017 Programování 1-3 1

0.1 Úvod do matematické analýzy

Programování v jazyce JavaScript

1/1 ČESKÁ ZEMĚDĚLSKÁ UNIVERZITA V PRAZE PROVOZNĚ EKONOMICKÁ FAKULTA PŘIJÍMACÍ ŘÍZENÍ 2017/2018

Jak v Javě primitivní datové typy a jejich reprezentace. BD6B36PJV 002 Fakulta elektrotechnická České vysoké učení technické

Racionální čísla, operátory, výrazy, knihovní funkce

LOGICKÉ ŘÍZENÍ. Matematický základ logického řízení

Jazyk VHDL konstanty, signály a proměnné. Jazyk VHDL paralelní a sekvenční doména. Kurz A0B38FPGA Aplikace hradlových polí

Obsah DÍL 1. Předmluva 11

EVROPSKÝ SOCIÁLNÍ FOND. Úvod do PHP PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI

Knihovna DMX512lib Komunikace protokolem DMX512. TXV prvé vydání srpen 2010 změny vyhrazeny

NPRG030 Programování I, 2016/17 1 / :58:13

Matematika I (KMI/PMATE)

NPRG030 Programování I, 2015/16 1 / :25:32

První kroky s METEL IEC IDE

Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií

Program a životní cyklus programu

Souhrn Apendixu A doporučení VHDL

type Obdelnik = array [1..3, 1..4] of integer; var M: Obdelnik;

Číselné vyjádření hodnoty. Kolik váží hrouda zlata?

Knihovna WebGraphLib

Činnost CPU. IMTEE Přednáška č. 2. Několik úrovní abstrakce od obvodů CPU: Hodinový cyklus fáze strojový cyklus instrukční cyklus

NPRG030 Programování I, 2010/11

Tematický celek Proměnné. Proměnné slouží k dočasnému uchovávání hodnot během provádění aplikace Deklarace proměnných

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 21.

ALGORITMIZACE PRAKTICKÉ

Algoritmizace a programování

Předmluva k aktuálnímu vydání Úvod k prvnímu vydání z roku Typografické a syntaktické konvence... 20

LabView jako programovací jazyk II

Jazyk C# a platforma.net

Digitální obvody. Doc. Ing. Lukáš Fujcik, Ph.D.

10. MAPOVÁNÍ BINÁRNÍCH A ANALOGOVÝCH VSTUPŮ A VÝSTUPŮ

Přednáška 8. Proměnné. Psaní a ladění skriptů. Parametry skriptu. Vstup a výstup. Konfigurační soubory shellu. Úvod do Operačních Systémů Přednáška 8

dovolují dělení velkých úloh na menší = dekompozice

Racionální čísla, operátory, výrazy, knihovní funkce

PODPROGRAMY PROCEDURY A FUNKCE

Výrazy, operace, příkazy

8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek

5a. Makra Visual Basic pro Microsoft Escel. Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Kalina

0.1 Funkce a její vlastnosti

Ukazka knihy z internetoveho knihkupectvi

Programování v C++, 2. cvičení

8 Třídy, objekty, metody, předávání argumentů metod

Knihovna ServoLib Řízení servopohonu bez zpětné vazby. TXV první vydání březen 2009 změny vyhrazeny

Vyučovací hodina. 1vyučovací hodina: 2vyučovací hodiny: Opakování z minulé hodiny. Procvičení nové látky

KVADRATICKÉ FUNKCE. + bx + c, největší hodnotu pro x = a platí,

2.1 Podmínka typu case Cykly Cyklus s podmínkou na začátku Cyklus s podmínkou na konci... 5

Programování II. Modularita 2017/18

Transkript:

Osnova přednášky Informační a řídicí systémy I Programování PLC III IEC 61131-3 Pavel Balda ZČU v Plzni, FAV, KKY Schémata složená z funkčních loků Organizace programů Funkce Funkční loky Programy Úlohy (tasks) 2 Schémata z funkčních loků (FBD) Schémata z funkčních loků (Function Block Diagrams, FBD) jsou grafickým programovacím jazykem Interpretují tok signálu mezi jednotlivými prvky schématu Analogické k toku signálu v elektronických ovodech Popisují chování funkcí, funkčních loků a programů jako množiny propojených grafických loků (funkcí a funkčních loků) FBD lze použít pro detailní popis podmínek přechodů a akcí v SFC Propojení prvků ve schématu FBD (1/2) Jednotlivé prvky schémat jsou propojeny lomenými čarami s následujícími vlastnostmi Čáry znázorňují tok signálu ve schématu Výstupy loků se nemohou přímo spojovat ( zkratovat ) Tj není dovoleno spojování výstupů jako v jazyku LD Místo něj je třea používat explicitní lok OR, viz or a c a LD: FBD: OR c Bloky se spojují do schémat složených z elementárních loků (funkcí neo funkčních loků Vstupy Inputs vlevo Výstupy Outputs vpravo 3 4 1

Propojení prvků ve schématu FBD (2/2) Schématická značka loku Vstupní proměnné programu ve FBD Musíýt připojeny ke vstupům loků Typ každé proměnné musí ýt odpovídat typu připojeného vstupu Vstupem FBD může ýt konstantní výraz, vnitřní, vstupní neo výstupní proměnná Výstupní proměnné programu ve FBD Musíýt připojeny k výstupům loků Typ každé proměnné musí ýt odpovídat typu připojeného výstupu Výstupem FBD může ýt vnitřní neo výstupní proměnná Jednotlivá propojovací čára může ýt použita k propojení: Vstupní proměnné a vstupu loku Výstupu loku a vstup jiného loku Výstupu loku a výstupní proměnné Propojení má následující vlastnosti: Je orientované, ve směru zleva doprava Levé a pravé zakončení propojovací čáry je stejného typu Lze použít několik pravých zakončení, která značí, že informace z levého zakončení je přenášena na několik dalších zakončení (všechny musí ýt stejného typu) 5 Funkce loku je vyznačena uvnitř odélníkového symolu loku Vstupy Název funkce Výstupy Propojovací čára může ýt zakončena symolem negace Malé kolečko na pravém konci propojovací čáry, viz příklad a c Ekvivalentně v ST: c := a AND NOT(); 6 Příkaz JUMP Příkaz RETURN a vyhodnocování FBD Pro řízení pořadí zpracování sítě FBD lze dále používat návěští a skok na něj pomocí příkazu JUMP Při splnění Booleovské podmínky (TRUE) se vykonávání programu přenese za symol návěští, viz příklad rucne 1 JAM: vysl dore >> JAM >=1 cmd10 Ekvivalentně v IL (v ST nejsou skoky!): LD rucne AND 1 JMPC JAM JAM: LD vysl OR dore ST cmd10 7 Příkaz RETURN umožňuje podmíněně ukončit vyhodnocování dané POU Naude-li připojená Booleovská hodnota TRUE, ukončí se daný program a zývající část se nevykoná rezim_aut alarm i10 i23 x_cmd >=1 >=1 RETURN o67 Ekvivalentně v ST: IF rezim_aut OR alarm THEN RETURN; o67 := (i10 AND i23) OR x_cmd; Pořadí vyhodnocování sítě FBD se řídí následujícím pravidlem: Vyhodnocení sítě je ukončeno před započetím vyhodnocování jiné sítě, využívající jeden neo několik výstupů předchozí vyhodnocované sítě Pořadí vyhodnocování dané sítě je implementačně závislé (!!!), ovykle shora dolů a zleva doprava 8 2

Zpětnovazení spojení loků ve FBD Programové organizační jednotky (POU) Ve schématu existuje zpětná vaza (zpětnovazení cesta, feedack path), pokud je výstup nějaké funkce neo funkčního loku použit jako vstup funkce neo funkčního loku, který jej předchází (je dříve vyhodnocován) Explicitní zpětná vaza propojení výstupu daného loku se vstupem dříve vyhodnocovaného loku (or a) Implicitní zpětná vaza případ, kdy je výstup přiřazen do proměnné, použité pro vstup dříve vyhodnocovaného loku (or, c) V případě explicitní zpětné vazy (or a)) není jednoznačně určeno pořadí, jak ji vykonávat (zda jako případ neo c) Poznámka: v LD lze používat jen implicitní zpětnou vazu s1 s2 ena OR run s1 s2 run ena OR run ena ror s1 s2 a) ) c) OR ror 9 Programová organizační jednotka (Program Organization Unit, POU) Základní stavení jednotka programového vyavení podle IEC 61131-3 Existují 3 typy POU: funkce, funkční lok a program Struktura a chování POU je definována v deklaraci typu POU y neměly rekurzivně volat POU téhož typu chování rekurzivního volání v reálném čase nelze předvídat Umožňují sdílet dříve vyvinutý kód v dalších aplikacích (software reuse) na makro úrovni (programy) i na mikro úrovni (funkce, funkční loky) 10 POU: Funkce Textová reprezentace funkcí Funkce je definována jako POU, která po vykonání vrací jednu návratovou hodnotu (result) a liovolně mnoho dalších výstupních hodnot (VAR_OUTPUT a VAR OUT) Návratová hodnota může ýt vícehodnotová (tj pole neo struktura) Funkce lze volat v textových jazycích (ST, IL) jako operand ve výrazu Funkce nemají vnitřní stav, tj zavolání funkce se stejnými argumenty (vstupními proměnnými VAR_PUT a vstupně-výstupními proměnnými VAR_OUTPUT) vrací vždy stejné hodnoty (výstupní proměnné VAR_OUTPUT, vstupně-výstupní proměnné VAR OUT a výsledek) Jakákoliv deklarovaná funkce může ýt od okamžiku deklarace použita v jiných POU Funkce a jejich volání mohou ýt reprezentovány graficky (ve FBD a LD) neo textově (v ST a IL), viz dále 11 V textových jazycích lze předávat vstupní hodnoty dvěma způsoy: Pomocí formálního seznamu parametrů () Vstupním proměnným se přiřazují hodnoty Nezáležína pořadívstupních proměnných Liovolný počet použitých vstupních proměnných; neuvedené parametry mají implicitní hodnoty A := LIMIT(EN:=COND, :=B, MX:=5, ENO=>TEMPL); Pomocí neformálního seznamu parametrů Vstupním proměnným se hodnoty nepřiřazují Pevné pořadí vstupů Pevný počet vstupních proměnných A := LIMIT(1, B, 5); ( stejné jako LIMIT(EN:=TRUE, MN:=1, :=B, MX:=5); ) Přiřazení výstupních hodnot uď není použito neo se přiřazuje do proměnných pomocíoperátoru => Pro přiřazení do VAR OUT hodnot je třea používat proměnných Přiřazení do argumentů VAR_PUT je uď prázdné (viz ()) neo se přiřazuje konstanta, proměnná neo návratová hodnota funkce 12 3

Grafická reprezentace funkcí Řízení spouštění funkcí Funkce jsou graficky reprezentovány odélníkem (neo čtvercem) Velikost může záviset na počtu vstupů/výstupů a dalších informací Zpracováníproíhá zleva (vstupy) doprava (výstupy) Název neo symol funkce je uvnitř loku Na levé vnitřní straně symolu loku mohou ale nemusí ýt jména parametrů funkce (or a,); nejsou-li uvedena u standardních funkcí (viz dále) jsou jména parametrů 1, 2, (v případě jediného parametru je jméno ) Argumenty a výsledek se připojují pomocí propojovacích čar (flow lines) V místě připojení vstupu/výstupu může ýt malé kolečko znamenající negaci příslušného vstupu/výstupu (or c) Lze používat přídavný vstup EN a/neo výstup ENO, viz dále Je-li některý z nich použit, je vždy uveden jako první vstup/výstup shora (or d) ADD_EN EN ENO ADD_OK in c ADD a y a ADD SHL x c c a d z n d a) ) c) d) 13 Pro řízení spouštění funkcí se používají přídavné Booleovské signály vstup EN a výstup ENO (mohou ýt použity oa) Oě proměnnéjsou implicitně deklarovány jako: VAR_PUT EN: := 1; END_VAR VAR_OUTPUT ENO: ; END_VAR Spouštění funkce se při použití těchto proměnných řídí pravidly: Pro EN=FALSE (0) při vyvolání funkce se neprovedou operace uvnitř těla a PLC shodí výstup ENO na FALSE Jinak PLC nastaví ENO na TRUE (1) a vykonají se operace uvnitř těla funkce, kde se může rovněž nastavovat hodnota ENO Vyskytne-li se chya při provádění těla standardnífunkce, je výstup ENO shozen na FALSE V případě uživatelských funkcí musí ýt hodnota ENO explicitně přiřazena programátorem Je-li hodnota ENO=FALSE je nastavení výstupů funkce (VAR_OUTPUT, VAR OUT a výsledku) závislé na implementaci 14 Textové deklarace funkcí Textové deklarace funkcí se skládají z: FUNCTION <jmeno_fn> : <typ_vysl> VAR_PUT END_VAR konstrukce specifikující jména a typy vstupních proměnných VAR OUT END_VAR a VAR_OUTPUT END_VAR konstrukce specifikující jména a typy vstupně-výstupních a výstupních proměnných VAR END_VAR konstrukce specifikující jména a typy vnitřních proměnných Tělo funkce zapsané v ST neo IL specifikující operace se vstupními parametry a nastavující vstupně-výstupní a výstupní proměnné a výsledek funkce Ukončující klíčové slovo END_FUNCTION Sekce VAR OUT a VAR_OUTPUT jsou nepovinné FUNCTION JEDNODUCHA : REAL (Spec externiho rozhrani) VAR_PUT A,B : REAL; C : REAL := 10; END_VAR VAR OUT COUNT : ; END_VAR VAR COUNTP1 : ; END_VAR (Specifikace tela funkce) COUNTP1 := ADD(COUNT,1) COUNT := COUNTP1 ; JEDNODUCHA := AB/C; END_FUNCTION 15 Grafické deklarace funkcí Grafické deklarace funkcí se skládají z: Klíčových slov FUNCTION END_FUNCTION neo jejich grafických ekvivalentů pro uzávorkování funkce Grafická specifikace jména funkce a jmen a typů a případně počátečních hodnot proměnných a výsledku Specifikace jmen, typů a případně počátečních hodnot vnitřních proměnných Tělo funkce vytvořené v FBD neo LD FUNCTION (Spec externiho rozhrani) REAL REAL REAL (Specifikace tela funkce) COUNT 1 END_FUNCTION JEDNODUCHA A B C COUNT COUNT ADD A B C COUNT1 := / REAL COUNT JEDNODUCHA 16 4

Typové a přetížené funkce Funkce mohou ýt vytvořeny pro: Konkrétní typ, např (or a) a) Generický typ, např (or ) Takové funkce se nazývají přetížené ) ADD_ ADD Hierarchie jednoduchých typů _DERIVED _MAGNITUDE _REAL LREAL, REAL L, D,, S UL, UD, U, US _BIT LWORD, DWORD, WORD, BYTE, STRG, WSTRG _DATE DATE_AND_, DATE, _OF_DAY 17 Standardní funkce Standardní funkce jsou funkce ěžně vestavěné do PLC Mohou mít proměnný počet vstupů (parametrů) Na každý z přidaných vstupů aplikují stejnou operaci Např funkce pro sčítání vrací jako výsledek sumu všech svých vstupů Maximální počet vstupů rozšiřitelných funkcí je závislý na implementaci Standardní funkce lze rozdělit do následujících skupin: Funkce pro převod typů Numerické funkce Funkce pro práci s itovými řetězci Funkce pro výěr a porovnávání Funkce pro práci se řetězci Funkce pro práci s časem 18 Funkce pro převod typů Numerické funkce vstupní typ výstupní typ _REAL _TO_ TRUNC _BCD_TO TO_BCD_ Konverzní funkce _TO_ A := _TO_REAL(B); Při převodu z reálných typů na celočíselné provádějí zaokrouhlení Je-li zaokrouhlované číslo přesně uprostřed intervalu, provede se zaokrouhlení k nejližšímu sudému číslu Funkce TRUNC odřízne z čísla desetinnou část na celé číslo směrem k nule TRUNC(-16) je -1, TRUNC(16) je 1 Funkce _BCD_TO_ a _TO_BCD_ konvertují data z typů BYTE, WORD, DWORD a LWORD na typy US, U, UD a UL (čísla v BCD formátu jsou uložena v typech itových řetězců) US_TO_BCD_BYTE(25) je 2#0010_0101 WORD_BCD_TO_U(2#0011_0110_1001) je 369 19 vstupní a výstupní typ jméno funkce A := S(B); Jméno ABS SQRT LN LOG EXP S COS TAN AS ACOS ATAN V/V typ Popis Oecné funkce Asolutní hodnota _REAL Druhá odmocnina Logaritmické funkce _REAL Přirozený logaritmus _REAL Dekadický logaritmus _REAL Exponenciální funkce se základem e Trigonometrické funkce _REAL Sinus se vstupem v radiánech _REAL Kosinus se vstupem v radiánech _REAL Tangens se vstupem v radiánech _REAL Arkus sinus _REAL Arkus kosinus _REAL Arkus tangens 20 5

Aritmetické funkce Standardní funkce pro posouvání itů Jméno ADD MUL SUB DIV MOD EXPT MOVE Symol + - / := Popis Rozšiřitelné aritmetické funkce Nerozšiřitelné aritmetické funkce OUT := 1-2 OUT := 1 / 2 OUT := 1 modulo 2 OUT := jméno neo symol A := ADD(B, C, D); neo A := B + C + D; OUT := 1 + 2 + + n OUT := 1 2 n Umocňování: OUT := 1 2 Standard it shift functions _BIT Jméno SHL SHR ROL ROR N Popis _BIT jméno funkce OUT := posunut doleva o N itů, doplněn zprava nulami OUT := posunut doprava o N itů, doplněn zleva nulami OUT := rotován doleva o N itů, cyklicky A := SHL(:=B, N:=5); OUT := rotován doprava o N itů, cyklicky 21 22 Standardní itové Booleovské funkce Standardní funkce pro výěr _BIT _BIT _BIT Jméno Symol AND 1) OR >=1 2) XOR =2k+1 2) NOT _BIT Popis OUT := NOT 3) jméno neo symol A := AND(B, C, D); neo A := B C D; OUT := 1 2 n OUT := 1 OR 2 OR OR n OUT := 1 XOR 2 XOR XOR n 1) Symol lze užít v textových jazycích ST a IL 2) Symol není vhodný jako operátor v textových jazycích ST a IL 3) Pro negaci se v grafických jazycích mohou používat symoly kolečka na vstupu/výstupu 23 : : SEL G 0 1 MAX LIMIT MN MX MUX K MAX (M) Rozšiřitelnáfunkce max (min) OUT := MAX (1, 2,, n) Odoně vypadá OUT := M (1, 2,, n) funkce M A := MAX (B, C, D); LIMIT Omezovač (Limiter) OUT := M (MAX(, MN), MX) SEL Binární výěr OUT := 0 když G=0 jinak OUT := 1 A := SEL(G:=0, 0:=X, 1:=5); A := LIMIT(:=B, MN:=0, MX:=5); MUX Rozšiřitelný multiplexer Podle hodnoty K vyírá jeden z N vstupů A := MUX(0, B, C, D); je v tomto případě totéž jako A := B; 24 6

Standardní porovnávací funkce Práce se znakovými řetězci (1/2) : Jméno GT GE EQ LE LT NE Symol > >= = <= < <> Popis jméno funkce A := GT(B, C, D); neo A := (B>C) (C>D); Větší (klesající posloupnost) OUT := (1>2) (2>3) (n-1>inn) Větší neo rovno (monotónní posloupnost) OUT := (1>=2) (2>=3) (n-1>=inn) Rovnost: OUT := (1=2) (2=3) (n-1=inn) Menší neo rovno (monotónní posloupnost) OUT := (1<=2) (2<=3) (n-1<=inn) Menší (rostoucí posloupnost) OUT := (1<2) (2<3) (n-1<inn) Nerovnost (nerozšiřitelná): OUT := (1<>2) 25 : LEN LEFT L RIGHT L MID L P CONCAT LEN Délka řetězce A := LEN('Ahoj'); je ekvivalent k A:=4; LEFT L znaků nejvíc vlevo z A := LEFT(:='Ahoj', L:=2); je ekvivalent k A:= 'Ah'; RIGHT L znaků nejvíc vpravo z A := RIGHT(:='Ahoj', L:=3); je ekvivalent k A:= 'hoj'; MID L znaků z od pozice P A := MID(:='Ahoj', L:=2, P:=2); je ekvivalent k A:= 'ho'; CONCAT rozšiřitelné spojování řetězců A := CONCAT('AB','CD','E'); je ekvivalent k A:= 'ABCDE'; 26 Práce se znakovými řetězci (2/2) SERT 1 2 P DELETE L P REPLACE 1 2 L P FD 1 2 SERT Vkládá 2 do 1 za P-tý znak A := SERT(1:='ABC',2:='XY', P:=2); je ekvivalent k A:='ABXYC'; DELETE Odstraňuje L znaků z od pozice P A := DELETE(:='ABXYC',L:=2,P:=2); je ekvivalent k A:='ABC'; REPLACE Nahrazuje L znaků řetězce 1 od pozice P znaky z 2 A := REPLACE(1:='ABCDE',2:='X', L:=2,P:=3); je ekvivalent k A:='ABXE'; FD Hledá pozici začátku prvního výskytu 2 v 1 Není-li nalezena je OUT:=0 A := FD(1:='ABCBC', 2:='BC'); je ekvivalent k A:=2; 27 Funkce pro práci s časem Je uvedena jen nová syntaxe, starší neude dále podporována Jméno Symol 1 2 OUT ADD neo ADD_ + ADD_TOD OF_DAY _OF_DAY ADD_DT_ DATE_AND_ DATE_AND_ SUB neo SUB_ - SUB_DATE_DATE DATE DATE SUB_TOD OF_DAY _OF_DAY SUB_TOD_TOD _OF_DAY _OF_DAY SUB_DT_ DATE_AND_ DATE_AND_ SUB_DT_DT DATE_AND_ DATE_AND_ MUL DIV CONCAT_DATE_TOD DATE _OF_DAY DATE_AND_ DT_TO_TOD DT_TO_DATE Funkce pro konverzi typů vyírají z daného typu požadovanou část 28 7

POU: Funkční loky Reprezentace funkčních loků Funkční lok (FB) je POU, který po vykonání vrací jednu neo několik hodnot Od jednoho loku může ýt vytvářeno více instancí (kopií) Každá instance má svůj identifikátor (jméno) a datovou strukturu osahující její výstupní a interní proměnné a v závislosti na implementaci hodnoty neo odkazy na vstupní parametry Hodnoty všech výstupů a potřených interních proměnných zůstávají zachovány (persistence) mezi jednotlivými spuštěními loku Na rozdíl od funkcí proto nemusí dvě spuštění téhož loku se stejnými argumenty vést ke stejným výstupům Vně funkčního loku jsou dostupné pouze jeho vstupy a výstupy, vnitřní proměnné zůstávají skryty Funkční lok je podoný ojektu z OOP, není však tak volný Funkční loky a jejich volání mohou ýt reprezentovány graficky (ve FBD a LD) neo textově (v ST a IL), viz dále 29 FB lze reprezentovat graficky i textově, viz příklady Všechny kominace čtení a zápisu nejsou přípustné Není dovoleno: Číst vstupy funkčního loku mimo funkční lok Zapisovat do vstupů funkčního loku zevnitř loku Zapisovat do výstupu funkčního loku vně funkčního loku Případný vstup EN a výstup ENO se zpracovává stejně jako u funkcí Grafická reprezentace ve FBD FF75 a %IX1 %IX2 NE r SR S1 Q1 R MujTon EN PT TON ENO Q ET %QX3 out Textová reprezentace v ST VAR FF75 : SR; END_VAR ( Deklarace ) FF75(S1:=%IX1, R:=%IX2); ( Volání ) %QX3 := FF75Q1; ( Přiřaď výstup ) VAR a,,out : ; MujTON : TON; END_VAR MujTon(EN := NOT(A<>B), := r, NOT Q => out); 30 Deklarace funkčních loků Funční loky se deklarují odoně jako funkce textově neo graficky s následujícími rozdíly: Klíčová slova pro deklaraci FB jsou FUNCTION_BLOCK END_FUNCTION_BLOCK Pro interní a výstupní proměnné loku lze používat kvalifikátor RETA Hodnoty proměnných přenášené do funkčního loku pomocí konstrukce VAR_EXTERNAL mohou ýt v loku modifikovány Hodnoty výstupů jiných funkčních loků přenášené do funkčního loku pomocí konstrukce VAR_PUT, VAR OUT neo VAR_EXTERNAL mohou ýt v loku použity, ale nesmí ýt modifikovány V textových jazycích lze používat kvalifikátory R_EDGE a F_EDGE pro detekci náěžné a sestupné hrany vstupního signálu VAR_PUT X : R_EDGE; Y : F_EDGE; END_VAR 31 Standardní funkční loky Standardní funkční loky jsou funkce ěžně vestavěné do PLC Mohou ýt přetížené (overloaded) a mohou mít proměnný počet vstupů a výstupů Standardní funkce lze rozdělit do následujících skupin: Bistailní funkční loky Bloky pro detekci hran Čítačové funkční loky (čítače) Časovací funkční loky (časovače) 32 8

Bistailní funkční loky Grafická reprezentace SR S1 Q1 R RS S Q1 R1 S1 R Q1 R1 S Q1 Tělo funkčního loku SR klopný ovod, dominantní je SET (vstup S1) >=1 >=1 RS klopný ovod, dominantní je RESET (vstup R1) Q1 Q1 Funkční loky pro detekci hran Grafická reprezentace R_TRIG CLK Q F_TRIG CLK Q Definice R_TRIG detekce náěžné hrany (rising edge) F_TRIG detekce sestupné hrany (falling edge) FUNCTION_BLOCK R_TRIG VAR_PUT CLK :; END_VAR VAR_OUTPUT Q :; END_VAR VAR M :; END_VAR Q := CLK AND NOT M; M := CLK; END_FUNCTION_BLOCK FUNCTION_BLOCK F_TRIG VAR_PUT CLK :; END_VAR VAR_OUTPUT Q :; END_VAR VAR M :; END_VAR Q := NOT CLK AND NOT M; M := NOT CLK; END_FUNCTION_BLOCK 33 34 Čítačové funkční loky CTU čítač směrem vzhůru (Up-counter) IF R THEN CV := 0; CTU CU Q ELSIF CU AND (CV < PVmax) THEN CV := CV+1; R PV CV Q := (CV >= PV); CTD CD Q CTD čítač směrem dolů (Down-counter) LD PV CV CTU CU QU R CD LD PV QD CV IF LD THEN CV := PV; ELSIF CD AND (CV > PVmin) THEN CV := CV-1; Q := (CV <= 0); CTUD oousměrný čítač (Up-down counter) Dále existují odoné loky CTUD_D, CTUD_L a CTD_UL pro příslušný typ vstupu PV a výstupu CV Dále existují odoné loky CTU_D, CTU_L, CTU_UD a CTU_UL, CTD_D, CTD_L, CTD_UD a CTD_UL, pro příslušný typ vstupu PV a výstupu CV IF R THEN CV := 0; ELSIF LD THEN CV := PV; ELSE IF NOT (CU AND CD) THEN IF CU AND (CV < PVmax) THEN CV := CV+1; ELSIF CD AND (CV>Pvmin) THEN CV := CV-1; QU := (CV >= PV); QD := (CV <= 0); 35 Časovací funkční loky (časovače) Q PT ET je jménem loku: Vstupy a výstupy mají následující význam příznak pro spuštění časovače PT přednastavená doa časování Q příznak vypršení přednastavené hodnoty ET průěžná doa ěhu (po ukončení časování naývá hodnotu PT) TP (Pulse) příchodem náěžné hrany vstupu se nahodí výstup Q po dou PT Přijde-li další náěžná hrana ěhem časování, je ignorována TON (On-delay) výstup Q zpožďuje náěžnou hranu vstupu je zpožděna o čas PT Sestupná hrana pulsu je zachována Pokud puls vstupu trvá kratší dou než PT, je ingorován TOF (Off-delay) výstup Q je nahozen s náěžnou hranou vstupu, sestupná hrana je zpožděna o čas PT Pokud mezi sestupnou hranou a následující náěžnou hranou je kratší čas než PT, je tato sestupná hrana ignorována 36 9

POU: Programy Úlohy (tasks) Program je definován v IEC 61131-1 jako logické spojení (assemly) všech prvků programovacích jazyků a konstrukcí nezytných pro záměrné zpracování signálů vyžadovaných pro řízení stroje neo procesu pomocí PLC Deklarace programů je odoná deklaraci FB s následujícími rozdíly: Pro deklaraci se užívají klíčová slova PROGRAM END_PROGRAM Program může osahovat konstrukci VAR_ACCESS END_VAR Tato konstrukce umožňuje specifikovat proměnné, které mají ýt dostupné pomocí komunikačních služe specifikovaných v IEC 61131-5 Instance programů mohou ýt vytvořeny pouze ve zdrojích (resources), zatímco instance FB mohou ýt vytvářeny v programech a v jiných FB 37 Úloha (task) je definován jako prováděcí řídicí prvek schopný volat množinu POUs Volání může ýt periodické neo jednorázově aktivované náěžnou hranou specifikované Booleovské proměnné Množina POUs zahrnuje programy a funkční loky specifikované v deklaraci programů Task (grafická podoa na or a) může ýt spouštěn: Periodicky s periodou danou nenulovou hodnotou přivedenou na vstup ERVAL (viz or ) Neperiodicky náěžnou hranou signálu přivedeného na vstup SGLE (or c) V oou případech má prioritu danou vstupem PRIORITY (0 je nejvyšší priorita) TASKNAME PERIODIC_TASK NON_PERIODIC_TASK a) TASK ) TASK c) TASK SGLE SGLE %IX2 SGLE U ERVAL PRIORITY t#20ms 1 ERVAL PRIORITY 2 ERVAL PRIORITY 38 Rozvrhování úloh (Task scheduling) Priorita POU (tj priorita tasku, který ji osahuje) může ýt použita pro rozvrhování úloh Nepreemptivní rozvrhování V okamžiku dostupnosti CPU je spuštěna POU s nejvyšší prioritou Je-li takových POU několik, je spuštěna ta, která čeká nejdéle Preemptivní rozvrhování V okamžiku přidělení času dané POU, může ýt přerušeno vykonávání jiné POU s nižší prioritou Toto přerušení může trvat dokud není dokončeno zpracování POU s vyšší prioritou POU y nemělo přerušovat POU se stejnou prioritou V závislosti na prioritách nemusí ýt daná POU spuštěna okamžitě po naplánování Výroce y měl poskytnout informace, které umožní uživateli zjistit, zda udou dodrženy všechny mezní časy (deadlines) v dané konfiguraci Program, který není zařazen do žádné úlohy má nejnižší systémovou prioritu Po svém ukončení je spuštěn znovu 39 10