VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY
FAKULTA ELEKTROTECHNIKY A KOMUNIKAČNÍCH TECHNOLOGIÍ ÚSTAV AUTOMATIZACE A MĚŘICÍ TECHNIKY FACULTY OF ELECTRICAL ENGINEERING AND COMMUNICATION DEPARTMENT OF CONTROL AND INSTRUMENTATION
SW SIMULÁTOR ANALOGOVÝCH SOUSTAV ANALOG SYSTEM SW SIMULATOR
DIPLOMOVÁ PRÁCE MASTER‘S THESIS
AUTOR PRÁCE
Bc. ONDŘEJ KOŠTA
AUTHOR
VEDOUCÍ PRÁCE SUPERVISOR
BRNO 2012
doc. Ing. ZDENĚK BRADÁČ, Ph.D.
Abstrakt Tato diplomová práce se zabývá návrhem a realizací softwarového simulátoru analogových soustav různých druhů a řádů pro simulování a ověřování funkčnosti mikrokontrolérových řídicích systémů. Součástí práce je i návrh a realizace PSD regulátoru. Simulátor je realizován jako uživatelský program v PC za použití programovacího jazyka C++/CLI využívajícího vlastností rychlé exekuce nativního kódu a zároveň výhod řízeného kódu .NET Framework. Funkci rozhraní pro připojení analogových vstupů a výstupů regulátoru k simulované soustavě plní USB měřicí karta od firmy National Instruments. PSD regulátor je realizován za využití mikrokontroléru moderní architektury ARM.
Klíčová slova Simulace, soustava, řízení, diskretizace, PSD regulátor, ARM
Abstract This Master’s Thesis focuses on development and realization of analog system software simulator for simulation of various kinds and orders systems and for function verification of microcontrollers’ control systems. The development and realization of PSD controller is part of this thesis as well. The simulator is written in C++/CLI programming language which combines fast execution of native code and provides an advantage of managed code which has its execution managed by the .NET Framework. The data acquisition is performed via National Instrument’s USB multifunctional DAQ. The PSD regulator is realized by using modern ARM processor architecture.
Keywords Simulation, system, control, discretization, PSD controller, ARM
3
Bibliografická citace: KOŠTA, O. SW simulátor analogových soustav. Brno: Vysoké učení technické v Brně, Fakulta elektrotechniky a komunikačních technologií, 2012. 81 s. Vedoucí diplomové práce doc. Ing. Zdeněk Bradáč, Ph.D.
4
Prohlášení „Prohlašuji, že svou diplomovou práci na téma SW simulátor analogových soustav jsem vypracoval samostatně pod vedením vedoucího diplomové práce a s použitím odborné literatury a dalších informačních zdrojů, které jsou všechny citovány v práci a uvedeny v seznamu literatury na konci práce. Jako autor uvedené diplomové práce dále prohlašuji, že v souvislosti s vytvořením této diplomové práce jsem neporušil autorská práva třetích osob, zejména jsem nezasáhl nedovoleným způsobem do cizích autorských práv osobnostních a jsem si plně vědom následků porušení ustanovení § 11 a následujících autorského zákona č. 121/2000 Sb., včetně možných trestněprávních důsledků vyplývajících z ustanovení části druhé, hlavy VI. díl 4 Trestního zákoníku č. 40/2009 Sb.
V Brně dne: 18. května 2012
………………………… podpis autora
Poděkování Děkuji vedoucímu diplomové práce doc. Ing. Zdeňku Bradáčovi, Ph.D. za účinnou metodickou, pedagogickou a odbornou pomoc a další cenné rady při zpracování mé diplomové práce. Dále velice děkuji svým kamarádům, kteří mně byli ochotni vždy poradit, své přítelkyni Lence, která mně byla obrovskou oporou a především svým rodičům za podporu během celého mého studia.
V Brně dne: 18. května 2012
………………………… podpis autora
5
Obsah 1
Úvod ..................................................................................................................................... 9
2
SW simulátor – teoretická část ........................................................................................... 10 2.1
Koncepce vytvářeného simulátoru ............................................................................ 10
2.2
Malý přehled simulačních programů ......................................................................... 10
2.2.1
MATLAB a Simulink............................................................................................ 10
2.2.2
OpenModelica ....................................................................................................... 12
2.3
3
4
Algoritmus pro výpočet diskrétního přenosu............................................................. 13
2.3.1
Úvod ...................................................................................................................... 13
2.3.2
Odvození metody .................................................................................................. 14
2.3.3
Určení vnitřního popisu z vnějšího ....................................................................... 17
SW simulátor – praktická část............................................................................................ 19 3.1
Použitá karta pro periferie ......................................................................................... 19
3.2
Použitá knihovna pro práci s maticemi...................................................................... 20
3.3
Implementace simulátoru........................................................................................... 20
3.4
Popis implementace diskretizace ............................................................................... 21
3.5
Časování .................................................................................................................... 22
3.5.1
Časovače v .NET................................................................................................... 22
3.5.2
Realizované řešení časovače ................................................................................. 23
3.5.3
Porovnání časovačů............................................................................................... 25
3.6
Poruchy a rušení ........................................................................................................ 25
3.7
Vykreslování průběhů................................................................................................ 26
3.8
Uživatelské rozhraní .................................................................................................. 26
3.9
Další možná budoucí rozšíření .................................................................................. 30
Návrh PSD regulátoru ........................................................................................................ 32 4.1
Blokové schéma kompaktního regulátoru ................................................................. 32
4.2
Mikrokontrolér........................................................................................................... 32
4.2.1
Krátké seznámení s ARM Cortex-M3 architekturou............................................. 33
4.2.2
Klíčové parametry MCU Atmel SAM3S2B.......................................................... 34
4.2.3
Externí EEPROM .................................................................................................. 34
4.3
Vstupní obvody regulátoru ........................................................................................ 34
4.3.1
Analogové vstupy.................................................................................................. 35
4.3.2
Digitální vstupy ..................................................................................................... 36
4.4
Výstupní obvody regulátoru ...................................................................................... 38
6
4.4.1
Analogové výstupy................................................................................................ 38
4.4.2
Digitální výstupy ................................................................................................... 39
4.5
5
Periferie ..................................................................................................................... 41
4.5.1
RS485, RS232 a USB............................................................................................ 41
4.5.2
Displej ................................................................................................................... 42
4.5.3
Ovládání ................................................................................................................ 43
4.6
Napájecí část.............................................................................................................. 44
4.7
Známé chyby v hardwarovém návrhu REV. 1 .......................................................... 46
SW implementace regulátoru ............................................................................................. 48 5.1
PID regulátory ........................................................................................................... 48
5.2
Diskretizace PID regulátoru ...................................................................................... 49
5.2.1
Omezení integrační složky (antiwindup)............................................................... 50
5.2.2
PSD regulátor s filtrací derivační složky............................................................... 51
5.3
Programovací prostředky........................................................................................... 52
5.4
Stručný popis implementovaného algoritmu ............................................................. 53
5.4.1
Struktura menu regulátoru..................................................................................... 56
Závěr ........................................................................................................................................... 58
7
Seznam obrázků Obr. 1 Bloková koncepce simulátoru.......................................................................................... 10 Obr. 2 Princip R-T běhu simulace v prostředí Simulink, TP – doba výpočtů simulace, TD – velikost doby zbrzdění simulačního cyklu, TS – perioda vzorkování [6].................................... 11 Obr. 3 Průběh regulačního děje soustavy simulované v Simulinku a akčního zásahu................ 12 Obr. 4 OpenModelica – ukázka prostředí, simulace odezvy soustavy na jednotkový skok ....... 13 Obr. 5 Realizace systému přímou metodou[11].......................................................................... 18 Obr. 6 Struktura programu .......................................................................................................... 21 Obr. 7 Vývojový diagram přesného časovače............................................................................. 24 Obr. 8 Porovnání systémových nároků časovačů........................................................................ 25 Obr. 9 Regulační obvod .............................................................................................................. 26 Obr. 10 Celkový pohled na uživatelské rozhraní simulátoru ...................................................... 27 Obr. 11 Způsoby zadávání tvaru spojitého přenosu soustavy ..................................................... 28 Obr. 12 Možnosti nastavení rušení nebo konstantní poruchy ..................................................... 28 Obr. 13 Nastavení měřicí karty ................................................................................................... 29 Obr. 14 Blokové schéma kompaktního PSD regulátoru ............................................................. 32 Obr. 15 Schéma zapojení analogových vstupů ........................................................................... 35 Obr. 16 Modul digitálních vstupů ............................................................................................... 37 Obr. 17 Schéma zapojení analogových výstupů ......................................................................... 39 Obr. 18 Modul digitálních výstupů ............................................................................................. 40 Obr. 19 Převodník UART RS485 ............................................................................................... 41 Obr. 20 Převodník UART RS232 ............................................................................................... 41 Obr. 21 Zapojení USB portu ....................................................................................................... 42 Obr. 22 Použitý displej [34] ........................................................................................................ 43 Obr. 23 Princip vyhodnocovaní signálu inkrementálního dekodéru [37] ................................... 43 Obr. 24 Schéma napájecí části .................................................................................................... 44 Obr. 25 Frekvenční charakteristika PID regulátoru ideálního a s filtrací derivační složky [39]. 49 Obr. 26 a) Náhrada integrace obdélníky zleva, b) náhrada derivace[30].................................... 49 Obr. 27 PSD regulátor s filtrací derivační složky [30]................................................................ 52 Obr. 28 Použitý USB JTAG emulátor firmy Segger [43] ........................................................... 53 Obr. 29 Vývojový diagram programu kompaktního PSD regulátoru ......................................... 55 Obr. 30 Schéma úrovní menu kompaktního PSD regulátoru...................................................... 57 Obr. 31Příklad nastavování integrační konstanty regulátoru ...................................................... 57
8
1 ÚVOD Modelování a simulace je v dnešní době velice důležitou součástí při návrhu řízení. Možnost simulovat soustavu je důležitá z hlediska technického, kdy by mohlo být experimentování s reálnou soustavou nebezpečné, a i z hlediska ekonomického, kdy každé odstavení výrobního procesu stojí nemalé finanční prostředky. Důležitou vlastností simulace je možnost měnit podmínky experimentu, aby bylo možné určit a ověřit, jak se celý systém bude při různých okolních podmínkách chovat a bylo tak předcházeno nebezpečným stavům. Možnosti i cena simulování dynamických soustav se dramaticky změnily s nástupem výpočetní techniky. Například v minulosti bylo prakticky jediným možným způsobem, jak modelovat a simulovat dynamické systémy, použití analogového počítače, který byl realizovaný na elektronické bázi jako sít vhodně propojených operačních zesilovačů. Práce s takovýmto počítačem, ale určitě nebyla tak pohodlná, jak ji známe dnes. Především z nutnosti normalizace, tedy správně určit vztah mezi například mechanickými veličinami a jim odpovídajícím napětím v analogové síti.[1] Cílem této práce je tedy navrhnout koncepci softwarového simulátoru analogových soustav pro simulované řízení laboratorních mikrokontrolérových řídicích systémů. Součástí práce je i návrh řídicí části systému v podobě PSD regulátoru. Celý systém je pak koncipován jako demonstrační pomůcka například pro výuku a proto bylo při návrhu dbáno mimo jiné i na jeho cenu. Celá práce je rozdělena do čtyř větších částí. První část se zabývá teoretickou stránkou simulátoru a jsou i krátce popsány možnosti využití již používaných modelovacích a simulačních prostředků. Druhá část je poté věnována praktické realizaci simulátoru, který je psán v prostředí Microsoft Visual Studio 2010, v jazyku C++/CLI. V této části je pak také popsán vytvořený simulátor. Třetí část popisuje hardwarový návrh kompaktního PSD regulátoru a konečně čtvrtá část je završením celé práce a věnuje se softwarovému vybavení realizovaného regulátoru. Také je zde i teoreticky popsána cesta od PID regulátoru k jeho diskrétní variantě.
9
2 SW SIMULÁTOR – TEORETICKÁ ČÁST 2.1 Koncepce vytvářeného simulátoru Bloková koncepce softwarového simulátoru analogových soustav a jeho umístění v regulačním obvodu je zobrazena na Obr. 1, kde R je regulátor, S je simulovaná řízená soustava, w(k) je žádaná hodnota, e(k) je regulační odchylka, u(k) je akční zásah regulátoru a y(k) je výstup ze soustavy.
Obr. 1 Bloková koncepce simulátoru
Regulovaná soustava se skládá z osobního počítače, ve kterém bude probíhat exekuce simulátoru soustav a měřicí USB karty, která slouží jako vstupní a výstupní periferie. Poruchy a rušení budou simulovány softwarově v simulátoru a navíc rušení výstupu soustavy bude vznikat přirozeně na přívodním vodiči do regulátoru. Regulátor bude realizovaný v mikrokontroléru.
2.2 Malý přehled simulačních programů Před tím, než bude popsána implementace navrženého simulátoru analogových soustav, podívejme se na možnosti a softwarové prostředky, které jsou již nabízeny. Pro vhodné řešení dané problematiky, to znamená simulace dynamické soustavy a možnost komunikace s měřicí USB kartou. Budou krátce popsány dva nástroje: MATLAB a Simulink a open-source simulační prostředí OpenModelica. Třetí, zde však blíže nepopisovanou, alternativou by mohl být přídavný modul pro NI LabVIEW - LabVIEW Control Design and Simulation Module.
2.2.1 MATLAB a Simulink MATLAB je asi nejznámějším programovacím prostředím pro vědeckotechnické výpočty, modelování, návrhy algoritmů, simulace, analýzu a prezentaci dat, paralelní
10
výpočty, měření a zpracování signálů, návrhy řídicích a komunikačních systémů. Umožňuje rychlejší řešení technických a výpočetních problémů než pomocí tradičních programovacích nástrojů, jako jsou například jazyky C/C++ nebo Fortran. Simulink je nadstavbou pro MATLAB, která je vhodná pro simulaci a modelování dynamických systémů využívající algoritmy MATLABu pro numerické řešení nelineárních diferenciálních rovnic. Poskytuje interaktivní grafické prostředí umožňující uživateli vytvářet rychle a snadno modely dynamických systémů pomocí funkčních bloků. [2][3][4] Prostředí MATLAB nabízí funkce pro komunikaci s různými zařízeními pro sběr dat v knihovně Data Acquisition Toolbox. A také v 32bitové verzi Simulinku funkční bloky pro jednoduché nastavení periferií vstupů/výstupů a jejich připojení k modelu. Každý z bloků má několik nastavitelných parametrů, jako jsou například: použité zařízení, zvolený měřicí kanál, vzorkovací perioda, datový typ atd. V 64bitové verzi však tato možnost neexistuje a je třeba vytvořit S-funkce využívajících funkcí MATLABu, ve kterých je nutné iniciovat samostatné relace pro sběr dat a pro odesílání dat (konkrétní realizace viz příloha 6). [5] Dalším problémem je, jak zajistit chod simulace tak, aby probíhala v reálném čase. Na Ústavu automatizace a měřicí techniky FEKT v Brně se tímto problémem zabýval ve své bakalářské práci Dalibor Malík, jenž vytvořil blokset pro realizaci reálného času v Simulinku na principu dorovnávání simulačního cyklu na velikost vzorkovací periody, princip viz Obr. 2. [6]
Obr. 2 Princip R-T běhu simulace v prostředí Simulink, TP – doba výpočtů simulace, TD – velikost doby zbrzdění simulačního cyklu, TS – perioda vzorkování [6]
Za použití výše popsaných bloků může pak regulační děj na testovací soustavě 2 S p , (2.1) 3 10 p 21 p 2 12 p 1
regulované kompaktním PSD regulátorem, který byl vytvořen jako součást této diplomové práce vypadat tak, jak je ilustrováno na Obr. 3, kde je i srovnání se simulovaným PSD regulátorem, který je nastaven se stejnými parametry. Regulace probíhá na žádanou hodnotu 1 V, při periodě vzorkování 200 ms a parametry regulátoru: K = 3,63, TI = 5,74 a TD = 0,72.
11
Obr. 3 Průběh regulačního děje soustavy simulované v Simulinku a akčního zásahu
2.2.2 OpenModelica OpenModelica je open-source modelovací a simulační prostředí určené pro průmyslové a akademické použití na bázi jazyka Modelica, což je nechráněný, objektověorientovaný jazyk založený na pohodlném modelování složitých fyzikálních systémů. Mezi jeho komerční verze například patří CATIA Systems, Dymola, MapleSim, MathModelica a další viz [7]. Cílem autorů OpenModelici je vytvořit komplexní, volně šiřitelný software distribuovaný v binárním i zdrojovém kódu, pro výzkum, výuku a průmysl. Proto stále do svého kolektivu zve nové vývojáře a spolupracovníky. Její dlouhodobý vývoj je podporován neziskovou organizací - Open Source Modelica Consortium (OSMC). [8] Výhodou OpenModelica je fakt, že simulace se dá spustit i jako interaktivní, tzn. Je simulována v reálném čase. Bohužel ale bloky pro používání měřicích karet nejsou zatím volně k dispozici. Například v komerční verzi Modelica - Dymola je k dispozici Bausch-Gall Real-Time Library, která umožňuje použití NI USB-6009. [9] Nicméně další funkce pro OpenModelica je možné psát i v jazyce C, zde by se tedy otevírala možnost napsat si vlastní funkce pro práci s měřicí kartou, jelikož National Instruments poskytuje knihovny pro komunikaci s jejich kartami právě i v jazyce C (ty jsou mimochodem použity i v simulátoru vytvořeném v této diplomové práci). Bohužel
12
z časových důvodů již nebylo možné tuto možnost realizovat, ale do budoucna se zde otevírají dveře pro jistě velice zajímavou alternativu k MATLABu.
Obr. 4 OpenModelica – ukázka prostředí, simulace odezvy soustavy na jednotkový skok
2.3 Algoritmus pro výpočet diskrétního přenosu Jelikož se bude jednat o softwarový simulátor analogových soustav, je nutné zadané soustavy ve spojitém tvaru nejprve diskretizovat, aby se s nimi dalo dále pomocí počítače pracovat. Dalším možným způsobem by bylo převést zadaný přenos soustavy na systém diferenciálních rovnic a ty numericky řešit. Ale vzhledem k tomu, že výstup soustavy bude realizovaný pomocí USB karty a bude tedy aktualizovatelný pouze v určitých intervalech, nebudou nás příliš zajímat hodnoty výstupu mezi těmito intervaly, a tudíž diskrétní reprezentace zadané analogové soustavy bude zcela vyhovující. V této části práce tedy bude rozebrán způsob, jakým toho bylo dosaženo.
2.3.1 Úvod Popisovaný algoritmus byl převzat z [10]. Při syntéze regulačních obvodů pomocí počítače se pracuje s přenosovými funkcemi v Z transformaci ve tvaru: G z ,
p 0 p1 z 1 ... p r z r . 1 q1 z 1 ... q r z r
(2.2)
Tuto funkci lze získat různými způsoby, například identifikací nebo matematickofyzikálním rozborem dynamického chování dané soustavy pomocí diferenciálních
13
rovnic a jejich převodem na přenos v Laplaceově transformaci, které se dají převést na diskrétní tvar. Pro diskretizaci racionálních přenosů F p
b1 p r 1 ... br 1 p br p r a1 p r 1 ... a r 1 p a r
(2.3)
se například používá metoda rozkladu na parciální zlomky a jejich převod pomocí slovníku Z transformace. Tento způsob však není vhodný pro výpočty na počítači. Níže uvedená metoda využívá skutečnosti, že je možné numericky řešit pochody v lineární soustavě, aniž by se počítaly kořeny charakteristické rovnice. Zapíšeme-li přenos (2.3) v maticovém tvaru diferenciální rovnice, můžeme řešení vyjádřit ve tvaru exponenciály matice, kterou lze vypočítat pomocí mocninné řady.
2.3.2 Odvození metody Nejprve se převede diferenciální rovnice r-tého řádu y r a1 y r 1 ... a r y b1u r 1 ... br u ,
(2.4)
která odpovídá přenosu (2.3), zavedením stavových proměnných na maticový tvar. Diferenciální rovnice se upraví na: ... y a1 y b1u a 2 y b2 u ... a r 1 br 1u a r y br u 0 (2.5) a zavede se r-1 stavových proměnných x: x0 y, x1 x 0 a1 x 0 b1u,
xi xi1 ai x0 bi u,
(2.6)
x r 1 x r 2 a r 1 x0 br 1u.
Rovnice pro x1 až xr-1 spolu s rovnicí 0 x r 1 a r x0 br u ,
(2.7)
která vznikla z dané diferenciální rovnice, dávají maticovou diferenciální rovnici ve tvaru: x0 b1 x0 a1 1 x a 1 x1 b2 1 2 (2.8) u, 1 x r 1 br x r 1 a r což jde zapsat jako: x Ax Bu . (2.9)
14
Převod na maticový tvar je možné provést více různými způsoby. Zde použitý způsob (metoda postupné integrace) má výhodu v tom, že výstupní veličina y(t) je přímo jednou ze stavových veličin a že v rovnici vystupuje jen vstupní veličina u(t), ne její derivace. Obecné řešení rovnice (2.9) má tvar: t
xt e At x0 e A t Bu d .
(2.10)
0
Při vyjádření času v diskrétním tvaru platí: t n T 0 , 1 k T
(2.11)
kde n, k jsou celá čísla, T je perioda vzorkování. Vstupní signál je předpokládán ve tvaru stupňovité funkce, která má vždy konstantní hodnotu mezi dvěma okamžiky vzorkování (tudíž má také diskrétní charakter), tedy: u t u n . (2.12) Potom bude mít řešení tvar: n 1 1
k 0 0
0
xn, e A n T x0 e A n k T Bu k T d e A t T Bu n Td .
(2.13)
Po úpravě a substituci v integrálu: xn, e
ATn
e
AT
n 1
x0 e
AT n k 1 AT
e
k 0
T A T e d Bu k e A d Bu n . 0 0
(2.14)
Pro výpočet integrálů lze použít vzorce: T
e
A
d A 1 e AT 1 .
(2.15)
0
Ten však selhává v případě, když A není regulární. To nastane tehdy, bude-li alespoň jeden kořen charakteristické rovnice roven nule (astatická soustava). Proto je vhodnější k výpočtu integrálu použít, podobně jako k výpočtu exponenciály, nekonečné mocninné řady:
At ... . At At e 1 (2.16) 1! 2! 3! Tuto nekonečnou řadu můžeme aproximovat konečným počtem členů při zaručení předepsané přesnosti. Odtud pak platí: 2
3
At
AT AT 2 AT 3 ... e d T 1 . 0 2! 3! 4! Při substituci: T
A
(2.17)
15
T T e AT R, e AT R , e A d B S, e A d B D 0 0 se z rovnice (2.14) stane diskrétní stavová rovnice: n 1
xn, R n R x0 R n k 1 R Su k Du n ,
(2.18)
(2.19)
k 0
a pro 0 : n 1
xn R n x0 R n k 1Su k .
(2.20)
k 0
Tato rovnice umožňuje k danému stavovému vektoru v čase n = 0 a k dané posloupnosti hodnot vstupního signálu u(k), k = 0, 1, 2,… postupně napočítávat nový stavový vektor pro všechny další okamžiky n. V tomto textu se budeme zabývat pouze případem, kdy 0 , tzn. zajímají nás hodnoty pouze v okamžicích vzorkování. V [10] je uveden i postup pro 0 . Zapíše-li se rovnice (2.20) indexově (vhodné je číslování řádků a sloupců od 0 do r-1): r 1
n 1 r 1
xi n R n ij x j 0 R n k 1 ij S j u k . j 0
(2.21)
k 0 j 0
Rovnice je zajímavá pouze pro případy i = 0, protože udává přímo výstupní veličinu r 1
y n x0 n R n j 0
n 1 r 1
n k 1 0 j x j 0 R k 0 j 0
0j
S j u k .
(2.22)
Uvažuje-li se nyní n = 0, 1, …, r-1 a považuje-li se y(n) za vektor a podobně u(k), lze rovnici (2.22) zapsat maticově: y Tx Wu , (2.23) neboli: n 1
n 1
k 0
k 0
y n Tnj x j 0 Wnk u k ,
kde
Tnj R n
0j
(2.24)
,
(2.25)
tj. n-tý řádek matice T je tvořen nultým řádkem matice Rn a matice W:
R r 1
Wnk
j 0
n k 1
n 1
0 j S j Tn k 1, j S j pro k n
0 pro k n
j 0
,
(2.26)
je trojúhelníková matice, jejíž prvky závisí jen na rozdílu n – k (vzdálenosti od diagonály) a mají tvar skalárního součinu (n – k – 1)-ho řádku matice T s vektorem S:
16
0 T S 0 0 . W T1S T0 S 0 Je-li matice T regulární, lze rovnici (2.23) řešit vzhledem k počátečnímu stavu: x T 1 y T 1 Wu ,
x j 0 T 1 r 1
l 0
jl
(2.27)
(2.28)
y l T 1 W jl u l .
(2.29)
Toto řešení se dosadí do rovnice (2.22) pro n = r: r 1
r 1
l 0
k 0
x j 0 Trj x j 0 Wnk u k .
(2.30)
Tím se získá vztah mezi r + 1 po sobě jdoucími hodnotami výstupní veličiny: r 1 r 1 y r Trj T 1 l 0 j 0 který je ve tvaru:
r 1 r 1 1 y l Trj T W jl l 0 j 0
r 1
r 1
l 0
l 0
jl
Wrl u l ,
y r q r l y l p r l u l .
(2.31)
(2.32)
Protože jde o soustavu s konstantními parametry, nezmění se tento vztah volbou jiného počátku času: r 1
r 1
l 0
l 0
y n r q r l y n l p r l u n l .
(2.33)
Čímž byla získána rekurentní rovnice původního spojitého systému, která odpovídá diskrétnímu přenosu.
2.3.3 Určení vnitřního popisu z vnějšího V předchozí kapitole byl určen diskrétní přenos zadaného systému ve tvaru: p 0 p1 z 1 ... p r z r , G z 1 q1 z 1 ... q r z r
(2.34)
aby bylo možné dále se systémem jednoduše pracovat pomocí počítače, je vhodné ho převést na tvar diferenčních maticových rovnic: xk 1 Ax(k ) Bu k , (2.35) y k Cxk Du k kdy pak v každém kroku vzorkování se jednoduše pomocí maticových operací přepočítávají vnitřní stavy x a výstup y. V programu byl použit způsob přímého programování. Odvození pomocí spojitého přenosu viz například [11]. Po převedení diskrétního systému na kladné mocniny se pak
17
jedná o analogický problém s rozdílem, že místo integrátorů se pracuje se zpožďovacími členy z-1. Vše přehledně ilustruje především stavový diagram, který pro normalizovaný spojitý přenos ve tvaru: bm p m ... b0 Y p , G p U p p n a n 1 p n 1 ... a 0
(2.36)
vypadá tak, jak je zobrazeno na Obr. 5.
Obr. 5 Realizace systému přímou metodou[11]
18
3 SW SIMULÁTOR – PRAKTICKÁ ČÁST 3.1 Použitá karta pro periferie V projektu je použita měřicí karta od firmy National Instruments, konkrétně USB-6008. Její výběr neprobíhal na základě jejích parametrů, ale bylo určeno, že bude použita z důvodu, že tyto karty jsou na ÚAMT k dispozici. Navíc je simulátor sice odladěn pro tuto kartu, ale měl by být schopen bez problémů komunikovat i s dalšími NI kartami ze série USB-xxxx, které disponují analogovými vstupy i výstupy. USB-6008 je 12bitová „Low-Cost“ multifunkční měřicí karta připojitelná k PC pomocí USB sběrnice. S klíčovými parametry [12]: 8 analogových vstupů (12bitové, 10 kS/s) 2 analogové výstupy (12bitové, 150 S/s) 12 digitálních vstupů/výstupů 32bitový čítač Napájení pomocí USB sběrnice umožňuje velkou mobilitu Vstupní napěťové rozsahy: Se společnou zemí: ±10 V V dif. zapojení: ±20 V, ±10 V, ±5 V, ±4 V, ±2.5 V, ±2 V, ±1.25 V, ±1 V Výstupní napěťový rozsah: 0 až 5 V Vzorkovací frekvence analogových výstupů je sice pouze 150 vzorků za sekundu, ale vzhledem k tomu, že se budou simulovat soustavy, které mají být postřehnutelné okem, je tato rychlost plně dostačující. Větším problémem však může být výstupní napěťový rozsah karty, který je pouze 0 až 5 V, nejde tudíž například simulovat zákmity v okolí nuly a maximální výstup ze soustavy nesmí být větší než 5 V. Alternativou k USB-6008 může být měřicí karta NI USB-6211 s následujícími parametry [13]: 16 analogových vstupů (16bitové, 250 kS/s) 2 analogové vstupy (16bitové, 250 kS/s) digitální vstupy/výstupy 32bitový čítač Napájení pomocí USB sběrnice Vstupní napěťové rozsahy: ±10 V, ±5 V, ±1 V, ±0.2 V Výstupní napěťový rozsah: ±10 V Tato měřicí karta je přesnější a výkonnější než USB-6008 ve všech ohledech, je však až čtyřikrát dražší.
19
3.2 Použitá knihovna pro práci s maticemi Jak je patrné z teoretického úvodu, v programu se budou používat operace s maticemi. Bylo třeba rozhodnout, zda má smysl tyto funkce psát nebo použít odladěnou knihovnu. Smysl psát nové funkce samozřejmě nemá, protože například výpočet větších inverzních matic než 3x3 je poměrně komplikovaný a třeba knihovna uBLAS jej nemá ani implementovaný.[14] Stejně tak i knihovna Armadillo, která nakonec byla vybrána, je schopna vypočíst inverzi matice rozměru maximálně 3x3, naštěstí, jsou-li však doinstalovány knihovny BLAS a LAPACK, je tento nedostatek odstraněn. Ze své zkušenosti s kompilací BLAS a LAPACK knihoven na 64bitových Windows doporučuji spíše stáhnout si již prekompilované binární soubory, například z [15]. Ušetří to spoustu práce, která často nakonec ani nikam nevede. Pro práci s maticemi byla tedy zvolena knihovna Armadillo: An Open Source C++ Linear Algebra Library, především z následujících důvodů [14]: Jednoduchá syntaxe podobná MATLABu a Octave, která snižuje nároky na čas při vývoji aplikace a snižuje možnost výskytu chyb vytvořených uživatelem. Podpora datových typů používaných v lineární algebře stejně tak, jako při zpracování signálů a obrazů. Konkrétně jsou podporovány celá čísla, čísla s plovoucí čárkou i komplexní čísla. Používání knihoven BLAS a LAPACK, které umožňují rychlé a optimalizované pracování s maticemi (tyto knihovny používá i MATLAB). Propracovaný mechanismus pro přístup k prvkům v submaticích. Možnost načítat a ukládat matic do souborů. Podpora trigonometrických a statistických funkcí s maticemi. Možnost volitelně specifikovat velikosti matic pomocí šablon, vedoucích k zvýšení výkonu při kompilování a alokaci paměti
3.3 Implementace simulátoru Volbou knihovny pro práci s maticemi bylo vlastně i určeno v jakém jazyce se bude program psát, tedy v C++. Simulátor je ale implementován v jazyce C++/CLI. Jedná se o kombinaci klasického jazyka C++ a řízeného kódu, které umožňuje kombinovat nativní kód C/C++ s řízeným .NET Framework. Hlavní výhodu této volby spatřuji v tom, že je možnost kombinovat ověřené a odladěné knihovny, například v tomto případě pro práci s maticemi a funkce pro komunikaci s měřicí kartou, s řízeným Frameworkem .NET, který zase umožňuje rychlé a pohodlné psaní formulářů a řízení aplikace (multitaskingu). Matematická část a její knihovny jsou naprogramovány v jazyce C++, výrobcem poskytované knihovny pro ovládání měřicí karty jsou naprogramovány v jazyce C a pro jednoduší implementaci některých funkcí je používán .NET. Určitě by někdo mohl
20
namítnout, že taková struktura programu nemusí být úplně programátorský čistá, ale prostředí C++/CLI tyto kombinace umožňuje [16] a možná to je právě i důvod, proč vzniklo a proč stále existuje, i když z praxe je patrné, že v nejbližší době bude pravděpodobně vytlačeno prostředím jazyka C#. Proto byly zváženy následující možnosti: přepsání celého simulátoru do prostředí jazyka C#, zachování současného prostředí C++/CLI, ale s jasným definováním, co v jakém jazyce bude psáno, tedy – na jádro napsané v jazyce C/C++ (výpočty, komunikace s kartou) a řízení aplikace a uživatelský interface napsaný v .NET Framework. Přepsání celého programu do jazyka C# by s sebou neslo následující výhody: jedná se o moderní a široce používaný jazyk, knihovny pro komunikaci s měřicí kartou dodává výrobce i v C#, ale na druhou stranu tyto nevýhody: nutnost učit se nový jazyk a obzvláště, matematické knihovny použité v současném programu nejsou zatím tak rozšířené jako open-source a bylo by třeba se ohlédnout po komerčních. Open source knihovny existují také (např. http://www.dotnumerics.com/), ale nebezpečí jejich použití může tkvít v tom, že nejsou ještě tak dlouho používány a není kolem nich tak široká komunita jako u knihoven napsaných v jazyce C++, tudíž existuje reálné riziko, že nebudou dostatečně odladěny. Druhá možnost, rozdělení programu na dvě části, tedy zvítězila. Celý program má pak strukturu, která je znázorněna na Obr. 6.
Obr. 6 Struktura programu
3.4 Popis implementace diskretizace Algoritmus diskretizace je napsán za pomoci knihovny pro práci s maticemi Armadillo a prakticky kopíruje postup odvození metody diskretizace uvedené v kapitole 2.3.2. Celý algoritmus je k dispozici v příloze a konkrétně se jedná o třídu discrete.
21
3.5 Časování V ideálním případě by bylo žádoucí, aby program simulátoru běžel jako hard real time aplikace a časování, s, od něho odvozeným, vzorkováním, bylo deterministicky plánované. Toto řešení však za daných podmínek není možné realizovat z následujících důvodů: Systém Windows není v základním provedení operačním systémem reálného času, nicméně existují jeho rozšíření na RTOS. Ale především, v zadání je uvedeno, že rozhraní mezi simulátorem reprezentujícím soustavu a regulátorem realizovaným v mikrokontroléru má plnit USB měřicí karta. USB standard ale není podporován v RTOS, protože neustále posílá přerušení operačnímu systému a narušuje tak jeho determinismus. Možným řešením by tedy bylo použít měřicí kartu komunikující po sběrnici PCI, systém PXI nebo také existují měřící karty s vestavěným (embedded) procesorem, který je možné naprogramovat pro měření v reálném čase.[17] Tato řešení by však stála mnohonásobně více peněz a pro danou aplikaci není ani požadavkem dosáhnout přesnosti vzorkovaní v mikrosekundách. Softwarové časování bude tedy dostačující a, jak již bylo uvedeno výše v Obr. 6, bude se využívat pro jeho realizaci funkcí .NET Framework. Nejprve ale bylo třeba zvážit možnosti, které .NET Framework nabízí. V úvahu připadají třídy: System::Timers::Timer nebo System::Windows::Forms::Timer, které budou v následující kapitole podrobněji rozebrány.
3.5.1 Časovače v .NET Jako první bude krátce rozebrána třída System::Windows::Forms::Timer. Tato třída poskytuje časovač s uživatelem definovatelným intervalem v milisekundách, který vyvolá událost ve formuláři Windows, ve kterém je použit. Tento typ časovače je navržen pro aplikace, které využívají pro svůj běh pouze jedno uživatelské vlákno, a sám časovač běží v tomto jednom vláknu, což omezuje jeho přesnost na 55 ms.[18] Tudíž je pro účel určování periody vzorkování naprosto nevhodný, jeho použití je spíše pro časování akcí v uživatelském rozhraní, kde je jeho přesnost dostačující, protože uživatel není samozřejmě schopen postřehnout tyto nepřesnosti. Přesnějšího časování by mohla dosáhnout třída System::Windows::Forms::Timer, která již poskytuje časovač vykonávající svoji exekuci ve více vláknech.[19] Tento typ časovače je především určen pro vyvolávání opakujících se událostí v aplikaci na rozdíl od předešlého časovače, který vyvolává události pouze ve formuláři. Interval časování se opět zadává v milisekundách, ale z měření (viz naměřená data v příloze 1) i ze
22
zkušeností ostatních uživatelů, není schopen dosáhnout přesnosti lepší než 10 až 15 ms, při kratších intervalech je přesnost ještě horší. Na tomto místě je třeba ještě zmínit jeden druh časovačů, který systém Windows nabízí i přesto, že nepatří do .NET Framework. Jedná se o multimediální časovače, které umožňují vyvolávat časové události s vyšším rozlišením (nebo přesností) než všechny ostatní časovače. Jejich primární využití je, jak už sám název napovídá, pro práci s multimediálními zařízeními, jako je například MIDI sekvencer, který vyžaduje časovače s vysokým rozlišením, protože musí udržet krok MIDI událostí v rámci rozlišením jedné milisekundy.[20] Avšak jedna milisekunda je stále poměrně špatná přesnost, a proto bylo hledáno ještě jiné řešení, které by nabízelo přesnost v řádech desítek nebo maximálně stovek mikrosekund.
3.5.2 Realizované řešení časovače Obecně základním problémem v přesnosti softwarových časovačů je samozřejmě fakt, že Windows není operačním systémem reálného času a pro většinu aplikací na něm běžících není třeba generovat časové události přesnější než jednotky milisekund. Zvolené řešení samozřejmě nemění tuto skutečnost, ale poskytuje časovač, který je v ideálním případě schopen generovat časové události s přesností na desítky mikrosekund, samozřejmě v závislosti na výkonu počítače a na jeho aktuálním vytížení. Tedy jinými slovy, parafrázováním definice RTOS [21], není stoprocentně zaručeno provádění výpočtů a reakcí na události v definovaných časových intervalech (angl. v deadlines). Každopádně pro aplikaci simulátoru je důležité, že přesnost vzorkování bude vyšší než 1 ms. Důležitou součástí nově vzniklého časovače je třída System::Diagnostics::Stopwatch, jedná se vlastně o velice přesné stopky měřicí uplynulý čas od jejich spuštění. Čas je měřen z načítaných hodinových impulsů čítače, který je v dokumentaci Microsoftu anglicky nazýván high-resolution performance counter, pokud ho nainstalovaný hardware a operační systém podporují, pak třída Stopwatch používá pro měření uplynulého času tento čítač, jinak používá systémový časovač. V módu vysokého rozlišení jsou pak stopky schopné vyčítat uplynulý čas až s přesností v nanosekundách.[22] Bohužel nikde nebylo s jistotou nalezeno, o jaký přesně čítač se jedná a kde je umístěn, pravděpodobně však bude implementován přímo v procesoru a bude nezávislý na okolí, protože vlivem chyb v BIOS nebo ve vrstvě HAL (Hardware Abstraction Layer) mohou u více procesorových počítačů různé procesory poskytovat různé výsledky. [22] Myšlenka jak realizovat časovač je potom velice jednoduchá: když je možné cyklicky a velice přesně vyčítat ze stopek uplynulý čas, tak je to možné dělat tak dlouho, dokud na stopkách není čas, ve kterém se má provést například vzorkování. Tento přístup je však nevýhodný z pohledu zatížení procesoru a dlouho bylo uvažováno nad tím, zda bude tímto způsobem realizován. Po rešerši na internetu a nalezení článku
23
[23], ve kterém autor publikoval přesně tento princip a s dobrými výsledky, bylo rozhodnuto, že časování v simulátoru bude prováděno právě tímto způsobem. V [23] je časovač napsán v jazyce C#, ale jeho převod do C++/CLI nebyl žádným velkým problémem, protože syntaxe .NET Frameworku je až na občasné rozdíly (např. v C++/CLI nelze vytvářet nové vlákno s více vstupními parametry atp.) podobná v obou jazycích, zde se opět potvrdilo, že rozhodnutí psát simulátor v C++/CLI bylo správné.
Obr. 7 Vývojový diagram přesného časovače
Na Obr. 7 je znázorněn vývojový diagram realizovaného časovače, jehož exekuce je vykonávána v samostatném vláknu s nejvyšší prioritou. Časová událost je vytvořena vždy, když čas vyčtený ze stopek je větší než zadaný časový interval. Třída Stopwatch je využitím vlastností OOP upravena pomocí dědičnosti tak, aby vracela uplynulý čas v mikrosekundách. Je-li mezi vyčteným časem ze stopek a požadovaným intervalem zpoždění větší než zadané, je událost přeskočena a čeká se na další interval. Tato vlastnost není v simulátoru nijak využita, její využití by bylo spíše například při posílání zpráv, kdy jejich platnost po uplynutí určitého intervalu ztrácí validitu a čeká se na další interval.
24
3.5.3 Porovnání časovačů V příloze 1 je provedeno měření přesnosti generování zadané periody vytvořeným časovačem a časovačem ze System::Timers::Timer. Z měření jasně vyplývá, že vytvořený nový časovač je přesný na desítky mikrosekund. Jeho maximální přesnost je omezena především tím, že i samotná obsluha stopek, konkrétně vyčtení uplynulého času, samozřejmě vyžaduje také nějaký čas pro svou exekuci.
Obr. 8 Porovnání systémových nároků časovačů
Na Obr. 8 je ale zobrazen druhý protipól vlastností nově vytvořeného časovače a tím jsou jeho systémové nároky. Vlevo na obrázku je vidět, že aplikace simulátoru (pojmenovaná Sianaso – SImulátor ANAlogových SOustav) vytěžuje procesor na 25 %, zatímco vpravo, když je použit časovač třídy Timer, je vytížení procesoru prakticky nulové. Program byl testován na soustavě: Operační systém: Windows 7 Procesor: Intel Core i3, M330 @ 2,13 GHz Operační paměť: 4,00 GB
3.6 Poruchy a rušení Pro správnou funkčnost regulačního obvodu je třeba regulátor navrhnout tak, aby byl schopný optimálně kompenzovat poruchy a rušení, které se v průmyslových podmínkách velice často vyskytuje. Proto je možné v simulátoru simulovat následující poruchové signály: konstantní poruchu působící na vstupu do soustavy, konstantní poruchu působící na výstupu soustavy, rušení ve formě bílého šumu působícího na vstupu do soustavy a rušení bílým šumem působícím na výstupu soustavy tak, jak to ilustruje Obr. 9.
25
Obr. 9 Regulační obvod
Konstantní poruchy se v programu přičítají buď k akčnímu zásahu, který pak vstupuje jako vstupní parametr do funkce pro výpočet aktuálního výstupu soustavy, nebo v druhém případě se přičítá k výstupu soustavy. V uživatelském rozhraní jde pak ještě nastavit čas, ve kterém má porucha začít na regulační obvod působit. Rušení bílým šumem vstupuje do regulačního obvodu obdobně jako konstantní poruchy a je generováno pomocí funkce random. U rušení má uživatel možnost nastavit jeho střední hodnotu a rozptyl.
3.7 Vykreslování průběhů Po potřeby vykreslování průběhů byla vytvořena nová řízená třída se jménem Chart, pro kreslení do prvků formuláře využívá funkcí .NET, konkrétně zejména třídy System::Drawing, která poskytuje funkce pro kreslení základních tvarů (úsečka, obdélník atp.) a dále i funkce pro jednoduché transformace obrazu. Nově vzniklá třída umožňuje vykreslit dva nezávislé průběhy pro výstup soustavy a pro akční zásah. Výstup soustavy je vykreslován jako lichoběžníková náhrada spojité funkce, to znamená, že dva body získané v po sobě následujících krocích simulace jsou mezi sebou spojeny úsečkou. A akční zásah je vykreslován jako diskrétní signál upravený tvarovačem nultého řádu. Dále třída Chart nabízí funkce autoscale, přiblížení vybrané oblasti nebo uživatelem zvolené nastavení maximálních a minimálních hodnot os. Samozřejmostí je určení optimálního rozdělení plochy grafu pomocí mřížky.
3.8 Uživatelské rozhraní V této podkapitole bude popsán vytvořený program simulátoru z uživatelského pohledu. Aby bylo program možné bez problémů spustit je potřeba split následující systémové a softwarové požadavky: Operační systém MS Windows 7 Nainstalovaný MS .NET Framework 4 Nainstalované ovladače měřicí karty NI-DAQmx
26
Nainstalovaný Microsoft Visual C++ 2010 Redistributable Package, nutno na počítačích, kde není nainstalováno MS Visual Studio 2010
Na Obr. 10 je ukázán celkový pohled na uživatelské rozhraní vytvořeného simulátoru analogových soustav při řízení testovací soustavy (2.1) skutečným regulátorem na žádanou hodnotu 1 V.
Obr. 10 Celkový pohled na uživatelské rozhraní simulátoru
Nastavení parametrů přenosu soustavy Zvolit tvar spojitého přenosu soustavy je možné dvojím způsobem, pomocí záložek v levém horním rohu programu: buď zadáním vektoru koeficientů čitatele a jmenovatele, anebo ve tvaru pólů a nul přenosu. Vektory parametrů se zadávají jako jednotlivá čísla oddělaná mezerou. Při chybě je uživatel na tuto skutečnost upozorněn a může zadat parametry znovu. Při zadávání přenosu je třeba mít na paměti, že řád čitatele musí být menší než řád jmenovatele. Při zadávání tvaru přenosu pomocí čitatele a jmenovatele musí jmenovatel být vektor a čitatel může být skalár. Počtem koeficientů ve jmenovateli je určen řád přenosu p. Při druhém způsobu, tzn. pomocí pólů a nul, mohou být nuly prázdný vektor, póly však musí mít vždy alespoň jeden prvek a zesílení musí být vždy skalár. Oddělovače desetinných míst jsou závislé na zeměpisné lokalizaci operačního systému, to znamená, že ve Windows, které jsou lokalizovány jako české, je oddělovačem desetinná čárka a na anglosaských, je oddělovačem tečka.
27
Obr. 11 Způsoby zadávání tvaru spojitého přenosu soustavy
Změna tvaru přenosu, jsou-li parametry zadány správně, se projeví až po stisku tlačítka
a tvar výsledného přenosu je přehledně zobrazen ve tvaru zlomku, jak
, vykreslit to ilustruje Obr. 11. Dále má uživatel možnost, po stisku tlačítka odezvu soustavy na jednotkový skok. Je-li spuštěna interaktivní simulace, jsou tyto dvě tlačítka neaktivní. Nastavení rušení/konstantní poruchy Rušení a poruchy vstupují do regulačního obvodu v místech popsaných v kapitole 3.6. Rušení bílým šumem má nastavitelnou střední hodnotu a rozptyl ve voltech, konstantní porucha amplitudu ve voltech a čas, ve kterém začne na regulační obvod působit, v sekundách. Všechny hodnoty jsou nastaveny vždy po opuštění daného políčka kdykoli, i během simulace. Běží-li již simulace a nastavený čas, kdy má konstantní porucha nastat je menší než právě aktuální čas simulace, projeví se vliv poruchy ihned po opuštění políčka amplituda.
Obr. 12 Možnosti nastavení rušení nebo konstantní poruchy
28
Nastavení NI USB-6008 Jak již bylo řečeno výše, aplikace je odladěna pro měřicí kartu NI USB-6008, ale měla by fungovat i s ostatními měřicími kartami ze série USB-xxxx, které disponují analogovými vstupy a výstupy, protože používané funkce pro komunikaci s měřicí kartou jsou univerzální. Pozor je však třeba dát na počty a jména vstupních nebo výstupních kanálů. Název připojeného zařízení je třeba nejprve zjistit v programu NI Measurement & Automation Explorer, který se nainstaluje společně s ovladači měřicí karty. Po jeho spuštění v levém horním rohu rozklikněte položky My System -> Devices and Interfaces, kde se poté objeví všechny zařízení National Instruments, které byly již někdy k počítači připojeny, seřazené podle jejich jména. To se automaticky generuje po připojení zařízení ve tvaru „Dev1, Dev2,…“. Jednotlivá zařízení jdou však libovolně přejmenovávat.
Obr. 13 Nastavení měřicí karty
Po zadání správného jména připojeného zařízení a vybrání použitých vstupních a . Podle výběru kanálu se výstupních kanálů je třeba stisknout tlačítko vstupní kanály nakonfigurují podle výchozího nastavení karty, to znamená ai0 až ai3 v diferenčním zapojení a ai4 až ai7 se společnou zemí. Proběhne-li vše v pořádku, změní se status z NEPŘIPOJENO na OK, v opačném případě se objeví číslo chyby pro vstupní a výstupní kanál zvlášť. Status se může změnit i během simulace, když například je přesažen rozsah výstupní kanálu. Co znamenají jednotlivé kódy chyb a jakým způsobem je odstranit, je možné zjistit z NI KnowledgeBase na stránce http://www.ni.com/kb/. Zde budou uvedeny pouze nejčastější chyby, které mohou nastat (viz Tabulka 1). Po odstranění vnějšího zdroje chyby a opětovném stisku tlačítka Aktualizovat/připojit může být zařízení znovu v pořádku připojeno. Tabulka 1 Nejčastější chyby
Kódy nejčastějších chyb při komunikaci s NI DAQ 0 -201003 -200561 -200170
Vše v pořádku Požadované zařízení není připojeno k PC Zapisovaná hodnota na výstup je mimo rozsah Vybraný kanál na daném zařízení neexistuje
29
Práce s vykreslenými průběhy Kliknutím a podržením levého tlačítka myši v oblasti grafu a jejím posunem je možné vybrat oblast, která má být přiblížena. Automatické přiblížení na průběh
. simulace, která je uložena v pomocném poli, je možné pomocí tlačítka Dále je možné nastavit maximální a minimální hodnoty měřítek os v editačních polích v pravém dolním rohu pod grafem. Nastavení na požadovanou hodnotu je provedeno vždy po opuštění daného pole. Pod grafem jsou dále vypisovány aktuální hodnoty výstupu soustavy a měřeného akčního zásahu. Vzorkovací perioda (velikost kroku simulace) V tomto poli je možné měnit velikost vzorkovací periody v sekundách. Minimální doporučená hodnota, s připojenou měřicí kartou USB-6008, je 7 ms (odvozeno od rychlosti vzorkování výstupního kanálu). Při změně vzorkovací periody a opuštění pole je model přepočítán s její nově nastavenou hodnotou. Periodu vzorkování není možné měnit během spuštěné simulace. Tlačítka Start, Pause a Stop Tlačítkem Start je spuštěna simulace, po jejím spuštění je tlačítko neaktivní. Aktivním se opět stane buď při stisku tlačítka Pause, kdy je simulace pozastavena a po opětovném stisku tlačítka Star pokračuje z bodu, kde skončila, anebo při stisku tlačítka Stop, kdy při dalším stisku tlačítka Start simulace začne z nulového výchozího stavu (vnitřní proměnné simulované soustavy jsou vynulovány).
3.9 Další možná budoucí rozšíření V současném stavu simulátor především postrádá možnost zadání dopravního zpoždění. Které je při návrhu regulátoru velice důležité z hlediska ověření fázové bezpečnosti navrženého regulačního obvodu. Tento nedostatek by se dal například obejít tím, že by se dopravní zpoždění ve tvaru e p aproximovalo přenosem x. řádu pomocí Padého rozvoje a takto upravená soustava by se zadala do simulátoru. Dalším řešením, pohodlnějším pro uživatele, by bylo přímo v programu, aproximovat zadané dopravní zpoždění jako kTvz , kdy při známé velikosti dopravního zpoždění a známé periodě vzorkování Tvz , byla soustava, jelikož výpočet probíhá v diskrétním tvaru, zpožděna o z k kroků, k by muselo být celé číslo, proto by se jednalo pouze o aproximaci. Vhodné by také mohlo být rozšířit simulátor na simulování celého regulačního obvodu, tedy možnost zadávat i přenos regulátoru. Mohly by se tak porovnat průběhy regulačních dějů a akčních zásahů skutečného a simulovaného regulátoru tak, jak jsem
30
to například udělal v ukázce s MATLABem (Obr. 3). A jistě by to ulehčilo i návrh regulátoru. V principu by to bylo rozšíření velice jednoduché, protože vnitřní struktura simulátoru je navrhnuta univerzálně, jednalo by se tedy pouze o aplikaci bokové algebry. Nicméně předělání uživatelského prostředí a odladění je poměrně zdlouhavý proces, na který již nezbyl čas.
31
4
NÁVRH PSD REGULÁTORU
Kompaktní regulátory se vyznačují tím, že v jediném pouzdře soustřeďují všechny hardwarové a softwarové komponenty, které jsou zapotřebí pro řešení běžných regulačních úloh v různých oblastech průmyslové automatizace. Moderní průmyslové kompaktní regulátory mají vedle napájecího zdroje zpravidla pět základních částí – vstupní, ústřední (výpočetní jednotka), výstupní, ovládací a komunikační a dodávají se komplexně připravené k připojení k regulovanému procesu. [24][25]
4.1 Blokové schéma kompaktního regulátoru Na obrázku níže je uvedeno blokové schéma kompaktního regulátoru, ze kterého bylo vycházeno při jeho návrhu.
Obr. 14 Blokové schéma kompaktního PSD regulátoru
4.2 Mikrokontrolér Jako srdce navrženého kompaktního regulátoru byl vybrán mikrokontrolér od firmy Atmel, SAM3S2B z rodiny 32 bitových mikrokontrolérů s jádrem ARM Cortex-M3. Hlavními důvody, proč bylo tak učiněno, byly především: vysoký výkon, 32 bitová architektura umožňuje lehčí práci s velkými čísly, z čehož plyne jednodušší práce s integrační nebo derivační složkou regulátoru, které mohou dosahovat velkých hodnot, jedná se o moderní a v dnešní době velice rozšířené mikrokontroléry,
32
nízká cena nebo při nejmenším srovnatelná cena s architekturou 8051 nebo Atmel AVR, integrované rozhraní USB, dostupné profesionální vybavení pro programování a vývoj aplikací (viz kapitola 5.3)
4.2.1 Krátké seznámení s ARM Cortex-M3 architekturou Obecně zkratka ARM (dříve „Advanced RISC Machine“) reprezentuje 32bitovou mikroprocesorovou RISC architekturu tvořící jádro procesorů. Vyvinuta byla firmou ARM Limited a díky svým přednostem je dnes používána v mnoha vestavěných (embedded) systémech, jako jsou například mobilní telefony, PDA, multimediální přehrávače a do budoucna se s nimi počítá i do notebooků. Konkrétně pak rodina procesorů Cortex-M3 byla navržena s cílem dosáhnout co nejvyššího výkonu, dříve možného jen u high-end procesorů, při co nejnižší ceně pro použití v aplikacích jako jsou například průmyslové řídicí systémy, automobilová elektronika, drátové a bezdrátové telekomunikační systémy, systémy elektrického ovládání atd. Což bylo dosaženo změnou základní architektury použitím sofistikovanějších metod zvyšování výkonu místo pouhého zvyšování taktovací frekvence. Například k dispozici je nová sada příkazů označována jako Thumb-2, která umožňuje dosáhnout až o 70% vyššího výkonu na jeden megahertz než klasické ARM procesory s původní instrukční sadou Thumb. Dalším přínosem nové instrukční sady Thumb-2 je efektivnější C kompilátor, který má možnosti provádět operace s bity a bitovými poli pomocí hardwarového třídění a efektivnější provádění podmínek „if“. Jedním z důvodů, proč jsou tyto procesory ideální pro výše zmíněné aplikace, je i několik možných módů řízení spotřeby. Ve výčtu výhod architektury Cortex-M3 následuje fakt, že tyto procesory využívají zjednodušený programovací model zásobníku, ve kterém se podařilo velmi efektivně provázat ARM jádro s myšlenkami aplikovanými ve standardních 8 a 16bitových mikrokontrolérech. Například tak funkce řízení přerušení umožňuje produkovat velmi jednoduchý kód a to zcela bez použití assembleru nebo složité manipulace s registry. A vývoj dané aplikace je pak snazší a tudíž i levnější. Dále, co se týče obsluhy přerušení, architektura Cortex-M3 nemá rozdělené vektory přerušení na Standard (IRQ) a Fast (FIQ), ale přerušení a jejich priority jsou řízeny přes Nested Vector Interrupt Controller (NVIC), díky němuž zásadním způsobem klesá prodleva při volání obsluhy přerušení. [26][28]
33
4.2.2 Klíčové parametry MCU Atmel SAM3S2B Jedná se o mikrokontrolér s jádrem Cortex-M3 určený především pro průmyslovou automatizaci, měření, použití v hračkách a v lékařství. Mezi jeho klíčové parametry patří [27]: Tabulka 2 Klíčové parametry použitého mikrokontroléru
Parametr
Hodnota
Paměť programu Počet pinů Maximální operační frekvence Počet V/V pinů a ext. přerušení USB modul SPI TWI UART/USART Počet A/D kanálů Rozlišení A/D převodníku Počet D/A kanálů Rozlišení D/A převodníku SRAM EEPROM Časovače PWM kanály Napájecí napětí
Flash, 128 kB 64 64 MHz 47 Ano 1 2 2/2 10 12 bit 2 12 bit 32 kB 0 kB 3 4 1,62 až 3,6 V
4.2.3 Externí EEPROM Jedinou nevýhodou použitého mikrokontroléru je fakt, že nedisponuje vnitřní EEPROM pamětí, která by byla využita pro ukládání uživatelem volitelných časových konstant a nastavení kompaktního PSD regulátoru. Proto byla použita EEPROM paměť externí, která je k mikrokontroléru připojena přes sériovou sběrnici I2C. Byla použita paměť 24AA025E48 o velikosti 2 kB a maximální frekvencí pro čtení a zápis 400 kHz. Použitá paměť je pro dané požadavky naprosto dostačující. Budou se do ní ukládat velikosti časových konstant regulátoru a velikost poslední nastavené žádané hodnoty, případně další provozní nastavení. Čtení probíhá pouze při inicializaci regulátoru a zápis pouze při změně daného parametru.
4.3 Vstupní obvody regulátoru Navržený kompaktní regulátor disponuje dvěma napěťovými analogovými vstupy s rozsahem ±10 V, které bude možno použít buď jeden jako vstup pro měření skutečné regulované veličiny a druhý vstup použít pro měření velikosti žádané analogové
34
veličiny. Druhý způsob bude předpokládat, že žádaná hodnota se nastaví ručně pomocí ovládání a bude možno regulovat soustavy s více vstupy a více výstupy, neboli MIMO soustavy (Multiple Input Multiple Output). Dále pak regulátor disponuje čtyřmi digitálními vstupy se společným záporným vodičem.
4.3.1 Analogové vstupy Jako analogově digitální převodník pro PSD regulátor byl vybrán převodník AD7367 od firmy Analog Devices, který splňoval požadované parametry: dva analogové vstupy, vstupní rozsahy ±10 V, rozlišení 12 až 14 bitů a komunikace přes sériové rozhraní. Konkrétně se tedy jedná se o dvoukanálový 14bitový vysokorychlostní převodník s malým výkonovým odběrem založený na principu postupné aproximace, který dokáže převádět analogovou veličinu na digitální s rychlostí až 1 MSPS. Použitý převodník má tři volitelné vstupní rozsahy ±10 V, ±5 V a 0 až 10 V. Komunikace s převodníkem probíhá přes rychlé sériové rozhraní SPI.[29]
Obr. 15 Schéma zapojení analogových vstupů
Schéma zapojení analogových vstupů je na Obr. 15. Jedná se prakticky o katalogové zapojení, které je upraveno tak, aby převodník pracoval v takovém režimu, v jakém je to vhodné pro tuto aplikaci. Bude popsáno dále. Ke všem vstupním napájecím napětím do převodníku jsou paralelně připojeny dva blokovací kondenzátory 100 nF a 10 μF. Jako referenční napětí převodníku je použito externí napětí 2,5 V z lineárního stabilizátoru, které je společné i pro D/A převodník. Je přivedeno na piny DCAPA a DCAPB, aby bylo možné využívat externí referenci, je třeba ještě připojit pin REFSEL na log. 0. Dnešní systémy požadují izolační napětí větší jak 2 kV, proto je celá část na straně převodníku galvanicky oddělena od digitální části pomocí galvanických oddělovačů série ADUM1400 a napájena zvlášť, viz kapitola o napájecí části.[25]
35
Z převodníku mohou být data čteny paralelně z obou kanálů najednou, avšak z důvodu, že použitý mikrokontrolér disponuje pouze jedním sériovým rozhraním SPI, jsou data čtena pouze z DoutA. Toho se dá docílit tak, že po změně stavu CS se bude jeho hodnota držet na log. 0 po dobu 28 hodinových cyklů (SCLK), místo obvyklých 14, když jsou k dispozici oba výstupní piny. Pomocí pinů RANGE0 a RANGE1 převodníku se volí jeho vstupní rozsah. Přivedením těchto pinů na zem, tedy na log. 0 je rozsah převodníku nastaven na ±10 V. Nastavením pinu ADDR na log. 0 jsou vybrány jako vstupní kanály pro převod VA1, VB1 a VA2, VB2 jsou spojeny s referenční zemí. Což je možná nevýhoda tohoto převodníku, protože jeho vstupy se dají použít pouze jako single-ended, nikoli však v diferenčním zapojení. Jako napěťová ochrana vstupů slouží dva transily SM6T15CA, které by se při překročení vstupního napětí na více než 15 V zkratovaly a ochránily tak vstupní obvody převodníku. Důvod, proč byly vybrány transily se zkratujícím napětím 15 V, byl ten, že maximální přivedené napětí na vstupy analogově digitálního převodníku může být UDD + 0,3 tedy 15 + 0,3 V. Pasivní vstupní filtr A/D převodníku byl navržen s ohledem na minimální nastavitelnou vzorkovací periodu regulátoru tak, aby byly potlačeny a nezesilovány rušivé signály s vyšší frekvencí, než je frekvence vzorkování. Minimální vzorkovací perioda bude nastavitelná na 1 ms a parametry RC členu, při volbě velikosti kondenzátoru 100 nF, budou určeny následovně:
RC R
C
1 10 3 10 k 100 10 9
(4.1)
4.3.2 Digitální vstupy Subsystém digitálních vstupů snímá informace o technologických proměnných, které mají binární charakter, může se jednat o stavy koncových spínačů (ventily, akční členy), stykačů, nebo mohou být využity pro převod proměnných, které jsou měřeny pomocí čidel s digitálním výstupem, dále mohou být použity pro měření signálů, které mají pulsní charakter.[30] Všechny digitální vstupy jsou galvanicky odděleny optočlenem BPC-817B s izolačním napětím 5 kV. Tohoto zapojení se používá k ochraně logické části. Zapojení použité v navrženém kompaktním regulátoru je zobrazeno na Obr. 16 a při návrhu bylo vycházeno ze standardně používaného zapojení, viz [30]. Navržený regulátor má pak tyto moduly čtyři a jsou zapojeny jako čtyři digitální vstupy se společným záporným vodičem. Úroveň logické 1 je 10 V, navržená rozlišovací schopnost je však již od 8 V.
36
Obr. 16 Modul digitálních vstupů
Paralelně ke vstupu a společnému vodiči je zapojena LED dioda signalizující logickou úroveň 1. Antiparalelně k ní je zapojena ochranná univerzální dioda BAS32, která slouží k ochraně obvodu proti přepólování. Nyní bude postoupenu dále k návrhu. Jednou z důležitých vlastností optočlenu je závislost spínací a rozpínací doby na velikosti kolektorového rezistoru (zde na obrázku R38). S jeho snižováním se tyto doby zkracují, je tedy vhodné volit ho co nejmenší, aby bylo třeba možné digitální vstupy použít pro měření s digitálními čidly. Při snižování hodnoty kolektorového rezistoru však dochází ke zvýšení proudové spotřeby a tedy i energetické náročnosti. Jako omezující faktor se uplatňuje také závislost proudového přenosu CTR na velikosti budícího proudu LED části optočlenu. Ze závislosti je zřejmé, že zvyšování budícího proudu IF, které je při snižování zatěžovacího odporu R38 nezbytné, aby došlo k dostatečnému sepnutí fototranzistoru, je výhodné pouze do určité hodnoty, kdy je přenos maximální (u použitého optočlenu je to v rozmezí od 10 do 20 mA). Při dalším zvyšování proudu IF dochází ke snížení proudového přenosu a nárůst proudu fototranzistorem není odpovídající.[31] Z charakteristiky uváděné výrobcem [32], ze závislosti proudového přenosu CRT na budícím proudu byl budící proud IF zvolen 10 mA a tomu odpovídající napětí na LED optočlenu UF = 1,2 V. Pro tyto hodnoty bude tedy navržen napěťový dělič složený z rezistorů R39 a R41. Na Zenerově diodě D11 (BZV55C5.1) vzniká Zenerovo napětí 5,1 V, tato dioda je v zapojení použita proto, aby se na odporech děliče nemusel pálit takový výkon, protože na ní vzniklé napětí se odečítá od napájecího. Na vstupu děliče tvořeného rezistory R39 a R41 uvažujme napětí UR rovné podle druhého Kirchhoffova zákona: U vst U D11 U R U D13 0 , (4.2) po upravení a dosazení: U R 8 5,1 1 1,9 V .
(4.3)
Nyní je třeba vypočítat velikost odporů zatíženého děliče, velikost zátěže se určí v závislosti na zvoleném budícím proudu optočlenu, viz výše, a Rz bude tedy:
37
RZ
UF 1,2 120 . I F 10 10 3
(4.4)
Pro zatížený dělič platí, když napětí UF je rovno napětí na rezistoru R39, a je výstupním napětím děliče: R39 RZ UF UR (4.5) R41 R39 RZ R39 R41 RZ Po úpravě a za předpokladu, že rezistor R39 se bude volit a dopočítávat se bude rezistor R41: U R39 RZ F R39 RZ U UR (4.6) R41 R , R39 RZ UF po zvolení R39 = 300 Ω a dosazení do vzorce (4.6) vyjde velikost rezistoru R41 = 50 Ω. Nakonec je třeba určit optimální hodnotu kolektorového rezistoru R38, která by měla být co nejnižší, aby bylo zajištěno co nejrychlejší spínání a rozepínání fototranzistoru. Dále je třeba, aby byl fototranzistor v aktivním stavu saturován, protože v tomto stavu je zaručeno, že napětí Uce bude pod hodnotou, která určuje logickou 1 mikrokontroléru. R38 se tedy určí jako minimální hodnota, při které je tranzistor v saturaci [31]: U U CESat R39 CC , (4.7) I F CTRmin kde UCESat je maximální hodnota saturačního napětí fototranzistoru a CTRmin je minimální proudový přenos optočlenu. Po dosazení do rovnice (4.7) tedy: 3,3 0,2 R39 387,5 390 . (4.8) 10 10 3 0,8
4.4 Výstupní obvody regulátoru Navržený PSD regulátor disponuje dvěma analogovými a čtyřmi digitálními výstupy. U digitálních výstupů je třeba mít na paměti, že po odpojení napájení mikrokontroléru jsou výstupy v sepnutém stavu. Toto chování je způsobeno použitím výstupních výkonových tranzistorů s N kanálem.
4.4.1 Analogové výstupy Při výběru digitálně analogového převodníku se vycházelo z parametrů analogově digitálního převodníku, aby si byly parametrově blízcí. Byl tedy vybrán převodník AD5732 opět od firmy Analog Devices. Jedná se o dvoukanálový bipolární 14bitový převodník s malým šumem a dobou nastavení výstupu maximálně 10 μs, s volitelnými rozsahy výstupních napětí +5 V, +10 V, +10,8 V, ±5 V, ±10 V nebo ±10,8 V. Na rozdíl
38
od A/D převodníku se výstupní rozsah volí softwarově nastavením patřičných registrů v převodníku. Komunikace s převodníkem probíhá opět přes rychlé sériové rozhraní SPI, kdy je schopen komunikovat rychlostí až do 30 MHz. [33] Schéma zapojení převodníku je zobrazeno na Obr. 17.
Obr. 17 Schéma zapojení analogových výstupů
Ke všem napájecím napětím převodníku jsou paralelně připojeny dva blokovací kondenzátory 100 nF a 10 μF. D/A převodník používá stejné externí referenční napětí 2,5 V jako A/D převodník. Ze schématu je opět vidět, že analogová část obsahující převodník je galvanicky oddělena od digitální části pomocí galvanického oddělovače ADUM1400. Přivedením pinu BIN/2sCOMP na logickou 1 bylo zvoleno proto, že se s převodníkem bude komunikovat v binárním tvaru dat, kdyby byl připojen na log. 0, byla by data zpracovávána ve tvaru druhého doplňku. Pin CLR slouží k resetování registrů D/A převodníku a je aktivován při přivedení na log. 0. V budoucí aplikaci se nepočítá s využitím této funkce, a proto je na něj trvale přivedena log. 1. Analogové výstupy jsou opět chráněny transily.
4.4.2 Digitální výstupy Navržený PSD regulátor má k dispozici čtyři digitální výstupy. Jako výkonové spínače byly použity dva spínací duální tranzistory NFET, jež mohou spínat zátěže až do napětí
39
50 V a proudu 3 A na jeden tranzistor. V tomto rozsahu však nyní nebudou využity. Maximální proud je nyní omezen vstupní ochrannou diodou proti přepólování D18 na 4 A, pro všechny čtyři digitální výstupy dohromady. Do budoucna by možná bylo ještě vhodné doplnit vstupní obvod pro napájení zátěží o proudovou pojistku. Napěťovou ochranu tvoří transil. Hodnota maximálního napětí je nyní omezena na 10 V, protože pro tuto hodnotu probíhal návrh pro spínací obvod tranzistoru T1. Dioda D14 plní funkci ochrany tranzistoru T1, aby bylo možné spínat zátěže indukčního charakteru. Po odpojení napájení mikrokontroléru jsou výstupy v sepnutém stavu, což je způsobeno použitím výkonového tranzistoru FET s N kanálem, takže je třeba s tímto chováním v případné budoucí aplikaci počítat. Nebo řešením by bylo použití tranzistorů s obdobnými parametry ale s P kanálem.
Obr. 18 Modul digitálních výstupů
Návrh nastavení pracovního bodu optočlenu probíhal obdobě jako u digitálních vstupů. Nejprve bylo nutné z charakteristiky uváděné výrobcem [32] ze závislosti proudového přenosu CRT na budícím proudu zvolit budící proud. Opět bylo IF zvoleno 10 mA a tomu odpovídající napětí na LED optočlenu UF = 1,2 V. Z těchto předpokladů se pak vyšlo pro výpočet velikosti rezistoru R44: U U F 3,3 1,2 (4.9) R44 cc 210 220 . IF 10 10 3 Dále je nutné vhodně navrhnout kolektorový rezistor optočlenu R42, opět obdobně jako u digitálních vstupů, viz rovnice (4.7): U U CESat 10 0,2 R39 CCout 1225 1200 . (4.10) I F CTRmin 10 10 3 0,8 Navrženými digitálními výstupy lze spínat zátěže, jako jsou třeba elektromagnety, anebo se jejich pomocí dají řídit otáčky elektromotoru pomocí pulsně šířkové modulace (PWM), nevýhodou tohoto zapojení však je, že se musí jednat o stejnosměrné prvky a nelze tak řídit střídavé zátěže. To by bylo možné například za využití opticky spínaného triaku, pro dané využití regulátoru je ale toto řešení plně dostačující.
40
4.5 Periferie V této podkapitole budou popsány periferie pro ovládání regulátoru. Budou popsány průmyslové periferie pro komunikaci po průmyslových sběrnicích RS485 a RS232 a pak také zapojení USB rozhraní. Dále bude popsán použitý displej a způsob ovládání nastavení regulátoru pomocí inkrementálního dekodéru.
4.5.1 RS485, RS232 a USB Použitý mikrokontrolér disponuje dvěma sériovými rozhraními UART a vlastním integrovaným USB rozhraním. Proto mohou být všechny tyto periferie použity nezávisle na sobě. V opačném případě, jak to u některých zařízení bývá, by bylo nutné mezi nimi přepínat mechanickými přepínači. Pro zapojení periferie RS485 regulátoru je použito sériové rozhraní mikrokontroléru UART0 a pin PA25 (označený jako RTS) pro řízení směru komunikace, protože standart RS485 je definován jako poloviční duplex. Jako převodník je použit obvod MAX3075EESA, který má maximální přenosovou rychlost 500 kbps. Pomocí jumperu JP3 se dá připojit nebo odpojit terminační odpor. Transily slouží jako ochrana.
Obr. 19 Převodník UART RS485
Pro zapojení periferie RS232 regulátoru je použito sériové rozhraní mikrokontroléru UART1 a převodník napěťových úrovní MAX3232CWE, s garantovanou přenosovou rychlostí 120 kbps. Jako nábojové pumpy pro převodník jsou použity tantalové kondenzátory s kapacitou 0,1 μF.
Obr. 20 Převodník UART RS232
41
Pro zapojení periferie USB regulátoru není potřeba používat další externí převodník, protože použitý mikrokontrolér už má sériové rozhraní USB integrováno v sobě. Je potřeba pouze pár externích součástek, které jsou zapojeny podle doporučení výrobce, odpory R14 a R19 jsou voleny opět podle doporučení výrobce. Linka VBUSMON slouží k detekci připojení. Podmínkou, kterou je nutné splnit, aby mohlo být použito USB rozhraní, je, že bude použit krystal s frekvencí 12 MHz pro určení frekvence MCU.
Obr. 21 Zapojení USB portu
4.5.2 Displej Jako zobrazovací jednotka regulátoru je použit displej s rozměry 2x16 znaků FDCC1602L-FLYYBW-91LE s řadičem HD44780, původně byl k dispozici displej 4x20 znaků CM200400SFAYAG02, ale zde se objevily problémy s napájením displeje. Tento displej je totiž určen primárně pro systémy pracující s napěťovými úrovněmi o velikosti 5 V. Procesory ARM však, aby byla snížena spotřeba, pracují s logickými úrovněmi 3,3 V. Logická část displeje je schopna pracovat již od 2,7 V, problém je však v napájení LCD části displeje, kde je potřeba získat napětí UDD – UEE = 4,7 V (UDD = napájecí napětí logické části, UEE = napájecí napětí pro řízení LCD).[34] Toho by se dalo dosáhnout napětím UEE s opačným potenciálem nebo přidáním dalšího 5 V DC-DC měniče. V napájecí části je sice vytvořena větev s 5 V, ale ta je použita v analogové části regulátoru a je galvanicky oddělena od digitální části. Nejjednodušším a nejlevnějším řešením tedy bylo koupit displej jiný a určený přímo pro napájecí napětí 3 V. Displej je používán v osmibitovém režimu, protože u těchto typů řadičů se občas vyskytují problémy s přepnutím do čtyř bitového režimu.[35] Displej je zapojený podle doporučení výrobce. Kontrast displeje je možné měnit pomocí trimru R36.
42
Obr. 22 Použitý displej [34]
4.5.3 Ovládání Jelikož je v návrhu kompaktního PSD regulátoru použit displej s řadičem HD44780 v 8bitovém zapojení nezbylo již dostatečně dost volných pinů portů pro použití maticové klávesnice, která by bezesporu byla pro ovládání regulátoru nejpohodlnější, dalším možným řešením by mohlo být použití klávesnice komunikující s mikrokontrolérem přes sériové rozhraní I2C, na druhou stranu by ale takovéto klávesnice zabíraly hodně místa. Bylo tedy třeba najít jiné, co nejjednodušší řešení. Pro ovládání regulátoru a pro jeho nastavování je tedy použit inkrementální kodér s funkcí jednoho tlačítka. Toto řešení zabere pouze tři piny mikrokontroléru a ovládání by mělo být celkem pohodlné a intuitivní. Výhodou je i to, že se dá i snímat rychlost otáčení kodéru a tudíž i rychlosti změny nastavovaných parametrů se mohou měnit. 4.5.3.1
Princip inkrementálního kodéru
Kodér je založen na principu různě dlouhých výstupních impulsů závislých na rychlosti otáčení hmatníku. Pro určení směru rotace se ještě vyhodnocuje druhý, fázově posunutý signál. Nastavovaná proměnná se inkrementuje nebo dekrementuje na základě jednoduché logiky vycházející z následujícího obrázku.
Obr. 23 Princip vyhodnocovaní signálu inkrementálního dekodéru [37]
K přičítání nebo odečítání dochází při obou hranách signálu A. Signál B rozhoduje, zda k inkrementované proměnné přičíst nebo odečíst hodnotu jedna.
43
Popis funkce: Při náběžné hraně signálu A: Bude-li signál B v log. 1, bude se inkrementovat. Bude-li signál B v log. 0, bude se dekrementovat. Při sestupné hraně signálu A: Bude-li signál B v log. 1, bude se dekrementovat. Bude-li signál B v log. 0, bude se inkrementovat. Výše popsaný princip lze použít, je-li použit dostatečně kvalitní kodér.[37]
4.6 Napájecí část PSD regulátor je napájen stejnosměrným napětím 24 V, tato hodnota byla zvolena, protože se jedná o průmyslový standard. Zapojení celé napájecí části je uvedeno na Obr. 24 a bude popsáno níže. Na vstupu napájecí části jsou ochranné prvky tvořené pojistkou, univerzální diodou, která slouží jako ochrana proti přepólování a transilem, který slouží jako ochrana proti napěťovým špičkám nebo pro případ, že by na vstup bylo připojeno napětí větší než 27 V. Kdyby tento případ nastal, transil se zkratuje. Na vstupu jsou ještě dva kondenzátory, elektrolytický pro pokrytí odběrových špiček a keramický filtrační kondenzátor 100 nF, který filtruje vysoké kmitočty.
Obr. 24 Schéma napájecí části
Pro napájení jednotlivých komponent PSD regulátoru jsou zapotřebí tři úrovně napájecích napětí. Jelikož budou převodníky použity v bipolárním režimu s rozsahy vstupních a výstupních napětí v rozmezí -10 V až +10 V, je pro napájení analogové části A/D a D/A převodníků třeba symetrické napětí ±15 V, pro napájení logických
44
úrovní analogové části je zapotřebí napětí 5 V, toto napětí je ještě využito pro napájení lineárního stabilizátoru, který slouží jako referenční napětí pro převodníky a nakonec je potřeba napětí 3,3 V pro napájení digitální části regulátoru a displeje. Pro transformaci na tyto napětí ze vstupního napětí 24 V byly vybrány DC-DC měniče od firmy Texas Instruments. DC-DC měniče byly vybrány hlavně z důvodu jejich vysoké účinnosti (např. DCP022405U až 81 % při maximálním zatížení [36]) oproti lineárním stabilizátorům a také proto, že navržený PSD regulátor má jednotlivé, ať už digitální či analogové vstupy a výstupy galvanicky oddělené od řídící digitální části, tudíž jsou DCDC měniče vhodnou součástkou pro galvanicky oddělené napájení jednotlivých částí. Jakým způsobem jsou, které části odděleny je patrné z blokového schéma, viz Obr. 14. Další nepopiratelnou výhodou je fakt, že zapojení měničů si vyžádá minimum externích součástek. Naopak nevýhodami mohou být jejich větší výstupní šum oproti lineárním stabilizátorům a jejich v dnešní době ještě poměrně vysoká cena. Zapojení měničů jsou podle doporučení výrobce, jsou pouze doplněny o indikační LED pro jednotlivé větve napětí. Výběr konkrétních měničů vychází z energetické odběrové rozvahy uvedené v Tabulka 3, Tabulka 4 a Tabulka 5. V tabulkách jsou uvedeny maximální proudové odběry jednotlivých zařízení. Z tabulek je zřejmé, že použité měniče jsou dostatečně dimenzované a měly by být schopny pokrýt i proudové špičky, které například mohou vzniknout při zapnutí regulátoru, kdy se nabíjejí všechny externí kondenzátory. Naproti tomu však stojí fakt, že, při takovémto nízkém zatížení bude i nižší účinnost měničů. Tabulka 3 Napájecí větev ±15 V
Napájecí větev ±15 V AD7367 (ISS + IDD)1 AD5732 (AISS + AIDD)2
3,6 mA 5,65 mA/kanál
Celkem 14,9 mA 3 Max. zatížení DC-DC DCP022415 133 mA 1 Převodník je v módu „Normal operation“ 2 Při nezatížených výstupech 3 Vypočteno ze vztahu IMAX = P/VNOM = 2 W/15 V Tabulka 4 Napájecí větev 5 V
Napájecí větev 5 V AD7367 (ICC)1 AD5732 (DICC) 2x ADUM 1400 (IDD2) 2 ADUM 1402 (IDD2) 2 REF 192
5,56 mA 3 μA 10 mA 7 mA 10 mA
Celkem 32,564 mA 3 Max. zatížení DC-DC DCP022405 400 mA 1 Převodník je v módu „Normal operation“ 2 Při přenosech do 10 Mbps 3 Vypočteno ze vztahu IMAX = P/VNOM = 2 W/5 V
45
Tabulka 5 Napájecí větev 3,3 V
Napájecí větev 3,3 V 24AA025E481 Displej SAM3S2 MAX3232CWE MAX3075EESA 2x ADUM 1400 (IDD2) 3 ADUM 1402 (IDD2) 3
3 mA 2 mA 40 mA 1 mA 1,5 mA 18 mA 7 mA
Celkem 72,5 mA Max. zatížení DC-DC DCP012403 390 mA 1 Při zápisu do EEPROM 2 MCU je v módu „Active Mode“, dále jsou přičteny odběry aktivních periférií a uvažovány nezatížené výstupy 3 Při přenosech do 10 Mbps
4.7 Známé chyby v hardwarovém návrhu REV. 1 Protože deska plošný spojů byla v diplomové práci vyrobena podle schématu a dokumentace REV. 1, jsou v následující tabulce uvedeny chyby a problémy, které byly objeveny během oživování a testování kompaktního PSD regulátoru (poznm.: REV. 2 regulátoru fyzicky neexistuje, jedná se pouze o verzi schématu a dokumentace, která je uvedena v této diplomové práci). Tabulka 6 Známé chyby v HW návrhu
Popis problému
Akce
Status
Napájecí napětí ±15V pro analogovou část AD převodníku jsou přehozeny Schématická značka DC-DC měniče DCR012403 má výstup pro 0 V na pinu č. 13, správně má být na pinu 15 Na straně digitálních vstupů vyměnit indikační diody, současné oranžové svítí i při malých napětích, tudíž neprobíhá optická indikace log. stavu, indikace úrovně mikrokontrolérem je v pořádku Změnit pouzdro kondenzátoru C9 v napájecí části (v daných parametrech se nevyrábí jako SMD) Elektrolitické blokovací kondenzátory AD a DA převodníků C12, C15, C23, C21, C34 a C38 nahradit tantalovými
Opravit schéma a DPS
Opraveno v REV. 2 Opraveno v REV. 2
Změnit pouzdra Zenerových diod D2, D5, D8 a D11 na pouzdro SOD80
Opravit schématickou značku a DPS Přepájet na DPS
Odloženo – nemá zásadní vliv na funkčnost
Opravit ve schématu a změnit DPS Změnit ve schématu a upravit DPS
Opraveno v REV. 2 Odloženo – nemá zásadní vliv na funkčnost Opraveno v REV. 2
Opravit ve schématu a změnit DPS
46
Změnit pouzdro usměrňovací diody D18 na pouzdro SMC (z tohoto důvodu musela být použita jiná dioda než je uvedena ve schématu a to 1N4007, takže maximální vstupní proud musí být omezen na 1 A) Po vypnutí MCU jsou digitální výstupy v aktivním stavu, což je to způsobeno použitím NFET tranzistorů Nepřiletovávat rezistory R8 a R10, je na nich samozřejmě úbytek napětí a měření není správné
Opravit ve schématu a změnit DPS
Opraveno v REV. 2
Zvážit použití tranzistorů s P kanálem, minimálně však upozornit uživatele Platí i pro REV. 2
Na tuto skutečnost je v dok. uživatel upozorněn R8 a R10 nepoužity
47
5 SW IMPLEMENTACE REGULÁTORU 5.1 PID regulátory Hodně praktických aplikací řízení je řešeno za pomoci PID regulátoru. Jeho základní rovnice, Karlem Åströmem označována jako učebnicová, je dána vztahem [30][41]: t det 1 , (5.1) u t K et e d TD T dt I 0 kde K je zesílení PID regulátoru, TI je integrační konstanta, TD derivační konstanta, e(t) regulační odchylka (rozdíl mezi žádanou veličinou výstupní hodnoty a její měřenou skutečnou hodnotou) a u(t) je akční zásah. Proporcionální zesílení odpovídá přirozené akci regulátoru, integrační složka potlačuje trvalou ustálenou odchylku a derivační složka regulátoru je zavedena z důvodu zrychlení přechodového děje a zlepšení stability. Nevýhodou zavedení integrační složky je však to, že zhoršuje stabilitu regulačního obvodu a zpomaluje přechodový děj tím, že prodlužuje periodu kmitů. Z dosavadního výkladu by se mohlo zdát, že derivační složka má na regulační děj pouze pozitivní vliv, to však platí pouze do určitých mezí, kdy příliš velká derivační konstanta může vlastnosti regulačního obvodu zhoršit.[30] Z historického hlediska byl takto popsaný spojitý PID regulátor dostačující. Avšak s nástupem číslicové technologie pouhá jednoduchá transformace vztahu (5.1) do diskrétní oblasti není z mnoha důvodů dostačující a je třeba ji rozšířit (např. omezení velikosti integrační složky atp.).[41] Pomocí Laplaceovy transformace lze za nulových počátečních podmínek získat přenos PID regulátoru ve tvaru [30][39]:
FR p
T p 1T2 p 1 . U p 1 K 1 TD p k r 1 E p p TI p
(5.2)
Čistá derivace ve vztahu (5.2) je však z fyzikálního pohledu nerealizovatelná [30] a navíc i z teoretického hlediska by její implementace měla za následek velké zesílení vstupního šumu.[41] Proto se do derivační složky regulátoru zavádí časová T konstanta D a přenos je tak ve tvaru: N T p 1T2 p 1 TD p U p 1 K 1 FR p , (5.3) kr 1 TI p TD p p 1 E p p 1 N upravený tvar přenosu derivační části regulátoru dobře aproximuje derivaci na nižších frekvencích a pro vyšší funguje jako filtr. Což ilustruje Obr. 25. Konstantou N se pak volí frekvence zlomu, kde se amplitudová frekvenční charakteristika láme z +20 dB/dek na 0 dB/dek a vyšší frekvence tak nejsou dále zesilovány. Její doporučená velikost se
48
pohybuje v rozmezí od 3 do 20 (čím nižší volba N tím budou filtrovány nižší frekvence).
Obr. 25 Frekvenční charakteristika PID regulátoru ideálního a s filtrací derivační složky [39]
5.2 Diskretizace PID regulátoru Číslicová verze spojitého PID regulátoru se dá získat různými metodami diskretizace integrace a derivace. Integrace bude nahrazena pomocí náhrady spojitého signálu obdélníky zleva Obr. 26a. Další možné náhrady mohou být obdélníky zprava či náhrada lichoběžníky. Takto nahrazená integrace je pak ve tvaru [30][40]: t
k
0
i 1
e d T ei ,
(5.4)
a přibližná náhrada derivace je možná nahrazením diferencemi podle Obr. 26b [30][40]: de ek ek 1 , (5.5) dt T kde T je vzorkovací perioda a e regulační odchylka.
Obr. 26 a) Náhrada integrace obdélníky zleva, b) náhrada derivace[30]
49
Po dosazení získaných náhrad do vztahu (5.1) a nahrazení spojitého času diskrétními kroky k je možné odvodit algoritmus diskrétního PSD (proporcionálně – sumačně – diferenčního) regulátoru v následujícím tvaru, který je nazýván polohovým algoritmem [30][40]: T T k (5.6) u k K ek ei D ek ek 1 . TI i 1 T Důvodem tohoto názvosloví je, že výstup z regulátoru je absolutní hodnota řídícího signálu. Například poloha ventilu. V jiných případech je výhodné přesunout integrační část mimo řídící algoritmus. Toho se dá přirozeně dosáhnout například při řízení krokového motoru. Výstup regulátoru pak reprezentuje přírůstek akčního zásahu, nikoli absolutní hodnotu u(k) v daném okamžiku, a motor plní funkci integrace[38][40]. Tato reprezentace PSD regulátoru se nazývá přírůstkovým typem regulátorem a přírůstek je tedy: u k u k u k 1 , (5.7)
dosadí-li se do vztahu (5.7) akční zásahy v kroku k a v kroku k-1 odvozené ze vztahu (5.6) získáme rovnici přírůstkového algoritmu[30][40]: T u k K ek ek 1 TI T D ek 1 ek 2 , T
k
ei i 1
T TI
k 1
ei i 1
TD ek ek 1 T
T T u k K ek ek 1 ek D ek 2ek 1 ek 2 , TI T
(5.8)
(5.9)
T T T T (5.10) u k K 1 D ek K 1 2 D ek 1 K D ek 2 T T TI T a po úpravě je výsledný tvar přírůstkového algoritmu PSD regulátoru ve tvaru diferenční rovnice následující: u k u k 1 a 0 ek a1ek 1 a1ek 2 , (5.11)
kde koeficienty a nahradily jednotlivé vztahy mezi konstantami vyskytujícími se ve vztahu (5.10).
5.2.1 Omezení integrační složky (antiwindup) Použití integrační složky může prodlužovat přechodový, zvláště pak v případě, kdy neintegrovaná hodnota na integrátoru je vyšší než hodnota, kterou dokáže akční člen zpracovávat. Obdobná situace nastává v sumační složce PSD regulátoru. Kdy na sumátoru může být hodnota vyšší, než kterou výstupní obvody regulátoru jsou schopny převést. Například v sumační složce regulátoru je nasumovaná hodnota 25 V, ale výstupní D/A převodník má použitelný rozsah pouze ±10 V. U analogových regulátorů
50
realizovaných operačními zesilovači existuje přirozené omezení maximálního napětí, které je možné obvodem zpracovávat, v podobě nasycení. U diskrétní analogie spojitých regulátorů ale toto omezení obecně neexistuje. Teprve až po jisté době, kdy se znaménko regulační odchylky změní, začne hodnota na sumátoru klesat. Prodloužení regulačního děje je tedy způsobeno tím, vezmeme-li v úvahu příklad výše, že akční zásah by měl být v této chvíli již menší než oněch maximálních 10 V, ale než se sumační složka dekrementuje z 25 V, zabere to nějaký čas. V literatuře se tento jev označuje jako přebuzení (windup) regulátoru.[30][38] Existuje více možností jak regulátor chránit proti přebuzení (antiwindup), nejjednodušší je přestat aktualizovat sumační složku, je-li výstupní obvod nebo akční člen saturován.
5.2.2 PSD regulátor s filtrací derivační složky Pro dobrou dynamickou odezvu na změnu žádané hodnoty a rychlé vyregulování poruchových signálů vznikajících v regulovaném procesu se doporučuje frekvence vzorkování vyšší než frekvence splňující Shannon-Kotělnikovův teorém a to: T 6 max až 20 max , (5.12) kde ωT je frekvence vzorkovací frekvence a ωmax je maximální frekvence vyskytující se v signálu. Splnit tuto podmínku pro šum a brum by vyžadovalo nereálně vysokou frekvenci vzorkování. Při realizaci diskrétního regulátoru je třeba dbát na to, aby byly analogovým filtrem dobře potlačeny všechny rušivé signály s frekvencí vyšší, než je frekvence vzorkování.[30] Dále je vhodné nezesilovat vysoké frekvence ani regulátorem, které způsobuje derivační složka, viz kapitola 5.1. Pro odvození PSD regulátoru s jednoduchým, ale účinným filtrem derivační složky vyjdeme z rovnice (5.3), integrační náhradu podle (5.6) a převodem do Z-transformace dostaneme [30]: Tvz z 1 1 z 1 FR z K 1 (5.13) N . T 1 vz T 1 z I 1 e TD z 1 A stavový diagram PSD regulátoru s filtrační složkou, ze kterého bylo vycházeno při jeho realizaci v mikrokontroléru, je zobrazen na Obr. 27, kde nelinearity typu nasycení slouží pro omezení integrační složky (antiwindup).
51
Obr. 27 PSD regulátor s filtrací derivační složky [30]
5.3 Programovací prostředky Po literární rešerši pro práci s procesory ARM bylo často naráženo na fakt, že i v celkem nedávné minulosti se autoři bakalářských nebo diplomových prací vyhýbali architektuře ARM z důvodu neexistence profesionálního, lehce dostupného a pro akademické účely volného vývojového prostředí a dostupného programátoru. Tento fakt byl potvrzen i vedoucím této práce. Avšak doba pokročila dále a výše uváděné skutečnosti nejsou nyní již pravdou. Například vývoj softwarového vybavení pro kompaktní regulátor v této diplomové práci probíhal ve vývojovém prostředí Keil μVision 4. Keil nabízí zdarma verzi, ve které jsou dostupné prakticky všechny funkce plné verze, pouze s omezením velikosti programu na 32 kB, což je pro danou aplikaci naprosto dostačující. Navíc je firma Keil podporována přímo firmou ARM, tudíž má ty nejlepší předpoklady pro tvorbu vývojového prostředí.[41] Dalším plusem je, že Atmel své odladěné knihovny pro procesory ARM má připravené právě přímo pro μVision.[42] Během psaní této diplomové práce navíc i sám Atmel připravil novou verzi jejich vývojového prostředí Atmel Studio 6.0, která nyní umožňuje kromě podpory vývoje aplikací pro architekturu AVR také podporu architektury ARM. Dále i dostupnost programátorů a ladících nástrojů pro rozhraní JTAG je také o něco lepší. Například profesionální USB JTAG emulátor od firmy Segger, J-link, podporovaný přímo v μVision je ve studentské verzi k dispozici pouze za 49,98€. Opět nabízí všechny funkce profesionální verze, mezi ně patří například i velice pohodlná automatická aktualizace firmwaru, jediným omezením je, že vyvíjená aplikace nesmí sloužit pro komerční účely.[43]
52
Použitím profesionálních nástrojů tak odpadly problémy s nekompatibilitou a problémy z důvodu špatného odladění volně dostupných nástrojů, to vše při zachování minimálních nákladů. Protože celá koncepce SW simulátoru analogových soustav a k němu navrhnutému PSD regulátoru má sloužit k simulovanému řízení laboratorních mikrokontrolérových systémů, je tedy i jeho cena velice důležitá. Ta by se dala ještě více snížit nepoužitím programátoru a debuggeru J-link, jelikož vybraný mikrokontrolér je možné programovat přímo přes USB rozhraní pomocí jeho vnitřního bootloaderu a Atmelem zdarma dodávaným softwarovým programátorem SAM-BA, to byl i jeden z důvodů, proč byl vybrán daný mikrokontrolér. Tento přístup je však velice nepohodlný z důvodu nemožnosti krokování programu, čímž se vývoj softwaru neúměrně prodlužuje.
Obr. 28 Použitý USB JTAG emulátor firmy Segger [43]
5.4 Stručný popis implementovaného algoritmu Pro práci s mikrokontrolérem a komunikaci s jeho perifériemi byl použit softwarový balíček s knihovnami, které firma Atmel nabízí volně ke stažení na svých stránkách. [42] Z dnešního hlediska - požadavku co nejrychlejšího vývoje aplikace, již nemá smysl si podobné knihovny psát sám a všichni velcí výrobci mikrokontrolérů v tomto směru nabízejí velmi rozsáhlou podporu a příklady použití. Kvalitní podpora svých produktů je totiž klíčovým parametrem pro úspěch v jinak velmi vyrovnaném konkurenčním prostředí. Hardwarový návrh počítá s využitím dvou analogových vstupů a výstupů například pro MIMO soustavy, případně nastavení žádané veličiny pomocí analogové úrovně napětí. Implementovaný algoritmus PSD regulátoru však využívá pouze jeden analogový vstup a jeden analogový výstup. Digitální vstupy a výstupy jsou pouze
53
naprogramovány pro demonstraci jejich funkce a to tak, že při přivedení logické „1“ na daný digitální vstup je aktivován příslušný výstup (např. je-li na DI1 log. „1“, je DO1 v sepnutém stavu). Jejich další, komplikovanější využití by pak samozřejmě záleženo na dané úloze, jež nebyla součástí této práce. Na Obr. 29 je zobrazen vývojový graf realizovaného programu PSD regulátoru. Nejprve je nutné inicializovat základní parametry mikrokontroléru, to znamená nastavit frekvenci fázového závěsu, který pak slouží jako zdroj hlavních hodin MCU a poskytuje maximální možnou pracovní frekvenci 64 MHz. Dále je nastaven režim přístupu do FLASH paměti na 128bitový a je vypnut watchdog. V μVision je možné tato natavení vytvořit pomocí průvodce, který pak vygeneruje zdrojový kód C. Dalším krokem je inicializace systémových hodin, které generují v daném intervalu vnitřní přerušení a dají se použít jako zdroj vnitřního času. Zde jsou využity jako zdroj referenčního času pro funkci zpoždění a pro generování příznaku uběhnutí jedné sekundy, který je pak použit v hlavním programu pro aktualizaci displeje. Poté se provede nastavení parametrů vstupních a výstupních pinů. Aktivují se pullup rezistory a je určeno, zda dané budou piny použity některou z periferií (SPI, UART, atp.). S nastavováním parametrů pinů úzce souvisí i další krok, ve kterém se však navíc inicializuje přerušení vybraných pinů, jeho priorita je nastavena na druhou nejvyšší po prioritě časovače, který určuje periodu vzorkovaní a má tak nejvyšší prioritu. V této funkci jsou povoleny přerušení pro piny, ke kterým je připojen inkrementální snímač, proto je třeba nastavit i vstupní filtr signálu na 100 Hz, aby nebyly snímány zákmity při spínání. Inicializace displeje je provedena podle výrobní dokumentace [34], kde je krok po kroku popsána. Dále je samozřejmě podle ní vytvořena knihovna pro další komunikaci s displejem. Dalším krokem po inicializaci displeje je nastavení sériového rozhraní SPI do režimu „Master“ s přepínatelnou volbou aktivního čipu (angl. chip select). Pro jednotlivé čipy je pak nakonfigurována rychlost komunikace a řízení komunikace takové, že po odeslání paketu je čip stále aktivní, dokud není uživatelsky definováno, že je odesílán poslední paket. Takto je to realizováno proto, že například komunikace s A/D převodníkem musí mít pro vyčtení obou napětí minimální délku 28 bitů, avšak maximální délka jednoho paketu lze nastavit na 16 bitů, proto se při komunikaci dvakrát čte 14 bitů. Kdyby tento režim nebyl aktivován, tak po přečtení prvních 14 bitů by řadič SPI nastavil chip select do stavu log. 1, tedy dané zařízení není aktivní, a čtené napětí druhého kanálu A/D převodníku by bylo ztraceno. Obdobná situace je i při komunikaci s D/A převodníkem, která musí mít délku přesně 32 bitů. U komunikace s A/D převodníkem je ještě třeba změnit fázi náběžné hrany synchronizačních hodin rozhraní SPI (SPCK).
54
Obr. 29 Vývojový diagram programu kompaktního PSD regulátoru
Po inicializaci sérových rozhraní je již možné inicializovat D/A převodník, jehož parametry se na rozdíl od A/D převodníku, který je nastaven pomocí přivedení logických úrovní na dané piny, nastavují přes sériové rozhraní SPI. Všechny hodnoty
55
v řídicím registru převodníku jsou po přivedení napájecího napětí pomocí resetovacího obvodu nastaveny na nuly, to znamená, že oba výstupní kanály, vnitřní reference jsou vypnuty a rozsah je nastaven na 5 V. Nejprve je potřeba nastavit výstupní rozsah na požadovaných ±10 V a poté v power control registru aktivovat výstupní kanály (vnitřní reference zůstane vypnuta, protože je použita externí). Po této proceduře je D/A převodník připraven k použití, pro jistotu se ještě na jeho výstupy nastaví napětí 0 V. Poté jsou načteny z externí EEPROM parametry regulátoru do operační paměti. Předposledním krokem při inicializaci je nastavení parametrů čítače/časovače TC0, kdy jsou nastaveny jeho parametry a je povoleno a nastaveno na nejvyšší prioritu jeho přerušení. Posledním krokem je pak vykreslení základního menu a program skočí do nekonečné smyčky. Po spuštění časovače, které musí provést uživatel prostřednictvím menu, je vypočtení akčního zásahu regulátoru provedeno vždy při nastalém přerušení časovače v jeho obslužné rutině. Algoritmus PSD regulátoru vychází z Obr. 27 a pro zajímavost, ve zdrojovém kódu vypadá následovně: U = (K*e+Isum+N*(K*e+((dsum*exp((‐Tsample*N)/Td)))‐dsum)); Isum += ((Tsample/Ti)*e*K); dsum = K*e+(dsum*exp((‐Tsample*N)/Td)); if(U > 10) U = 10; if(U < ‐10) U = ‐10; if(Isum > 10) Isum = 10; if(Isum < ‐10) Isum = ‐10;
Samozřejmostí, vzhledem k tomu, že časové konstanty vystupují ve jmenovateli, je i ošetření stavů, kdyby uživatel zadal časové konstanty nulové. Celý zdrojový kód viz příloha.
5.4.1 Struktura menu regulátoru Menu v realizovaném kompaktním regulátoru slouží uživateli pro zapnutí nebo vypnutí regulace a zejména pro nastavení parametrů regulátoru. Při přivedení napájecího napětí regulátoru je na displeji zobrazena nastavená velikost žádané hodnoty a měřená velikost aktuální hodnoty, která se každou sekundu aktualizuje. Dále, je-li spuštěna regulace, bliká v pravém horním rohu displeje hvězdička upozorňující na tuto skutečnost. Při stisknutí tlačítka na inkrementálním kodéru je uživatel přesměrován do menu, jehož struktura je zobrazena na Obr. 30. Mezi jednotlivými prvky se naviguje pomocí
56
otáčení hmatníku inkrementálního čítače a přechod mezi úrovněmi je prováděn vždy stiskem tlačítka.
Obr. 30 Schéma úrovní menu kompaktního PSD regulátoru
Číselné nastavení konstant regulátoru probíhá tak, že se kurzorem vybere požadovaný řád čísla, stiskne se tlačítko a otáčením hmatníku se zvolí požadované číslo. Pro potvrzení a uložení volby do EEPROM je pak třeba přesunout pomocí otáčení kurzor do prostoru slova „OK“ a stisknout tlačítko.
Obr. 31Příklad nastavování integrační konstanty regulátoru
57
ZÁVĚR V diplomové práci byl vytvořen a odladěn simulátor analogových soustav. Současně s ním byla vytvořena i hardwarová a softwarová část PSD regulátoru. Simulátor byl psán v programovacím jazyce C++/CLI, který umožňuje při vývoji softwaru kombinovat nativní kód C/C++ a řízený kód .NET. Je to výhodná vlastnost především z důvodu použití .NET Framework, který otevírá široké spektrum možností pro velice rychlou tvorbu aplikací. Svět programování se tím zcela změnil a někteří autoři dokonce rozdělují éry programování na dobu před .NET a dobu po příchodu .NET. C++/CLI ale dokáže kombinovat výhody obou ér. Výhoda nativního kódu je především v jeho rychlosti a také v tom, že knihovny v něm napsané jsou již léty prověřeny. Vytvořená aplikace simulátoru těchto vlastností bezezbytku využívá. Řízení běhu aplikace, časování a interakce s uživatelem jsou vytvořeny pomocí řízeného kódu. Pro účely časování bylo vyzkoušeno více možností, které jsou popsány v kapitole 3.5, ze kterých vyplývá, že možnosti nabízených softwarových časovačů jsou velice omezené. Nakonec byl tedy napsán nový časovač, využívající systémové stopky. S jeho použitím bylo dosaženo přesnosti časování i při malých intervalech v řádech desítek mikrosekund. Jeho nevýhodou je ale větší vytížení procesoru. Dále v řízeném kódu byla vytvořena knihovna pro prezentaci výsledků ve formě grafu. Na druhé straně maticové výpočty a komunikace s měřicí kartou probíhají v nativním kódu. Pro práci s maticemi byla použita knihovna Armadillo, která nabízí velice jednoduchou syntaxi podobnou MATLABu. Dále byl proveden hardwarový návrh kompaktního PSD regulátoru. Bylo dbáno na to, aby byly všechny části galvanicky odděleny a celkově návrh byl na co nejlepší úrovni. A nejednalo se pouze o využití mikrokontroléru k ověření funkčnosti simulátoru za použití vnitřních periferií a převodníků integrovaných v mikrokontroléru. Jako srdce nově vzniklého regulátoru byl vybrán mikrokontrolér architektury ARM, zejména z důvodu, že se jedná o moderní a velice výkonnou architekturu. Navíc problémy s dostupností vývojových a ladících nástrojů, které dříve studenty odrazovaly, již prakticky neexistují, jak je dokázáno v kapitole 5.3. Celý PSD regulátor má všechny periferie, vstupy a výstupy připraveny pro průmyslové použití. To znamená, že napájecí napětí je 24 V, komunikace s regulátorem může probíhat po sériových rozhraních RS232 nebo RS485 a analogové vstupy a výstupy mají rozsah ±10 V. Během oživování a testování byly odhaleny některé chyby v hardwarovém návrhu. Na již vytvořené desce plošných spojů byly opraveny přeletováním a pro dokumentaci byla vytvořena opravená verze REV. 2, která je součástí této práce. Všechny známé chyby jsou vypsány v Tabulka 6. Softwarová část regulátoru byla pak napsána v jazyce C. Použitým algoritmem pro řízení je PSD regulátor s filtrací derivační složky. Tento typ regulátoru se vyznačuje
58
tím, že nejsou tak zesilovány vyšší frekvence a akční zásah poté tolik nekmitá. V budoucnosti by bylo také vhodné regulátor rozšířit například o beznárazové přepínání a ruční regulaci. To však nebylo zadáním této práce. Vytvořeným regulátorem se měla pouze otestovat funkčnost celého systému a budoucí vylepšení regulátoru ponechat například na studentech, protože celá práce byla koncipována tímto směrem – vytvořit simulátor a funkční hardware regulátoru pro případnou budoucí výuku nebo demonstraci řízení. Funkčnost celého systému pak byla ověřena na testovací soustavě (2.1), je zobrazena na Obr. 10 a může být porovnána s výsledky získanými v MATLABu, které jsou zobrazeny na Obr. 3 (ověření funkčnosti simulátoru proběhlo se stejnými parametry regulátoru i simulace, jako v MATLABu). Je možné konstatovat, že zadání bylo splněno. Nicméně jako největší nedostatek v nynější verzi simulátoru vidím to, že není možné zadávat soustavu s dopravním zpožděním. Což je důležité hlavně z hlediska fázové bezpečnosti regulačního obvodu. To, jakým způsobem by se tento handicap simulátoru dal obejít, a další návrhy na vylepšení jsou uvedeny v kapitole 3.9.
59
Literatura [1] [2]
ŠOLC, František a Pavel VÁCLAVEK. Modelování a simulace: Verze 0.35 18. března 2009. Brno, 2009, 171 s. Skriptum. MATLAB Overview. THE MATHWORKS, Inc. MathWorks - MATLAB and Simulink for Technical Computing [online]. [cit. 2012-05-13]. Dostupné z: http://www.mathworks.com/products/matlab/
[3]
Simulink Overview. THE MATHWORKS, Inc. MathWorks - MATLAB and Simulink for Technical Computing [online]. [cit. 2012-05-13]. Dostupné z: http://www.mathworks.com/products/simulink/
[4] [5]
MATLAB, Simulink. HUMUSOFT. MATLAB a Simulink pro technické výpočty [online]. [cit. 2012-05-13]. Dostupné z: http://www.humusoft.cz/produkty/matlab/ Data Acquisition Toolbox. THE MATHWORKS, Inc. [online]. 2012 [cit. 201205-13]. Dostupné z: http://www.mathworks.com/products/datasheets/pdf/dataacquisition-toolbox.pdf
[6]
[7]
MALÍK, D.: MATLAB/Simulink, Real-Time simulace a řízení. Brno: Vysoké učení technické v Brně, Fakulta elektrotechniky a komunikačních technologií, 2010. 52 s., 10 příloh. Vedoucí bakalářské práce Ing. Martin Dvořáček. OTTER, Martin. Modelica Overview. [online]. 2009 [cit. 2012-05-13]. Dostupné z: https://modelica.org/education/educational-material/lecturematerial/english/ModelicaOverview.pdf
[8]
Introduction. LINKÖPING UNIVERSITY. OpenModelica [online]. [cit. 2012-0513]. Dostupné z: http://www.openmodelica.org/ [9] Modelica® Libraries: Catalog. BAUSCH-GALL GMBH. [online]. 2011 [cit. 2012-05-13]. Dostupné z: http://www.bausch-gall.de/Modelica_Libraries_Catalog.pdf [10] JEŽEK, J.: Algoritmus pro výpočet diskrétního přenosu lineární dynamické soustavy. Kybernetika. 1968, roč. 4, č. 3. Dostupné z: http://www.kybernetika.cz/content/1968/3/246/paper.pdf
[11] ŠTECHA, Jan a Vladimír HAVLENA. Teorie dynamických systémů. Praha: Ediční středisko ČVUT, 2005. [12] Low-Cost, Bus-Powered Multifunction DAQ for USB. NATIONAL INSTRUMENTS. Data Sheet - National Instruments [online]. 2012, 2012-05-07 [cit. 2012-05-13]. Dostupné z: http://sine.ni.com/ds/app/doc/p/id/ds-218/lang/en [13] Bus-Powered M Series Multifunction DAQ for USB. NATIONAL INSTRUMENTS. Data Sheet - National Instruments [online]. 2012, 2012-05-07 [cit. 2012-05-13]. Dostupné z: http://sine.ni.com/ds/app/doc/p/id/ds-9/lang/en [14] SANDERSON, C.: Armadillo: An Open Source C++ Linear Library for Fast Prototyping and Computationally Intensive Experiments. Technical Report, NICTA, 2010. [15] LIU, Victor. Compiled binary libraries for Windows. Compiled binary libraries for Windows [online]. 2008 [cit. 2012-05-13]. Dostupné z: http://www.stanford.edu/~vkl/code/libs.html
60
[16] HANÁK, Ján. C /CLI - Začínáme programovat. Vyd. 1. Brno: Artax, 2009, 370 s. ISBN 978-80-87017-04-3. [17] ANDERSON, Matt. Most Active Hardware Boards: Multifunction DAQ: USB6008. In: NI Discussion Forums [online]. 2007 [cit. 2012-05-14]. Dostupné z: http://forums.ni.com/t5/Multifunction-DAQ/USB-6008/td-p/486072
[18] Timer Class (System.Windows.Forms). MICROSOFT. MSDN – Explore Windows, Web, Cloud, and Windows Phone Software Development [online]. [cit. 2012-05-13]. Dostupné z: http://msdn.microsoft.com/enus/library/system.windows.forms.timer.aspx
[19] Timer Class (System.Timers.Timer). MICROSOFT. MSDN – Explore Windows, Web, Cloud, and Windows Phone Software Development [online]. [cit. 2012-0513]. Dostupné z: http://msdn.microsoft.com/en-us/library/system.timers.timer.aspx [20] About Multimedia Timers. MICROSOFT. MSDN – Explore Windows, Web, Cloud, and Windows Phone Software Development [online]. [cit. 2012-05-13]. Dostupné z: http://msdn.microsoft.com/enus/library/windows/desktop/dd742877(v=vs.85).aspx
[21] KUČERA, Pavel. Operační Systémy Reálného Času [online]. [cit. 2012-05-13]. Dostupné z: http://taceo.eu/lectures/mrts/data/01_uvod_cz.pdf [22] Stopwatch Class. MICROSOFT. MSDN – Explore Windows, Web, Cloud, and Windows Phone Software Development [online]. [cit. 2012-05-13]. Dostupné z: http://msdn.microsoft.com/en-us/library/System.Diagnostics.Stopwatch.aspx
[23] LOVEDAY, Ken. Microsecond and Millisecond C# Timer. CodeProject® [online]. 2011 [cit. 2012-05-13]. Dostupné z: http://www.codeproject.com/Articles/98346/Microsecond-and-Millisecond-NET-Timer
[24] Kabeš, K.: Průmyslové kompaktní regulátory – přehled trhu. Automatizace. 2006, roč. 49, č. 2, s 106 112. [online]. Dostupné z: http://www.automatizace.cz/article.php?a=1079
[25] Slattery, C.; Hartmann, D.; Ke, L.: PLC Evaluation Board Simplifies Design of Industrial Process-Control systems. Analog Dialogue. April 2009, vol. 43. [online]. Dostupné WWW:http://www.analog.com/library/analogDialogue/archives/4304/process_control.html
[26] Pandatron.cz: Úvod do architektury Cortex-M3 - díl. 1. [online]. [cit 2011-12-23]. Dostupné z WWW: http://pandatron.cz/?1252&uvod_do_architektury_cortex-m3__dil._1
[27] Atmel: AT91SAM ARM-based Flash MCU, SAM3S Series. [online] Revise 6500C–ATARM–8-Feb-11. Dostupné z WWW: http://www.atmel.com/dyn/resources/prod_documents/doc6500.pdf
[28] KEIL. Getting Started: Creating Applications with µVision®4 [online]. [cit. 201205-13]. Dostupné z: http://www.keil.com/product/brochures/uv4.pdf [29] Analog Devices: True Bipolar Input, Dual 12-bit/14-bit, 2-Channel, Simultaneous Sampling SAR ADC. [online] c2010, revise D. Dostupné z WWW: http://www.analog.com/static/imported-files/data_sheets/AD7366_7367.pdf
[30] Pivoňka, P.: Číslicová a řídící technika. Brno 2003. Skriptum. 151 str.
61
[31] Záviodný, L.: Galvanické oddělení sběrnice I2C pro obousměrný přenos. elektrorevue. 2003, [online] [cit 2011-12-23]. Dostupné z WWW: http://www.elektrorevue.cz/clanky/03012/index.html
[32] BRIGHT LED ELECTRONIC CORP.: BPC-817S. Datum a revise neuvedeny. [33] Analog Devices: Komplete, Dual 12-/14-/16-Bit, Seriál Input, Unipolar/Bipolar, Voltage Output dals. [online] c2011, revise D. Dostupné z WWW: http://www.analog.com/static/imported-files/data_sheets/AD5722_5732_5752.pdf
[34] FORDATA: SPECIFICATION CHARAKTER TYPE DOT MATRIX LCD MODULE. [online] c2009. Datasheet ver. 2008 VERSION. Dostupné z WWW: http://cz.farnell.com/fordata/fdcc1602l-flyybw-91le/disp-lcd-16x2-3v-gbl/dp/1847940?Ntt=FDCC1602L-FLYYBW-91LE
[35] Ovládání znakových LCD s řadičem HD44780. Elektronika, bastlení, návody [online]. 2007, 11.3.2007 [cit. 2012-05-13]. Dostupné z: http://elektronika.kvalitne.cz/ATMEL/necoteorie/LCDmatice.html
[36] TEXAS INSTRUMENTS. Miniature, 2W, Isolated UNREGULATED DC/DC CONVERTERS [online]. 2010, rev. únor 2008 [cit. 2012-05-13]. Dostupné z: http://www.ti.com/lit/ds/symlink/dcp022405.pdf
[37] FIREŠ, M.: Regulátor teploty. Vysoké učení technické v Brně, Fakulta elektrotechniky a komunikačních technologií, 2010. 68 s. Vedoucí bakalářské práce ing. Tomáš Macho, Ph.D. [38] ASTRÖM, Karl J. Computer-controlled systems: theory and design. 3rd ed. Upper Saddle River: Prentice Hall, c1997, 557 s. ISBN 01-331-4899-8. [39] BLAHA, Petr a Petr VAVŘÍN. Řízení a regulace I: Základy regulace lineárních systémů - spojité a diskrétní. Brno, 215 s. Skriptum. [40] ŠVARC, Ivan. Automatizace: automatické řízení. 2. dopln. vyd. Brno: CERM, 2005, 262 s. ISBN 80-214-2943-7. [41] MDK-ARM Microcontroller Development Kit. KEIL. Keil Embedded Development Tools for ARM, Cortex-M, Cortex-R4, 8051, C166, and 251 processor families. [online]. [cit. 2012-05-13]. Dostupné z: http://www.keil.com/arm/mdk.asp
[42] SAM3S Software Package. ATMEL CORPORATION. Atmel Home- Atmel Corporation [online]. [cit. 2012-05-13]. Dostupné z: http://www.atmel.com/tools/SAM3SSOFTWAREPACKAGE.aspx
[43] J-Link EDU. SEGGER MICROCONTROLLER GMBH & CO. KG. SEGGER Microcontroller - Embedded Software Solutions [online]. [cit. 2012-05-13]. Dostupné z: http://www.segger.com/j-link-edu.html
62
Seznam zkratek a symbolů Zkratky: A/D CS D/A FEKT HAL HW JTAG LCD MIDI MIMO MS NI OOP PC PCI PID PSD PXI RISC RTOS SCLK SPCK SPI SW ÚAMT UART USB
Analogově digitální, například převod Chip Select, při komunikaci s více zařízeními určuje, které je aktivní Digitálně analogový Fakulta elektrotechniky a komunikačních technologií Abstraktní hardwarová vrstva, dynamicky propojená knihovna (DLL) Hardware Joint Test Action Group, standardní testovací rozhraní Liquid Crystal Display Musical Instrument Digital Interface, rozhraní pro digitální nástroje Multiple Input Multiple Output, systém s více vstupy a výstupy Microsoft National Instruments Objektově orientované programování Personal komputer, osobní počítač Peripheral Component Interconnect, sběrnice propojení periferních zařízení Proporcionálně – integrační – derivační Proporcionálně – sumačně – diferenční Hardwarová platforma měřicích zařízení firmy NI Reduced Instruction Set Komputer, redukovaná instrukční sada Real time operating system, operační systém reálného času Sériové hodiny, určují frekvenci/rychlost čtení po sběrnici SPI Sériové hodiny jiná zkratka pro SCLK Seriál Peripheral Interface, sériové komunikační rozhraní Software Ústav automatizace a měření Universal Asynchronous Receiver Transmitter Universal Serial Bus, univerzální sériová sběrnice pro připojení periférií k PC
Symboly: w e u y z x t
Žádaná hodnota Regulační odchylka Akční zásah nebo obecně vstup Výstup ze soustavy nebo obecně výstup Operátor Z-transformace Stavová proměnná Spojitá proměnná – čas Časová konstanta
63
T k R C U I p K TI TD ω
Perioda Diskrétní krok Elektrický odpor Kapacita kondenzátoru Stejnosměrné elektrické napětí Stejnosměrný elektrický proud Laplaceův operátor Proporcionální zesílení Integrační konstanta regulátoru Derivační konstanta regulátoru Úhlová frekvence
64
Seznam příloh Příloha 1. Provedená měření Příloha 2. Fotografie realizovaného regulátoru Příloha 3. Elektrická rozpiska součástek Příloha 4. Schéma kompaktního regulátoru Příloha 5. Desky plošných spojů kompaktního regulátoru Příloha 6. Osazovací výkres kompaktního regulátoru Příloha 7. CD s touto prací a zdrojovými kódy simulátoru a kompaktního regulátoru: MATLAB 2011b – S-funkce pro komunikaci s USB měřicí kartou a model soustavy v Simulinku MS Visual Studio 2010 – zdrojové kódy simulátoru analogových soustav Eagle 5.11.0 – Schéma kompaktního regulátoru a deska plošných spojů (REV. 2) Keil μVision 4 – zdrojové kódy PSD regulátoru Sianaso – vytvořený simulátor ve spustitelné verzi
65
Příloha 1 Provedená měření 1. Cíl a postup měření Cílem měření bylo stanovit chybu, s jakou je generována vzorkovací perioda v simulátoru analogových soustav. Kód simulátoru byl upraven tak, aby generoval obdélníkový signál o zadané periodě s amplitudou 1 V. Měření periody poté probíhalo pomocí univerzálního čítače HP 53131A s ručně nastavenou dobou otevření hradla. V ideálním případě by bylo vhodné provést velice dlouhé měření s co nejvíce naměřenými hodnotami, aby bylo možné přesněji určit tvar rozložení generovaných period. Bohužel toto nebylo realizované z důvodu nepřítomnosti GPIB karty pro spojení čítače s PC. Dále byl generovaný průběh zaznamenán pomocí osciloskopu. 2. Schéma zapojení
3. Zpracování naměřených dat Tab. 1 Periody generovaného obdélníkového signálu pomocí vytvořeného přesného časovače Nastav./č. m. T = 400 [ms] ∆T400 [ms] δT400 [%] T = 40 [ms] ∆T40 [ms] δT40 [%] T = 10 [ms] ∆T10 [ms] δT10 [%] 1
399,990
-0,010
-0,002
40,001
0,001
0,002
10,000
0,000
0,000
2
400,060
0,060
0,015
40,020
0,020
0,050
9,990
-0,010
-0,100
3
400,030
0,030
0,007
39,989
-0,011
-0,028
10,006
0,006
0,060
4
400,050
0,050
0,013
40,029
0,029
0,073
10,020
0,020
0,200
5
399,998
-0,002
-0,001
39,940
-0,060
-0,150
9,997
-0,003
-0,030
6
400,051
0,051
0,013
40,009
0,009
0,023
10,004
0,004
0,040
7
400,001
0,001
0,000
40,010
0,010
0,025
10,046
0,046
0,460
8
400,003
0,003
0,001
39,984
-0,016
-0,040
9,997
-0,003
-0,030 -0,130
9
399,962
-0,038
-0,010
39,988
-0,012
-0,030
9,987
-0,013
10
400,003
0,003
0,001
40,029
0,029
0,073
10,030
0,030
0,300
11
399,998
-0,002
-0,001
40,034
0,034
0,085
10,051
0,051
0,510
12
400,039
0,039
0,010
40,008
0,008
0,020
10,013
0,013
0,130
13
399,961
-0,039
-0,010
39,989
-0,011
-0,028
9,988
-0,012
-0,120
14
400,003
0,003
0,001
39,993
-0,007
-0,017
9,998
-0,002
-0,016
15
399,996
-0,004
-0,001
40,003
0,003
0,008
10,015
0,015
0,150
16
400,044
0,044
0,011
40,013
0,013
0,032
9,996
-0,004
-0,040
17
400,019
0,019
0,005
40,007
0,007
0,017
10,005
0,005
0,050
18
399,925
-0,075
-0,019
39,962
-0,038
-0,095
9,998
-0,002
-0,020
19
400,039
0,039
0,010
39,984
-0,016
-0,040
9,997
-0,003
-0,030
20
399,998
-0,002
-0,001
39,998
-0,002
-0,005
9,990
-0,010
-0,100
21
400,018
0,018
0,004
40,060
0,060
0,150
10,040
0,040
0,400
66
22 průměr
400,056
0,056
0,014
39,999
-0,001
-0,002
9,987
-0,013
-0,130
400,011
0,011
0,003
40,002
0,002
0,006
10,007
0,007
0,071
Tab. 2 Periody generovaného obdélníkového signálu pomocí časovače ze třídy timers Nastav./č. m. T = 400 [ms] ∆T400 [ms] δT400 [%] T = 40 [ms] ∆T40 [ms] δT40 [%] T = 10 [ms] ∆T10 [ms] δT10 [%] 1
405,279
5,279
1,320
62,190
22,190
55,475
31,900
21,900
219,000
2
405,248
5,248
1,312
61,990
21,990
54,975
32,000
22,000
220,000
3
405,254
5,254
1,314
62,120
22,120
55,300
30,940
20,940
209,400
4
405,300
5,300
1,325
61,980
21,980
54,950
30,990
20,990
209,900
5
405,286
5,286
1,322
62,092
22,092
55,230
31,994
21,994
219,940
6
405,264
5,264
1,316
62,050
22,050
55,125
32,010
22,010
220,100
7
405,555
5,555
1,389
61,990
21,990
54,975
31,020
21,020
210,200
8
405,56
5,560
1,390
62,070
22,070
55,175
30,996
20,996
209,960
9
405,508
5,508
1,377
62,040
22,040
55,100
31,089
21,089
210,890
10
405,285
5,285
1,321
62,70
22,700
56,750
31,025
21,025
210,250
11
374,000
-26,000
-6,500
62,720
22,720
56,800
30,570
20,570
205,700
12
411,924
11,924
2,981
62,680
22,680
56,700
31,087
21,087
210,870
13
405,566
5,566
1,391
62,630
22,630
56,575
31,048
21,048
210,480
14
405,529
5,529
1,382
62,710
22,710
56,775
30,871
20,871
208,710
15
405,493
5,493
1,373
62,090
22,090
55,225
31,950
21,950
219,500
16
405,545
5,545
1,386
61,990
21,990
54,975
31,874
21,874
218,740
17
405,519
5,519
1,380
62,620
22,620
56,550
30,845
20,845
208,450
18
405,508
5,508
1,377
62,580
22,580
56,450
30,846
20,846
208,460
19
405,525
5,525
1,381
62,720
22,720
56,800
31,899
21,899
218,990
20
405,535
5,535
1,384
61,930
21,930
54,825
30,728
20,728
207,280
21
405,602
5,602
1,400
61,990
21,990
54,975
31,844
21,844
218,440
22
405,518
5,518
1,379
61,950
21,950
54,875
31,147
21,147
211,470
404,309
4,309
1,077
62,265
22,265
55,663
31,303
21,303
213,033
průměr
Příklady výpočtu: T400 Tměě Tref 405,279 400ms 5,279 ms
T400
T400 5,279 100 ms 100 1,32 %. Tref 400
67
Obrázek 1 Signál generovaný vytvořeným přesným časovačem
Obrázek 2 Signál generovaný pomocí časovače ze třídy timers
4. Zhodnocení měření Z provedených měření je jasně vidět, že časování pomocí třídy timer je velmi nepřesné, zejména pak při malých intervalech, kdy průměrná relativní chyba určení periody 10 ms je až 213 %, viz také Obrázek 2, ze kterého je patrné, že ani šířka signálu není konstantní. Měření tedy jasně dokázalo, že vytvořený časovač je přesnější. Jeho průměrná absolutní chyba při časování jsou maximálně desítky mikrosekund, což je pro danou aplikaci dostačující.
68
Příloha 2 Fotografie realizovaného kompaktního PSD regulátoru
69
Příloha 3 Tab. 3 Elektrická rozpiska součástek Označení
Hodnota
Druh
C1, C2, C3 C4, C5, C6 C7, C8, C11, C13, C14, C17, C18, C20, C22, C24, C25, C27, C28, C30, C31, C32, C33, C35, C37, C39, C52 C9 C10 C12, C15, C21, C23, C34, C38 C16, C40 C19 C26 C29, C36 C41, C42 C43, C44, C45, C46, C47, C48 C49, C51, C53 C54, C55, C56, C57,C58, C59 D1 D2, D5, D8, D11 D3, D4, D6, D7, D9, D10, D12, D13 D14, D15, D16, D17
470N/50V Y5V 1M/25V X7R
3x keramický kondenzátor C1206 3x keramický kondenzátor C1206
100N/50V X7R
21x keramický kondenzátor
100uF/35V 1M/25V X7R
Pouzdro
C1206
10M/50V X5R 1uF/16V A 100N/50V X7R 4N7/50V X7R 4P7/50V NPO
elektrolytický kondenzátor keramický kondenzátor 6x elektrolytický kondenzátor 2x keramický kondenzátor tantalový kondenzátor keramický kondenzátor 2x keramický kondenzátor 2x keramický kondenzátor
100N/50V X7R
6x keramický kondenzátor C0805
4,7uF
3x keramický kondenzátor C1206
CTS 0,1M/16V A
6x tantalový kondenzátor
SMC_A
1N4007 BZV55C5.1
usměrňovací dioda 4x Zenerova dioda
MINIMELF SOD80C
BAS32
8x usměrňovací dioda
MINIMELF
SK36A
4x Schottkyho dioda
MINIMELF
D18 F1 IC1 IC2 IC3 IC4, IC7 IC5 IC6 IC8
S4J 250 mA DCR012403 DCP022405U DCP022415 ADUM1400 AD7367 ADUM1402 AD5732
usměrňovací dioda pojistka DC-DC měnič 24/3,3 V DC-DC měnič 24/5 V DC-DC měnič 24/±15 V 2x galv. oddělovač AD převodník galv. oddělovač DA převodník
IC9
24AA025E48
EEPROM paměť
IC10 IC11 IC12 JP1, JP2, JP3 LED1, LED2, LED3, LED4, LED5, LED6, LED7, LED8
SAM3S2B MAX3232CWE MAX3075EESA
mikrokontrolér převodník RS232 převodník RS485 3x jumper
SMC SH22,5 SO-G12/28 SO-G12/28 SO-G12/28 SO16W RE_24 SO16W RE_24 SOIC127P600X17 5-8N LQFP-ST-64-2 SO16L SO08 JP1
8x svítivá dioda
1206
10uF/25V B
E2,5-6E C1206 PANASONIC_B C1206 SMC_A C0805 C1206 C0805
70
OK1, OK2, OK3, OK4, OK5, OK6, OK7, OK8 Q1 R1, R3 R2 R4 R5, R6, R7, R9, R11, R12, R17, R18, R23, R24, R25, R26, R27, R32 R8, R10 R13, R16, R28, R30, R33, R35, R38, R40 R14, R19 R15, R29, R34, R39 R20 R21, R31, R37, R41 R22 R36 R42, R43, R47, R48 R44, R45, R49, R50 R46 R51, R52 REF1 SV1 SV2 T1, T2
BPC-817B SMD
8x optočlen
SMD4-7
12MHz 680 150 62
krystal 2x rezistor rezistor rezistor
SMAQ-5032A M1206 M1206 M1206
10k
14x rezistor
R1206
200
2x rezistor
R1206
390
8x rezistor
R1206
27 -+5% 300 27k 51 47k 5K 1k2 220 120 0R REF192 JTAG con Displ con IRF7103
2x rezistor 4x rezistor rezistor 4x rezistor rezistor trimr 4x rezistor 4x rezistor rezistor 2x rezistor stabilizátor napětí ML20 ML20 2x NFET tranzistor
TR1
SM6T27A
transil
TR2, TR3, TR4, TR5
SM6T15CA
4x transil
TR6, TR7
SM6T6V8CA
transil
TR8
SM6T18A
transil
X1 X2 X3 X6 X7 X11 X14 X15 X19
IN24V
svorkovnice svorkovnice svorkovnice svorkovnice USB konektor konektor Molex svorkovnice konektor CAN9 svorkovnice
R1206 M1206 R1206 M1206 R1206 PT-10 R1206 R1206 R2012 R1206 SO8 ML20 ML20 SO8-2 DO214AC+MINIM ELF_MONODIR DO214AC+MINIM ELF_BIDIR DO214AC+MINIM ELF_BIDIR DO214AC+MINIM ELF_MONODIR AK500/2 AK500/4 AK500/10 AK500/4 PN61729 22-23-2041 AK500/3 F09HP AK500/5
USB KONEKTOR OVL RS485 RS232
71
5
6
IC2
2 3
C9 100uF/35V
28
X1-2 IN24V
0V 0V
SYNC
C4
150
C3
A
13
+VOUT
VS
R2
1
LED1
TR1
C8
+
D1 250 mA 1N4007
X1-1
SM6T27A
F1
100N/50V X7R
+24V
A
4
+5 V
3
1M/25V X7R
2
470N/50V Y5V +24V
1
12
0V
DCP022405U AGND24V
AGND24V
AGND
28
SYNC
0V
12
+3.3 V 27
+VOUT
R5 10k R6
C10
VS 0V
ERROR
0V
VREC ENABLE
28
14
SYNC
0V
10k
17 12 16 13
C C7
62
26
VS
R4
2
LED3
0V
C6
680
C5
0V
1
C1
100N/50V X7R
3
R1
2
14
680
-VOUT
R3
+VOUT
IC1
LED2 LED4
VS
13
1M/25V X7R
C2
1
470N/50V Y5V +24V
-15 V IC3
1M/25V X7R
C
+15 V
B
470N/50V Y5V +24V
B
1M/25V X7R
DCR012403
DCP022415 AGND24V
AGND24V
GND
AGND
D
D
1
2
3
4
5
6
1
2
3
4
5
6
R14 +3,3 V
+3,3 V
A 10k
R25
JP2
10k R27
2 1
10k R26
GND
10k
2 1
JP1
R22 47k
USB 4P7/50V NPO
10k
C40
R23
10M/50V X5R R20
USB
1 2 3 4
27k
X7
A
GND
27 -+5%
R24
R19
+3,3 V
+1,8 V
+3,3 V
27 -+5%
VSS GND
RS R/W
2 4 6 8 10 12 14 16 18 20
1 3 5 7 9 11 13 15 17 19
E DB1 DB3 DB5 DB7 DB6 DB4 DB2 DB0
C43
C45
SAM3S2B
1
10k
DO3/PWMH2 SDA
DI3 DI2 SCL DI1 DI0 C47
2
C51
C52
3
C
C53
100nF 4,7uF 4,7uF 100nF 4,7uF
GND
X11-1 X11-2 X11-3 X11-4
D
GND
NPCS1
MISO NPCS0 TXD0 RXD0 LDAC
C49
RTS
BUSY
C48
KONEKTOR OVL
GND
GND
B
+3,3 V
100nF
100nF 100nF 100nF 100nF
GND
SV1
GND
DO0/PWMH3 DO1/PWMH0 DO2/PWMH1
48 47 46 58 44 43 42 41 40 39 38 37 36 35 34 33
C46 SPCK MOSI CNVST
D
C44
PA0/PGMEN0 PA1/PGMEN1 GND VDDIO PA2/PGMEN2 PA3 PA30 PA29 TST NRST PA28 PA27/PGMD15 PA4/PGMNCMD PA5/PGMRDY PA6/PGMNOE TDI/PB4
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
+1,8 V
SV2
ADVREF GND PB0/AD4 PB1/AD5 PB2/AD6 PB3/AD7 VDDIN VDDOUT PA17/PGMD5/AD0 PA18/PGMD6/AD1 PA21/PGMD9/AD8 VDDCORE PA19/PGMD7/AD2 PA22/PGMD10/AD9 PA23/PGMD11 PA20/PGMD8/AD3
2 4 6 8 10 12 14 16 18 20
1 3 5 7 9 11 13 15 17 19
+3,3 V
1
3
C
TXD1 RXD1
+3,3 V 2
R36 5K
Displ con VDD
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
R32
IC10
64 63 62 61 60 59 45 57 56 55 54 53 52 51 50 49
4P7/50V NPO
B
VDDPLL PB14/DAC1 XIN/PGMCK/PB9 XOUT/PB8 GND PB13/DAC0 VDDIO DDP/PB11 DDM/PB10 ERASE/PB12 VDDCORE TCK/SWCLK/PB7 PA31 TMS/SWDIO/PB6 JTAGSEL TDO/TRACESWO/PB5
GND
GND VDDIO PA16/PGMD4 PA15/PGMD3 PA14/PGMD2 PA13/PGMD1 PA24/PGMD12 VDDCORE PA25/PGMD13 PA26/PGMD14 PA12/PGMD0 PA11/PGMM3 PA10/PGMM2 PA9/PGMM1 PA8/XOUT32/PGMM0 PA7/XIN32/PGMNVALID
C42
12MHz Q1
C41
GND
JTAG con
4
5
6
2
3
4
5
6
+3,3 V
1
A IC9
B
4
A
SM6T6V8CA
TXD0
6
DE
SM6T6V8CA TR7
3
RE/
JP3 TR6
RTS
B 7
A2
4
X14-2
SCL
VSS SDA
10k
A1
3
X14-1
120
2
RO
R46
1
3 2 1
C39
8
VCC
10k R18
2
IC12 RXD0
A0
R17
1
A
100N/50V X7R
6
SCL
5
SDA
I2C
24AA025E48
X14-3 RS485
DI
B
GND
Externi EEPROM
MAX3075EESA
CTS 0,1M/16V A5 TXD1 RXD1
11 10 12 9
1
X15 1 2 3 4 5
GND
C2T1OUT T1IN T2OUT T2IN R1IN R1OUT R2IN R2OUT
2
14 7 13 8
6 7 8 9
IC11P
C55
GND
VCC
+
8
+3,3 V
+3,3 V 16
VCC
+
C54
C
IC12P GND
+
C2+
MAX3232CWE
D
+
6
5
V-
2
CTS 0,1M/16V A
4
V+ C1-
GND
C59
C1+
15
+
CTS 0,1M/16V A3
CTS 0,1M/16V A
1
C58
C56
IC11
C57
+
C
CTS 0,1M/16V A CTS 0,1M/16V A
GND
GND
RS232
D
GND
3
4
5
6
1
2
3
4
A
DI0
R15
300
OK1
390
R16
1
4
2
3
BAS32 D4 DI1
OK2
390
R30
1
4
2
3
R31
+3,3 V
C DI2
R34
300
OK3
390
R35
1
4
2
3
DI2
GND
+3,3 V
51
R37
BPC-817B SMD LED7
D9 BAS32
BZV55C5.1
R33
D8
C 390
51
GND
BAS32 D7
X19-3
DI1
BPC-817B SMD LED6
D6 BAS32
R28
D5 BZV55C5.1
B
390
R21 R29
GND
+3,3 V
51 300
B
X19-2
DI0
BPC-817B SMD LED5
D3 BAS32
BZV55C5.1
R13
D2
X19-1
390
+3,3 V
A
BAS32 D10
D DI3
R39
390
300
OK4 1
4
2
3
DI3
R41
BPC-817B SMD LED8
Common DI terminal X19-5
R40
D12 BAS32
BZV55C5.1
51
X19-4
R38
D11
390
D
GND
BAS32 D13
E
E
F
F
1
2
3
4
3
4
5
220
OK5 1
R45 220
3
OK6 1
4
2
3
BPC-817B SMD
T1G1 IRF7103
GND
B
VCCout D17
T2G2 IRF7103
4
2
R48
X3-8
DO3/PWMH2
R50 220
3
BPC-817B SMD
OK8 1
4
2
3
X3-9
X3-10
1k2
SK36A
D16
X3-7
1k2
R47 OK7 1
B
AGNDout
VCCout
AGNDout
C
X3-6
BPC-817B SMD
GND
R49 DO2/PWMH1 220
SK36A
D15
DO1/PWMH0
A
1k2
T1G2 IRF7103
4
2
R43
X3-4
X3-5
SK36A
R44
SK36A
D14 DO0/PWMH3
X3-3
1k2
R42
A
6
VCCout
2 VCCout
1
T2G1 IRF7103
C
BPC-817B SMD
GND
GND AGNDout VCCout
AGNDout
D
SM6T18A
TR8
D18
X3-1 S4J in max 15V
D X3-2
AGNDout
1
2
3
4
5
6
2
3
4
A
5
6
A
+5 V
+15 V
1
16
DGND
AGND 7
24
VSS 10 +
10uF/25V B
C38
REFSEL RANGE1 RANGE0
AD7367
+3,3 V
+
+5 V
100N/50V X7R
C26 16 15 14 13 12 11 10 9
20 21 1 23 22 6 18 4 5
C34 C35
VDD2 GND2 VOA VOB VOC VOD VE2 GND2
VDD1 GND1 VIA VIB VIC VID GND1
1 2 3 4 5 6
AGND C30
B
GND
SPI
C31 1 2 3 4 5 6 7 8
100N/50V X7R
100N/50V X7R NPCS0 SPCK CNVST
8
+3,3 V
3
DCAPB
-15 V
C37
ADDR
DCAPA
19
C25
+5 V
9
0R
R52
VB2
BUSY
100N/50V X7R
100N/50V X7R
C
DOUTB
AGND
100N/50V X7R
13
AGND
C28
DOUTA
VB1
2
C15 10uF/25V B
+
14
REF 2,5V
AGND
SCLK
VA2
17
R9 200
X6-4
CS CNVST
10k R10
TR3
SM6T15CA
AGND
VDRIVE
AVCC
VA1
12
X6-3
IC5
DVCC
11
0R
R51
AGND
8
100N/50V X7R
C14
10uF/25V B
C13
100N/50V X7R
B
100N/50V X7R
C12
15
+
100N/50V X7R
VDD
C24
200
X6-2
10k R8
TR2
SM6T15CA
R7
X6-1
10uF/25V B
C11
VDD1 GND1 VIA VIB VOC VOD VE1 GND1
VDD2 GND2 VOA VOB VIC VID VE2 GND2
16 15 14 13 12 11 10 9
100N/50V X7R MISO BUSY
C
AGND AGND
AGND
GND
D
D
1
2
3
4
5
6
3
4
100N/50V X7R
+
SM6T15CA
TR4
X2-4
TR5
C36 4N7/50V X7R
SM6T15CA
23
+5 V
BIN/2SCOMP
14
17 VOUTB
SIG_GND
REFIN/REFOUT
VOUTA
X2-3
3
5
IC8
4N7/50V X7R
21
SDO
SIG_GND
AGND
16
20
SYNC
AVSS
SCLK
VOA 7
DVCC
VOB 8
GND
SDIN
1
24
VOC 9
AVDD
LDAC
DAC_GND
+5 V
VOD10
15
GND
VOA VOB VOC VOD
CLR
DAC_GND
C
GND1
16 15 14 13 12 11 10 9
VDD2 GND2 VOA VOB VOC VOD VE2 GND2
C29
19
8
VDD1 GND1 VIA VIB VIC VID
B
AGND AD5732 11
C21
AGND
10k
R11 1 2 3 4 5 6
100N/50V X7R
100N/50V X7R NPCS1 SPCK MOSI LDAC
C33
C20 B 10uF/25V
AGND
C27
C32
10uF/25V B
+
C23
18
AGND
C22
100N/50V X7R
1uF/16V A tant
+5 V
REF1
C19
+
C18
B
SPI
A
6
100N/50V X7R
SLEEP
3
10M/50V X5R
GND
C17
VIN VOUT
4
C16
+3,3 V 100N/50V X7R
2
6
-15 V
+15V
REF192
100N/50V X7R
A
5
REF 2,5V
2
+5 V
1
X2-1
X2-2
C
AGND
10k R12 AGND
D
D
1
2
3
4
5
6
1
2
3
4
A
A
B
B
C
C
D
D
POD DAC je rectangle s tstop vrstvou, ktera bude mit odizolovanou masku! Aby sel priletovat, je vyveden z jedne strany ven
E
E
F
F
1
2
3
4
1
2
3
4
A
A
B
B
C
C
D
D
E
E
F
F
1
2
3
4
1
2
3
4
A
A
C33
TR3 C36
TR5 C29 2
D3 D4 LED5 R21
D2
D6 D7 LED6 R31
OK1
OK2 R28 C2
3
4
R4 C7
D
TR1
F1
IC3
R1 LED4 C20 R3 LED2
C19 1
D1
C21
C22
X2
C9
C6
R12
R11
C17 REF1
C12
C27
C18
C28 4
IC1
IC2
C30 3
D8 OK3 R33
12MHz
C31
Q1
JP1
R23
JP2
R24
C13 R9
C24 R51 R52
R7
R2
C34
C35 C15
C25 C38
C37 C14
2
LED3
X11 IC9
C57 IC11 *
C26
X15 IC12
X14 TR7 R46
1
C1 C3
C8
C23
X6TR2
R36
R22
C58
9 5 6 1 C55 1
2 TR6
C4
*
3
SV1
LED1
R10
C
R26
IC7
IC8
JP3
1 2 C32
C16
C10 R6 R5
R32 20
R27
R8
R13
25C
84C
74C 94C
1
B
R15
R25 SV2
11C
2
R16
R29
1 2
34C
C42 C41
IC4
3
R30
20
IC10
IC6
IC5
1
C45
C46
C54
*
2
R34
OK4
R45
R39
C53
C56
3
R35
R41
OK5
OK6
OK7 R50
R49
OK8 X7 ELECTRONICS
R40
R44
R17 R18 C39
4
X19
15C
C40
D
5
D9 D10 LED7
D14 R42
R19 R14 R20
C59
1
X3
D5
2
R37
3
D11
D15
D16 R47
R48
4
44C
F09
5
R43
2,54
C
6
C5
D17
B
7
D12 D13 LED8
8
R38
9
D18TR8
10
TR4
2
1
X1
E
E
F
F
1
2
3
4