Programování PLC Tecomat v jazyce mnemokódů. Podpůrný text pro cvičení z předmětu Mikropočítače a PLC

Podobné dokumenty
Tecomat v jazyce mnemokódů. Podpůrný text pro cvičení z předmětu Mikropočítače a PLC

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

SEKVENČNÍ LOGICKÉ OBVODY

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

Programovatelné relé Easy (Moeller), Logo (Siemens)

Programovatelná řídící jednotka REG10. návod k instalaci a použití 2.část Program RS03-02 regulátor pro řízení servopohonů

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

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

Programovatelné relé Easy (Moeller), Logo (Siemens)

PLC AUTOMAT SIEMENS SIMATIC S Úvod k učebním textům. PLC automat SIEMENS SIMATIC S Základní informace

Funkce jednotlivých tlačítek se mohou měnit podle toho, na jaké úrovni menu se právě nacházíte; vysvětlení viz následující tabulka.

AUTOMATIZACE Úvod do programování PLC

... sekvenční výstupy. Obr. 1: Obecné schéma stavového automatu

1. 5. Minimalizace logické funkce a implementace do cílového programovatelného obvodu CPLD

Společnost pro elektronické aplikace. SEA s.r.o. Dolnoměcholupská 21 CZ Praha 10

PROGRAMOVÁNÍ MIKROPOČÍTAČŮ CVIČENÍ 2

Programovatelná počítadla CT6M a CT6S

Algoritmizace a programování

Jako pomůcka jsou v pravém dolním rohu vypsány binární kódy čísel od 0 do 15 a binární kódy příkazů, které máme dispozici (obr.21). Obr.

Formátování pomocí stylů

Technická kybernetika. Obsah. Klopné obvody: Použití klopných obvodů. Sekvenční funkční diagramy. Programovatelné logické automaty.

Programování. řídících systémů v reálném čase. Střední odborná škola a Střední odborné učiliště - - Centrum Odborné přípravy Sezimovo Ústí

Praktické úlohy- programování PLC

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

PROGRAMOVÁNÍ MIKROPOČÍTAČŮ CVIČENÍ 7

UniLog-D. v1.01 návod k obsluze software. Strana 1

Logické řízení výšky hladiny v nádržích

Návod k obsluze. Spínací člen

Vzorce. Suma. Tvorba vzorce napsáním. Tvorba vzorců průvodcem

1 Tabulky Příklad 3 Access 2010

PROGRAMOVATELNÝ TERMOSTAT CT Citherm 6.0 Návod k obsluze

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

WinFAS. Agenda ÚČTO Založení nové knihy, číselné řady a šablony

Program "Světla" pro mikropočítač PMI-80

LOGICKÉ ŘÍZENÍ. Matematický základ logického řízení. N Měřicí a řídicí technika 2012/2013. Logické proměnné

7. Měření na elektrických přístrojích

SPÍNACÍ HODINY. Nastavení hodin a předvolby. Obr. 1

PROGRAMOVÁNÍ MIKROPOČÍTAČŮ CVIČENÍ 6

Obsah. Vymezení použitých pojmů

Sekvenční logické obvody

Nastavení IP adresy a defaultní rychlosti CANu u převodníku ETH2CAN

Průvodce programováním AMiNi-E jazykem STL Dipl. Ing. Pavel Votrubec

ASYNCHRONNÍ ČÍTAČE Použité zdroje:

Návrh čítače jako automatu

Cíle. Teoretický úvod. BDIO - Digitální obvody Ústav mikroelektroniky Sekvenční logika - debouncer, čítače, měření doby stisknutí tlačítka Student

Actioncam Gimball. Uživatelská příručka (Česky)

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

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

MK3x3 programovatelné relé

Komunikace modulu s procesorem SPI protokol

Manuál k programu KaraokeEditor

Návody na montáž, obsluhu a údržbu

Postupy práce se šablonami IS MPP

Smartphone Gimball. Uživatelská příručka (Česky)

A/C DÁLKOVÝ OVLÁDAČ NÁVOD K OBSLUZE

Univerzální watchdog WDT-U2/RS485

ODBORNÝ VÝCVIK VE 3. TISÍCILETÍ

TP /b P - POPIS ARCHIVACE TYP Měřič INMAT 57 a INMAT 57D

OVLÁDACÍ OBVODY ELEKTRICKÝCH ZAŘÍZENÍ

Denní přehled naprogramovaných časů 5 = pátek. Stav kontaktů relé zap = On, vyp = OFF

Logické řízení s logickým modulem LOGO!

QC300 3fáze 400V řídící jednotka / QC300R 3fáze 230V / QC301 1fáze

1. Měření: V programu easy-soft otestujte tyto funkce: a) Vstup/výstup I, Q: Př.1.Sestavte jednoduchý program pro ověření funkce vstupu a výstupu.

Digitální tlakový spínač DPC-10 (napěťový výstup) Návod k montáži a obsluze

RE3USB programovatelné USB relé

ESII Roletová jednotka

REG10 návod k instalaci a použití 2.část Univerzální časovač a čítač AVC/ 02

Aktivace REŽIMU ČASOVÉHO ŘÍZENÍ

9. Rozšiřující desky Evb_Display a Evb_keyboard

Programovatelný regulátor FUJI PXG4

SW24x3 programovatelné relé

Typy a použití klopných obvodů

IRISPen Air 7. Stručná uživatelská příručka. (Android)

Gymnázium Vysoké Mýto nám. Vaňorného 163, Vysoké Mýto

Programovatelná řídící jednotka REG10. návod k instalaci a použití 2.část Program pro regulaci kaskády čerpadel v závislosti na tlaku SGC3

2 ZAPOJENÍ, OŽIVENÍ A PROGRAMOVÁNÍ SYSTÉMOVÉ

TEAM DESIGN ABB CHALLENGE. EBEC Brno března

ZAŘÍZENÍ PRO MĚŘENÍ DÉLKY

DIGITÁLNÍ REGULÁTOR DR2013

Reliance 3 design OBSAH

USB3x3 sekvenční automat s USB portem pro nahrávání programů

Napájení 230 Vac 50/60 Hz (115 Vac 50/60 Hz pro BRAINY 115) Výstup, motor 1/2 motor 230 Vac (115V pro BRAINY 115)

1. Programování PLC. Programovatelné automaty II - 1 -

Pracovní list KA č.4 Spolupráce se ZŠ

Učební text vznikl na základě podpory z Evropského sociálního fondu, státního rozpočtu České republiky a rozpočtu hlavního města Prahy.

Návod k ovladači ke sportovnímu panelu

WinFAS. obecné. Praktický úvod do WinFASu IQ sestavy podrobně. Strana 1

Způsoby realizace této funkce:

ADEX SL3.3 REGULÁTOR KOTLE VARIMATIK

Návrh synchronního čítače

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

Instrukce pro montáž, obsluhu a údržbu

Obsah DÍL 1. Předmluva 11

VY_32_INOVACE_OV_2.ME_CISLICOVA_TECHNIKA_19_SPOJENI KOMBINACNICH_A_SEKVENCNICH_OBVODU Střední odborná škola a Střední odborné učiliště, Dubno

Obsah. při vyšetření pacienta. GDT souboru do programu COSMED Omnia GDT souboru z programu COSMED Omnia a zobrazení výsledků měření v programu MEDICUS

ZAŘÍZENÍ PRO MĚŘENÍ DÉLKY

Manuál k ovládání aplikace INFOwin.

BDIO - Digitální obvody

Transkript:

Programování PLC Tecomat v jazyce mnemokódů Podpůrný text pro cvičení z předmětu Mikropočítače a PLC Autor: Jan Dolinay, dolinay [at] fai.utb.cz Poslední změna: 2.11.2016

Obsah 1. Úvod do kombinační logiky... 3 Základní pojmy 3 Příklad 1: Domeček se 3 okny 3 Minimalizace logických výrazů 5 Úkol k procvičení 7 2. Programování PLC Tecomat... 8 Program pro příklad 1 (domeček se třemi okny) 8 Zapsání programu v prostředí Mosaic... 9 Příklad 2 11 3. Kompletní řešený příklad z kombinační logiky... 13 4. Další instrukce (porovnání, skoky, LET a BET)... 15 Příklad 1 instrukce LT, JMD, INR 15 Příklad 2 instrukce LET, RES 16 5. Práce s jednotlivými bity proměnné... 17 Příklad Zobrazení čísla v binární soustavě 17 6. Sekvenční logika... 18 Realizace RS obvodu v programu pro PLC TECOMAT 18 Příklad 1 Ovládání motorku 19 Program 2 Vozík jeřábu 22 7. Časování akcí v programu, časovače a čítače... 25 Periodicky spouštěné procesy 25 Systémové registry S13 a S20 (systémový časovač) 25 Příklad 3 inkrementace proměnné citac jedenkrát za sekundu... 25 Čítače a časovače (TON, TOF, IMP, CTU, CTD, CNT) 26 Impulsní časovač... 26 Příklad 1 Schodišťový vypínač... 27 Časovač zpožděný přítah a zpožděný odpad... 28 Instrukce TON... 28 Instrukce TOF... 29 Příklad 2 Manipulátor... 29 Čítače 30 Příklad 3 Počítání výrobků... 31 8. Tabulkové úlohy... 33 Příklad 1 Domek se třemi okny 33 Literatura... 36 2

1. Úvod do kombinační logiky Programovatelné logické automaty (PLC) vznikly původně jako náhrada za reléovou logiku. Dnes již ovšem neslouží jen pro řešení logických úloh, ale zpracovávají i analogové veličiny apod. (např. PID regulátor realizovaný pomocí PLC). Základní pojmy Logická proměnná veličina nabývající pouze dvou hodnot: log 0 a log 1 (true, false). Logická funkce předpis, který k souboru hodnot vstupních logických proměnných (argumentů) přiřazuje výstupní logické proměnné. Kombinační logika kombinací vstupů je dána kombinace výstupů. Sekvenční logika kombinací vstupů a vnitřním stavem je dána kombinace výstupů. Jak se dá zapsat logická funkce? Pravdivostní tabulka Logický výraz Karnaughova (čteme Karnafova) mapa Příklad 1: Domeček se 3 okny Máme domek se 2 okny a dveřmi. Topení se má zapnout, pokud bude plocha otevřených oken nebo dveří větší nebo rovna 3 m2. Plochy jsou následující: a = 2 m2, b = 2 m2, c = 3m2. Viz obrázek. Řešení Definujme logické proměnné následovně: vstupy = otevřeno/zavřeno = (a, b, c) výstupy = topí/netopí = (T) 3

Máme zapsat (a potom i naprogramovat) logickou funkci, která zapne/vypne topení, tj. přiřadí 1 nebo 0 výstupní proměnné T podle hodnot vstupů. Zápis logické funkce můžeme provést několika způsoby: a) Vyjádření funkce pravdivostní tabulkou i a b c T 0 0 0 0 0 1 0 0 1 1 2 0 1 0 0 3 0 1 1 1 4 1 0 0 0 5 1 0 1 1 6 1 1 0 1 7 1 1 1 1 Tabulka musí pokrýt všechny možné kombinace hodnot vstupních proměnných, kterých je 2 n, kde n je počet vstupních proměnných. V tomto příkladě n = 3, tedy možných kombinací je 2* 2*2 = 8. Proto 8 řádků v tabulce. Poznámka: pravdivostní tabulka se dá použít pro rozumný počet vstupních proměnných, asi 2 až 6. Pro větší počet už by byla velmi rozsáhlá (např. tabulka pro 6 vstupů bude mít 2 6 tj. 64 řádků). Jak vyplnit pravdivostí tabulku? Asi nejjednodušší pomůckou je použít následující postup: V posledním sloupci se střídají nuly a jedničky (zde je to sloupec c) V dalším sloupci (b) se střídá vždy po dvou nulách a dvou jedničkách (2 1 ) V dalším sloupci po 4 nulách a 4 jedničkách. (2 2 = 4) atd... V každém dalším sloupci se střídají nuly a jedničky v počtu rovném následující mocnině čísla 2. Určíme hodnotu výstupu pro jednotlivé řádky tabulky podle zadání úlohy. b) Vyjádření funkce logickým výrazem: Zapíše se výraz odpovídající stavu, kdy je výstup roven 1, tj. vybíráme řádky z pravdivostní tabulky, kde T = 1. T = a b c + a b c + a b c + a b c a b c Poznámka: Ve výrazu používáme tyto logické operátory: * = AND = A (při zápisu je možno vynechat, podobně jako při zápisu násobení) + = OR = NEBO Výraz výše tedy přečteme takto: topí se, pokud není otevřeno a A současně není otevřeno b A současně je otevřeno c NEBO (+) pokud není otevřeno a A současně je otevřeno b A současně je otevřeno c... 4

Poznámka 1: čárkou nad jménem proměnné se obvykle označuje, že proměnná má hodnotu log. 0. Z technických důvodů jsou zde psány čárky označující log 0 pod proměnnou místo nad. Výše uvedený výpis jsme vytvořili víceméně mechanicky z pravdivostní tabulky, ale v takto jednoduchém případě by se dal vytvořit i přímo ze zadání, viz vlastně ve výsledném výrazu zapíšeme výčet případů, kdy je splněna podmínka, že je otevřená plocha >= 3 m 3, např. když budou okna a a b zavřena a c otevřeno (a b c), nebo když bude otevřeno b a c a okno a bude zavřeno (a b c). c) Vyjádření funkce pomocí Karnaughovy mapy: Je to další způsob zápisu logické funkce. Pozor: Zde pruh v řádku nebo sloupci tabulky značí, že tam má logická proměnná hodnotu log 1. Někdy se místo pruhů používá zápis hodnot vstupních proměnných v hlavičce sloupce, viz následující obrázek. Minimalizace logických výrazů Základní výraz pro zápis logické funkce, tak jak je výše, je většinou zbytečně složitý a z něj vycházející realizace logické funkce je nadbytečná. Vyplatí se výraz zjednodušit, tj. získat úspornější řešení. ˇ Proč? Sníží se tím cena řešení - ať už pevné logiky počet relé) nebo u programu (počet instrukcí), protože 5

se tím zkrátí doba vykonání programu a odezva systému, delší program je také pracnější, hůř se ladí, je vyšší riziko vzniku chyb. Není ale třeba snažit se o absolutní minimalizaci. Stačí osvědčené postupy, které poskytnou při malé pracnosti rozumnou efektivnost. Pro minimalizaci lze použít různých postupů. 1) Základní, ze zápisu výrazů pomocí určitých pravidel Nevýhoda: pracné, je nutno hledat nebo si pamatovat pravidla podle kterých se minimalizuje Např. pravidlo: a + b + c = a Ukázka použití: a.b.c + a.b.c + a.b.c = a.b.c 2) Pomocí Karnaughovi mapy Výhoda: jednoduchý, mechanický postup. Princip: hledáme v mapě co největší smyčky z jedniček a vstupní proměnná, která ve smyčce mění hodnotu, z výsledku vypadne. Pravidla pro smyčky: musejí být symetrické a počet jedniček musí být mocninou dvou tj. 2, 4, 8 atd. smyčka se může vytvořit pouze z polí, která spolu sousedí plochou stěny, nikoliv např. diagonálně. Smyčky hledáme, jakoby mapa byla na kouli, resp. na válcích v podélném i svislém směru, tj. smyčky se dají tvořit i přes okraje mapy. S tvořením smyček skončíme, když jsou už všechny jedničky v mapě využity v nějaké smyčce Ukázka minimalizace pro příklad 1: Zde jsou dvě smyčky, červená a modrá. Červená: v této smyčce se mění hodnota proměnných a, b. C nemění hodnotu, na tomto řádku má hodnotu 1. Proto a,b vypadnou, c zůstane ve výsledném výrazu. Modrá: zde a, b nemění hodnotu, obě mají v tomto sloupci hodnotu 1, c mění hodnotu, (v provním řádku má hodnotu 0 a ve druhém 1), takže vypadne. Výsledný výraz: T = c + ab 6

Úkol k procvičení Máme domeček se čtyřmi okny podle obrázku. Úkolem je topit, pokud je 2 a více oken otevřených. 1. Sestavte pravdivostní tabulku 2. Napište logický výraz pro T 3. Nakreslete Karnaughovu mapu a proveďte minimalizaci Řešení: Pravdivostní tabulka bude mít 16 řádků (protože jsou zde 4 vstupní proměnné). Podle postupu uvedeného výše ji naplníme všemi kombinacemi hodnot vstupních proměnných a, b, c, d. Hodnotu výstupní proměnné T určíme podle pravidla výše tj. tak, že T je 1 v těch řádcích tabulky, kde se vyskytují 2 a více jedničky ve vstupních proměnných. Celkem je zde 11 takových řádků. Logický výraz napíšeme podle tabulky pro řádky kde T = 1. K-mapa s vyznačením smyček je na následujícím obrázku: Výsledný výraz po minimalizaci je: T = ab + cd + bd + ad + bc + ac To odpovídá logice zadání: jestliže při 2 a více otevřených máme topit, pak jestliže je už jen některá dvojice vstupních proměnných v log. 1, stačí to již k určení hodnoty výstupu a nemusíme vyhodnocovat zbývajících vstupních proměnných. Ve výsledném výrazu jsou vlastně všechny možné dvojice sestavitelné ze vstupních proměnných a, b, c, d. 7

2. Programování PLC Tecomat PLC je možno programovat mnoha jazyky v různých vývojových prostředích. Většinou výrobce dodává ke svým PLC i vlastní vývojové prostředí. My budeme používat prostředí Mosaic od firmy Teco a programovat budeme v jazyku mnemokódů (obdoba assembleru u mikropočítačů). Při programování se jedná prakticky o mechanický přepis logického výrazu do instrukcí programu. Podstatné je pochopit princip zásobníků. V PLC Tecomat instrukce provádějí operace s čísly uloženými na zásobnících. Ukážeme si to na příkladu programu, který bude realizovat logickou funkci z Příkladu 1 z předchozí kapitoly. Program pro příklad 1 (domeček se třemi okny) Naším úkolem je naprogramovat logickou funkci T = c + ab Nejprve definujeme vstupní proměnné a to následujícím způsobem: #def a %X10.1 #def b %X10.2 #def c %X10.3 #def Top %Y1.0 Pomocí direktivy #def přiřazujeme symbolům a, b, c, a Top určité vstupy nebo výstupy. PLC Tecomat má obrazy vstupů označeny jako X a obrazy výstupů jako Y. Zápis X10.1 znamená bajt X10, bit číslo 1. Proměnná a tedy vlastně zastupuje jeden vstupní bit. Představte si skutečné použití PLC pro řízení topení v domku. Každá ze vstupních proměnných a, b, c odpovídá vstupu do PLC z nějakého snímače, který zjišťuje jestli je okno otevřeno nebo zavřeno. Tento vstup má pouze 2 hodnoty: zapnuto/vypnuto a je tedy v programu vyjádřen jedním bitem. V PLC jsou hodnoty vstupů (obrazy vstupů) dostupné přes proměnné typu X. Samotný program realizující zadanou funkci potom zapíšeme takto: ld c ld a and b or wr Top Vysvětlení: 1. Instrukce ld c vloží proměnou c do zásobníku. 2. Instrukce ld a vloží proměnnou a do zásobníku 3. Instrukce and b provede log. součin (AND) mezi proměnou b a vrcholem zásobníku (tj. proměnnou a, viz bod 2). výsledek vloží na zásobník. 4. Instrukce or provede log. součet (OR) mezi dvěma nejhornějšími hodnotami na zásobníku, tj. mezi výsledkem kroku 3 a proměnou c. Výsledek vloží na zásobník. 5. Instrukce wr zapíše hodnotu, která je na vrcholu zásobníku (výsledek kroku 4) do proměnné Top. 8

Pro lepší pochopení si projděte postup vykonání programu ještě jednou a sledujte přitom obrázky znázorňující stav zásobníku níže. Číslo u obrázku vždy odpovídá stavu zásobníku po provedení daného kroku. Stejného výsledku bychom dosáhli i následujícím zápisem: ld c ld a ld b and or wr Top Zapsání programu v prostředí Mosaic Nyní program, který jsme výše vysvětlili zapíšeme ve vývojovém prostředí Mosaic a vyzkoušíme na simulovaném PLC. Postup vytvoření programu v Mosaic 1. Spusťte prostředí Mosaic 2. Otevře se okno výběr skupiny projektů 3. Klikněte na tlačítko Nový. Tím vytvoříme novou skupinu projektů. Vytvořte si jednu skupinu projektů, do níž budou patřit všechny vaše projekty vytvořené v rámci těchto cvičení, např. MojeProjekty. 4. Po zapsání jména skupiny projektů klepněte na OK. 5. Objeví se okno pro zadání jména prvního projektu. Zadejte jméno, např. domek1. A klepněte na tlačítko Otevřít. 6. Otevře se okno výběru řídicího systému. Vyberte možnost řady PLC nepodporující IEC. 7. Vyberte typ PLC TC600 a klikněte na Ok. 8. Otevře se zdrojový soubor DOMEK1.MOS. Zde budeme psát náš program do bloku mezi značky P 0 a E 0. 9. Nejprve zapište nad značku P 0 kód definic proměnných a pak za značku P0 ale před E0 instukce samotného programu. Viz obrázek: POZOR: u definic vstupů a výstupů (#def) doplňte %, např. #def a %X10.0 9

10. Uložte změny. 11. Nyní vytvoříme tzv. panel pro otestování programu. Panel nám umožní zadat hodnoty vstupních proměnných a sledovat stav výstupní proměnné. 12. V menu Soubor zvolte Novy a Panel. 13. V okně panelu klikněte kamkoliv a napište např. Okno a:. 14. Klikněte na ikonu Nový objekt v panelu nástrojů. Objeví se okno pro zadání parametrů nového objektu. Zadejte jméno a (jméno proměnné definované v programu direktivou #def). Dále zadejte Formát bit, Hodnota pro nastavení 0, text v 1: otevreno a text v 0: zavreno. 15. Klepněte na Ok. V dotazu zda použít jméno a i když není známo zvolte ANO. 16. Stejným způsobem přidejte objekty pro proměnné b, c a Top. Nastavení je stejné, jen se mění jméno. U proměnné top navíc zaškrtněte okno chráněná. Tím proměnnou na panelu chráníme před změnou hodnoty uživatelem jedná se přece o výstup, ten není možno přímo měnit, mění se pouze programově jako odezva na změnu vstupů. 17. Uložte panel pod jménem DOMEK1.PAM 18. Výsledný panel by měl vypadat jak je na obrázku: 19. V menu program klepněte na Přeložit. Překlad by měl proběhnout bez chyb. 20. V menu PLC klepněte na Run. Odpovězte Ano na dotaz zda vyslat kód. (Toto odpovídá nahrání programu do mikropočítače). Zvolte např. Studený pro typ restartu PLC. 21. Nyní uvidíte, že panel zobrazuje výchozí hodnoty proměnných, které jsme zadali v polích 10

hodnota pro nastavení. Poklepáním na vstupní proměnné můžeme přepínat jejich hodnotu mezi log 0 a log 1. Vyzkoušejte zda se proměnná Top nastaví na 1 při zapnutí okna a a b nebo okna c, tak jak to plyne ze zadaného výrazu. 22. Tím jsme úspěšně napsali a vyzkoušeli první program pro PLC. Příklad 2 1. Zapište následující program v prostředí Mosaic a otestujte jeho chování pomocí panelu, kterým budete nastavovat hodnoty proměnných a, b, c. Pro všechny proměnné zvolte při hodnotě log 1 text Ano, pro log 0 text Ne. 2. Zapište logický výraz, který tento program realizuje 3. O jakou funkci se jedná? TIP: Pro zapsání programu vytvořte nový projekt a to tak, že klepnete pravým tlačítkem myši na název skupiny projektů (MojeProjekty) v okně Skupiny projektů vlevo a z menu vyberete Nový Projekt... Projekt nazvěte majorita. Panel pro otestování programu: 11

Řešení Funkce zapsaná v programu: vystup = a. (b + c) + b. c Jedná se o tzv. majoritu ze tří. Výstup je 1 tehdy, jestliže většina (majorita) vstupů je v log 1. Jde vlastně o hlasovací zařízení :). Jestliže tedy alespoň dva vstupy jsou v log 1, je výstup 1. Výraz pro majoritu po minimalizaci by byl následující: vystup = ab + ac + bc Můžeme jej dále upravit vytknutím a tj: vystup = a (b+c) + bc Slovně vyjádřeno: výstup je 1, jestliže je vstup a 1 a současně i vstup b nebo c. Anebo jestliže je b log 1 a současně i c. Tedy pokud je a v log. 1 pak stačí aby bylo b NEBO c také jedna, pokud ne, pak musí být b i c jedna. 12

3. Kompletní řešený příklad z kombinační logiky Automatické vystřihování Zadání Vystřihovací zařízení může být obsluhováno ze tří stran. Materiál je zasunut a tím aktivuje dva ze tří senzorů S1, S2, S3. V této poloze dojde k vystřižení. Viz obrázek níže. Stříhání musí být zahájeno pouze tehdy, jsou-li 2 ze 3 senzorů aktivní. Z bezpečnostních důvodů se naopak musí vyloučit stříhání, jestliže jsou aktivovány všechny senzory. V tomto případě má být hlášena chyba. Sestavte pravdivostní tabulku Napište program v jazyku mnemokódů pro PLC Teco realizující zadanou funkci Obr. Schéma vystřihovacího zařízení (pohled shora) Definujme proměnné pro vstupy a výstupy: Vstupy: Senzor S1 proměnná Sa1, log 1 = materiál je nad senzorem Senzor S2, S3 obdobně proměnné Sa2 a Sa3. Výstupy: Spínač stříhání proměnná YY1, log 1 = střihnout Chybové hlášení proměnná ERR, log 1 = chyba Vyplňme pravdivostní tabulku: Sa1 Sa2 Sa3 YY1 ERR 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 1 1 0 1 0 0 0 0 1 0 1 1 0 1 1 0 1 0 13

1 1 1 0 1 Tabulku vyplníme tak, že pro všechny možné kombinace hodnot senzorů Sa1 až Sa3 napíšeme odpovídající hodnoty výstupů YY1 a ERR. Víme, že střihnutí se má provést (tj. YY1 má být 1) pro případ, kdy je materiál zasunut tak, že zakrývá vždy dva ze tří senzorů. Podle toho přiřadíme do sloupce YY1 jedničky v těch řádcích, kde jsou právě dvě jedničky ve sloupcích vstupů (Sa1, Sa2, Sa3). V ostatních případech bude YY1 rovno nule. Výstup ERR je 1 jen v případě, že jsou zakryty všechny senzory, tedy v posledním řádku tabulky. Z tabulky vypíšeme výrazy pro YY1 a ERR: YY1 = Sa1 Sa2 Sa3 + Sa1 Sa2 Sa3 + Sa1 Sa2 Sa3 ERR = Sa1 Sa2 Sa3 Přípomeňme, že vypisujeme ty řádky tabulky, ve kterých je výstupní proměnná rovna 1. Podtržení znamená, že daná proměnná má hodnotu 0, viz první lekce. Napišme program pro PLC Teco. Nové instrukce: LDC x vloží na zásobník negovanou hodnotu proměnné x ANC x - provede součin vrcholu zásobníku s negovanou hodnotou operandu x Výpis #def Sa1 %X1.0 #def Sa2 %X1.1 #def Sa3 %X1.2 #def YY1 %Y1.0 #def ERR %Y1.1 P0 LD Sa1 ; S1 na vrchol zasobniku AND Sa2 ; S1 * S2 ANC Sa3 ; S1 * S2 * S3 LD ANC AND OR LDC AND AND OR WR LD AND AND WR E0 Sa1 Sa2 Sa3 Sa1 Sa2 Sa3 YY1 Sa1 Sa2 Sa3 ERR ; + mezi predchozimi trojicemi 14

4. Další instrukce (porovnání, skoky, LET a BET) Tato kapitola ukazuje některé další instrukce, které se často využívají. INR inkrementace operandu (přičtení jedničky) DCR dekrementace operandu (odečtení jedničky) EQ, GT, LT funkce porovnávání JMP, JMD, JMC Skoky LET impulz od náběžné hrany. Nastaví na vrcholu zásobníku log. 1, pokud dojde ke změně stavové proměnné z log. 0 na log. 1(náběžná hrana), jinak nastaví na vrchol zásobníku log. 0. BET impulz od libovolné hrany. Nastaví na vrcholu zásobníku log. 1, pokud dojde ke změně stavové proměnné z log. 0 na log. 1 nebo z log. 1 na log. 0 (libovolná hrana), jinak nastaví na vrchol zásobníku log. 0. SET podmíněné nastavení operandu na 1 (pokud je na vrcholu zásobníku nenulová hodnota) RES podmíněné vynulování operandu (pokud je na vrcholu zásobníku nenulová hodnota) V další části jsou uvedeny příklady použití těchto instrukcí. Příklad 1 instrukce LT, JMD, INR Pokud má proměnná cislo" hodnotu větší nebo rovnu 10, zvětšuje se proměnná citac o 1 v každé otočce cyklu. #reg byte cislo #reg word citac P 0 LD cislo LT 10 JMD konec INR citac konec: E 0 Vysvětlení Hodnotu proměnné cislo porovnáváme s 10 pomocí instrukce LT. Tato instrukce vloží na vrchol zásobníku log. 1, jestliže je číslo na vrcholu zásobníku menší než její operand. V opačném případě vloží log. 0. V našem případě tedy pokud v proměnné cislo je hodnota menší než 10, bude po provedení instrukce LT na vrcholu zásobníku log. 1, jinak tam bude log. 0. Podmíněný skok JMD se provede, pokud je na vrcholu zásobníku nenulová hodnota. V tom případě se přeskočí instrukce INR a proměnná citac se nezmění. Pokud se JMD neprovede, provede se INR a zvětší se hodnota citac o 1. Pokud bychom chtěli podmínku otočit a porovnávat zda je číslo větší než 10, použili bychom instrukci GT místo LT. Ověření funkce Vytvořte na panelu objekty pro proměnnou cislo a citac. Pokud zadáte do proměnné cislo hodnotu 10 a vyšší, začne proměnná citac rychle narůstat (v každém průchodu otočkou cyklu se k ní přičte 1). Pokud zadáte do cislo hodnotu menší než 10, hodnota citac se nebude měnit. 15

Příklad 2 instrukce LET, RES Vynuluje proměnnou citac při náběžné hraně signálu vstup. #reg word citac #def vstup X1.0 #reg bit stav P 0 LD vstup LET stav RES citac E 0 ; stavová proměnná Vysvětlení: Program zajistí, že proměnná citac se vynuluje pouze jednou po stisku tlačítka, ale není nulována opakovaně po celou dobu, kdy je tlačítko stisknuto. Instrukce LET při každém vykonání nastaví do proměnné stav hodnotu, jaká je na vstupu (viz popis chování instrukce v nápovědě Mosaic). Na začátku programu předpokládejme na vstupu hodnotu log. 0 (vstup = 0) a stav = 0. V této situaci zapisuje instrukce LET na vrchol zásobníku log. 0. Když se na vstupu objeví log. 1 (stisk tlačítka), pak instrukce zapíše do proměnné stav log 1. Protože tím došlo ke změně v proměnné stav z 0 na 1, zapíše také log. 1 na vrchol zásobníku. Při dalším provedení instrukce LET (v další otočce cyklu) již platí, že v proměnné stav je log 1 a ke změně z 0 na 1 tedy nedochází. Instrukce LET proto na vrchol zásobníku nastavuje log 0. Ověření funkce: Zapište program a vytvořte panel s objekty: vstup, formát bit citac, formát bez znaménka Nastavte hodnotu proměnné citac např. na 5. Aktivujte vstup (přepněte na log. 1). Proměnná citac se vynuluje. Je možno ale nastavit její hodnotu a hodnota zůstane nastavena, i když má vstup stále hodnotu log. 1. Pokud bychom místo LET a RES použili např. jen RES, pak by proměnná citac byla nulována v každé otočce cyklu a nebylo by možno změnit její hodnotu. 16

5. Práce s jednotlivými bity proměnné Mějme proměnnou cislo typu byte. K jejím jednotlivým bitům můžeme přistupovat zápisem cislo.[cislo_bitu]. Např. načtení bitu 0 na zásobník: LD cislo.0 Načtení bitu 1 na zásobník: LD cislo.1 Zápis hodnoty z vrcholu zásobníku do bitu 1: WR cislo.1 Příklad Zobrazení čísla v binární soustavě Program převede číslo zadané na panelu jako celé číslo bez znaménka (tj. např. 1, 2, 3,..) do binární soustavy, tj. zobrazí jednotlivé bity. Pro jednoduchost je velikost čísla omezena na 3 bity, program tedy funguje pro čísla 0 až 7. #reg byte cislo #reg bit b0, b1, b2 P 0 LD cislo.0 WR b0 LD cislo.1 WR b1 LD cislo.2 WR b2 E 0 17

6. Sekvenční logika Na rozdíl od kombinační logické funkce, u sekvenční logické funkce není výstup dán pouze okamžitou hodnotou vstupů, ale také vnitřním stavem, tj. obvod má paměť. Jedním z nejjednodušších příkladů sekvenčního obvodu je tvz. RS klopný obvod. Obr. Dvě varianty schématu RS klopného obvodu Funkce obvodu je následující: o Přivedením log. 0 na vstup S (set) se nastaví výstup Q = 1 o Q zůstane 1 i po změně vstupu S na log.1 (pamatuje si stav) o Přivedením log. 0 na vstup R (reset) se nastaví Q = 0 o Q zůstane 0 i při změně vstupu R na log. 1 Chování obvodu je stejné jako u tzv. relé se samodržným kontaktem, které se přivedením napětí sepne a drží sepnuté i po odpojení napětí. Rozepne se speciálním signálem (reset). Praktické využítí: paměť (1 bit), ošetření vstupů např. tlačítek proti zákmitům Realizace RS obvodu v programu pro PLC TECOMAT Funkci RS obvodu by bylo možno realizovat programem složeným z elementárních instrukcí jako AND, OR apod., ale k dispozici jsou přímo instrukce jako SET a RES SET podmíněné nastavení proměnné na log 1 (pokud je v zásobníku nenulová hodnota RES podmíněné nastavení na log 0 (pokud je v zásobníku nenulová hodnota) 18

Princip funkce instrukce SET je na následujícím obrázku, uvažujeme program: LD prom SET stav Obr. - Princip instrukce SET. Instrukce RES pracuje obdobně s tím, že cílovou proměnnou (na obrázku pojmenovanou stav) vynuluje místo na stavení na 1. Příklad 1 Ovládání motorku Zadání Vytvořte program v prostředí Mosaic s následující funkcí. Stisknutím tlačítka START se zapne motor. Po uvolnění tlačítka zůstane zapnutý. Tlačítkem STOP se vypne. V programu definujte také výstupy pro rozsvícení kontrolek zapnuto a vypnuto (přidejte na panel příslušné objekty). Řešení Výpis zdrojového kódu je na následujícím obrázku. Proměnné zap a vyp představují vstupy od tlačítek START a STOP. Proměnná pom_zap simuluje kontrolku signalizující zapnutý stav. Jestliže je pom_zap = true, znamená to, že kontrolka zapnutí svítí. Jestliže je 0 nesvítí. 19

Panel pro tento program bude vypadat následovně: Po vytvoření programu i panelu jej vyzkoušejte: o V menu Program klepněte na Přeložit. Překlad by měl proběhnout bez chyb. o V menu PLC klepněte na příkaz Run. o Odpovězte Ano na dotaz zda vyslat kód. Zvolte např. Studený pro typ restartu PLC. o Nyní uvidíte, že panel zobrazuje výchozí hodnoty proměnných, které jsme zadali v polích hodnota pro nastavení. o Poklepejte na tlačítko START. Rozsvítí se kontrolka. Tlačítko nezůstane stisknuté, protože program jej okamžitě resetuje (instrukce res zap), kontrolka ale svítí. 20

Úkoly k procvičení Rozšiřte předchozí program následovně o Přidejte spotřebič (Motor), který se bude zapínat a vypínat vytvořte tedy novu proměnnou nazvanou např. motor, která se bude nastavovat na 1 a nulovat pomocí tlačítek START a STOP. o Přidejte vypínač pro nouzové vypnutí (Central Stop), jehož stisknutím se vše vypne. Aby bylo možno motor znovu zapnout, musí se nejprve tento vypínač deaktivovat dalším poklepáním myší. Nápověda řešení nouzového vypínače: LD central RES motor ; atd. vypnutí JMD konec ; původní kód ;ovládání tlačítky konec: E 0 Nová instrukce: JMD = skok, jestliže je na vrcholu zásobníku nenulová hodnota. Jestliže je aktivován nouzový vypínač (proměnná central ), bude na vrcholu zásobníku po instrukci LD central hodnota 1. Proto se instrukcí RES vynuluje proměnná motor (vypne se motor) a skok JMD se provede. Tím se přeskočí veškerý kód vyhodnocující stav tlačítek START a STOP. Takže dokud je vypínač aktivní (na zásobník se pomocí LD central dostává 1), vůbec se nevyhodnocuje stav tlačítka START a motor tedy nejde zapnout. 21

Program 2 Vozík jeřábu Program ukazuje použití mnoha instrukcí. Je v něm také využit periodicky spouštěný proces P6 pro periodické provádění určité akce. Zadání Vytvořte program pro řízení vozíku jeřábu. Vozík je poháněn dvěma motory, jedním pro pohyb vlevo a druhým pro pohyb vpravo (motorl, motorp). Poloha vozíku bude na panelu simulována číslem 0 až 10, kde hodnota 0 bude představovat pozici vozíku cela vlevo a 10 pozici zcela vpravo. Po dojetí do krajní polohy se vozík musí zastavit Řešení o Vyjdeme z příkladu 1 o Přidáme tlačítka pro nastavení směru. Stiskem tlačítka se nastaví směr vlevo nebo vpravo. o Po stisku tlačítka START pak vozík pojede nastaveným směrem Potřebné instrukce: INR DCR EQ GT LT JMD JMC Program: Nejprve přidáme do programu ovládání motoru (příklad 1) nové proměnné: #reg byte pozice #reg bit motorp, motorl #def vpravo X0.2 #def vlevo X0.3 Význam nových proměnných je následující: vlevo, pravo spínače směru budou ovládány z panelu. motorp, motorl simulace motorů 22

Níže je pak uveden základ programu, který vyhodnocuje směr a zapíná příslušný motor vozíku. Tento kód vložce za kód ovládání motorku z příkladu 1, viz komentář na začátku ( původní kód nastaví pom_zap a pom_vyp ). Dále přidejte obsluhu levého motoru na konec (viz komentář ; totéž pro levý motor... ). P 0 ; původní kód nastaví pom_zap a pom_vyp ; ; Pokud jsou stisknuty oba směry současně, přednost má vpravo ld vpravo and vlevo ; pokud obě res vlevo ; resetuje směr vlevo, ponechá vpravo ; pokud není zapnuto, nebo není ani jeden směr, oba motory zastavit ldc pom_zap ldc vlevo anc vpravo or res motorp res motorl jmd konec ; pokud je zapnuto, zapnout motor příslušného směru... ld pom_zap and vpravo ; pokud zapnuto a směr vpravo set motorp ; zapni pravý motor a res motorl ; vypni levý ; totéž pro levý motor... konec: ; navestí od vyhodnocení central stop na začátku programu E 0 Pro automatický posun vozíku na panelu (simulaci) využijeme periodicky spouštěného procesu P6. Kód, který napíšeme do tohoto procesu se vykonává s periodou 3,2 sekundy. Mohli bychom použít také např. rychlejší proces P5, který je spouštěn každých 400 ms. V našem příkladě je pozice vozíku simulována jen číslem. Toto číslo bude zobrazeno na panelu a při pohybu vozíku vlevo se bude zmenšovat, při pohybu vpravo bude růst. Úkolem procesu P6 tedy bude inkrementovat nebo dekrementovat toto číslo, podle toho, zda je zapnut levý nebo pravý motor vozíku (tj. zda je proměnná motorl nebo motorp rovna 1). Kód procesu P6 je níže: P 6 LDC motorp ANC motorl JMD Konec6 ; nejede-li ani jeden motor LD motorp JMD roste LD pozice ; Pohyb VPRAVO EQ 0 ; nemuze za levy okraj JMD Konec6 DCR pozice JMP Konec6 roste: ; Pohyb VLEVO LD pozice GT 10 ; test praveho okraje JMD Konec6 INR pozice LD pozice Konec6: E 6 23

Program nejprve testuje, zda jede alespoň jeden motor. Pokud by byl logický součin negovaných hodnot proměnných motorl a motorp roven jedné, znamená to, že ani jeden motor nejede. Program vlastně můžeme přečíst jestliže motorp nejede a současně (AND) motorl nejede, skoč na Konec6. V opačném případě se testuje zda je spuštěn pravý motor (LD motorp následované JMD). To by znamenalo, že číslo simulující polohu vozíku má růst. Jestliže se skok JMD neprovede, předpokládáme, že jede levý motor (případ, že nejede ani jeden motor jsme totiž už na začátku ošetřili) a pozice se tedy musí snižovat. Všimněte si testů zda pozice není rovna nule 0 nebo vetší než 10 pomocí instrukcí EQ a GT. Pokud je podmínka splněna, je na vrcholu zásobníku nenulová hodnota a následující skok JMD se provede. Panel Panel pro vyzkoušení programu vytvořte podle následujícího obrázku. Otestujte program: o Přeložte a spusťte program o Poklepáním na spínač směru zvolte směr vpravo. Spínač zůstane sepnutý o Poklepejte na tlačítko Start. o Pravý motor by se měl spustit. o Obsah pozice se bude zvětšovat. Pozor, inkrementace je pomalá, hodnota se zvětší o 1 vždy po 3,2 s. 24

7. Časování akcí v programu, časovače a čítače V minulé kapitole v programu vozík jeřábu jsme viděli jednu z možností jak do programu vložit časování a to pomocí periodicky spouštěných procesů P6 nebo P5. V této části si ukážeme použití dalších časovačů a čítačů. Periodicky spouštěné procesy Umožňují provádět opakovaně určitou akci v programu s určitou, pevně danou periodou. Je to proces P5, který se provádí každých 400 ms a proces P6, který se provádí jedenkrát za 3,2 s. Ukázka použití P6 je v příkladu vozík jeřábu v předchozí kapitole. Systémové registry S13 a S20 (systémový časovač) Systémový registr S13 je soubor bitových proměnných, které mění svůj stav jednou za určitou jednotku času, viz obrázek: S13.7 S13.6 S13.5 S13.4 S13.3 S13.2 S13.1 S13.0 1 den 1 hod 10 min 1 min 10 s 1 s 500 ms 100 ms Např. bit 0 v registru S13 (S13.0) mění svou hodnotu z log. 0 na log. 1 a zpět z log. 1 na log. 0 každých 100 ms (perioda je 100 ms). V bitu S13.2 se mění hodnota každou sekundu, atd. Toho můžeme využít k časování operací v našem programu. Např. jestliže chceme provést nějakou akci každou sekundu, můžeme její provedení podmínit změnou hodnoty v S13.2. Musíme ovšem ošetřit aby program reagoval za změnu log. úrovně např. pomocí instrukcí BET nebo LET. Jednodušší je použití registru S20, kde se na příslušných bitech objeví log. 1 při náběžné (S20) nebo sestupné (S21) hraně signálu z S13. Log. 1 je zde vždy jen jednu otočku cyklu. Příklad 3 inkrementace proměnné citac jedenkrát za sekundu #reg word cislo P 0 LD %S20.2 JMD pricti JMP konec pricti: INR cislo konec: E 0 25

Čítače a časovače (TON, TOF, IMP, CTU, CTD, CNT) Impulsní časovač Impulsní časovač (instrukce IMP) se použije následovně: LD XT LD VAL IMP casovac.bit Po změně v XT z 0 na 1 se zapne časovač a dokud neuběhne nastavený čas VAL, je na vrcholu zásobníku 1. Časové jednotky se určují bitem (.bit) dle obrázku. Např. casovac.0 určuje, že VAL je zadáno v setinách sekundy; casovac.1 určuje, že VAL je v desetinách sekundy, atd. Casovac.0 (bit 0) Casovac.2 (bit 2) Použití je velmi jednoduché, ukázkový příklad je níže. 26

Příklad 1 Schodišťový vypínač Zadání Realizujte program s funkcí schodišťového spínače. Po zapnutí světla pomocí tlačítka bude světlo svítit zadanou dobu (4 sekundy) a poté automaticky zhasne. Řešení Zdrojový kód programu #reg word casovac #reg bit svetlo_1, svetlo_2, svetlo_3 #def tlacitko X0.5 #def val 4 #def sek 2 P 0 LD LD IMP WR WR WR LD RES E 0 tlacitko val casovac.sek svetlo_1 svetlo_2 svetlo_3 tlacitko tlacitko Program jen aktivuje časovač a poté zapisuje do proměnných svetlo_1 až svetlo_3 hodnotu z vrcholu zásobníku, což je po dobu aktivity časovače jednička a tedy světla svítí. Poslední dvě instrukce slouží k resetování proměnné tlacitko, která se díky tomu chová jako skutečné tlačítko a ne jako vypínač tedy po poklepání na panelu se ihned vrátí do vypnuté polohy. Definováním konstanty sek jako 2 nastavuje krok časovače na 1 sekundu, viz obr. výše. Počet kroků je zadán konstantou VAL, která je nastavena na 4. Čas je tedy 4 sekundy. Všimněte si, že jako proměnou startující časovač používáme tlačítko. Aktivací tlačítka se pak v proměnné tlačítko objeví jednička, která odstartuje časový úsek. 27

Panel Na panelu jsou tři objekty představující světla a vypínač, který je propojen s proměnnou tlačítko. Testování programu o Spusťte program o Poklepáním na spínač zapněte světla. Spínač se ihned vrátí do výchozí polohy (viz instrukce res spinac v programu) o Po 4 sekundách by měla světla zhasnout, viz LD val, kde val = 4 casovac.sek, kde sek = 2 Úkol k procvičení o Změňte dobu svitu na 0,5 s, tj. tak aby se světla vypnula 0,5 s po zapnutí. Časovač zpožděný přítah a zpožděný odpad Instrukce TON (zpožděné sepnutí) a TOF (zpožděné vypnutí) umožňují provést změnu na výstupu s určitým zpožděním po změně na vstupu. Instrukce TON Časovač TON zapne výstup s určitým zpožděním po změně na vstupu. Použití instrukce je následující: LD XT LD VAL TON casovac.bit TON na na vrcholu zásobníku udržuje nulu. Po změně v XT z 0 na 1 se zapne časovač, po uplynutí nastaveného času (VAL), je na vrchol zásobníku zapsána log. 1. Časové jednotky se určují bitem (.bit) stejně jako u časovače IMP, např. casovac.0 znamená, že 28

VAL je v setinách sekundy; casovac.1 znamená, že VAL je v desetinách sekundy, atd. Instrukce TOF Časovač TOF na vrcholu zásobníku udržuje log 1. Po změně v XT z 1 na 0 se zapne časovač, po uplynutí nastaveného času je na vrchol zásobníku zapsána 0. Tedy po vypnutí vstupu je výstup ještě nějakou dobu udržován zapnutý a po uplynutí zadaného času se vypne. Příklad 2 Manipulátor Zadání Při řízení posuvu manipulátoru je třeba zajistit, aby se pohyb nahoru uskutečnil až 0,5 s po příchodu signálu pravého koncového spínače (aby došlo ke uklidnění a zpevnění mechanizmu a nemohlo dojít k jeho vzpříčení). Řešení Zdrojový kód programu #reg word casovac #def vpravo X0.2 #def nahoru Y0.1 P 0 LD vpravo LD 50 TON casovac.0 WR nahoru E 0 Program aktivuje časovač TON změnou na vstupu vpravo, tj. signálem od koncového spínače pro pohyb vpravo. TON udržuje na vrcholu zásobníku nulu, takže výstup nahoru je také udržován ve stavu log 0. Po aktivaci spínače vpravo, tedy po změně hodnoty z 0 na 1 se rozběhne časovač. Po uplynutí času 50. 10 ms tj. 0,5 s nastaví časovač na vrcholu zásobníku log 1 a ta je pak zapsána do výstupu nahoru. Tím se manipulátor rozjede nahoru. Panel Poklepáním na objekt spínač vpravo simulujeme dojetí manipulátoru na pravý koncový spínač. Se zpožděním 0,5 s se pak zapne pohyb nahoru. 29

Jméno: vpravo Chráněná: Ne Jméno: nahoru Chráněná: Ano Úkol k procvičení o Doplňte do programu automatické vypnutí pohybu nahoru po uplynutí 3 sekund. Použijte k tomu časovač IMP. Čítače Čítače slouží pro počítání impulsů (změn) na vstupu. Ukážeme si následující instrukce: CTU Dopředný čítač CTD Zpětný čítač CNT obousměrný čítač Princip použití instrukce CTU: LD VSTUP LD RESET CTU citac Pokud se hodnota VSTUP změní z 0 na 1, zvětší se proměnná citac o 1. Pokud je RESET log. 1, čítač se vynuluje. 30

Příklad 3 Počítání výrobků Zadání Vytvořte program, který počítá výrobky vyrobené např. za směnu. Řešení Zdrojový kód programu #reg word citac #def vyrobek X0.1 #def reset X0.5 P 0 LD vyrobek LD reset CTU citac ; pro snazsi ovladani na panelu resetujeme vstupy LD vyrobek RES vyrobek LD reset RES reset E 0 Vstupem, který aktivuje čítač je vyrobek. Při změně z 0 na 1 na tomto vstupu se přičte 1 k proměnné citac Druhá část programu za poznámkou slouží pouze k usnadnění ovládání programu na panelu automaticky resetuje vstupy vyrobek a reset, takže po poklepání myší se tyto vstupy hned vrátí do výchozího stavu. Můžeme tak přidávat výrobky poklepáním myši beb nutnosti tlačítko vždy ještě dalším poklepáním vyresetovat před přidáním dalšího výrobku. Panel Poklepáním na objekt Přidat výrobek se zvětší počitadlo o 1. Tím simulujeme např. projetí dalšího výrobku přes snímač, který zajišťuje vstupy pro náš program. Všimněte si také, že tlačítka Přidat výrobek i Reset jsou automaticky resetována naším programem, viz instrukce RES vyrobek. 31

Jméno: reset Chráněná: Ne Typ: bit Jméno: vyrobek Chráněná: Ne Typ: bit Jméno: citac Chráněná: Ano Typ: bez znaménka Úkol k procvičení Upravte program tak, aby bylo možno přidávat i odebírat výrobky. Použijte k tomu obousměrný čítač (instrukci CNT). Nápověda: Čítač CNT se používá následovně: LD nahoru LD dolu LD reset CNT citac 32

8. Tabulkové úlohy Tabulkové úlohy umožňují velmi zjednodušit řešení některých úloh, např. sedmisegmentového zobrazovače. V podstatě do programu vložíme pravdivostní tabulku, místo toho abychom zadávali logickou funkci jako výraz pomocí instrukcí. Příklad definice tabulky: #table byte TB1 = 1,3,8 Místo byte může být i bit, word. Jedná se o velikost jednoho prvku tabulky. Uvedený příklad definuje tabulku, která obsahuje 3 prvky a nastavuje hodnoty těchto prvků na 1, 3 a 8. Použití tabulky v programu je následující: LD LTB WR index TB1 val Instrukce LTB vloží na vrchol zásobníku hodnotu z tabulky TB1 hodnotu na indexu index Další instrukce pak tuto hodnotu zpracuje, např. zde WR ji pak zapíše do proměnné val. Princip instrukce LTB je znázorněn i na následujícím obrázku: Jestliže bude index = 1, pak by instrukce LTB vytáhla z tabulky definované výše hodnotu 3 (ta se v tabulce nachází na indexu 1, protože indexy jsou od nuly). Příklad 1 Domek se třemi okny Zadání Realizujte program podle zadáni z kapitoly 1, ale tentokrát pomocí tabulek. Máme tedy domek se třemi okny: a, b, c, která mají plochy 2, 2 a 3 m 2. Pokud je otevřená plocha větší nebo rovna 3 m 2, má se zapnout topení. Řešení Pravdivostní tabulku zapíšeme přímo do programu - do tabulky Princip: Řádek tabulky odpovídá zadané kombinaci otevřených oken a, b,c uvažované jako binární číslo - tedy kombinace vstupů je vlastně index do tabulky. Do tabulky pak stačí vložit pouze odpovídající hodnoty výstupu (top) pro příslušný řádek tabulky. 33

Na následujícím obrázku je výpis zdrojového kódu příkladu a princip uložení hodnot z pravdivostní tabulky do tabulky v programu. Všimněte si, že v tabulce v programu používáme datový typ bit a ukládáme do ní jen hodnoty ze sloupce T (top), tj. výstupy logické funkce. Všimněte si také jakým způsobem převádíme tři nezávislé proměnné reprezentující otevřená okna a, b nebo c na celé číslo, které se použije jako index do tabulky. Proměnné jsou definovány jako bity v bajtu X0 (X0.0, X0.1 a X0.2). V program také definujeme proměnnou cislo jako bajt na adrese X0, takže proměnné a, b, c se v paměti překrývají s proměnou cislo. Když se nastaví např. a = 1, nastaví se tím vlastně také bit 0 (bit zcela vpravo) v proměnné cislo na 1. Abychom se zbavily případných nežádoucích bitů v proměnné cislo (využíváme totiž jen její tři spodní bity namapované na proměnné a,b,c), používáme AND s maskou %00000111. Panel 34

Testování programu o Přeložte program (Program Překlad) o Spusťte program o Otestujte chování programu. Měl by sepnout topení při otevření oken a současně s b nebo c, viz zadání. Úkol k procvičení Upravte program tak, aby řešil úlohu Majorita ze 3. 35

# #def... 8, 10, 14, 22, 27 #table... 33 A ANC... 14 and... 8 AND... 4, 8, 14, 18, 24, 34 Č časovač... 26 D DCR... 22 E EQ... 22 G GT... 22 I IMP... 26 INR... 22 J JMC... 22 JMD... 22 K Karnaughova mapa... 3 Kombinační logika... 3 L ld 8 LDC... 14 Logická funkce... 3 Logická proměnná... 3 Logický výraz... 3, 7 LT... 22 LTB... 33 M majorita... 12 Minimalizace... 5 Mosaic... 8, 9, 11, 19 O or 8 OR... 4, 8, 14, 18 P panel... 10, 19, 20 Pravdivostní tabulka... 3, 7 R RES... 18 RS klopný obvod... 18 S Sekvenční logika... 3, 18 SET... 18 T Tabulkové úlohy... 33 W wr 8 Z zásobník... 8, 9, 14, 18, 21, 24, 26, 27, 33 Literatura Martinásková, M.; Šmejkal, L.: PLC a Automatizace 1. Vydal BEN, Praha 2002. ISBN 80-86056-58-9. 36