TECHNICKÁ UNIVERZITA V LIBERCI Fakulta mechatroniky, inormatiky a mezioborových studií Vzorový příklad práce s analogovými I/O Učební text Miloš Hernych Liberec 2010 Materiál vznikl v rámci projektu ESF (CZ.1.07/2.2.00/07.0247) Relexe požadavků průmyslu na výuku v oblasti automatického řízení a měření, KTERÝ JE SPOLUFINANCOVÁN EVROPSKÝM SOCIÁLNÍM FONDEM A STÁTNÍM ROZPOČTEM ČESKÉ REPUBLIKY
Poděkování: Tento text vznikl za podpory projektu ESF CZ.1.07/2.2.00/07.0247 Relexe požadavků průmyslu na výuku v oblasti automatického řízení a měření. Formát zpracování originálu: titulní list barevně, další listy včetně příloh barevně. 2
Vzhledem k tomu, že většina studentů tápe při psaní programů, využívajících analogové vstupy a výstupy PLC, považuji za vhodné připomenout (bylo již rozebíráno na přednáškách ;-) ), jakým způsobem pracují. Senzory yzikálních veličin se spojitým výstupním signálem mají zpravidla elektrický výstup napěťový nebo proudový. Signál je pak možné přivádět pouze na analogový vstup PLC, který s ním umí pracovat! Tento analogový vstup je vybaven analogově-digitálním převodníkem, který aktuální hodnotu signálu zpravidla převádí na celé nezáporné číslo. Přesnost tohoto převodu je udávána v počtu platných bitů, které jsou v pracovním rozsahu převodníku ovlivňovány. Pokud tedy například převodník pracuje s 12ti bity, je schopen rozlišit imálně 2 12 4096 úrovní vstupního signálu. Naměřená úroveň vstupního signálu je předávána do registru obrazů vstupů, kde vnitřní proměnná reprezentující hodnotu signálu obsadí určitou část paměti. U PLC Tecomat by to byly u A/D převodníku s 12ti bity 2 Byte, které sice mají dohromady 16bitů, ale A/D převodník v tomto případě zapisuje změřenou hodnotu na 12 nejnižších bitů a 4 nejvyšší bity vyplní 0. Při psaní programu je tedy nutné, chceme-li s analogovým signálem pracovat, přepočíst bezrozměrnou hodnotu ukládaného obrazu vstupu zpět na hodnotu, odpovídající yzikální veličině. K tomu je možné použít vzorec [1], je však nutné si uvědomit, že výsledek je digitální, to znamená že výsledná vypočtená hodnota může na rozdíl od měřené yzikální veličiny nabývat pouze konečného počtu hodnot. Není proto vždy nutné pracovat s výsledkem jako proměnnou v plovoucí řádové čárce. Příkladem může být třeba měření teploty, u kterého ve většině případů stačí přesnost 10 1 C a je tedy možné pracovat s proměnnou typu Word například tak, že teplota 12,4 C je v programu interpretována číslem 124, teplota 50,7 C číslem 507 atd. Naopak velká čísla (hodnoty tlaku nebo síly, apod.) můžeme interpretovat číslem o jeden až několik řádů nižším bez toho, že bychom inormaci jakkoliv zkreslili například tlak 1 645 000 Pa můžeme místo proměnné typu Long (kterou bychom jinak použili) interpretovat jako číslo ormátu Word 1 645 (x 1000). Vzorec pro výpočet aktuální hodnoty yzikální veličiny z bezrozměrného čísla, interpretovaného A/D převodníkem kde k k k k ( N N ), [1] N N N nejmenší číslo, které A/D převodník může do paměti PLC uložit, N největší číslo, které A/D převodník může do paměti PLC uložit, N číslo skutečně uložené A/D převodníkem do registru PLC, 3
k hodnota měřené yzikální veličiny, při které A/D převodník ukládá do obrazu vstupu PLC hodnotu k N, hodnota měřené yzikální veličiny, při které A/D převodník ukládá do obrazu vstupu PLC hodnotu N, k skutečná hodnota měřené veličiny ve yzikálních jednotkách (teplota, tlak apod.) Také spojité aktuátory mívají napěťový nebo proudový vstup a přivedenou hodnotu signálu interpretují (kvazi)spojitou hodnotou výstupní yzikální veličiny (poloha, otáčky, rekvence apod.). Abychom je mohli řídit, musíme použít PLC s analogovým výstupem napětí nebo proudu. PLC je vybaveno D/A převodníkem, který celé nezáporné číslo uložené v registru obrazu výstupu převádí na napětí nebo proud. Výstupní signál bude nabývat konečného počtu hodnot, dle počtů platných bitů, s kterými převodník pracuje, například 8mi bitový převodník má pouze 2 8 256stavů. Proto je nutné hodnotu, kterou na výstupu aktuátoru požadujeme, přepočítat a převést na celé číslo, co nejvíce se blížící žádané hodnotě. Toto číslo ukládáme do registru obrazu výstupu. K přepočtu je možné použít např. vzorec [2], odvozený z [1]: N N N N ( k k ), [2] k k kde k nejmenší dosažitelná hodnota yzikální veličiny, ovlivňované analogovým výstupem PLC, k PLC, největší dosažitelná hodnota yzikální veličiny, ovlivňované analogovým výstupem k skutečně požadovaná hodnota výstupní yzikální veličiny, N hodnota proměnné v paměti PLC při k, N hodnota proměnné v paměti PLC při k, N hodnota proměnné v paměti PLC, kterou bude dosaženo hodnoty k. Pokud potřebujeme vyjádřit lineární závislost jedné spojité (!!!) yzikální veličiny na druhé, můžeme použít tento vzorec: k z kz kz kz ( kn kn ), [3] k k n n 4
kde k z závislá (výstupní, ovlivňovaná) yzikální veličina, k n nezávislá (vstupní) yzikální veličina. Příklady použití výše uvedených vzorců při řešení praktických úkolů: Příklad 1: K PLC je připojen teploměr s napěťovým výstupem 1 V( U tepl. ) až 5 V ( U tepl. ), při teplotě 20 C je napětí na čidlu 1 V, při teplotě 50 C je napětí na čidlu 5 V. Převodník je 12ti bitový, takže pracuje s rozlišením 2 12 4096 hodnot, při napětí 0 V ( U PLC ) bude do paměti PLC na adresu obrazu vstupu ukládat číslo 0, při napětí 10 V( U ) číslo 2 12 1 4095. PLC POZOR!! Protože výstup teploměru pracuje jen s částí vstupního rozsahu PLC, musíme před samotným výpočtem nejprve stanovit hodnotu 2 4096 N Utepl. 1 & 410 ( laicky řečeno při napětí 1 V je do U U 10 0 PLC n PLC obrazu příslušného vstupního registru PLC uloženo číslo 410) 2 4096 a N Utepl. 5 2048 (při napětí 5 V je do obrazu U U 10 0 PLC n PLC příslušného vstupního registru v PLC uloženo číslo 2048) a následně dosadit do vzorce [1]. Pokud tedy například A/D převodník uloží do obrazu vstupu hodnotu 1127, toto číslo představuje teplotu ( 20) ( 1127 410 ) 10, C 50 t 20 64. 2048 410 Příklad 2: K PLC je připojen snímač tlaku s proudovým výstupem 4 20 ma, při nulovém přetlaku protéká čidlem proud 20 ma, při přetlaku 1 MPa teče čidlem proud 4 ma. Převodník je 8mi bitový a měří proud 0-20 ma, takže pracuje s rozlišením 2 8 256 hodnot a při proudu 0 ma bude do paměti PLC na adresu obrazu vstupu ukládat číslo 0, při proudu 20 ma číslo 2 8 1 255, ovšem opět pozor čidlo pracuje pouze v rozsahu 4-20 ma, to znamená, 256 že N 4 & 51 (čidlem nemůže protékat proud menší než 4 ma a A/D převodník 20 0 tedy nemůže ani uložit do obrazu vstupu v PLC číslo menší než 51), 5
255 N 20 255. Dále je nutné si uvědomit, že k 1 MPa a k 0 MPa 20 0 - čidlo pracuje obráceně čím větší tlak, tím menší signál! Aktuální přetlak je tedy, například v případě že v registru obrazu vstupu je uloženo číslo 81, roven p p 1.10 6 Příklad 3: p U p U 6 0 1.10 255 51 ( U U ) 3,0.10 6 ( 81 51) 1.10 & 853kPa 204 7 K PLC je připojen rekvenční měnič s výstupem 0 až 200 Hz, řízený napěťovým vstupem 1 10 V. Analogový výstup PLC je osazen 8mi bitovým převodníkem a pracuje s napětím 0 5 V. Z toho nám plyne, že Při U PLC 1 V je nastavena rekvence 0 Hz, při U PLC 5V vychází rekvence. 200 0 ( ) ( 5 1) 88, 8& 255 U PLC U. Dále N 1 51 U U 10 1 5 (odpovídá napětí U PLC 1V ) a 255 N 5 5 255. Dosazením žádané rekvence do vzorce [2] dostáváme hodnotu, kterou musíme uložit do obrazu výstupního registru D/A převodníku například při požadované rekvenci 15, 5 Hz na výstupu r.měniče N N 255 51 N N a protože 88,8& dosazujeme: ( ) 51 ( 15,5 0) 86, 573 výstupní proměnná pracuje pouze v celých číslech, volíme N 87 5 bude 87 1,706 V a na rekvenčním měniči nastavená skutečná rekvence 255 U U 88,8& 0 menice menice ( U U ) ( 1,706 1) 15,689 Hz menice menice 5 1, takže na výstupu PLC. 6
Zadání ze dne 15.1.2009: Školní učebna je vytápěna a větrána pomocí jednotky Atrea RB, která je řízena PLC TC606 s přídavným modulem analogových výstupů OT-13. Výkon větracího ventilátoru je řízen podle koncentrace plynu CO 2, výkon cirkulačního ventilátoru je řízen dle dierence žádané a skutečně naměřené teploty v interiéru. Výkony ventilátorů jsou ovládány změnou rekvence napájecího napětí, generovaného rekvenčními měniči s analogovými vstupy 0-10 V, přičemž napětí 0 V odpovídá výstupní rekvence 0 Hz, napětí 10 V rekvence 50 Hz. Napište program, který bude splňovat tyto podmínky: řízení větrání: - překročí-li koncentrace CO 2 hodnotu 1000 ppm, je nastavena rekvence výstupu rekvenčního měniče větracího ventilátoru na hodnotu 10 Hz, - překročí-li koncentrace CO 2 hodnotu 2000 ppm, je nastavena rekvence výstupu rekvenčního měniče větracího ventilátoru na hodnotu 50 Hz, - mezi hodnotami koncentrace 1000 ppm a 2000 ppm je výstupní rekvence v lineární závislosti na koncentraci, - pro koncentrace >2000 ppm je výstupní rekvence 50 Hz, pro koncentrace <1000 ppm je motor vypnut (0 Hz). Řízení vytápění: - je-li dierence mezi žádanou hodnotou teploty a naměřenou hodnotou teploty v učebně kladná (v učebně je chladno), je otevřen ventil přívodu topné vody a spuštěn cirkulační ventilátor. - Je-li dierence záporná (v učebně je teplo), je ventil topné vody uzavřen a cirkulační ventilátor vypnut. - Výstupní rekvence měniče bude v lineární závislosti na dierenci teploty žádané a skutečně naměřené pro rozdíl větší nebo roven 3 C to bude 50 Hz, pro dierenci rovnu 0 rekvence 10 Hz. Použité vstupy a výstupy: %XW4 obraz analogového vstupu, na který je připojeno čidlo CO 2 s napěťovým vstupem 0 5 V, převodník je 12ti bitový, koncentraci 0 ppm CO 2 odpovídá napětí 0 V, koncentraci 5000 ppm CO 2 odpovídá napětí 5 V, závislost koncentrace napětí je lineární. 7
%XW6 obraz analogového vstupu, na kterém je připojeno čidlo teploty s proudovým výstupem 0 20 ma, převodník je 12ti bitový, teplotě 0 C odpovídá proud 0 ma, teplotě 30 C proud 20 ma, závislost teplota proud je lineární. %Y2 obraz analogového výstupu PLC, řídícího otáčky větracího ventilátoru. D/A převodník je 8mi bitový 0 10 V. %Y3 obraz analogového výstupu PLC, řídícího otáčky cirkulačního ventilátoru. D/A převodník je 8mi bitový 0 10 V. %Y0.1 obraz binárního výstupu PLC, řídícího ventil přívodu topné vody 1 ventil otevřen, 0 ventil uzavřen. Součástí programu ve vývojovém prostředí Mosaic bude i panel, na kterém budou unkční všechny vstupy a výstupy, bude možné zadání žádané teploty, proměnných %XW4 a 6, bude zobrazena koncentrace CO 2, aktuální teplota ze všech čidel i teplota průměrná, rekvence napájecího napětí obou ventilátorů a stav ventilu topné vody. Řešení: Nejprve je nutné provést důkladnou analýzu zadání. V tomto případě je jasné, že se jedná o 2 samostatné problémy, které je možné řešit nezávisle na sobě. 1. problém řízení větrání: Měřenou veličinou je v tomto případě koncentrace CO 2 ve vzduchu. Její skutečnou hodnotu ale potřebujeme v programu nejprve vypočíst, například použitím obecného vzorce [1]: kco 5000 0 5000 2 kco 2 N k CO k ( ) ( 0) 2 NCO N 2 NCO 2 N N 4095 0 4095 CO 2 CO 2 0. [4] Dále je potřeba deinovat vztah mezi koncentrací CO 2 a rekvencí větracího ventilátoru, k přepočtu můžeme použít vzorec [3]: 10 k 40 1000 50 10 ( k k ) 10 ( k 1000) 1000 ( k 1000) 10 30 k k 25 k 25 2000 1000 a následně tuto rekvenci převést na číslo, ukládané do registru obrazu výstupu, tentokrát s použitím [2]: [5] 8
N N N 255 0 50 0 ( ) 0 ( 0) req req req N req 255. [6] 50 Protože se ve vzorcích často vyskytuje dělení a počítání s velkými čísly, je nutné zvážit jaký typ proměnných bude při výpočtech použit v tomto případě je možné použít proměnné typu WORD, ale je nutné pečlivě dbát, aby nedošlo k překročení jejich.rozsahu. Program může vypadat např.takto: Nevýhodou je, že se při výpočtu ukládá mezivýsledek (rekvence) v celých číslech a tudíž závěrečný přepočet na výstupní napětí vychází se skokovými změnami. 9
Druhou možností je použití proměnných typu FLOAT, je ovšem nutné používat správné instrukce pro tento typ a umět proměnné převádět z celočíselné prezentace na loat a zpět: 10
Samozřejmě bychom mohli vynechat výpočet rekvence a vzorce [4], [5] a [6] spojit, čímž se výpočet podstatně zjednoduší (rozepisování postupu úprav je nad rámec tohoto textu): 204NCO 2 N req 30, [7] 819 je ale nutné ošetřit N < 0 a N > 255 a nebude k dispozici aktuální koncentrace CO 2, což by req req u zkoušky odporovalo zadání, nicméně vzhledem k uměleckému dojmu řešení bylo tolerování: 2. problém řízení topení: Vstupní veličinou je zde teplota v místnosti, jejíž obraz PLC ukládá na %XW6. K přepočtu na C opět s výhodou použijeme [1]: t t 30 0 30N t t ( N N ) 0 ( N 0), [8] N N 4095 0 4095 je ale nutné si uvědomit, že teplotu budeme potřebovat počítat s větší přesností než na celé stupně, takže buď použijeme proměnné typu FLOAT nebo celočíselné proměnné, ale s interpretací t 10 nebo t 100 (např.18 C 180 nebo 1800)! Aktuální teplotu t srovnáme s předvolenou hodnotou t w a podle výsledku buď vypneme přívod topné vody a zastavíme ventilátor nebo naopak přívod zapneme a nastavíme otáčky ventilátoru. Pro stanovení rekvence měniče můžeme použít vzorec: 11
t 50 10 3 0 40 3 ( t t ) 10 ( t 0) 10 t [9] t a následně stanovit hodnotu obrazu výstupu pro tuto rekvenci: N N N N 255 0 50 10 ( ) 0 ( 10) Příslušná část programu pak může vypadat třeba takto: 255 40 ( 10). [10] 12