TECHNICKÁ UNIVERZITA V LIBERCI Fakulta mechatroniky, informatiky 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) Reflexe 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
Vzorový příklad práce s analogovými I/O
Poděkování: Tento text vznikl za podpory projektu ESF CZ.1.07/2.2.00/07.0247 Reflexe 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
Vzorový příklad práce s analogovými I/O
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 fyziká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 maximálně
212 = 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í fyziká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é fyziká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
1 °C a je tedy možné pracovat 10
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 informaci 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 formátu Word 1 645 (x 1000). Vzorec pro výpočet aktuální hodnoty fyzikální veličiny z bezrozměrného čísla, interpretovaného A/D převodníkem
k = k min +
k max − k min (N − N min ) , N max − N min
[1]
kde
N min – nejmenší číslo, které A/D převodník může do paměti PLC uložit, N max – 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
Vzorový příklad práce s analogovými I/O
k min – hodnota měřené fyzikální veličiny, při které A/D převodník ukládá do obrazu vstupu PLC hodnotu N min , k max – hodnota měřené fyzikální veličiny, při které A/D převodník ukládá do obrazu vstupu PLC hodnotu N max , k – skutečná hodnota měřené veličiny ve fyziká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í fyzikální veličiny (poloha, otáčky, frekvence 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 28 = 256 stavů. 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 min +
N max − N min (k − k min ) , k max − k min
[2]
kde
k min – nejmenší dosažitelná hodnota fyzikální veličiny, ovlivňované analogovým výstupem PLC, k max – největší dosažitelná hodnota fyzikální veličiny, ovlivňované analogovým výstupem
PLC, k – skutečně požadovaná hodnota výstupní fyzikální veličiny,
N min – hodnota proměnné v paměti PLC při k min , N max – hodnota proměnné v paměti PLC při k max , 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é (!!!) fyzikální veličiny na druhé, můžeme použít tento vzorec: k z = k z min +
k z max − k z min (kn − kn min ) , kn max − kn min
[3]
4
Vzorový příklad práce s analogovými I/O
kde
k z – závislá (výstupní, ovlivňovaná) fyzikální veličina, kn – nezávislá (vstupní) fyziká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. min ) až 5 V ( U tepl. max ), 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 212 = 4096 hodnot, při napětí 0 V ( U PLC min ) bude do paměti PLC na adresu obrazu vstupu ukládat číslo 0, při napětí 10 V( U PLC max ) číslo 212 − 1 = 4095 . 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 N min
2n 4096 = U tepl. min = 1 =& 410 („laicky“ řečeno – při napětí 1 V je do U PLC max − U PLC min 10 − 0 příslušného
obrazu a N max =
vstupního
registru
PLC
uloženo
číslo
410)
2n 4096 U tepl. max = 5 = 2048 (při napětí 5 V je do obrazu U PLC max − U PLC min 10 − 0
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 t = −20 +
50 − (− 20 ) (1127 − 410) = 10,64 °C . 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 28 = 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 28 − 1 = 255 , ovšem opět pozor – čidlo pracuje pouze v rozsahu 4-20 mA, to znamená, že N min = tedy
256 4 =& 51 (čidlem nemůže protékat proud menší než 4 mA a A/D převodník 20 − 0
nemůže
ani
uložit
do
obrazu
vstupu
v PLC
číslo
menší
než
51),
5
Vzorový příklad práce s analogovými I/O
N max =
255 20 = 255 . Dále je nutné si uvědomit, že k min = 1 MPa a k max = 0 MPa - čidlo 20 − 0
pracuje „obráceně“ – čím větší tlak, tím menší signál! Aktuální přetlak je tedy, například v případě
p = pmin +
že
v registru
obrazu
vstupu
je
pmax − pmin (U − U min ) = U max − U min
7 0 − 1.10 6 = 1.10 + (81 − 51) = 1.106 − 3,0.10 =& 853kPa 255 − 51 204
uloženo
číslo
81,
roven
.
6
Příklad 3: K PLC je připojen frekvenč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 min = 1 V je nastavena frekvence f min = 0 Hz , při
U PLC max = 5 V vychází frekvence
f max =
f max − f min (U PLC max − U min ) = 200 − 0 (5 − 1) = 88,8& . U max − U min 10 − 1
(odpovídá napětí U PLC min = 1 V ) a N max =
Dále
N min =
255 1 = 51 5
255 5 = 255 . Dosazením žádané frekvence do 5
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é frekvenci dosazujeme: N = N min +
f = 15,5 Hz na výstupu fr.měniče
⋅ N max − N min ( f − f min ) = 51 + 255 −&51 (15,5 − 0) = 86,573 a protože f max − f min 88,8
výstupní proměnná pracuje pouze v celých číslech, volíme N = 87 , takže na výstupu PLC bude 87
5 = 1,706 V a na frekvenčním měniči nastavená skutečná frekvence 255
f = (U − U min )
f menice max − f menice min 88,8& − 0 = (1,706 − 1) = 15,689 Hz . U menice max − U menice min 5 −1
6
Vzorový příklad práce s analogovými I/O
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 CO2, výkon cirkulačního ventilátoru je řízen dle diference žádané a skutečně naměřené teploty v interiéru. Výkony ventilátorů jsou ovládány změnou frekvence napájecího napětí, generovaného frekvenčními měniči s analogovými vstupy 0-10 V, přičemž napětí 0 V odpovídá výstupní frekvence 0 Hz, napětí 10 V frekvence 50 Hz. Napište program, který bude splňovat tyto podmínky: řízení větrání: -
překročí-li koncentrace CO2 hodnotu 1000 ppm, je nastavena frekvence výstupu frekvenčního měniče větracího ventilátoru na hodnotu 10 Hz,
-
překročí-li koncentrace CO2 hodnotu 2000 ppm, je nastavena frekvence výstupu frekvenč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í frekvence v lineární závislosti na koncentraci,
-
pro koncentrace >2000 ppm je výstupní frekvence 50 Hz, pro koncentrace <1000 ppm je motor vypnut (0 Hz).
Řízení vytápění: -
je-li diference 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 diference záporná (v učebně je teplo), je ventil topné vody uzavřen a cirkulační ventilátor vypnut.
-
Výstupní frekvence měniče bude v lineární závislosti na diferenci teploty žádané a skutečně naměřené – pro rozdíl větší nebo roven 3 °C to bude 50 Hz, pro diferenci rovnu 0 frekvence 10 Hz.
Použité vstupy a výstupy: %XW4 – obraz analogového vstupu, na který je připojeno čidlo CO2 s napěťovým vstupem 0 – 5 V, převodník je 12ti bitový, koncentraci 0 ppm CO2 odpovídá napětí 0 V, koncentraci 5000 ppm CO2 odpovídá napětí 5 V, závislost koncentrace – napětí je lineární.
7
Vzorový příklad práce s analogovými I/O
%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 funkční všechny vstupy a výstupy, bude možné zadání žádané teploty, proměnných %XW4 a 6, bude zobrazena koncentrace CO2, aktuální teplota ze všech čidel i teplota průměrná, frekvence 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 CO2 ve vzduchu. Její skutečnou hodnotu ale potřebujeme v programu nejprve vypočíst, například použitím obecného vzorce [1]:
kCO2 = kCO2 min +
kCO2 max − kCO2 min N CO2 max − N CO2 min
(N
CO2
)
− N CO2 min = 0 +
5000 N CO2 5000 − 0 N CO2 − 0 = . 4095 − 0 4095
(
)
[4]
Dále je potřeba definovat vztah mezi koncentrací CO2 a frekvencí větracího ventilátoru, k přepočtu můžeme použít vzorec [3]: f = f min + = 10 +
f max − f min 50 − 10 kCO2 − kCO2 min = 10 + kCO2 − 1000 = kCO2 max − kCO2 min 2000 − 1000
(
(
)
40 kCO2 − 1000 = 10 + 1000
)
kCO2 − 1000 25
(
=
kCO2 25
)
[5]
− 30
a následně tuto frekvenci převést na číslo, ukládané do registru obrazu výstupu, tentokrát s použitím [2]:
8
Vzorový příklad práce s analogovými I/O
N freq = N freq min +
N freq max − N freq min f max − f min
(f
− f min ) = 0 +
255 − 0 ( f − 0) = 255 f . 50 − 0 50
[6]
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 max.rozsahu. Program může vypadat např.takto:
Nevýhodou je, že se při výpočtu ukládá mezivýsledek (frekvence) 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
Vzorový příklad práce s analogovými I/O
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 float a zpět:
10
Vzorový příklad práce s analogovými I/O
Samozřejmě bychom mohli vynechat výpočet frekvence a vzorce [4], [5] a [6] spojit, čímž se výpočet podstatně zjednoduší (rozepisování postupu úprav je nad rámec tohoto textu): N freq =
204 N CO2 min 819
− 30 ,
[7]
je ale nutné ošetřit N freq < 0 a N freq > 255 a nebude k dispozici aktuální koncentrace CO2, což by 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 min +
t max − t min (N − N min ) = 0 + 30 − 0 ( N − 0) = 30 N , N max − N min 4095 − 0 4095
[8]
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 tw 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í frekvence měniče můžeme použít vzorec:
11
Vzorový příklad práce s analogovými I/O
f = f min +
f max − f min (∆t − ∆t min ) = 10 + 50 − 10 (∆t − 0) = 10 + 40 ∆t ∆t max − ∆t min 3−0 3
[9]
a následně stanovit hodnotu obrazu výstupu pro tuto frekvenci:
N = N min +
N max − N min ( f − f min ) = 0 + 255 − 0 ( f − 10) = 255( f − 10) . 50 − 10 40 f max − f min
[10]
Příslušná část programu pak může vypadat třeba takto:
12