BLSczU01-01Základní seznámení s počítačem jBBII Čas strávený s aktivitou: 2 hodiny Cíl: Po prostudování této aktivity by student měl umět
popsat základní architekturu, programových automatů a průmyslových počítačů definovat vstupní a výstupní porty včetně jejich základních charakteristik
Výklad jBotBrainII (jBBII) je typickým představitelem tzv. jednodeskových mikropočítačů (SBC SingleBoard-Computer), které se v hojné míře vyuţívají v průmyslu v oblasti automatizace a robotizace drobných výrobních celků, programovatelných automatů a CNC strojů. Jeho základní architektura odpovídá běţným srovnatelným mikropočítačům obecně nazývané programovatelné automaty, nebo mikroPLC (Programable Logic Controller).
Vstupní jednotka Vstupní jednotka je realizována šesti digitálními vstupy (Digital Input) označenými na vrchní desce symboly IN1-IN6 a šesti analogovými vstupy (AI-Analog Input), označenými AIN1-AIN6. V číslicové (digitální) technice pojem digitální vstup znamená vstup, kterého můţou nastat pouze dva stavy. Logická 1, nebo logická 0. Tyto dva stavy jsou reprezentovány změnou hodnoty napětí. V případě jBBII je logická 1 reprezentována napětím 5V, a logická nula napětím 0V. Takovéto reprezentaci logických stavů říkáme TTL logika (z anglického Transistor-Transistor-Logic). Digitální vstupy, stejně jako analogové vstupy jsou vyvedené na tří-pinových konektorech typu „NSL“. Zapojení pinů je následující:pin1 je samotný vstup, pin 2 je napětí 5V a pin 3 je GND. Interně jsou digitální vstupy připojené skrze rezistor GND (tzv. PullDown). Takto je definována logická úroveň kaţdého vstupu bez připojeného senzoru na log 0. Spojením pinu 1 s pinem 2 (tedy připojením napětí 5V na digitální vstup) dosáhneme na digitálním vstupu logickou úroveň 1. Digitální vstup můţe slouţit zároveň jako čítač, o maximální frekvenci střídání log 0 a log 1 5kHz. Analogový signál je daný spojitou funkcí spojitého času, nebo částečně spojitými funkcemi spojitého času. Tím se liší od diskrétního signálu, který je daný funkcemi definovanými pouze v diskrétních časových okamţicích a tvoří tak posloupnost funkčních hodnot [1]. Analogový vstup v praxi
BLSczU01-04
pouţíváme na připojení senzorů se spojitým výstupem. Například: potenciometr (snímání úhlu natočení). Rozsah vstupního napětí, které je jBBII schopný zpracovat je 0-5V. Proti přepětí jsou analogové vstupy chráněné Zenerovou diodou, a oproti vnějšímu rušení jsou vstupy chráněné jednoduchým RC filtrem. Analogový signál je dále převedený na číslo v A/D převodníku. A/D převodník má rozlišení 10 bitů. Tedy vstupní napětí v rozsahu 0-5V je převedeno na číslo od 0 do 1024 (210). Podle toho jaká je závislost výstupního napětí senzoru na velikosti měřené veličiny, se na softwarové úrovni přepočítá číslo 0-1024 na konkrétní hodnotu měřené veličiny (teplota, úhel, vzdálenost, tlak …). Výstupní jednotka Výstupní piny procesoru generují digitální řídící signály s napěťovou úrovní 3,3V/5V. Aby bylo moţné k procesoru připojit různé výstupní periférie, je potřebné mezi procesor a výstupní periférie umístit tzv. výstupní porty. Tyto porty mají na starosti převody napěťových úrovní, impedanční přizpůsobení a ochranu vlastních pinů procesoru. jBotBrainII má osm digitálních výstupů, vyvedených na tří-pinových konektorech typu „WWS3G“ zapojených takto: pin1 je samotný výstup, pin2 je napětí 5V, a pin3 je GND. Kaţdý výstup má moţnost generovat servopulzy pro řízení polohy RC serva. Digitální výstupy jsou na jBBII označeny jako OUT1 aţ OUT8. Maximální proud odebíraný z jednoho výstupu je 30mA. Signální vodič je u dodávaných serv ţluté barvy. Délka impulsu řídí polohu páky. Speciální výstupem jsou porty pro ovládání DC motorů. Nominální napětí motorů připojených k jBBII můţe být maximálně 15V. Na konektoru jsou výstupy pro motor označené jako M1- a M1+ pro motor „A“, a označení M2- a M2+ pro motor „B“. Maximální odběr jednoho motoru můţe být 1,3A. Řízení otáček motoru se realizuje pomocí impulzně šířkové modulace (PWM). PWM (z anglického Pulse Width Modulation – impulzně šířková modulace). Je způsob modulace analogového signálu změnou šířky impulzu. PWM je signál s konstantní frekvencí (tzv. vzorkovací frekvence), ale s proměnnou šířkou kaţdého impulzu. Šířka impulzu je závislá od proměnné velikosti napětí vzorkovacího signálu v dané periodě vzorkovací frekvence. PWM modulace se v praxi pouţívá buď na převod spojitého signálu na digitální za účelem přenosu informací (například v telekomunikacích), nebo jako velmi efektivní způsob regulace elektrického výkonu. Výhoda regulace výkonu pomocí PWM je taková, ţe regulátor je buď úplně zavřený, nebo úplně otevřený. Nevznikají ţádné tepelné ztráty způsobené úbytkem napětí na regulačním prvku (tranzistor, triak …).
Shrnutí kapitoly Vstupní jednotka-obsahuje digitální a analogové vstupy počítače. Digitální vstup můţe nabývat pouze dvou logických hodnot, log 0 odpovídá napětí 0V(L), log 1 odpovídá napětí 5V(H). Digitální vstup můţe být pouţit i jako čítač. Vstupní jednotka obsahuje i analogové porty. U jBBII analogový vstup dokáţe zpracovat rozsah od 0V do 5V (unipolárně). Skrze A/D převodník se analogový signál převede na digitální (číslicový). Klíčovou charakteristikou A/D převodníku je jeho rozlišení (u jBBII 10bit), coţ znamená, ţe A/D převodník dokáţe rozlišit 210=1024 hodnot. Výstupní jednotka-obsahuje výstupní digitální porty. Výstupní porty nabývají opět pouze dvou stavů 0V a 5V. jBBII obsahuje i dva speciální výstupní porty pro řízení DC motorů. Maximální napětí pro motory je 15V s max. proudem 1,3A. Řízení otáček motorů je realizováno skrze PWM.
Kontrolní otázky
BLSczU01-04
Co je to vstupní jednotka a k jakému účelu slouţí? Co je to výstupní jednotka a k jakému účelu slouţí? Jakých stavů můţe nabývat digitální vstup? Jak změním stav digitálního vstupu? Co je to spojitá funkce spojitého času? K čemu slouţí A/D převodník a jaká je jeho základní charakteristika? K čemu slouţí PWM při ovládání DC motorů?
Úkol k řešení 1. Spočítejte kolik hodnot je schopen rozlišit A/D převodník o bitech:8,10,12
Klíč k řešení Add 1) 28=256, 210=1024,212=4096
BLSczU01-04
BLSczU01-02 Programování počítače jBBII Čas strávený s aktivitou: 1 hodina Cíl: Po prostudování této aktivity by student měl umět
Pochopit způsob programování počítačů Definovat pojem uţivatelský program Umět sestavit algoritmus řešení jednoduché úlohy
Výklad jBotBrainII stejně jako všechny počítače, je určen především k vykonávání uţivatelského programu. Počítačový program je posloupnost instrukcí (ne nutně strojových instrukcí), které popisují realizaci dané úlohy. Počítačový program můţe být vytvořen programátorem zápisem algoritmu v libovolném programovacím jazyce. Zapsaný program můţe být v počítači prováděn interpretem nebo můţe být pomocí překladače nejprve přeloţen do strojového kódu a teprve pak přímo vykonáván mikroprocesorem. jBBII k vykonávání instrukcí, vyuţívá sluţeb interpretu programovacího jazyku Java 1.3, tedy uţivatelský program je souborem instrukcí zapsaných v programovacím jazyce (v našem konkrétním případě, v jazyce Java). Pro vytvoření programu se pouţívají tzv. vývojová programovací prostředí. Textový soubor obsahující program v jazyce Java se nazývá zdrojový soubor. Ze zdrojového souboru kompilátor vytvoří tzv. B-kód, který interpret vykonává (interpretuje) v samotném počítači. Pro jBBII lze vyuţít dvou dodávaných vývojových prostředí. První expertní, se nazývá Eclipse a slouţí k přímému zápisu zdrojových souborů v jazyce Java programátorem. Druhé vývojové prostředí jBlocks spadá do kategorie tzv. visuálních vývojových nástrojů, které se stále ve větší míře prosazují v průmyslové praxi. Zápis programu probíhá pomocí logického provázání visuálních bloků (podobně jako vytváření algoritmů pomocí vývojových grafů), ze kterých generátor kódu vytvoří zdrojový soubor v jazyce Java a kompilátor následně interpretovaný B-kód. Výsledné grafické schéma vytvořené pomocí vývojového prostředí jBlocks nazýváme programový graf.
Kontrolní otázky Co je to uţivatelský program? Co je to zdrojový soubor uţivatelského programu? Co je to algoritmus.
Úkol k řešení Vytvořte algoritmus řešení jednoduché úlohy pomocí vývojového grafu.
BLSczU01-04
BLSczU01-03 Grafické vývojové prostředí jBlocks Čas strávený s aktivitou: 2 hodiny Cíl: Po prostudování této aktivity by student měl umět
Umět vytvořit jednoduchý programový graf, zavést a spustit uţivatelský program
Výklad Jak jiţ bylo řečeno program jBlocks spadá do kategorie tzv. grafických vývojových prostředí, které se od klasických vývojových prostředí liší tím, ţe jednotlivé instrukce uţivatelského programu, programátor nepopisuje textově, ale vytváří je pomocí visuálních symbolů, které spojuje v programové grafy, v našem konkrétním případě pomocí tzv. bloků. Vytváření programů pomocí programových grafů je z hlediska programování stejný proces jako u běţného textového popisu s tím rozdílem, ţe studenta zprošťuje potřeby detailního studia syntaxe programovacího jazyka. Tím je umoţněno ihned od počátku, klást důraz výuky na vlastní logiku a principy programování mechatronických soustav. Ovládání vývojového prostředí jBlocks je popsáno v samostatné příručce. Studentská aktivita BLScz01-01 Cílem aktivity je vytvořit první jednoduchý program ţákem, nahrát tento program do paměti jBBII, spustit jej, a následně zkontrolovat výsledek programu v terminálu pomocí programu jConsole.exe. Popis programu: Program začíná blokem „komentář“, který obsahuje identifikaci programu, blok můţe obsahovat jakýkoliv text a má pouze informativní charakter. Tento blok nemusí být pevně ukotven v grafu. Za komentářem je umístěn blok „Start“. Tento blok je povinný, v grafu je moţné jej pouţít pouze jednou. Vytváří počáteční bod programu. Od tohoto místa, program sekvenčně vykonává blok za blokem. Prvním výkonným příkazem je blok „Vypiš“, tento příkaz vypíše do výstupního panelu konzole text obsaţený v textovém poli bloku. Následuje blok, který pozastaví běh programu na zvolený čas zadaný v milisekundách. Parametr bloku se zapisuje do textového pole ohraničeného kulatými závorkami. Kulaté závorky říkají, ţe parametrem příkazu je celočíselná hodnota. Dalším komentářovým blokem program končí. Po zavedení programu do jBBII se program spustí stiskem červeného tlačítka. Program na výstupní panel konzole vypíše text „Ahoj“ a 5s čeká, následně se spustí znova a celý proces se opakuje. Ačkoliv uţivatelský program neobsahuje ţádnou programovou smyčku, je z výstupu na konzolu patrné, ţe program pracuje v nekonečném cyklu, který zajišťuje vlastní firmware jBBII. U průmyslových počítačů je tato vlastnost ţádoucí a obvyklá. Studentská aktivita BLScz01-02 Program BLSczS01-02 navazuje na předchozí aktivitu. Cílem je demonstrovat vzájemné chování firmware jBBII a uţivatelského programu. V předchozím případě, program po uplynutí 5s skončil, ale firmware jBBII jej automaticky spustil znovu. V nynějším případě je nahrazen blok „Počkej“ nekonečnou smyčkou, tedy výsledkem je, ţe se program nikdy neukončí. Aby bylo patrné, ţe uţivatelský program je stále aktivní, byl do grafu přidán blok s příkazem, který rozbliká zelenou led diodu integrovanou na desce jBBII. Ačkoliv v těle nekonečné smyčky nejsou obsaţeny ţádné další BLSczU01-04
příkazy ovládající led diodu, dioda stále bliká. To je dáno tím, ţe jBBII dokáţe interpretovat tzv. blokující a neblokující funkce. Blokující funkce (příkazy) pozastaví vykonávání programu na dobu, neţ vykonají svoji úlohu (například blok Počkej), pak předají vykonávání programu následujícímu příkazu v pořadí, neblokující funkce vykonají svoji činnost souběţně (paralelně) s hlavní linií programu. Paralelní zpracování úloh zajišťuje buď systémový ovladač obsaţený v samotném firmware jBBII, nebo a to zpravidla, takzvané další programové vlákno vytvořené přímo interpretem jazyka Java. S blokujícím i neblokujícími funkcemi se v rámci programování automatizačních procesů budeme setkávat velmi často. Studentská aktivita BLScz01-03 Program navazuje na předchozí aktivity. Pouhým přesunutím bloků v grafu vzniká nová funkcionalita, jejíţ hlavní význam spočívá v demonstraci funkce programového cyklu. Stejně jak v předchozích případech, v programu za povinným blokem „Start“ je umístěn blok ovládající zelenou diodu, konkrétně střídá její zapnutí a vypnutí na základě hodnoty celočíselného parametru (200ms). Blikající led dioda informuje uţivatele jBBII o tom, ţe v paměti počítače je aktivní program. Indikace stavů pomocí diod je v automatizační praxi obvyklá záleţitost. Následuje blok nekonečné smyčky. Jedná se o hlavní programovou smyčku, do jejího těla umístíme hlavní část našeho programu. V našem konkrétním případě se jedná o blok „Vypiš“, který do hlavního panelu konsole vypíše text „Ahoj“. Tento text vypisuje v nekonečné smyčce tak dlouho, dokud nepřerušíme vykonávaný program nahráním programu nového, nebo nevypneme samotný počítač. Studentská aktivita BLScz01-04 Doposud vytvořené programy neobsahovali ţádnou vlastní logiku, slouţili pouze k demonstraci funkcí a vlastností jBBII. Nyní poprvé zahrneme do programového grafu logický rozhodovací blok. Zatím co v předchozích případech programy nereagovali na podměty okolního prostředí, nyní díky rozhodovacímu bloku, bude program pro svoji správnou funkci vyţadovat interakci s uţivatelem. Tedy na podmět uţivatele se konzolu vypíše text „Ahoj“. Pro interakci s uţivatelem vyuţijeme integrované tlačítko S2. Pro obsluhu integrovaných vstupně/výstupních funkcí jBBII slouţí záloţka „LED a tlačítka“ ve výběrovém panelu aplikace jBlocks. Zde je umístěn podmíněný blok „Jestliže je stisknuto tlačítko“. Parametrem bloku je identifikace tlačítka. Stejně jako všechny podmíněné bloky i tento blok rozděluje řízení programu do dvou větví. Větev, která se vykoná v případě vyhodnocení logické podmínky=log1 (true) (tlačítko je stisknuto) se vykonává v těle bloku, větev log=0 (tlačítko stisknuto není) předá řízení programu prvnímu bloku následujícím po podmíněném bloku.
Úkol k řešení Při provozu programu BLSczS01-04 při stisknutí tlačítka dochází vícekrát k výpisu hodnot „Ahoj“ neţ jednou? Čím je to způsobeno, vyřešte tento problém pomocí bloků, které jiţ znáte.
Klíč k řešení Testování logického rozhodovacího bloku díky nekonečné smyčce probíhá v řádech milisekund. Jedno stisknutí tlačítka program tedy vyhodnotí několikráte, tedy provede výpis na konzolu v souladu s algoritmem. Jedno z moţných řešení spočívá v umístění bloku „Počkej“ za blok „Vypiš“. Správné BLSczU01-04
nastavení parametru času přerušení, ovlivní rychlost testování logického bloku a vnese do algoritmu očekávané uţivatelské chování.
BLSczU01-04
BLSczU02-01 Booleova algebra Čas strávený s aktivitou: 2 hodiny Cíl: Po prostudování této aktivity by student měl umět definovat logickou proměnou, funkci logické proměnné popsat způsoby zadání logické funkce, výrazu Výklad Logická proměnná můţe nabývat pouze dvou základních hodnot log 1 a log 0. V programování nahrazujeme hodnotu log 1 anglickým slovem true (pravda), log 0 false (nepravda). Všeobecně lze říci, ţe v oblasti software je spíše běţné pouţívat k vyjádření logického stavu slov true/false v automatizaci a logickém řízení pouţíváme číselné vyjádření 0/1 a v elektrotechnice se ještě setkáme s označením L/H (z anglického low/high). Ačkoliv označení můţou být různá, význam a smysl zůstává stejný, ale co je nejdůleţitější, vše takto označené se řídí stejnými matematickými pravidly, které se nazývají Booleova algebra. Logická funkce, stejně jako jakákoliv matematická funkce má nezávislé proměnné (a,b,c …), a závislé proměnné, obvykle označované písmenem „y“. y=f(a,b…) Na rozdíl od běţných matematických funkcí, kde nezávislé proměnné mají popsaný svůj definiční interval v širším rozsahu hodnot např. reálná čísla, logická funkce pracuje s nezávislými proměnnými pouze v intervalu logických hodnot 0/1. Závislá proměnná, tedy stejně jako nezávislé proměnné, můţe nabývat pouze logických hodnot 0/1. Zadání logické funkce Pod pojmem „zadání logické funkce“ se skrývá činnost, kterou člověk verbálně pouţívá v běţném ţivotě prakticky stále. Logickou funkci tedy můţeme zadat slovně, coţ je jakýkoliv smysluplný text, který popisuje vztahy vstupních (tedy nezávislých veličin) a výstupních (tedy závislých veličin) vyjádřitelných pouze dvěma stavy. Příklad: Spuštění lisu je ovládáno dvěma tlačítky (spínači). Tlačítka (spínače) jsou umístěna tak, aby k jejich součastnému stlačení bylo zapotřebí pouţít jak levou, tak i pravou ruku. Tím je zajištěna bezpečnost obsluhy. Slovní zadání logické funkce:Pro spuštění motoru lisu je zapotřebí mít stlačen spínač A (levý) a zároveň i spínač B (pravý). Zatímco slovní zadání logické funkce je nejčastější způsob zadání v praxi, pro popis logického řízení procesu musíme toto zadání přepsat do formálnějšího tabulkového tvaru. Tento tvar nazýváme „zadání logické funkce tabulkou“. Budeme li se drţet našeho příkladu pak spínač A (levý) a spínač B (pravý) jsou nezávislé proměnné a impuls ke spuštění motoru označený písmenem Y je závislá proměnná. Číslo řádku tabulky 1 2 3 4 BLSczU01-04
Nezávislé proměnné Spínač A Spínač B 0 0 1 0 0 1 1 1
Závislá proměnná Ovládání motoru Y 0 0 0 1
Zpětná slovní interpretace vyobrazené tabulky můţe být následující: Řádek 1: Pokud spínač A není sepnut (log 0) a zároveň není sepnut ani spínač B (log 0), pak motor lisu stojí (log 0). Řádek 2. Pokud spínač B je sepnut (log 1) a zároveň není sepnut spínač B (log 0), pak motor lisu stojí (log 0). Řádek 3. Pokud spínač B není sepnut (log 0) a zároveň je sepnut spínač B (log 1), pak motor lisu stojí (log 0). Řádek 4. Pokud spínač A je sepnut (log 1) a zároveň je sepnut spínač B (log 1), pak spusť motor (log 1). Zadání tabulkou je klíčové tehdy, pokud řízení procesu (v našem příkladě excentrického lisu) bude realizováno pomocí logických obvodů. V případě, kdy lis bude ovládán jakoukoliv formou průmyslového počítače, je pro programátora daleko výhodnější zadání logické funkce formou vzorce. V našem případě pak vzorec vypadá takto: Y=A*B. Vzorec pouţívá tzv. logické operátory. V našem konkrétním případě se jedná o logický součin. Pokud se budeme drţet našeho příkladu, pak si představme, ţe situace se u zákazníka změnila. Lis mechanicky doplnil o bezpečnostní plexisklo, čímţ zabránil zranění rukou obsluhy a nyní poţaduje ovládání lisu změnit, kdy pro obsluhu píšící levou rukou (leváci) umoţní spustit lis levou rukou, pro obsluhu píšící pravou rukou (praváci) umoţní spustit lis pravou rukou a pro obsluhu zvyklou lis obsluhovat oběma rukama ponechat stávající ovládání. Přepis textového zadání do tabulky vypadá takto: Nezávislé proměnné Číslo řádku tabulky Spínač A Spínač B 1 0 0 2 1 0 3 0 1 4 1 1
Závislá proměnná Ovládání motoru Y 0 1 1 1
Slovní interpretace tabulky je následující: Řádek 1: Pokud spínač A není sepnut (log 0) a zároveň není sepnut ani spínač B (log 0), pak motor lisu stojí (log 0). Řádek 2,3,4 Pokud je sepnut spínač A, nebo spínač B, nebo oba součastně, pak spusť motor. Přepis tabulky do formy vzorce je: Y=A+B. Logický operátor „+“ znamená vzorec logického součtu. Základní logické funkce Logický součet Slovní vyjádření NEBO Jestliţe a NEBO b pak y Anglický název OR If a OR b Then y Matematické vyjádření + y=a+b operátoru Programové vyjádření || a || b operátoru Java Číslo řádku tabulky A b y 1 0 0 0 2 0 1 1 3 1 0 1 4 1 1 1 Logický součin Slovní vyjádření Anglický název Matematické vyjádření operátoru Programové vyjádření BLSczU01-04
A ZÁROVEŇ AND *
Jestliţe a „A ZÁROVEŇ“ b pak y If a AND b Then y y=a*b
&&
a && b
operátoru Java Číslo řádku tabulky 1 2 3 4 Negace Slovní vyjádření Anglický název Matematické vyjádření operátoru Programové vyjádření operátoru Java Číslo řádku tabulky 1 2 Shoda (ekvivalence) Slovní vyjádření Anglický název Matematické vyjádření operátoru Programové vyjádření operátoru Java Číslo řádku tabulky 1 2 3 4
A 0 0 1 1
b 0 1 0 1
OPAK NOT Pruh nad proměnou
OPAK a NOT a y=a
!
!a a 0 1
y 1 0
IDENTITA EQ EQ
Jestliţe a JE IDENTICKE S b pak y If a EQ b Then y y=a EQ b
==
a == b a 0 0 1 1
y 0 0 0 1
b 0 1 0 1
y 1 0 0 1
Shrnutí kapitoly Logická proměnná můţe nabývat pouze dvou hodnot log 1/log 0 Logická funkce popisuje závislost mezi nezávislými logickými proměnnými a výslednou závislou logickou proměnnou. Logickou funkci můţeme zadat slovně, tabulkou, vzorcem
Kontrolní otázky Jak je definována logická funkce? K čemu slouţí Boolova algebra? Muţe být logická funkce zadána slovně?
BLSczU01-04
BLSczU02-02Logická proměnná, podmíněný blok Čas strávený s aktivitou: 1 hodina Cíl: Po prostudování této aktivity by student měl umět
definovat logickou proměnnou a logickou funkci v programovém grafu
Výklad V matematických výrazech (vzorcích) definujeme proměnné (nezávislé a závislé), a přiřazujeme jim symbolická jména, v programových grafech, či přímo v programech je tomu obdobně. Na rozdíl od matematických jmen, kde jméno proměnné bývá nejčastěji jednoznakové (a,b,c,x,y…), v programování jména proměnných mívají popisnější charakter (vykonMotoruA, koncovySpinac01 …). Jména proměnných se řídí psanými (tedy vyţadovanými) a nepsanými (tedy doporučenými) pravidly. Vyžadovaná pravidla jmen proměnných Jména proměnných mohou být libovolně dlouhá. Mohou obsahovat jak písmena, tak číslice, ale musejí začínat písmenem. Zásadně pouţíváme pouze písmena anglické abecedy (tedy bez diakritiky), a bez mezer. Jména proměnných nesmí být identická s klíčovými jmény programovacího jazyka. Ve jménu proměnné rozlišujeme velká a malá písmena. Doporučená pravidla jmen proměnných Jméno proměnné vţdy začíná malým písmenem. Název proměnné tvoříme stylem camelCase. Vedle mnoha dalších pravidel pro práci s proměnnými, se kterými se postupně seznámíme, si řekneme nyní první: Před pouţitím proměnné ve výrazu, musí být proměnná nejprve inicializovaná přiřazením počáteční hodnoty. Pro interpretaci logické proměnné slouţí logické podmíněné (rozhodovací) bloky. Pomocí podmíněných bloků rozdělujeme činnost programů do dvou větví, větev, která odpovídá výsledku logické funkce log1 a větev, která odpovídá výsledku logické funkce log 0. První pouţití jednoduchého podmíněného bloku jsme si předvedli v aktivitě BLScz01-04 kdy podmíněný blok interpretoval vnitřní proměnnou S2, která odpovídá svým logickým stavem, stavu integrovaného tlačítka S2 počítače.
BLSczU01-04
Studentská aktivita BLSczS02-01 Aktivita BLSczS02-01 demonstruje pouţití logických proměnných v programovém grafu. Nejprve musíme logické proměnné definovat, to provedeme v tzv. deklarační části grafu. Deklarační část umisťujeme nejčastěji za blok „Start“, vţdy však před tělo hlavního programového cyklu. V deklarační části jsme pojmenovali tři proměnné, dvě nezávislé a jednu závislou. Při deklaraci proměnné musíme definovat také jejich počáteční hodnotu, v našem případě „false“ coţ je slovní vyjádření log 0. V těle cyklu pak přiřazujeme pomocí bloku „Ulož digitální vstup“ hodnotu ze vstupní jednotky do logické proměnné. Parametrem bloku je číslo portu. V dalším bloku máme předpis logické funkce. Výsledek předpisu se uloţí do závislé logické proměnné „spustZvukovySignal“. Stav logické proměnné testuje podmíněný blok. Pokud je stav proměnné „true“ pak se vykonají příkazy v těle bloku (tedy zavolá se blok ovládající zvukový výstup a počká se, dokud nedozní tón). Pokud je stav proměnné „false“ pak se tělo bloku nevykoná a pokračuje se ve vykonávání bloků ukotvených za podmíněným blokem.
Shrnutí kapitoly Jména proměnných v programovém grafu se řídí psanými a nepsanými pravidly. Podmíněný blok vyhodnocuje stav logické proměnné, v případě kdy logická proměnná je ve stavu „true“ vykonají se příkazy v těle bloku.
Kontrolní otázky Je příkaz „Zahraj tón“ blokující či neblokující?
Úkol k řešení Modifikujte programový graf tak, aby zvukový výstup reagoval pouze na zmáčknutí jednoho tlačítka (buď na zmáčknutí zeleného, nebo červeného, nikoliv však na zmáčknutí obou).
Klíč k řešení Místo pouţití logického součinu je nezbytné pouţít výlučný logický součet „XOR“. Tedy:spinacZeleny^^spinacCerveny
BLSczU01-04
BLSczU02-03 Kompletní podmíněný blok Čas strávený s aktivitou: 1 hodina Cíl: Po prostudování této aktivity by student měl umět
umět pouţívat kompletní podmíněný blok v programovém grafu
Výklad V předchozí aktivitě jsme se seznámili s podmíněným blokem. Blok reagoval pouze na logickou proměnnou ve stavu „true“. Pokud proměnná byla v tomto stavu, podmíněný blok vykonal příkazy v těle bloku, pokud stav proměnné byl „false“ pak jsou příkazy v těle bloku ignorovány a vykonávají se příkazy (bloky) ukotvené za podmíněným blokem. V programování je velmi často potřeba reagovat i na situaci, kdy logická proměnná je ve stavu „false“. Proto k podmíněnému bloku je moţné ukotvit i část „Jinak“, v jejímţ těle jsou obsaţeny příkazy, které se vykonají pouze tehdy, pokud stav logické proměnné je „false“. Pouţití této konstrukce je patné z aktivity BLSczS02-02.Program na stisknutí zeleného tlačítka rozsvítí zelenou led diodu2, na stisknutí červeného tlačítka rozsvítí červenou led diodu. Pokud tlačítko není stisknuté, pak diodu zhasne.
BLSczU01-04
BLSczU02-04 Numerická proměnná, numerický výraz Čas strávený s aktivitou: 1 hodiny Cíl: Po prostudování této aktivity by student měl umět
definovat numerickou (číselnou) proměnnou a numerický výraz
Výklad jBlocks vedle logických proměnných umí definovat i běţné numerické proměnné. Tyto proměnné jsou dvou základních typů, celočíselné a reálné (desetinné). Proměnné jsou definovány buď přiřazením hodnoty, nebo numerického výrazu. Datový typ Java ekvivalent Příklad Rozsah Celé číslo int -5,0,42 -2147438648-2147438647 Desetinné číslo float 0.0f, 41.57f 1,4x10-45-1,4x1045 Operace s číselnými výrazy V operacích s číselnými výrazy můţeme vyuţívat proměnné typu cele a desetinné číslo. Chceme-li převést desetinné číslo na celé, pouţijeme tzv. přetypovaní - oříznutí desetinné časti. Operace Význam + sčítání odčítání / dělení * násobení % modulo (zbytek po dělení) (int) přetypování (oříznutí desetinné části) Matematické funkce Pokud operace typu sčítání, odčítání a násobení nestačí a potřebujeme například umocnit číslo či vypočítat hodnotu sinus, pouţijeme funkci (metod) třídy Math z jazyka Java. Syntaxe číselných výrazů totiţ povoluje volání standardních Java funkcí. Všechny matematické funkce jsou uvedeny v dokumentaci k vývojovému prostředí jBlocks.
Shrnutí kapitoly jBlocks vedle logických proměnných umí pracovat i s numerickými proměnnými. Numerické proměnné jsou dvou typů, celočíselné a desetinné. Vedle základních algebraických operací můţeme pro výpočet závislé proměnné vyuţít matematických funkcí (sin, cos …).
BLSczU01-04
BLSczU02-05 Čítače Čas strávený s aktivitou: 2hodiny Cíl: Po prostudování této aktivity by student měl umět
popsat funkci čítačů v automatizaci, rozlišení signalizační hrany
Výklad V logickém řízení vedle definování logických vazeb mezi nezávislými logickými vstupy (porty DIN) a závislými logickými výstupy (porty DOUT) je potřeba definovat i číselnou proměnnou, jejíţ hodnota vyjadřuje nejčastěji počet nastalých dějů, tuto závislou proměnnou (závislou pro to, jelikoţ závisí na počtu změn logického vstupu) nazýváme čítač. Pokud hodnota čítače při změně logického stavu roste, pak mluvíme o inkrementálním (vzestupném) čítači, pokud hodnota čítače při změně logického stavu klesá, pak hovoříme o dekrementačním (sestupném) čítači. Inkrementální čítač se v praxi nejčastěji pouţívá např. k automatizovanému sčítání počtu vyrobených kusů (nebo ke sledování počtu provedených výrobních operací), dekrementační čítač obvykle slouţí jako vnitřní proměnná, k řízení procesu odpočítávajícího do konce z počtu poţadovaných operací. U jBBII rozlišujeme dva druhy čítačů. Čítače řízené hlavní programovou smyčkou, které je vhodné pouţívat při změně stavu o frekvenci v řádech desítek Hz a vysokorychlostní čítače, řízené tzv. přerušením, vhodné pro pouţití do frekvence 5kHz. Vysokorychlostní čítač vyuţijeme nejčastěji ve spojení s rotačními enkodéry. U čítačů rozlišujeme, zda se jejich stav mění se vzestupem tzv. signalizační hrany, nebo s jejím koncem. Nejlépe si tuto situaci můţeme vysvětlit na příkladu: Chceme spočítat počet stlačení tlačítka zapojeného do Din1 (digitální vstup 1). Na první pohled se jedná o prostou úlohu, nicméně podcenění tohoto zadání můţe vést k závaţným chybám. Především si je potřeba uvědomit, ţe čtení stavu digitálního vstupu neprobíhá spojitě, ale diskrétně. V nekonečném cyklu s periodou danou sloţitostí programu, testujeme stav Din1. Uţivatel stiskem tlačítka propojí spínač a ten nastaví digitální vstup na log1. Programový blok pro čtení z digitálního vstupu, zajistí zápis stavu portu do logické proměnné. Podmíněný blok poprvé vyhodnotí stav logické proměnné (true), této situaci říkáme vzestup signalizační hrany. Tělo podmíněného bloku provede inkrementaci numerické proměnné (přičte jedničku, z původní hodnoty 0 se změní jeho hodnota na 1). Cyklus zajistí opětovné testování stavu Din1. Vzhledem k tomu, ţe celý cyklus probíhá v řádech milisekund a uţivatel má stále stlačené tlačítko (nedokáţe jej uvolnit v řádech milisekund) a podmíněný blok neumí rozlišit, zda se jedná o první signalizační hranu, nebo pouze o její průběh, provede v souladu se zadáním, tělo bloku, coţ způsobí opětovnou inkrementaci čítače (z 1 na 2 …). Coţ uţ je chyba, jelikoţ po uvolnění tlačítka uţivatelem nebude stav čítače roven jedné (jak by uţivatel očekával), ale bude, zcela určitě výrazně větší. Pro správnou funkci čítače je nezbytné implementovat do algoritmu mechanizmus detekce vzestupné a sestupné hrany, tedy prvního (posledního) momentu zjištění sepnutí spínače tlačítka. BLSczU01-04
Vzestupná hrana (okamžik sepnutí spínače) Čítač řízený vzestupnou hranou přičte hodnotu 1
Sestupná hrana (okamžik vypnutí spínače) Čítač řízený sestupnou hranou přičte hodnotu 1
Log 1
Doba trvání signálu (doba trvání sepnutí spínače) Log 0 Čas t
Shrnutí kapitoly Čítače slouţí k numerickému vyjádření počtu změn stavu logické proměnné. Čítače reagují buď na vzestupnou hranu signálu (čítač řízený vzestupnou hranou), nebo sestupnou hranu (čítač řízený sestupnou hranou). Čítače jejichţ hodnota v závislosti na počtu změn roste se nazývají inkrementační, čítače jejichţ hodnota v závislosti na počtu změn klesá se nazývají dekrementační.
Kontrolní otázky Jaký je typ proměnné čítače?
BLSczU01-04
Úkol k řešení Změňte algoritmus čítačů takto: Čítač reagující na vzestupnou hranu bude dekrementační, čítač reagující na sestupnou hranu bude inkrementační.
Klíč k řešení V proměnné citacdIn1H nastaví student počáteční hodnotu např.10, v bloku signalizující vzestupnou hranu je potřeba změnit blok inkrementuj na blok dekrementuj.
BLSczU01-04
BLSczU02-06 Časovače Čas strávený s aktivitou: 2 hodiny Cíl: Po prostudování této aktivity by student měl umět
popsat základní typy časovačů definovat nové programové vlákno a tělo časovače
Výklad Do součastné doby jsme předpokládali, ţe změna závislých proměnných (digitální vstupy) vyvolá na základě logické funkce „okamţitou“ změnu u závislé proměnné (logicky řízený výstup). Slovo „okamţitou“ jsme dali do uvozovek z důvodu ne úplně přesného významu. Jelikoţ počítače vykonávají programové instrukce sekvenčně, vţdy existuje určité zpoţdění mezi změnou výstupní hodnoty oproti změně vstupní hodnoty. Dobu reakce výstupu na změnu vstupu buď povaţujeme za tak malou, ţe nehraje v řízení procesu roli, nebo s ní v průběhu návrhu systému počítáme, nebo pokud je pro nás toto zpoţdění neakceptovatelné, musíme zvolit jiný systém řízení. V některých případech je však řízení zpoţdění změny vstupní proměnné oproti závislé proměnné účelné a praktické. Tuto funkci zajišťují tzv. časovače. Časovač je tedy algoritmus, který zajistí časově řízené změny logické proměnné nezávisle na hlavní smyčce programu. Známe tři druhy časovačů: TON TOF TP Funkci časovačů si nejlépe představíme při řešení následujícího příkladu.Doplnit.
Shrnutí kapitoly
Kontrolní otázky Úkol k řešení Klíč k řešení
BLSczU01-04
BLSczU02-07 Ošetření neočekávaných stavů Čas strávený s aktivitou: 1/2 hodiny Cíl: Po prostudování této aktivity by student měl umět vysvětlit pojem watchdog v algoritmech PLC Výklad Činnost PLC lze kontrolovat externím časovačem, zvaným "watchdog" (stráţní pes). Ten se spouští buď po scanu vstupů, nebo jako souběţný proces, který hlídá stav programu, nebo řízeného procesu. Pokud jeden PLC SCAN neskončí za nastavenou dobu twatchdog (twatchdog > tscanmax), pak se ohlásí porucha a buď se automaticky přepne na záloţní systém, nebo se znovuspustí PLC, eventuálně se uvede PLC do reţimu STOP a odstaví se technologie. Řízení se vţdy navrhuje tak, aby při zastavení přecházely stroje do bezpečných stavů, a tak přerušení výroby představuje rozhodně lepší událost neţ havárii v důsledku selhání řízení.
Shrnutí kapitoly Watchdog (stráţný/hlídací pes) je program, který monitoruje hlavní programovou smyčku algoritmu PLC, nebo řízeného procesu. Pokud zaznamená neočekávanou odchylku, převede stroje do bezpečných stavů a přeruší řízení procesu s očekáváním servisního zásahu.
BLSczU01-04
BLSczU03-01 Algoritmus řízení PLC Čas strávený s aktivitou: 1 hodina Cíl: Po prostudování této aktivity by student měl umět popsat základní algoritmus PLC
Výklad U sériově řízených PLC lze identifikovat jednotný funkční algoritmus. Ten spočívá v obsluze tří základních bloků programu, vstupní jednotky, logické (programové) jednotky a výstupní jednotky. Jeden programový cyklus obsluhy všech tří jednotek Start se nazývá PLC scan, čas trvání jednoho PLC scanu je dán výrazem: Inicializace proměnných tplc=tis+tps+tos tplc tis tps
Logická jednotka
Testovací jednotka chyb procesu (watchdog)
Signalizace chyb, zastavení procesů
Vypnutí procesů
tos
Vstupní jednotka
tps
tis
tos Výstupní jednotka
Čas trvání PLC scan Čas zpracování vstupní jednotky, input scan Čas zpracování logické jednotky, program scan Čas zpracování výstupní jednotky, output scan
PLC program se vykonává periodicky. Nepřistupuje se v něm k vstupům a výstupům přímo, ale pracuje s obrazy jejich dat, uloţených ve dvou pamětech – v obraze vstupů a v obrazu výstupů. Vzniká tak periodický cyklus sloţený ze tří kroků: 1. Vzorkování vstupů - scan vstupů (input scan) načtení hodnot vstupů ze vstupních modulů do paměti zvané obraz vstupů (input image). 2. Výpočet programu - scan programu (program scan) - vykonání celého programu, výpočet nových hodnot výstupů a jejich uloţení do paměti zvané obraz výstupů (output image). 3. Zápis výstupů - scan výstupů (output scan) -
zápis obrazu výstupů do výstupních modulů. Čas tplc je klíčový pro rozhodnutí nasazení příslušného PLC k řízení procesů. Aby bylo moţné PLC pouţít musí platit ţe: frekvence načítání stavů vstupních portů, musí být minimálně dvakrát větší, než frekvence změn hodnot vstupů sledovaných modulů (senzorů).
1/tplc>=2*finput
BLSczU01-04
BLSczU03-02 Implementace algoritmu PLC v jBlocks Čas strávený s aktivitou: 1 1/2 hodiny Cíl: Po prostudování této aktivity by student měl umět Vytvořit základ programového grafu algoritmu PLC Výklad Realizace PLC algoritmu pomocí grafického vývojového prostředí jBlocks není nikterak sloţitou operací. jBlocks svojí logikou kopíruje systém vývojových grafů, které doplňuje o nezbytné programové součásti.
BLSczU01-04
Popis programového grafu V programovém grafu ihned za blokem Start, definujeme první logickou proměnnou fatalniChyba. Tato logická proměnná řídí cyklus PLC scanu a její úlohou je zaznamenat informaci o běhu celého programu. Pokud proměnná je ve stavu false (fatální chyba nenastala) pak souběţně spuštěný program (funkce) hlidaciPes, nezaznamenal v rámci PLC scanu ţádný problém. Pokud nastane fatální chyba v řízení procesu, pak se cyklus PLC scanu ukončí, provedou se operace visuálně indikující závaţnou chybu a celý program se zablokuje. Po deklaraci proměnné fatálníchyba v souladu se základní koncepcí PLC algoritmu musí vzniknout paměťový prostor, který bude obrazem stavů vstupních a výstupních portů. První funkce (vstupniLogPromenne)vytvoří obraz (input image) stavu vstupních portů, totéţ ale pro výstupní obraz (output image) vytvoří funkce vystupniLogPromenne. Vlastní obsah funkcí bude předmětem další kapitoly. Funkce ciselneParametryOvladacu bude obsahovat numerické proměnné, které budou pouţity v tzv. ovladačích výstupních zařízení, coţ bude předmětem pozdějšího výkladu. Následuje servisní funkce, která rozbliká zelenou led diodu, která nás informuje o běţném provozu programu, poté se spustí velmi důleţitá funkce pod názvem hlidacipes, funkce se spustí jako neblokující, tedy pracující souběţně a nezávisle s hlavním programem. Funkce pracuje jako samostatný proces, který na pozadí aktualizuje logickou proměnnou fatalniChyba. Následuje hlavní programová smyčka, jejíţ význam byl osvětlen jiţ v předcházejících aktivitách. V těle hlavní programové smyčky je výkonná část programu. PLC scan je řízen podmíněnou smyčkou, která je ovládaná proměnnou fatalniChyba. Logický výraz podmíněné smyčky říká „pokud nenastala fatální chyba pak, znovu proveď celý PLC scan“. V těle smyčky, kterou nazýváme PLC scan jsou tři nejdůleţitější funkce celého programu, vstupníScan (input scan), programovyScan (program scan) a vystupniScan (output scan). Obsah těchto funkcí bude předmětem následujících aktivit.
BLSczU01-04
BLSczU03-03 Implementace I/O logických proměnných Čas strávený s aktivitou: 1 hodina Cíl: Po prostudování této aktivity by student měl umět vytvořit paměťový prostor vstupních a výstupních logických proměnných Výklad Jak jiţ bylo řečeno v předešlém výkladu, pro algoritmus PLC potřebujeme vytvořit dva základní paměťové prostory, první paměťový prostor nazýváme input image (obraz vstupů), druhý nazýváme output image (obraz výstupů). S odkazem na předešlá témata lze tvrdit, ţe input image obsahuje pouze nezávislé logické proměnné, output image pak obsahuje pouze závislé logické proměnné. V jBlocks se paměťový prostor vytvoří automaticky se vznikem proměnné. Do funkce vstupniLogPromenne tedy definujeme pouze logické proměnné odpovídající vstupním portům jBBII (plus integrovaná tlačítka), do funkce vystupniLogPromenne definujeme pouze logické proměnné odpovídající výstupním portům, nebo integrovaným zařízením jBBII. Ačkoliv jména proměnných mohou být různá, pro lepší přehlednost si zvolíme následující konvenci: Pro nezávislé logické proměnné (obraz vstupů) pouţijeme prefix i (input), pro závislé logické proměnné prefix o (output), dále naváţeme identifikací druhu I/O zařízení (portu), ty jsou u obrazu vstupů následující: Symbol iD1..iD6 iA1vXX..iA6vXX iI1vXX..iInvXX iS1..iS4 Obrazy výstupů: Symbol oD1..oD8 oMa oMaS oMb oMaS oR oLg1 oLg2 oLo oLr oK1..oKn oMS1..oMS8
BLSczU01-04
Popis/význam digitální vstup č.1 aţ 6 analogový vstup č.1 aţ 6 s identifikací atributu v (value) a číselným označením I2C I/O port č.1 aţ n-tý Integrovaná tlačítka S1,S2,S3,S4 Popis/význam digitální výstup č.1..8 motorový výstup A motorový výstup A, identifikace směru otáčení motorový výstup B motorový výstup B, identifikace směru otáčení výstupní reproduktor zelená led dioda 1 zelená led dioda 2 oranţová led dioda červená led dioda krokový motor K1..n servomotor č.1..8
Příklady použití Log. proměnná iD1 oD1 iS2 oMa oMaS oR iA1v01 iA1v02 oLo
Popis proměnné směr:vstup, zařízení:digitální, port č.1 směr:výstup,zařízení:digitální,port č.1 směr:vstup, zařízení:integrované tlačítko S2 směr:výstup, zařízení: integrovaný motor.výstup A směr:výstup, zařízení: integrovaný motor.výstup A, směr otáčení motoru směr:výstup, zařízení:integrovaný reproduktor směr:vstup, zařízení:analogový port1, parametr v01 směr:vstup, zařízení:analogový port1, parametr v02 směr:výstup, zařízení: oranţová led dioda
Pozornému čtenáři zcela jistě neunikl fakt, ţe pro vstupy (analogové, nebo I2C) poskytující spojitá data (číselnou hodnotu) nikoliv logické stavy, jsme zavedli logické proměnné. Na první pohled se to můţe zdát chybou (těţko logickou proměnnou vyjádříme 1024 stavů integrovaného A/D převodníku), nicméně v praxi je naprosto běţné, ţe u senzoru poskytujícího spojitou hodnotu nás pro logické řízení zajímá pouze definovaná mnoţina informací, které logickou hodnotou vyjádřit lze. Typickým příkladem mohou být dálkoměry, ačkoliv ty sami o sobě poskytují informace o vzdálenosti zájmového objektu, pro logické řízení nám můţe stačit informace, ţe vzdálenost sledovaného objektu překročila určitý vymezený interval. Příklad: Mějme infračervený dálkoměr (připojený k jBBII do AIN1), který dokáţe měřit vzdálenost v intervalu od 20cm do 150cm. Tento dálkoměr pouţijeme jako bezpečnostní prvek přístupu k automatizované výrobní lince. Z pohledu bezpečnosti práce si nadefinujeme tři zóny: 1. Kritická, vzdálenost objektu je menší neţ 30cm, výrobní linka se zastaví. 2. Nebezpečná, vzdálenost objektu je v intervalu od 30cm do 70cm, výstupní reproduktor hlásí nebezpečí. 3. Bezpečná, vzdálenost objektu je větší neţ 70cm a menší neţ 130cm, PLC pouze vizuálně informuje přítomnosti objektu v zóně. Do obrazu vstupů si nadefinujeme tři logické proměnné dle zavedené konvence: iA1v01 pro interval 1 iA1v02 pro interval 2 iA1v03 pro interval 3 Jak je jasně patrné, z jednoho fyzického analogového vstupu jsme v obrazu vstupů, vytvořili tři logické virtuální vstupy, jejich stav, stejně tak jako všech ostatních vstupních logických proměnných naplňuje další funkce a to:vstupniscan (input scan).
BLSczU01-04
BLSczU03-04 Implementace vstupního scanu (input scan) Čas strávený s aktivitou: 1 hodina Cíl: Po prostudování této aktivity by student měl umět vytvořit funkci pro načítání stavů vstupních portů definovat pojem virtuální vstupní zařízení Výklad Funkce vstupniScan zajišťuje přenesení fyzického stavu vstupních portů do jejich obrazu v paměti (image scan). Tím dochází na straně jedné k „zdánlivému odtrţení“ stavu obrazu paměti od skutečného stavu vstupních portů, jejíţ aktualizace je dána cyklem scan PLC, na straně druhé však umoţňuje nejen transformaci číselných hodnot na logické, ale také definovat tzv. virtuální zařízení. Digitální vstupní virtuální zařízení V setu BLS jsou obsaţeny dva druhy spínačů. Jeden ve formě tzv. koncového spínače, druhý ve formě tlačítka. Pokud na spínač působíme přiměřenou silou, dojde k propojení spínacích kontaktů a tím k nastavení Log 1 na vstupním digitálním portu. Tento stav trvá pouze do té doby, dokud na spínač působí prvotní síla, pokud síla jiţ nepůsobí, u spínače díky vratné pruţině dojde k rozpojení kontaktů a tím k nastavení Log 0 na vstupním digitálním portu. K ovládání některých procesů však potřebujeme i jiná spínací zařízení a to, rozpínač a přepínač. Rozpínač pracuje opačně neţ spínač, v klidovém stavu má kontakty sepnuté (Log 1), působením síly se kontakty rozpojí (Log 0) a jsou rozpojené, dokud působí potřebná síla. Přepínač oproti spínači má tzv. aretaci, to znamená, ţe k přepnutí jeho stavu je potřeba vyvinout prvotní sílu, následně pak svůj stav sepnutý/rozpojený udrţuje bez nutnosti dalšího působení síly. Programu, který z fyzického zařízení díky algoritmu vytvoří logické zařízení jiné, říkáme ovladač virtuálního (nepravého) zařízení. Ostatní vstupní virtuální zařízení Set BLS obsahuje celou řadu senzorů, od teplotního čidla a potenciometr aţ po inteligentní senzory připojené skrze I2C sběrnici. Kombinací těchto senzorů, popřípadě implementací algoritmů můţeme z těchto senzorů vytvářet celou řadu vstupních zařízení, jejíţ stavy musíme však na svém konci vždy vyjádřit vstupní logickou proměnnou, nebo sadou vstupních logických proměnných.
BLSczU01-04
Způsob implementace funkce vstupniScan demonstruje následující příklad. Do vstupních portů (1-3) jBBII připojíme tři tlačítka, do analogového portu 1 připojíme potenciometr. Tlačítko 1 bude fungovat jako klasický spínač (obraz vstupů pak bude shodný s obrazem portu), tlačítko 2 bude fungovat jako
rozpínač (obraz vstupu bude negací vstupního portu) a tlačítko 3 má funkci přepínače (obraz vstupu bude reagovat pouze na vzestupnou hranu vstupního portu). Potenciometr přebírá funkci třípolohového přepínače, tedy musíme jeho stav popsat dvěma logickými proměnnými, jelikoţ jednou logickou proměnou můţeme vţdy popsat pouze a jedině dva stavy. V programovém grafu jsme zavedli další proměnné, jejíţ jméno začíná písmenem x, nebo xm. Prefix x symbolizuje vnitřní proměnou funkce (tedy pracujeme s ní pouze v rámci funkce ve, které je definována), prefix xm symbolizuje proměnnou, která vyjadřuje stav vstupního portu „minulého scanu“, tedy předcházejícího cyklu. Porovnáním proměnných x s proměnnými xm vţdy můţeme identifikovat změnu stavu portu, tedy buď vzestupnou hranu, trvání signálu, nebo sestupnou hranu. Logická proměnná x 1 1 0
Logická proměnná xm 0 1 1
Popis události Vzestupná hrana y=x&&!xm Trvání signálu y=x&&xm Sestupná hrana y=!x&&xm
V programovém grafu se vyskytuje logický výraz, který pouţívá operátory, které ještě nebyly ve výkladu zmíněny. Úlohou těchto operátorů je „konverze“ numerických hodnot na logické jejich vzájemným porovnáním. Operátor Popis Příklad == Shoda 125==125 > Větší neţ 125>15 < Menší neţ 15<125 != Nerovná se 15!=125 >= Větší, rovno 125>=15 <= Menší, rovno 15<=125
BLSczU01-04
BLSczU03-04 Implementace výstupního scanu (output scan) Čas strávený s aktivitou: 1 hodina Cíl: Po prostudování této aktivity by student měl umět vytvořit funkci řízení stavu výstupních portů vytvořit ovladač výstupního zařízení
Výklad Jak jiţ bylo řečeno v předešlém výkladu, PLC algoritmus obsahuje tři klíčové funkce vstupniScan, programovyScan a vystupniScan. Vstupní scan má za úkol do obrazu vstupních portů (input image) naplnit nezávislé logické proměnné aktuálními stavy vstupní jednotky, programový scan má za úkol vyřešit logické vazby mezi vstupními logickými proměnnými a výstupními logickými proměnnými (programová logika) a výsledky těchto vazeb zapsat do obrazu výstupních portů (output image). Funkce vystupniScan, pak skrze ovladače výstupních zařízení převádí logický obraz výstupních portů do konkrétních požadovaných aplikačních stavů (roztočí motor požadovaným směrem, rozsvítí led diodu atd…). Funkce vstupniScan programovyScan vystupniScan
Přístup k input image pouze zapisuje pouze čte nemá přístup
Přístup k output image nemá přístup pouze zapisuje pouze čte
Vedle klíčových paměťových prostorů (input image a output image), které se v rámci PLC cyklu mění má funkce vystupniScan přístup do dalšího izolovaného paměťového prostoru a to k číselným parametrům výstupních ovladačů. Aplikační logika umí pracovat pouze s logickými proměnnými, tedy umí říci, zda má řízený motor být spuštěn, popřípadě jakým směrem, ale neumí říci s jakým výkonem. Jednotky výkonu jsou numerické hodnoty, mající charakter parametrů, které zatím budeme povaţovat za konstanty, a přístup k nim, je ve výhradní kompetenci výstupních ovladačů zařízení. Konkrétní implementace funkce vystupniScan záleţí na řízené soustavě, ale lze ji, včetně ovladačů zařízení připravit tak, aby funkce měla obecný charakter. Ovladače výstupních zařízení tedy programujeme tak, aby jejich algoritmy byli dostatečně obecné a pouţitelné bez vazby na aktuální řízenou soustavu. Vnitřní chování algoritmů budeme upravovat pouze pomocí parametrů obsaţených ve vyhrazeném paměťovém prostoru (ciselneParametryOvladacu). Vzhledem k tomu, ţe algoritmy některých výstupních ovladačů mohou být rozsáhlé, dále nelze očekávat, ţe kaţdá řízená soustava bude obsahovat všechna výstupní zařízení, rozdělíme funkci výstupního scanu do více částí, kde jednotlivé části budou samostatné funkce konkrétního ovladače zařízení. BLSczU01-04
BLSczU03-04 Algoritmus ovladače led diod a reproduktoru Čas strávený s aktivitou: 1/2 hodina Cíl: Po prostudování této aktivity by student měl umět vytvořit funkci ovladače led diod Výklad Nejsnadněji naprogramovatelným ovladačem výstupního zařízení je ovladač integrovaných led diod. jBBII má integrovány čtyři led diody: Dioda zelená 1 červená zelená 2 oranţová
Použití v rámci PLC algoritmu vyhrazená, indikuje běh PLC algoritmu v rámci PLC algoritmu vyhrazená, indikuje havarijní stav v rámci PLC algoritmu řízená logickou proměnnou oLg2 v rámci PLC algoritmu řízená logickou proměnnou oLo
Z tabulky je patrné, ţe náš ovladač diod bude obsluhovat pouze dvě diody, zelenou 2 a oranţovou. Zbývající dvě diody (zelená 1 a červená) jsme vyhradili k indikaci stavů, které ovlivňuje přímo algoritmus PLC a nikoliv programová logika program scanu. Algoritmus ovladače je prostý. Sestává se pouze z kompletního podmíněného bloku, který reaguje na stav logických proměnných oLg2 (true-rozsviť LED/false-Zhasni LED). To samé provede pro oLo (oranţová led). Na první pohled by vyobrazený algoritmus mohl být takto pouţit, ale má jednu sice nepodstatnou, ale přeci jenom chybu. Algoritmus nebere v úvahu předchozí stav led diod, pokud dioda byla jiţ rozsvícená (oLg2-true), pak pokud v následujícím scanu nedošlo ke změně stavu oLg2 na false, pak algoritmus bude poţadovat stav stejný, ve kterém jiţ dioda je, tedy znova jí rozsvítit. Diody fungují stejně jako přepínače, jakmile jí jednou blokem zapneme, svítí dokud, nedostanou příkaz bloku „Zhasni LED“. Z hlediska funkcionality to nevadí, pouze vykonáváme příkaz, který vykonat nemusíme, ale z celkového pohledu na PLC scan si musíme uvědomit, ţe kritickým parametrem nasazení PLC počítače, je rychlost vykonávání celého PLC scanu. Čím méně budou efektivní algoritmy ve výstupním scanu, tím hůře budeme řídit celou naší soustavu. Proto, abychom byli schopni reagovat pouze na vzestupnou hranu logické proměnné oLg2 a oLo, musíme stejně jako ve funkci vstupniScan při implementaci virtuálního přepínače znát předchozí stav logické proměnné. To provedeme snadno, zavedeme si paměť stavu zařízení. Dle námi zavedených konvencí všechny proměnné, které zaznamenávají předchozí stav, označíme tyto proměnné prefixem xm, tedy xmoLg2 a xmoLo.
BLSczU01-04
Výsledný algoritmus pak vypadá takto. Na konec původního algoritmu jsme zavedli proměnné xmoLg2 a xmoLo, do nich jsme „zkopírovali“ stavy původních logických proměnných. Celý algoritmus jsme vloţili do logického bloku, který vyhodnocuje logický výraz, který porovnává aktuální stavy logických proměnných s minulými stavy. Pokud alespoň u jedné z logických proměnných nastala změna, vykoná se tělo bloku. Ačkoliv samotná podmínka nezabrání úplnému opakování zapnutí, zapnutého, nebo vypnutí vypnutého, lze pro naše účely tento algoritmus povaţovat za dostatečný. Stejný algoritmus budeme aplikovat i na řízení integrovaného reproduktoru.
BLSczU01-04
BLSczU03-05 Algoritmus ovladače motorových výstupů Čas strávený s aktivitou: 1/2 hodina Cíl: Po prostudování této aktivity by student měl umět vytvořit funkci ovladače motorových výstupů Výklad Algoritmus ovladače motorových výstupů ve své logice kopíruje jiţ zrealizovaný ovladač led diod. Na rozdíl od led diod, kde svítivost neumíme řídit, u motorů umíme řídit otáčky. Parametr, kterým ovládáme otáčky oNmA je definován v paměťovém prostoru „ciselneParametryOvladacu“, rozsah parametru je od 0% do 100%. Odpověď na otázku, proč je parametr otáček zadán procentem najdeme v následujících kapitolách. Nyní nás musí uspokojit informace, ţe při zadání parametru 25% bude motor otáčet výstupní hřídelí v rozsahu 25% svého maxima. Ihned po nastavení rychlosti otáčení v programovém grafu uvidíme známou konstrukci podmínky, kde testujeme, zda byla v proběhu aktuálního scanu, provedená změna. Pro popis motorového výstupu potřebujeme dvě logické proměnné. Proměnná oMa indikuje, zda má motor běţet (true), nebo stát (false). Pokud má motor běţet, pak druhá logická proměnná- oMas, říká jakým směrem se má výstupní hřídel otáčet, tedy buď ve směru hodinových ručiček (clockwise) – true, nebo proti směru (counterclockwise)-false.
BLSczU01-04
BLSczU03-06 Implementace program scanu Čas strávený s aktivitou: 1/2 hodina Cíl: Po prostudování této aktivity by student měl umět vytvořit funkci programScan v algoritmu PLC Výklad Doposud naše snaţení bylo spojené s realizací vstupního a výstupního scanu algoritmu. Spojovacím můstkem mezi logickými vstupy a výstupy je programový scan. Tato funkce vytváří vlastní logiku funkce celého PLC cyklu a bez ní by PLC algoritmus postrádal smysl. Ačkoliv funkce programovyScan je z hlediska sloţitosti algoritmu ta nejsnadnější, z pohledu celého řízení systému klíčová. Zde tvoříme logiku chování celé řízené soustavy. S jistou dávkou zjednodušení lze tvrdit, ţe pod pojmem „programování PLC“ rozumíme právě zadání logických vazeb vstupů s logickými výstupy pomocí logických funkcí. Způsobů jak zadat logickou funkci do PLC je celá řada, z těch nejdůleţitějších si uveďme: Žebříčkové diagramy Ţebříčkové programy (ladder programs), označované často zkratkou RLL, (Relay Ladder Logic), patří k nejstarším programovacím nástrojům pro logické řízení. Jejich dnešní tvar definuje mezinárodní norma IEC 1131-3. Tvoří náhradu za reléové logiky, pouţívané v automatizační technice před nástupem PLC. Skládají se z několika po sobě jdoucích příček, které lze povaţovat za přímé analogie reléových obvodů. Kaţdá příčka má dvě části, popis podmínky a výstup, viz. následující obrázek [2].
Pokud sepne relé AR a není sepnuté relé BR, pak sepne i relé QR. V příčce ţebříčkovém diagramu odpovídají popsané operaci test bitů A a B (výpočet podmínky), za nímţ následuje nastavení bitu Q v závislosti na podmínce. Je-li bit A v 1 a bit B v 0, potom se nastaví bit Q do 1, jinak bude na mít hodnotu 0. Logické diagramy Logické diagramy se odliší od ţebříčkových diagramů uţitím jiného výrazového prostředku, formy blízké logickým schématům. Podmínky se vytvářejí logickým ND a OR, příslušné negace bitů se vyznačují, shodně s logickými schématy, kolečky na vstupech. Schéma se skládají z dílčích logických sítí (networks).
BLSczU01-04
Vedle ţebříčkových a logických diagramů existují moţnosti zadání logické funkce například formou zápisu programu v asembleru, či ve vyšším programovacím jazyce. Lze říci, ţe způsob programování PLC je závislý na konkrétním výrobci a dokonce i na konkrétním modelu stejného výrobce. U jBBII budeme zadávat vztahy mezi logickými vstupy a logickými výstupy formou zápisu logického výrazu v syntaxi logických výrazů jazyku Java. Tedy budeme pouţívat symbolů logické algebry: Symbol && || ^^ !
BLSczU01-04
Funkce logický součin (AND) logický součet (OR) výlučný logický součet (XOR) negace
BLSczU04-01 Stavba laboratorní sestavy BLSbase Čas strávený s aktivitou: 3hodiny Cíl: Po prostudování této aktivity by student měl umět sestavit laboratorní výukovou sestavu Výklad Pro další postup výuky je potřeba, sestavit základní laboratorní výukovou sestavu. Tato sestava se člení na řídící panel, řízený panel a senzorický panel. Řídící panel obsahuje samotný jBBII počítač a ovládací prvky panelu, tedy tři spínací tlačítka a potenciometr. Pomocí řídícího panelu budeme ovládat řízený panel a načítat hodnoty senzorů
umístěných v panelu senzorů. Řízený panel obsahuje akční členy, tedy DC motor, krokový motor a RC servomotor. Zpětné vazby realizují teplotní čidla připojená k DC motoru a ke krokovému motoru, sestava rotačního enkoderu, ultrazvukového dálkoměru a koncový spínač. Senzorický panel obsahuje senzor tlaku, RGB senzor, senzor osvětlení a řadič krokových motorů. Kompletní 3D model sestavy je moţné shlédnout v souboru BLSbase.skp.
BLSczU01-04
Stavba řídícího panelu
Krok 1 Na plastovou desku 1642 připevněte pomocí šroubů 1515 M4x8 spojovací úchyty 1101 2x2_0_8. Na desku 1104 11x5_0_8 připevněte pomocí šroubů 1516 M4x12 tlačítka SD02 dle obrázku. Sestavu tlačítek upevněte na základní desku 1642 za pomoci šroubů 1517 M4x16 a vymezovacích staváčků 1401. Krok 2 Na plastovou desku 1642 připevněte pomocí šroubů ME0006 M4x20 potenciometr SA01, na konec počítač jBBII pomocí šroubů 1516 M4x12. Montáţí počítače je řídící panel dokončen.
BLSczU01-04
Stavba řízeného panelu
Krok 1 Sestavení skupiny servomotoru
Na desku ME5010 pomocí čtyř šroubů ME0021 M2_5x10 zabudujte servomotor ME1401. Na hřídel servomotoru nasaďte páku ME2205. Páku zatím k hřídeli nepřipevňujte šroubem. Na základní desku 1642 upevněte čtyři závitové tyče 1372 M4x44, na spodní straně desky, našroubujte na tyče matice M4. Na tyče navlečte staváček 1401 a 1403. Na takto připravenou sestavu připevněte sestavenou desku ME5010 se servomotorem. Vrchní část závitových tyčí zakončete dvěma matkami M4.
BLSczU01-04
Krok 2 Sestavení skupiny DC motoru
Na základní desku připevněte pomocí dvou šroubů 1515 M4x8 díl 1111 U1x5x5x1_0_8. Dbejte na správné umístění, odpočítáním perforace od pravého horního rohu základní desky. Vloţte motor 1496 do motorové klece 1495. Takto vytvořenou soustavu připevněte do dílu 1111 U1x5x5x1_0_8 pomocí dvou šroubů 1515 M4x8. Krok 3 Sestavení skupiny senzorů
Na díl ME5032 připevněte pomocí ME0021 M2,5x10 šroubů koncový spínač. Posléze podsestavu pomocí šroubů 1514 M4x6 připevněte na profil 1111 U1x5x5x1. Senzor SD01 pomocí šroubů 1516 M4x12 připevněte na jiţ vytvořenou podsestavu. Nyní celou sestavu připevněte na základní desku pomocí dvou šroubů 1515 M4x8.
BLSczU01-04
Krok 4 Sestavení skupiny krokového motoru
Díl ME5026 klece krokového motoru připevněte k základní desce pomocí dvou šroubů 1515 M4x8, vlastní krokový motor ME1403 připevněte pomocí čtyř šroubů ME0023 M3x6. Krok 5 Sestavení skupiny ultrazvukového dálkoměru Na pásek 1004 5_0_8 připevněte pomocí dvou šroubů 1514 M4x6, 2xdíl 1253 L1x2_0_8. Vlastní ultrazvukový senzor připevněte pomocí dvou šroubů 1517 M4x16. Plastový staváček 1402 pouţijte jako vymezovací krouţek.
Krok 6 Seřízení pozice hřídele servomotoru a finální montáž dálkoměru Před finální montáţí kruhové páky serva ME2205 je nezbytné nastavit hřídel serva do tzv. středové polohy. To provedeme pomocí jednoduchého programu. Nejprve připojte servomotor do portu OUT1 (žlutý vodič směřuje ke středu jBBII), poté spusťte jBBII. Do jBBII zaveďte program setServo. Po spuštění programu, jBBII nastaví hřídel servomotoru do středové polohy (podélné osy serva). Nyní pomocí dvou šroubů 1514 M4x6 připevníme sestavu dálkoměru ke kruhové páce serva. Kruhovou páku nasadíme na hřídel tak, aby tělo senzoru bylo kolmé k podélné ose servomotoru, páku samořezným šroubem zajistíme. Nyní jiţ můţeme jBBII vypnout a kabel servomotoru odpojit. Tím je řízený panel dokončen.
BLSczU01-04
Stavba senzorického panelu
Senzory SA02, SI02, SI04 a modul M03 připevněte pomocí dvou šroubů 1516 M4x12 v rozích k základní desce 1642. Tím je senzorický panel dokončen. Finální montáž panelů Pomocí osmi šroubů 1515 M4x8 spojíte panely v ucelenou sestavu. Tím je laboratorní sestava BLSbase po mechanické stránce dokončena. Zapojení panelů Nyní zapojíme jednotlivé prvky laboratorní sestavy k počítači jBBII takto: Označení Označení Popis zařízení portu senzoru/modulu jBBII IN1 SD02 Zelené tlačítko 1 IN2 SD02 Červené tlačítko IN3 SD02 Zelené tlačítko 2 AIN1 SA01 Potenciometr IN4 SD01 Optická brána IN5 Koncový spínač OUT1 Servomotor MA DC motor I2C MI03A Řadič krokového motoru I2C SI04 RGB senzor I2C SI02 Senzor osvětlení AIN2 SA02 Senzor atmosférického tlaku I2C SI03 Ultrazvukový dálkoměr
BLSczU01-04
BLSczU04-02 Ovládání DC motoru pomocí jEasyPLC algoritmu Čas strávený s aktivitou: 1 hodina Cíl: Po prostudování této aktivity by student měl umět ovládat akční člen pomocí algoritmu logického řízení Výklad Pro demonstraci ovládání stejnosměrného motoru pouţijeme příklad z aktivity BLSczU02-01, kdy pomocí dvou spínačů ovládáme pohon lisu. Slovní zadání logické funkce pro ovládání mechanizmu je: Po dobu sepnutí dvou spínačů se spustí motor mechanizmu ve směru hodinových ručiček s výkonem 25%. Pro řešení úloh z oblasti logického řízení budeme pouţívat vţdy stejný postup, členěný do následujících kroků: Krok 1 Identifikace vstupních proměnných Krok 2 Identifikace výstupních proměnných Krok 3 Spojení vnitřních proměnných se vstupními/výstupními porty jBBII a jejich fyzickými/virtuálními zařízeními Krok 4 Sestavení pravdivostních tabulek a logických funkcí Krok 5 Modifikace funkce vstupniLogpromenne Krok 6 Modifikace funkce vstupniScan Krok 7 Modifikace funkce vystupniLogpromenne Krok 8 Modifikace funkce ciselneParametryOvladacu Krok 9 Modifikace funkce programScan Krok 10 Modifikace funkce vystupniScan Krok 11 Modifikace funkce hlidaciPes Krok 11 Test řízené soustavy Pro řešení této úlohy pouţijeme algoritmus jEasyPLC a laboratorní sestavu BLSbasic. Krok 1 Identifikace vstupních proměnných Ze zadání je patrné, ţe program bude mít pouze dvě vstupní nezávislé logické proměnné popisující stav, tlačítka 1 a tlačítka 2. Krok 2 Identifikace výstupních proměnných Pro řízení soustavy budeme potřebovat pouze jednu závislou logickou proměnnou, ovládající výstupní motorový port, dále budeme potřebovat logickou proměnnou, která popíše směr otáčení hřídele motoru a numerickou proměnnou, která bude obsahovat poţadovaný výkon motoru. Krok 3 Spojení vnitřních proměnných se vstupními/výstupními porty jBBII a jejich fyzickými/virtuálními zařízeními Směr Zařízení Port na jBBII Logická proměnná vstupní zelené tlačítko 1 IN1 iD1 vstupní zelené tlačítko 2 IN3 iD3 výstupní DC motor motorový výstup A oMa výstupní DC motor, směr otáčení motorový výstup A oMaS
BLSczU01-04
Pro ovladač motoru budeme potřebovat numerickou proměnnou oNmA, do které zadáme poţadovaný výkon motoru. Krok 4 Sestavení pravdivostních tabulek a logických funkcí iD1 (zelené tlačítko 1) IN1 iD3 (zelené tlačítko 2) IN3 oMa (motorový výstup A) 0 0 0 1 0 0 0 1 0 1 1 1 Z tabulky je patrné, ţe logická funkce popisující spuštění motorového výstupu A je logickým součinem proměnných iD1 a iD3: oMa=iD1&&iD3 Krok 5,6 Modifikace funkce vstupniScan a vstupniLogpromenne V paměťovém prostoru nadefinujeme dvě vstupní logické proměnné iD1 a iD3.
Ve funkci vstupniScan, načteme stav digitálních vstupů do proměnných iD1 a iD3.
Krok 7,8,9 Modifikace funkce vystupniLogpromenne, ciselneParametryOvladacu, programScan Pro vládání motorového výstupu A, zaloţíme ve výstupním paměťovém prostoru proměnné oMa true-motor je spuštěn, false-motor stojí) a oMaS (true-hřídel motoru se otáčí ve směru hodinových ručiček, false- hřídel motoru se otáčí v protisměru hodinových ručiček). Ovladač motorového výstupu vyţaduje numerickou proměnnou oNmA obsahující poţadovaný výkon motoru.
V programovém scanu zadáme vlastní logickou funkci, závislá logická proměnná oMa, nezávislé logické proměnné iD1 a iD3. Operátor && je jejich logickým součinem. oMaS obsahuje směr otáčení hřídele motoru. V tomto případě vystupuje v roli konstanty.
BLSczU01-04
Krok 10,11 Modifikace funkce vystupniScan, hlidaciPes Výstupní scan volá pouze jeden ovladač výstupního zařízení a motorový výstup realizovaný dříve naprogramované funkci ovladacMotoru. Logická proměnná fatalniChyba v našem příkladě vystupuje v roli konstanty. Program tedy nebude reagovat na havarijní stavy.
Krok 11 Test řízené soustavy Nyní můţeme modifikovaný program jEasyPLC nahrát do paměti jBBII a spustit. Pokud jsou součastně stisknuta obě zelená tlačítka roztočí se hřídel motoru. Po uvolnění tlačítek motor se zastaví. Program pracuje pak v souladu se zadáním.
Úkol k řešení Program modifikujte tak, aby řízený motor reagoval na stlačení buď na stlačení tlačítka 1, nebo stlačení tlačítka 2, nikoliv však na součastné stlačení obou tlačítek.
Klíč k řešení Ve funkci programScan zmodifikujte logickou funkci oMa=iD1&&iD3 z logického součinu na výlučný logický součet (XOR). Výsledný tvar funkce je: oMa=iD1^^iD3
BLSczU01-04
BLSczU04-03 Ovládání DC motoru pomocí jEasyPLC algoritmu Čas strávený s aktivitou: 1 hodina Cíl: Po prostudování této aktivity by student měl umět vytvořit třípolohový přepínač ze senzoru potenciometru Výklad V automatizační praxi se velmi často setkáváme s úlohou, kdy je ţádoucí, řízení směru otáčení výstupní hřídele motoru pomocí třípolohového přepínače. Pro tento účel se s výhodou dá pouţít senzor potenciometru, kde můţeme dráhu otáčení hmatníku rozdělit tří zón: Ţlutá zóna Červená zóna Zelená zóna
<0-45>% výstupní hřídel se otáčí vlevo (45-55)% motor stojí <55-100>% výstupní hřídel se otáčí vpravo
Krok 1 Identifikace vstupních proměnných Senzor potenciometru poskytuje spojitou hodnotu, kterou pomocí knihovny senzorů přepočítáváme na procentní vyjádření, tedy vstupní hodnota se pohybuje v intervalu <0,100>. Tuto vstupní hodnotu je moţné popsat jednou logickou proměnnou pouze tehdy, pokud by zadání úlohy vyţadovalo reakci například na mezní stavy, tedy 0 a 100, v našem případě však poţadujeme identifikaci tří stavů, tedy musíme pouţít dvě logické proměnné. Jedna logická proměnná bude popisovat poţadovaný směr otáčení výstupní hřídele motoru, druhá poţadavek na jeho zastavení. Vzhledem k tomu, ţe potenciometr není třípolohový přepínač, pak pro popis spojité hodnoty a její převedení na hodnotu logickou budeme muset vytvořit ovladač vstupního zařízení. Krok 2 Identifikace výstupních proměnných Ze zadání je patrné, ţe budeme řídit pouze jedno výstupní zařízení a to, DC motor, který popisujeme dvěma logickými závislými proměnnými, oMa-udává, zda se hřídel motoru má otáčet, oMaS-udává poţadovaný směr otáčení výstupní hřídele. Krok 3 Spojení vnitřních proměnných se vstupními/výstupními porty jBBII a jejich fyzickými/virtuálními zařízeními Směr Zařízení Port na jBBII Logická proměnná vstupní potenciometr AIN1 iA1v01 vstupní potenciometr AIN1 iA1v02 výstupní DC motor motorový výstup A oMa výstupní DC motor, směr otáčení motorový výstup A oMaS Krok 4 Sestavení pravdivostních tabulek a logických funkcí iA1v01 (potenciometr) AIN1 oMa (motorový výstup A) (45,55)-1 0 <0,45>,<55,100>-0 1 iA1v02 (potenciometr) AIN1 <55,100>-1 <0, 55)-0 BLSczU01-04
oMaS (motorový výstup A) 1 0
oMa=!iA1v01 oMaS=iA1v02 Krok 5,6 Modifikace funkce vstupniLogpromenne , vstupniScan V paměťovém prostoru nadefinujeme dvě logické proměnné iA1v01 a iA1v02. Tyto proměnné popisují pozici hmatníku potenciometru.
Vstupní scan načte do vnitřní proměnné xiA1 hodnotu analogového vstupu a pomocí logických výrazů jí převede na stavy vstupních logických proměnných.
Krok 7,8 Modifikace funkce vystupniLogpromenne, ciselneParametryOvladacu Pro vládání motorového výstupu A, zaloţíme ve výstupním paměťovém prostoru proměnné oMa (true-motor je spuštěn, false-motor stojí) a oMaS (truehřídel motoru se otáčí ve směru hodinových ručiček, false- hřídel motoru se otáčí v protisměru hodinových ručiček). Proměnné pro motorový výstup B jsou definovány, jelikoţ ovladač motorového výstupu obsluhuje i výstup B. Ovladač motorového výstupu vyţaduje numerickou proměnnou oNmA a oNmB obsahující poţadovaný výkon motoru.
Krok 9,10 Modifikace funkce programScan, vystupniScan V programovém scanu zadáme vlastní logickou funkci, závislá logická proměnná oMa, nezávislá logická proměnná iA1v01. Operátor „!“ je její negací. oMaS obsahuje směr otáčení hřídele motoru v přímé závislosti na hodnotě logické proměnné iA1v02. Ovládáme pouze jedno výstupní zařízení, ve funkci vystupniScan budeme volat pouze jediný ovladač.
BLSczU01-04
Krok 11 Modifikace funkce hlidaciPes Logická proměnná fatalniChyba v našem příkladě vystupuje v roli konstanty. Program tedy nebude reagovat na havarijní stavy.
Krok 11 Test řízené soustavy Nyní můţeme modifikovaný program jEasyPLC nahrát do paměti jBBII a spustit. Pokud hmatník potenciometru je ve středu své dráhy motor stojí, v případě otočení hmatníku vpravo, hřídel motoru se otáčí ve směru hodinových ručiček, v případě otočení hmatníku vlevo, hřídel motoru se otáčí v protisměru hodinových ručiček.
BLSczU01-04
BLSczU04-04 Parkovací asistent Čas strávený s aktivitou: 1 hodina Cíl: Po prostudování této aktivity by student měl umět pomocí ultrazvukového dálkoměru vytvořit algoritmus parkovacího asistenta Výklad
BLSczU01-04