ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE Fakulta elektrotechnická Katedra elektrických pohonů a trakce
DIPLOMOVÁ PRÁCE
Řízení asynchronního motoru signálovým procesorem
2010
Ondřej ZOUBEK
Prohlášení Prohlašuji, že jsem svou diplomovou práci vypracoval samostatně a použil jsem pouze podklady (literaturu, projekty, SW apod.) uvedené v přiloženém seznamu. Nemám závažný důvod proti užití tohoto školního díla ve smyslu § 60 Zákona č.121/2000 Sb., o právu autorském, o právech souvisejících s právem autorským a o změně některých zákonů (autorský zákon).
V Praze dne 14.5.2010
………………………………... podpis
3
Poděkování Na tomto místě bych rád poděkoval vedoucímu diplomové práce Ing. J. Zděnkovi, CSc. za přínosné rady a věcné podněty k práci a dále RNDr. B. Polovi z firmy ASIX s.r.o. za materiální podporu potřebnou pro výrobu vlastního zařízení.
4
Anotace Práce si klade za cíl nastudovat, implementovat a odladit pokročilou metodu řízení elektrického pohonu a realizovat ji na přípravku, který vznikl jako autorova bakalářská práce. Přípravek je deska plošných spojů osazena hradlovým polem a potřebnými analogovými periferiemi. Pro splnění požadavků na výpočetní výkon byl implementován systém s dvěma soft procesory MicroBlaze v cenově dostupném hradlovém poli. Výkon procesorů a vybavení periferií vytvořených v hradlovém poli je dostatečné a srovnatené s běžnými signálovými procesory, systém je navíc zcela flexibilní.
Annotation The goal of this thesis is to study, implement and debug an advanced method of control of electric drive and prove the method on equipment developed as a part of author's bachelor thesis. The equipment is a printed circuit board assembled with FPGA and necessary analog peripherals. To meet the computational power requirements for electric drive control the computing system was implemented in two MicroBlaze soft processors in an affordable FPGA. Processors' computational power and peripherals made in FPGA are sufficient and comparable to conventional signal processors, in addition, FPGA based implementation is fully flexible.
5
Obsah 1.Úvod..............................................................................................................................................9 2.Vektorové řízení asynchronního stroje.......................................................................................10 2.1 Matematický základ asynchronního stroje..........................................................................10 2.1.1 Základní veličiny a rovnice.........................................................................................10 2.1.2 Základní rovnice vyjádřené pomocí prostorového vektoru.........................................11 2.1.3 Často volené systémy souřadnic..................................................................................13 2.1.4 Moment stroje..............................................................................................................13 2.1.5 Model asynchronního stroje........................................................................................14 2.2 Dělení pokročilých metod řízení asynchronního stroje......................................................15 2.2.1 Vektorové řízení...........................................................................................................16 2.2.2 Vektorová regulace proudového typu..........................................................................16 2.2.3 Vektorová regulace napěťového typu..........................................................................17 2.2.4 Další typy vektorových regulací a řízení.....................................................................18 2.2.5 Přímé řízení momentu.................................................................................................19 2.2.6 Nepřímé řízení momentu.............................................................................................21 2.3 Porovnání metod řízení pohonů..........................................................................................22 2.3.1 Používané metody řízení asynchronních strojů...........................................................22 2.3.2 Metoda použitá v této práci.........................................................................................22 3.Určení rotorové konstanty stroje.................................................................................................23 3.1 Měření konstanstatním proudem.........................................................................................23 3.2 Měření na automatickém měřicím systému Omega............................................................24 3.3 Výpočet ze štítkových hodnot.............................................................................................25 3.4 Porovnání naměřených hodnot............................................................................................26 4.Technické vybavení....................................................................................................................27 4.1 Výkonový modul MC1H.....................................................................................................27 4.1.1 Možnosti použití modulu MC1H................................................................................27 4.1.2 Modifikace modulu MC1H.........................................................................................27 4.1.3 Parametry modulu MC1H...........................................................................................29 4.1.4 Využité signály modulu...............................................................................................29 4.1.5 Detekce chybových stavů ve střídači..........................................................................29 4.2 Použitý asynchronní motor.................................................................................................30 4.3 Přípravek.............................................................................................................................31 5.Hradlová pole..............................................................................................................................32 5.1 Co jsou hradlová pole.........................................................................................................32 5.2 Architektura moderních hradlových polí............................................................................33 5.3 Srovnání výpočetního výkonu FPGA a běžných DSP........................................................37 5.4 Možnosti použití hradlových polí.......................................................................................39 6.Konfigurace hradlového pole......................................................................................................40 6.1 Blokové schéma..................................................................................................................40 6.2 Hlavní procesor...................................................................................................................40 6.2.1 Základní popis procesoru............................................................................................40 6.2.2 Sběrnice hlavního procesoru.......................................................................................41 6.2.3 Nastavení procesoru....................................................................................................41 6.3 Vedlejší procesor.................................................................................................................42 6.3.1 Základní popis.............................................................................................................42 6.3.2 Sběrnice vedlejšího procesoru.....................................................................................42 6.3.3 Nastavení procesoru....................................................................................................42 6.4 Sběrnice...............................................................................................................................42 6
6.4.1 Použití sběrnice OPB...................................................................................................43 6.4.2 Použití sběrnic LMB...................................................................................................43 6.4.3 Velikosti sběrnic..........................................................................................................44 6.5 Paměti..................................................................................................................................44 6.5.1 Paměti BRAM.............................................................................................................44 6.5.2 Paměť BRAM hlavního procesoru..............................................................................44 6.5.3 Paměť BRAM druhého procesoru...............................................................................45 6.5.4 Paměť SDRAM...........................................................................................................45 6.6 OPB/OPB most...................................................................................................................45 6.6.1 Použití OPB/OPB mostu.............................................................................................46 6.6.2 Funkce OPB/OPB mostu.............................................................................................46 6.6.3 Práce OPB/OPB mostu při zápisu do SDRAM...........................................................47 6.6.4 Práce OPB/OPB mostu při čtení z SDRAM...............................................................48 6.6.5 Výhody OPB/OPB mostu............................................................................................49 6.7 Sériová rozhraní..................................................................................................................50 6.7.1 Přehled sériových rozhraní v hradlovém poli..............................................................50 6.7.2 Sériové rozhraní k A/D převodníku AD7908..............................................................50 6.7.3 Sériové rozhraní modulu MC1H.................................................................................51 6.8 IRC dekodér........................................................................................................................52 6.8.1 Použití IRC dekodéru..................................................................................................52 6.8.2 Měření rychlosti otáčení..............................................................................................53 6.8.3 Dekódování IRC čidla bez použití periferie................................................................54 6.9 Souměrná pulsně šířková modulace....................................................................................54 6.9.1 Pojem souměrná pulsně šířková modulace.................................................................54 6.9.2 Čítač souměrné PWM.................................................................................................55 6.9.3 Jednotlivé PWM výstupy............................................................................................55 7.Software......................................................................................................................................57 7.1 Možnosti komunikace s přípravkem...................................................................................57 7.1.1 Sériový port.................................................................................................................57 7.1.2 Rozhraní ethernet........................................................................................................57 7.1.3 Poskytované síťové služby..........................................................................................57 7.1.4 Další možnosti připojení.............................................................................................58 7.2 Ovládací program pro PC...................................................................................................58 7.2.1 Spuštění programu.......................................................................................................58 7.2.2 Grafické zobrazení stavu pohonu................................................................................59 8.Závěr...........................................................................................................................................61 Použitá literatura............................................................................................................................62 Použité vývojové prostředky.........................................................................................................64 Obsah přiloženého CD...................................................................................................................65 A.Měření parametrů motoru Sh20-2B...........................................................................................66 A.1 Výsledky ze systému Omega 2008....................................................................................66 A.2 Měření konstantním proudem............................................................................................75 B.Štítkové hodnoty motoru Sh20-2B.............................................................................................77 C.Kruhový diagram motoru Sh20-2B............................................................................................78 D.Schéma přípravku a rozmístění součástek.................................................................................80 D.1 Rozmístění součástek a schéma BCWORK-0...................................................................80 D.2 Schéma DIPLMI-0.............................................................................................................85 E.Vybraná schémata z hradlového pole.........................................................................................86 E.1 Dekokér IRC čidla..............................................................................................................86 E.2 Přijímač sériového rozhraní modulu...................................................................................86 7
E.3 Generátor mrtvé doby sepnutí tranzistorů..........................................................................86 E.4 OPB/OPB most...................................................................................................................86 F.Blokové schéma a ukázka programu regulátoru.........................................................................95 F.1 Blokové schéma řízení pohonu...........................................................................................95 F.2 Část programu realizující regulátor.....................................................................................95 G.Uživatelská příručka..................................................................................................................98 G.1 Náčrtek přípravku...............................................................................................................98 G.2 Připojení.............................................................................................................................98 G.3 Nastavení............................................................................................................................99 G.4 Ovládání...........................................................................................................................100 H.Vizualizace některých regulačních pochodů............................................................................106 H.1 Regulační pochody v osách (d,q).....................................................................................106 H.2 Regulační pochody v časových osách..............................................................................108
8
1. Úvod Pro řízení elektrického pohonu je kromě nepostradatelných výkonových modulů potřeba také řídící jednotka, která bývá v současné době zpravidla implementována pomocí mikrokontroléru, případně signálového procesoru. Cílem diplomové práce je praktická implementace a použití signálového procesoru označovaného jako “soft”, tedy takového, který je vývojářem navržen a nahrán v hradlovém poli, jehož jádro lze prakticky libovolně přizpůsobovat dané aplikaci a lze vytvořit prakticky libovolné periferní obvody. Práce se snaží ukázat, že jedno hradlové pole v sobě může zahrnout jeden nebo více procesorů o dostatečném výkonu pro výpočetně náročné regulace elektrických pohonů i množství složitých periferií. V jednom pouzdře lze tak nashromáždit většinu digitálních obvodů pro komplexní systém řízení pohonu.
9
2. Vektorové řízení asynchronního stroje Cílem této kapitoly je položit teoretické základy potřebné pro řízení asynchronního stroje, vybrat vhodnou metodu řízení a stanovit, které parametry je třeba znát pro matematický model stroje.
2.1 Matematický základ asynchronního stroje 2.1.1
Základní veličiny a rovnice Studium pokročilých metod řízení asynchronního stroje se neobejde bez alespoň
jednoduchého matematického základu a zavedení základních pojmů. Uvažme nejprve stojící trojfázový souměrný asynchronní stroj s vinutým rotorem vyobrazeným na obrázku 1 s respektováním všech běžných zjednodušení, tj. stroj je dvoupólový, bez uvažování sycení magnetického obvodu a se sinusově rozloženým vinutím.
ϑ
La M1
M12 LA LC LB M2
Lb Obrázek 1: Asynchronní stroj Nejprve si povšimněme charakteristických indukčností: ●
La = Lb = Lc
●
M1
●
LA = LB = LC
vlastní indukčnost jedné fáze statorového vinutí
vzájemná indukčnost dvou fází statorového vinutí vlastní indukčnost jedné fáze rotorového vinutí 10
Lc
●
M2
vzájemná indukčnost dvou fází rotorového vinutí
●
M12, M21
vzájemná indukčnost odpovídajících si fází statorového a rotorového vinutí
Žádné indukčnosti vyjma M12, M21 se nemění s natočením rotoru. Výsledný spřažený magnetický tok statorového vinutí jedné fáze pro základní polohu rotoru je a =La i aM 1 cos 120 °⋅i bM 1 cos 240 °⋅i c . M 12 i A M 12 cos 120 ° i BM 12 cos 240 °⋅i C
(1)
Za předpokladu, že není u statorového vinutí vyveden střední uzel, platí ia + ib = -ic, obdobně pro rotor, iA + iB = -iC, a po dosazení za cos 120° = cos 240° = -1/2, můžeme rovnici (1) upravit na 1 3 a = L a M 1 ⋅i a M 12⋅i A . 2 2
(2)
Lze označit 1 L1 =La M 1 2
(3)
za výslednou inkdukčnost fáze statorového vinutí a 3 L1h = M 12 2
(4)
za vzájemnou indukčnost statoru a rotoru při respektování všech fází. Pro úplnost uveďme rovnice všech spřažených magnetických toků a =L1 i a L1h i A b =L1 i bL 1h i B c = L1 i c L1h i C
A=L 2 i A L2h i a B= L2 i B L 2h i b . C = L2 i C L2h i c
(5)
u A =R2 i Ad A u B= R2 i B d B . u C = R2 i C d C
(6)
Napěťové rovnice asynchronního stroje jsou d a dt d b ub =R1 i b dt d c u c =R1 i c dt
u a =R1 i a
2.1.2
Základní rovnice vyjádřené pomocí prostorového vektoru Působení všech okamžitých hodnot proudu jednotlivých fází statoru můžeme nahradit
jedním vektorem I1: I1 = K (ia + ib ej120° +ic ej240°). Jelikož proudy ia, ib, ic se harmonicky mění s rychlostí ω1, lze rovnici (7) přepsat jako 11
(7)
3 j t I 1= K I 1m⋅e , 2
(8)
1
kde I1m značí maximální hodnotu proudu v jedné fázi. Proměnnou K lze volit několika různými způsoby. Fyzikálně správná je volba K = 1, avšak při volbě K = 2/3 odpadá nutnost násobit konstantou. V dalším textu, není-li uvedeno jinak, i v samotné programové realizaci vektorového řízení se uvažuje vždy hodnota K = 2/3. Někdy se též volí K =
2 . Více o výhodách a nevýhodách pro různá zvolená K se lze dočíst v [1] a [5]. 3
Prostorové vektory se zavádějí i stejným způsobem i u dalších veličin v motoru. Rovnice asynchronního motoru lze pak napsat ve tvaru d 11 , U =R1⋅I dt 1 1
d 22 , U =R2⋅I dt
1 1
2 2
2
11=L1 I 11 L1h I 22⋅e j ,
2 2
2
1
2=L 2 I 2 L2h I 1⋅e
− j
(9) .
(10)
Horní indexy u prostorových vektorů označují systém souřadnic, se kterým je daný prostorový vektor spojený, horní index 1 vyjadřuje systém spojený se statorem, horní index 2 vyjadřuje systém spojený s rotorem. Vyjadřovat prostorový vektor statoru spojený se statorem a rotorový s rotorem není vždy výhodné. Proto uveďme vztahy pro přepočet veličin mezi souřadným systémem, který se neotáčí (je spojený se statorem) a systémem, které se otáčí úhlovou rychlostí ωk, kde okamžitý úhel natočení je k : k
1
− j k
I =I ⋅e
1
,
k
I =I ⋅e
j k
.
(11)
Při dosazení do napěťových rovnic (9) dostaneme d k1⋅e j dt , d U k2⋅e j −= R2⋅I k2⋅e j − k2⋅e j − dt U 1k⋅e j =R1⋅I k1⋅e j k
k
k
k
k
(12)
k
ze kterých po zderivování a úpravě dostáváme známé vzdahy
k
d 1 j k k1 dt . d k2 k k k U 2 =R2⋅I 2 j k − 2 dt U 1k= R1⋅I 1k
12
(13)
2.1.3
Často volené systémy souřadnic V této kapitole jsou uvedeny často používané systémy souřadnic a pro přehlednost také
výsledné napěťové rovnice. ●
Souřadnice pevně svázané se statorem, ωk = 0, (α, β). u1 = R1⋅i 1 d u 2 =R1⋅i 2 d
●
1 dt
u 1 =R1⋅i 1 d
2 2 dt
u 2 =R1⋅i 2 d
1 dt
2 − 2 dt
(14)
Souřadnice rotující synchronní rychlostí (pevně svázané s mag. polem rotoru), ωk = ω1, (d, q), Ψ2q = 0 (definičně), Ψ2d = Ψ2. V české literatuře [1] je tento systém označen jako systém (x, y) , autor se zde však drží terminologie v anglicky psané literaturě. 1d −1 1q dt u 2d=R 2⋅i 2dd 2 dt
1q 1 1d dt u2q =R2⋅i 2q1− 2
u 1d=R1⋅i 1dd
●
u 1q =R1⋅i 1qd
Souřadnice svázané s rotorem ωk = ω, (k, l). 1k −1l dt u 2k= R2⋅i k d 2k dt
1l 1k dt u 2l =R2⋅i 2l d 2l dt
u 1k =R1⋅i 1kd
2.1.4
(15)
u 1l =R1⋅i 1l d
(16)
Moment stroje Pro činný výkon stroje platí obecně P= A⋅ℜU 1⋅I ∗1 . Koeficient A je daný podle
předem voleného K při definování prostorového vektoru. Výraz lze po aplikaci (9) dále upravit a po převodu do souřadnic (α, β) a rozepsání vychází P= A⋅[ R1 i 21 i 21 1 1 i 1 1 i 1 ]
(17)
V tomto výrazu první člen představuje ztráty ve vinutí statoru a druhý člen představuje výkon přenášený vzduchovou mezerou Pδ. Pro zvolené K = 2/3 a z podmínky nezměněné ztráty ve vinutí statoru pro přepočtené veličiny vychází A = 3/2. Z teorie asynchronního stroje známé výrazy M i=
1−s⋅P ,
13
(18)
= 1 1−s p
(19)
po aplikaci na rovnici (17) vedou na M i=
3 p 1 i 1 1 i 1 . 2
(20)
Vnitřní moment stroje lze vyjádřit i mnoha jinými způsoby. V literatuře [1] je uvedeno celkem osm různých způsobů, shrnutých v tabulce 1. 1. člen
I1
I1
I1
I1
I2
I2
I2
Ψ1
2. člen
Ψ1
Ψ12
Ψ2
I2
Ψ1
Ψ12
Ψ2
Ψ2
Lh/L2
Lh
Lh/L1
koeficient
Lh/σL1L2
Tabulka 1: Různé způsoby vyjádření vnitřního momentu Povšimněme si zdánlivého rozporu 1 i 1 1 i 1 =12 i 1 12 i 1 . Důvod, proč tomu tak je vychází z rovnice
1= 12I 1⋅L1 , přírůstek k vektoru Ψ1 není momentotvorný,
neboť je ve směru vektoru I1. Stejná situace nastává i u vektorů Ψ2, Ψ12 a I2.
2.1.5
Model asynchronního stroje Všechny moderní metody řízení asynchronních strojů fungují na principu přímé nebo
nepřímé regulace nebo řízení vnitřního momentu a magnetického toku, a to odděleně, nebo veličin motoru s momentem a tokem přímo souvisejícími. To s sebou nese nutnost určovat vnitřní veličiny v motoru (v případě regulace) či je modelovat (v případě prostého řízení). Všechny metody nutně potřebují použít nějaký model asynchronního stroje, kterým bude počítán stav vnitřních veličin. Základem všech modelů jsou rovnice (9) a (10). Přesný popis všech používaných modelů je nad rozsah této práce a lze je nalézt v [1].
Model I1-n, souřadnice (d, q) Model I1-n je často používán pro svoji jednoduchost, vyžaduje však přesné vyhodnocení rychlosti otáčení rotoru [1]. Uvedený model je základem pro vektorové řízení asynchronního motoru realizovaného v rámci diplomové práce. Souřadnice (d, q) jsou pevně spojeny s tokem v rotoru. Pro model platí ωk = ω1, ωk - ω = ω2 (skluzová frekvence), Ψ2q = 0, Ψ2d = ||Ψ2||, proto budeme pro zjednodušení psát Ψ2d = Ψ2. d 2 R R =Lh⋅ 2 i 1d − 2⋅2 dt L2 L2 R 2 2 =Lh⋅ 2 i 1q L2 14
(21)
Model je poměrně hojně používaný, příklady jeho kontrétní implementace (kromě této práce) lze nalézt i v [10], [11] nebo [12]. V některých případech, jako v [11], je model počítán místo (21) podle upravených rovnic ve tvaru L2 di 2 i 2 R 2 dt , R2 i 1q 2= L 2 i 2
i 1d =
(22)
kde je eliminovaný člen Lh a jediná konstanta stroje je τr = L2 / R2. Systém se tím však zbavil jen přímé nutnosti známosti Lh, neboť místo hlavní indukčnosti je potřeba znát velikost iψ2* nebo i1d*, která s tímto parametrem přímo souvisí1.
Model U1-I1, souřadnice (α, β) Model pracuje pouze se statorovým napětím a proudem, je vyloučeno otáčkové čidlo. Statorové napětí navíc lze snadno spočítat z modelu použitého střídače. Model ve vektorovém zápisu je d 2 L2 d I1 = U 1−R1⋅I 1−⋅L1 , dt Lh dt
(23)
kde =
L 1 L 2−L 2h L1 L2
(24)
je činitel rozptylu. Pro výpočet v modelu je potřeba znát derivaci proudu, jejíž určení může být obtížné.
2.2 Dělení pokročilých metod řízení asynchronního stroje Pokročilé metody řízení asynchronních strojů lze rozdělit na (vyjma skalárních řízení) na řízení vektorová a přímá či nepřímá řízení momentu, která sice nejsou označována jako vektorová, ale jedná se také o pokročilé metody řízení asynchronních strojů2. Jeden systém přitom nemusí používat jedinou medotu, ale kombinaci více metod, například v nízkých a vysokých otáčkách (s hysterezí) [1]. Dělení metod řízení na skalární, vektorová a přímá nebo nepřímá, ačkoliv v literatuře se poměrně často toto dělení vyskytuje, je poměrně umělé, neboť hranice, co je a co není vektorové 1 Z jmenovitého napětí a frekvence stroje známe jeho jmenovitý magnetický tok (ve statoru). Magnetický tok je přitom určen indukčností a proudem. 2 Někteří autoři přitom nepřímé řízení momentu též považují za vektorové řízení.
15
řízení není jasně ohraničena. Je proto obtížné určit, zda daná metoda je “vektorová” či “nevektorová”. Označení vektorové řízení pochází ze systému Transvektor, který pracoval s proudem rozděleným na tokotvornou a momentotvornou složku [1]. Někdy se mluví o vektorovém řízení a o vektorové regulaci a tyto pojmy bývají poměrně striktně odděleny. Obecně lze řízení dělit na ovládání a regulaci. V případě regulace je zavedena zpětná vazba do systému a je regulována vnitřní veličina systému regulátorem. V případě ovládání žádná zpětná vazba není zavedena [2]. V naprosté většině případů systémy s vektorovým řízením mají zavedenou nějakou zpětnou vazbu, takže lze mluvit o vektorové regulaci. V případě moderních systémů se téměr vždy jedná o vektorovou regulaci [1].
2.2.1
Vektorové řízení Cílem řízení elektrického pohonu je dynamicky měnit dodávaný moment podle požadavku.
Smyslem vektorového řízení je rozdělení statorového proudu na dvě složky, momentotvornou a tokotvornou, a řízení obou složek samostatně, odděleně. Regulace momentotvorné složky přitom přímo souvisí s požadavkem na zadaný moment (rovnice (20) a tabulka 1), řízení tokotvorné složky může být s ohledem na plné nabuzení stroje (a jeho odbuzování ve vysokých otáčkách), nebo s ohledem na minimální ztráty. Následně se budeme zabývat již pouze různými typy vektorových regulací.
2.2.2
Vektorová regulace proudového typu U vektorové regulace proudového typu je vstupními veličinami požadovaný modul
statorového proudu I1* daný velikostí požadované tokotvorné a momentotvorné složky proudu a úhlem ε*, který označuje úhel mezi tokem rotoru Ψ2 a statorovým proudem I1. Daný úhel přitom úzce souvisí, dle tabulky 1, s velikostí momentu.
16
modulátor f 1*
střídač
AS
I1*
U1*
I1
PID
n
model AS PID
f 2* f
ε ε*
f
Obrázek 2: Vektorové řízení proudového typu Výstupní napětí střídače ovládá regulátor proudu. Frekvence, resp. výstupní úhel střídače φ je ovládán regulátorem úhlu ε. Vstup f2* není nutné použít, je použit pouze pro zvýšení dynamiky [1], výstupem z regulátoru ε nemusí být Δf, ale může být přímo úhel φ pro střídač (regulátor musí umět správně přetékat přes 360°). Regulovanými veličinami je napětí (jeho velikost a úhel), řízení je poměrně přímočaré a jednoduché pro pochopení. Značnou výhodou je, že povely pro střídač jsou shodné jako u skalárního řízení U / f a tohoto faktu lze využít pro oddělený vývoj střídače (zprvu řízeného jednoduchým skalárním řízením) a regulátoru [1]. Jeho dynamické vlastnosti jsou však sníženy, neboť při rychlých dynamických dějích je vždy potřeba prudce měnit velikost i směr napětí. Tento způsob regulace byl použit například v posunovací lokomotivě Škoda 90E (označení ČD 114) [1].
2.2.3
Vektorová regulace napěťového typu U vektorového řízení napěťového typu jsou vstupními veličinami přímo požadavek na
velikost tokotvorné IΨ a momentotvorné IM velikosti statorového proudu. Velikost magnetického toku Ψ2 v ustáleném stavu pak podle (21) přímo závisí na velikosti IΨ a může být výstupem z nadřazeného regulátoru. Velikost Ψ2 je Lh i1d po ustálení s časovou konstantou rotoru τ2 = R2 / L2. Požadavek na velikost Ψ2 může být s ohledem na odbuzování stroje při vyšších otáčkách nebo též na minimální ztráty. Při zavedení dalšího regulátoru Ψ2, jehož výstupem by byl i1d, lze přechodné děje u strojů s dlouhým τ2 (velké stroje) výrazně urychlit.
17
modulátor
střídač
AS
I1q*
U1q*
I1q
PID
n
model AS U1d*
PID
f
I1d I1d
*
Ψ2
PID Ψ2 *
Obrázek 3: Vektorové řízení napěťového typu Vstup I1q* je z nadřazeného regulátoru a přímo souvisí s momentem (neboť, jak bylo uvedeno v (20) a tabulce 1, moment lze vyjádřit jako součin I1 a Ψ2 s konstantou Lh / L2 a složka kolmá na Ψ2 je právě I1q). V některých implementacích se vyskytuje modul odvazbení. Modul je zaveden z důvodu, že i1d není čístě závislé na u1d a vice versa i1q není čistě závislé na u1q. Více se o modulu odvazbení lze dočíst v [10], kde je implementován. V této práci modul odvazbení není použit. Mezi výhody tohoto systému řízení patří skutečnost, že vstupem do systému jsou statorové proudy a je tedy implicitně řešený problém nadproudových ochran a přetížení. Dynamické vlastnosti řízení závisí na rychlosti regulátorů napětí. Pro rychlé přechodné děje je třeba rychlých a velkých změn napětí.
2.2.4
Další typy vektorových regulací a řízení V rámci vektorových regulací a řízení bylo popsáno mnoho dalších typů. Liší se podle
toho, zda výsledkem regulace je napětí nebo proud, jakým způsobem je zjišťována poloha os (d, q), případně jaká, a zda vůbec, je zavedena zpětná vazba (pak nemluvíme o vektorové regulaci ale o vektorovém řízení). V následující tabulce 2 je shrnující porování některých publikovaných typů vektorového řízení. Tabulka je založena na textu [1], z popisu systémů byl vždy vyňat nadřazený regulátor otáček.
18
Název
Poloha os (d, q)
Vstupy do systému Vstup pro střídač I1, I1*, ω2*, (ε, ε*), ω
VR proudového typu nezjišťuje se
* 1q
*
VR napěťového typu ∫ model_ω2(θ, i1d, i1q) + ω i1q, i , i1d, Ψ2 , ω
Napětí |U1|, ω1 Napětí u1
Podle Schumachera
∫ model_ω2(θ, i1d, i1q) + ω i1q*, Ψ2*, ω Proudy i1 jen pro model: i1q , i1d
Podle Warneckeho
∫ ω2* + ω
Ψ2*, ω2*, ω *
*
*
*
Proudy i1
Podle Flügela
model(Ψ2 , ω2 )
Ψ 2 , ω2 , ω
|U1|, ω1 (= ω2* + ω)
Podle Wenningera
model(Ψ2*, ω2*)
Ψ2*, ω2*, ω
|I1|, ω1 (= ω2* + ω)
Tabulka 2: Porovnání různých typů vektorového řízení Z uvedeného je vidět, že jednotlivé metody se od sebe liší v detailech, myšlenka zůstává zachována. Existují i další typy, rozsah této práce však neumožňuje zabývat se všemi dopodrobna.
2.2.5
Přímé řízení momentu Základní myšlenkou přímého řízení momentu je krok od regulace tokotvorné složky
statorového proudu i1d k přímé regulaci toku Ψ1 a od regulace momentotvorné složky i1q k přímé regulaci momentu Mi. Cílem regulace je udržování toku Ψ1 na stanovené trajektorii za pomoci šesti aktivních a dvou neaktivních stavů střídače a přitom regulovat moment. Pro tok Ψ1 platí: d 1 =U 1−R1⋅I 1 dt
(25)
Přitom dle tabulky 1 lze vnitřní moment vyjádřit jako M i=c⋅1 ∗2 , kde c je konstanta daného stroje. Za předpokladu (který ne zcela odpovídá skutečnosti), že velikosti Ψ1 a Ψ2 se nemění, momentu odpovídá jejich vzájemné natočení. Velikost Ψ1 lze tedy řídít přímo napětím, moment lze řídit rychlostí probíhání Ψ1 po zvolené trajektorii. Vektor Ψ1 se pak vždy posune směrem daným spínacím stavem střídače. V motorické oblasti, posun Ψ1 vpřed znamená zvýšení momentu, naopak jeho neposunutí znamená okamžité snížení momentu z důvodu, že Ψ2 má tendenci se pohybovat svázaný s rotorem rychlostí ω.
19
UI
τψ1
UII
Ψ1 τψodb
UVI
UIII
τψkr
UV UIV
Obrázek 4: Trajektorie toku Některé implementace uvádějí pohyb po kruhové trajektorii τ ψkr, (podle obrázku 4) zatímco jiné uvádějí trajektorii po šestiúhelníku τψ1 ve smyslu napětí spínacích stavů střídače a trajektorii při odbuzování po křivce naznačené v obrázku 4 šipkami, někdy jsou uvedeny kombinace obojího, volené podle otáček (0 - 25% jmenovitých otáček kruhová, 25% a více šestiúhelníková) [1]. Vhodný ze spínacích stavů je přitom vybírán dvoustavovým regulátorem s hysterezí ve velmi rychlé časové smyčce tak, aby moment byl udržen v regulační oblasti (v případě přímé regulace momentu podle Takahashiho je výstupem regulátoru momentu -1, 0, 1). Šířkou hystereze se pak reguluje spínací frekvence. V literatuře [1] se uvádí, že nepravidelné spínací stavy vedou k šelestivému zvuku pohonu, který je v kontrastu s čistou nosnou frekvencí slyšitelnou u vektorových regulací, a pocitu, že pohon nepracuje zcela správně. Je vidět, že ve stavu odbuzování, kdy Ψ1 se pohybuje po šestiúhelníku, střídač provádí zcela shodné spínací stavy jako při vektorovém řízení, kdy modulace přešla do obdélníkového řízení (obdélník po 60°).
modulátor
střídač ΔMi
Mi* Mi
model AS Ψ1 ΔΨ1
Ψ1
*
Obrázek 5: Schéma přímého řízení momentu
20
AS
Většinou se uvádí dva způsoby řízení přímého momentu, podle Takahashiho a Depenbrocka. Oba způsoby jsou svým principem shodné, liší se ve způsobu rozhodování jaké spínací stavy se mají použít.
2.2.6
Nepřímé řízení momentu Při přímém řízení momentu lze problém s nejasným spínacím kmitočtem, vysoké nároky
na rychlost výpočtu při snižujících se otáčkách, i maximální délku spínacího pulsu eliminovat zavedením regulátoru napětí do regulační smyčky přímého řízení momentu. Nepřímé řízení momentu lze považovat za variantu vektorového řízení. Blokové schéma nepřímého řízení je vyobrazeno na obrázku 6.
modulátor U1α*
U1β*
střídač
AS
Mi* Mi
model AS reg. napětí
Ψ1 Ψ1* ψ
Obrázek 6: Schéma nepřímého řízení momentu Vstupem do regulátoru napětí je směr mag. toku ψ a chybové veličiny ΔMi a ΔΨ1. Modulátor s regulátorem napětí je navržen tak, aby během jedné regulační smyčky došlo k sepnutí dvou aktivních stavů a jednoho neaktivního. Se zvyšujícími se otáčkami se snižuje délka neaktivního stavu, až zcela vymizí. Pro další zvyšování otáček je třeba odbuzovat.
21
2.3 Porovnání metod řízení pohonů 2.3.1
Používané metody řízení asynchronních strojů Z předchozího textu lze vybrat několik stěžejních metod řízení a je vhodné shrnout jejich
vlastnosti pro účely této práce. Pro úplnost je v následující tabulce 3 uvedeno i skalární řízení U / f. Zdrojem pro tabulku je [1], [5]. Název metody
Zadávané veličiny
Výstupy regulátoru
Dynamika
Spolehlivost a přesnost
Skalární U / f
f2 / f
f1, U1
velmi malá pro mnoho aplikací dostatečná
Vektorové proudové
I1, ε, (f2)
f1, U1
malá
jednoduchý přechod ze skalárního řízení, použito v trakci 114, 471
Vektorové napěťové
i1d / Ψ2, i1q / Mi u1d, u1q
výborná
široce používaná v trakci i jiných aplikacích
Přímé momentu
Ψ1, Mi
spínací stavy
výborná
v trakci ve vyšších otáčkách jako nevýhoda se udává nižší účinnost
Nepřímé momentu Ψ1, Mi
u1α, u1β
dobrá
v trakci v nižších otáčkách
Tabulka 3: Srovnání používaných způsobů řízení asynchronních strojů
2.3.2
Metoda použitá v této práci Cílem kapitoly je stanovení vhodného způsobu regulace pro malý motor (konkrétně typ
Sh80-2B, výrobce Cantoni) s ohledem na vysokou dynamiku a práci v nízkých otáčkách a pro použití se střídačem dsPICDEM MC1H firmy Microchip. Výhodou vektorové regulace napěťového typu je její odolnost vůči přetížení (přímo se reguluje statorový proud), což v návrhu hraje poměrně podstatnou roli, neboť použitý střídač nemá velkou proudovou rezervu pro použitý motor. Z ukázkové implementace od firmy Microchip [11] se udává jako nevýhoda tohoto typu regulace poměrně špatná stabilita v nízkých otáčkách a náchylnost na špatně zadané veličiny motoru. Výsledky této práce však ukazují, že tomu tak není. Vektorová regulace napěťového typu vyžaduje pro svoji správnou činnost zejména přesné vyčíslení rotorové konstanty τr pro použitý matematický model stroje (22), a dále pak samozřejmě další štítkové parametry motoru, jako je jmenovitý proud.
22
3. Určení rotorové konstanty stroje Cílem třetí kapitoly je určit, s dostatečnou přesností, rotorovou konstantu použitého motoru Sh80-2B, výrobce Cantoni.
3.1 Měření konstanstatním proudem Měření je založeno na vyloučení vlivu indukčnosti statorového vinutí tím, že všechny proudy statorových vinutí mají nulovou derivaci. Na jedno z vinutí se připojí zdroj konstantního proudu, ostatní dvě vinutí se ponechají nezapojená. Uvažujme podle rovnice (1) zdroj konstantního proudu připojený na statorové vinutí a, tedy dia /dt = 0, ib = 0, ic = 0. Dále můžeme použít zjednodušujících vztahů pro rotor nakrátko (4), iA + iB = -iC a dále, uA = uB = uC = 0. Při těchto úvahách vyjde pro rovnice (1) a (6) a =La i a L1h i A d a u a =R1 i a , dt di 0= R2 i A L2 A dt
(26)
dále při zderivování rozvnic podle času (a předpokladu všech indukčností konstatních – neuvažujeme nasycení) platí u a =R1 i a L1h
di A , dt
(27)
R2 di i A=− A . L2 dt
(28)
Vyřešením diferenciální rovnice (28) vyjde i A=c⋅e
−
R2 t L2
,
(29)
kde L2 / R2 = τr je rotorová časová konstanta a c je konstanta závislá na velikosti testovacího proudu. Po dosazení (29) do (27) dostáváme napětí, které naměříme během přechodového děje na svorkách testovaného vinutí motoru R2
R − u a =R1 i a− L1h c 2 e L L2
23
2
t
.
(30)
Obrázek 7: Průběh napětí na vinutí motoru při přiložení konstantního proudu Průběh změřeného napětí na vinutí motoru ua při přiložení konstantního proudu 400 mA je na obrázku 7. Napětí ua, po odeznění krátkých přechodových dějů způsobených konečným napětím proudového zdroje při připojení na indukčnost motoru, se dostane na počáteční hodnotu, odkud po exponenciele s časovou konstantou τr klesá ke konečné hodnotě dané jako součin R1 ia. Při měření osciloskopem lze hodnotu časové konstanty τr (ale i napětí R1 ia) přímo odečíst (resp. exportovat jako tabulku, kterou lze následně zpracovat výpočtem). Měření je vhodné provést pro několik různých velikostí proudů řádově odpovídajících skutečným velikostem magnetizačních proudů stroje. V příloze A jsou podrobnosti měření a naměřená data. Výhoda tohoto způsobu měření je, že programové vybavení střídače si může časovou konstantu rotoru, jen se samotným střídačem a připojeným motorem, změřit samo.
3.2 Měření na automatickém měřicím systému Omega Měřicí systém Omega 20083 umožňuje automatizované měření parametrů motoru nakrátko a naprázdno v laboratoři H10 katedry elektrických pohonů a trakce. Tímto měřícím systémem byl změřen motor Sh20-2B při zapojení do hvězdy použitý při realizaci řízení. Systém sám snímá hodnoty z přesných měřících zařízení a provede interpretaci naměřených hodnot, umožní vytisknutí protokolu o měření a grafů. Přiložené výsledky měření jsou v příloze A.
3 Systém je instalovaný v laboratoři H10, ČVUT FEL, Praha, kontaktní osoba Ing. Vít Hlinovský, CSc.
24
3.3 Výpočet ze štítkových hodnot Přibližnou představu u velikosti rotorové časové konstanty si lze udělat studiem štítkových hodnot stroje.
q
Ui
U1 I1
I2
I0
Ψμ IΨ
i2*L2σ
Ψ2~d
Obrázek 8: Fázorový diagram asynchronního stroje Pozorujme na obrázku 8 fázorový diagram asynchronního stroje při zatížení blížícímu se jmenovitému. Pro přehlednost jsou úhly mezi fázory magnetických toků podstatně zvětšené. Zejména si povšimněme vyznačené polohy os (d, q). Ve skutečném stroji je úhel mezi Iμ a osou kolmou na U1 (a také mezi mezi U1 a Ui) velmi malý4 [3], [4] a úhel mezi Ψμ a Ψ2 je dán velikostí činitele rozptylu, který je také velmi malý. S dostatečnou přesností lze proto ztotožnit osy (d, q) se základními kolmými osami (na jedné z nich leží fázor U1). Potom lze velikost a směr fázoru I1n při jmenovitém zatížení spočítat v osovém systému (d, q) přímo ze štítkových hodnot jako i 1nq =2 I 1n cosn . i 1nd = 2 I 1n 1−cos 2 n
(31)
Za použití rovnic (22) lze odhadnout rotorovou konstantu τr jako 1−cos 2 n 1 R2 . = = 1 s r L2 cos n
(32)
Při použití webového rozhraní na přípravku, který vnikl pro účely této práce lze pomocí funkce napsané v jazyce JavaScript po vyplnění štítkových hodnot pohonu spočítat rotorovou konstantu stroje a vyplní se i další hodnoty z formuláře webového rozhraní „nastavení pohonu“, jako je maximální okamžitý proud i1q stroje a doporučený budicí proud i1d. 4 Zkoušený dvoupólový motor Sh20-2B o jmenovitém výkonu 1,1kW má úhel 4°.
25
3.4 Porovnání naměřených hodnot Při použití jednotlivých metod vyšly poněkud rozdílné výsledky. Rozdíly mohou být způsobeny zejména sycením magnetického obvodu motoru, přijatými zjednodušujícími předpoklady, měnícími se parametry motoru při různých natočení hřídele a nesouměrností vinutí. V tabulce 4 jsou uvedeny výsledky měření jednotlivými metodami. Metoda
Naměřená τr
Poznámka
Měření konstantním proudem 71 - 130 ms
Při proudu 0,1 až 2,0 A jedním vinutím
Systém Omega
55 - 83 ms
Při proudu 0,85 až 2,0Aeff
Určení ze štítkových hodnot
67 ms
Při jmenovitém proudu 2,5Aeff = 3,54Amax
Tabulka 4: Porovnání zjištěných hodnot rotorové časové konstanty Z naměřených hodnot byla pro vlastní řízení motoru zvolena rotorová konstanta τr = 71 ms. V příloze H lze porovnat výsledky některých regulačních pochodů s různě (chybně) zvolenými rotorovými časovými konstantami.
26
4. Technické vybavení 4.1 Výkonový modul MC1H Přípravek vyrobený pro účely diplomové práce se připojuje k výkonovému modulu dsPICDEM MC1H firmy Microchip. Modul byl vytvořen jako kompletní řešení výkonové části systému s třífázovým střídačem napájeným z jednofázové sítě. Výkonový modul je primárně určen pro připojení k vývojovému prostředku dsPICDEM MC1 osazenému procesorem dsPIC30F nebo dsPIC33F. Připravek lze připojit na komunikační konektor původně určený pro připojení desky dsPICDEM MC1 [7], [8], [9].
4.1.1
Možnosti použití modulu MC1H Výkonový modul dsPICDEM MC1H je poměrně variabilní. Je možné ho použít jako
střídač pro, až třífazový, asynchronní, synchronní, PMSM 5 nebo BLDC6 motor, případně motor stejnosměrný. Jednofázový usměrnovač modulu je vybaven aktivním PFC 7 obvodem, který je možno uživatelsky řídit. Vstupní část neumožňuje vracet energii zpět do sítě, modul však disponuje též tranzistorem a zpětnou diodou pro spínání brzdného odporu (pro pálení přebytečné energie z kondenzátoru stejnosměrné větve). Při nepoužití brzdného odporu je možno využít tohoto obvodu pro buzení synchronního motoru.
4.1.2
Modifikace modulu MC1H Modul disponuje poměrně rozsáhlou dokumentací [9] včetně popisu pro případné
modifikace. Při instalaci modulu je nutno dbát zvýšené opatrnosti, neboť při některých typech provedených modifikací se zruší bezpečné oddělení mezi ovládacím konektorem a silovou částí a celou ovládací desku je potom nutno považovat za živou část. Přípravek vyrobený pro účely diplomové práce nevyžaduje nijak upravený výkonový modul a bezpečné oddělení není potřeba rušit, případně u modifikovaného modulu je vhodné oddělení obnovit.
5 PMSM = Permanent Magnet Synchronous Motor 6 BLDC = Brushless DC motor. Autor se zabývá řízením tohoto motoru v bakalářské práci. 7 PFC = Power Factor Correction. Obvod pro zvýšení učiníku a snížení deformačního výkonu
27
Obrázek 9: Blokové schéma výkonového modulu MC1H 28
4.1.3
Parametry modulu MC1H Výkonový modul je možné napájet ze sítě až 265 V. Maximální doporučené napětí
na stejnosměrné větvi střídače je nejvýše 400 V (410 V je jmenovité napětí přepěťové ochrany), je dimenzován pro dodávání 2,5 A (RMS) do motoru na každé fázi. Vstupní usměrňovač může trvale přenášet proud 5 A (RMS). Tranzistor pro spínání brzdného odporu je dimenzován pro trvalé zatížení 4 A při připojení externího odporu, modul je vybaven interním odporem se zatížitelností 50 W. Maximální spínací frekvence tranzistorů střídače je dle dokumentace 20 kHz, u tranzistoru spínajícího brzdný odpor je 16 kHz a tranzistoru PFC usměrňovače je 50 kHz [9], avšak v aplikační poznámce [13] příkladu použití přímo od výrobce modulu je 80 kHz.
4.1.4
Využité signály modulu Na obrázku 9 můžeme pozorovat blokové schéma modulu MC1H. V programovém
vybavení se používají pouze izolované signály, tedy proud fázemi R a Y (pro regulaci), dále proud vstupním usměrňovačem a přes izolované sériové rozhraní napětí VAC a VDC (pouze pro vizualizace a informaci v řídícím programu). K vlastnímu řízení pohonu se používá sedm opticky oddělených signálů řídících spínání šesti výkonových tranzistorů střídače a jednoho tranzistoru spínajícího brzdný odpor. Aktivní PFC část není použita a tranzistor PFC části je ponechán v nesepnutém stavu (v souladu s doporučením dle dokumentace k modulu).
4.1.5
Detekce chybových stavů ve střídači Modul obsahuje obvody, které automaticky odpojí (za použití různých prostředků) všechny
signály pro spínání výkonových prvků v případě jakékoli chyby. Jednotlivé chybové signály jsou sloučeny a přenášeny přes opticky oddělené rozhraní do přípravku. Softwarovými i hardwarovými prostředky jsou i zde hlídány různé typy chyb, které jsou opět sloučeny v jeden chybový signál a při výskytu chyby dojde k automatickému odpojení signálů pro spínání výkonových prvků. Typ ochrany
Jmenovitý bod spuštění Kde je
Přepěťová
410 V
modul
Naproud větve střídače ±4,4 A
modul
Nadproud fází střídače ±4,8 A
modul
29
Poznánka
Typ ochrany
Jmenovitý bod spuštění Kde je
Poznánka
Nadproud vstupním usměrňovačem
8,9 A
modul
Naproud brzd. odporu
4,9 A
modul
Tepelná
65 °C
modul
není umístěn na chladiči
Podpěťová na 15V
8,1 V
IR2112S
budič tranzistorů střídače [16]
Chyba rámce sériového Nepřijde-li rozhraní modulu předpokládaná synchronizační značka
FPGA
synchronizační byte s domluvenou hodnotou 0xFD
Zastavení hodin sériového rozhraní
Klid po dobu 819,2 μs
FPGA
Dlouhodobé sepnutí horního tranzistoru ve větvi střídače
400 regulačních period (20 kHz → 20ms)
software
Alespoň jednou se musí sepnout dolní tranzistor na dobu alespoň 1/3 regulační periody
Tabulka 5: Přehled ochran použitých v implementaci řízení pohonu
4.2 Použitý asynchronní motor Pro řízení byl vybrán asynchronní motor typu Sh80-2B, výrobce Cantoni. Jedná se o třífázový dvoupólový asynchronní motor určený pro napětí 230/400V/50Hz v zapojení D/Y. Motor má jmenovitý vykon 1,1 kW. Motor je chlazen cizí ventilaci (napájení 1x230 V) a je vybaven inkrementálním snímačem polohy (IRC čidlo) s 2048 pulsy na otáčku, ERN 420 2048, výrobce Heidenhain [31]. Tento motor byl zapůjčem od firmy ASIX s.r.o., kde byl zakoupen právě pro účely demonstrace pokročilých metod řízení asynchronních motorů pro reklamní účely. Při výběru motoru byl zohledněn požadavek maximalizace poměru velikosti záběrného momentu Mz ku momentu setrvačnosti rotoru J při výběru motoru z kategorie dvou až osmipólových třífázových asynchronních motorů ze standardní řady o jmenovitém výkonu do 2 kW. Vzhledem k jmenovitým proudům motoru a maximálním proudům střídače je motor zapojen do Y (nikoliv do D) s jmenovitým napětím 400 V a jmenovitým proudem 2,5 A, ačkoliv napětím je střídač určen spíše pro motory s jmenovitým napětím do 230 V. Proto při řízení motoru dochází k odbuzování dříve než při jmenovitých otáčkách. Maximální proud střídače umožnuje proudové využítí motoru až do jmenovitého proudu (špička proudu střídače je maximálně 3,5 A).
30
4.3 Přípravek Pro účely diplomové práce vznikl (v rámci autorovy bakalářské práce) přípravek s programovatelným hradlovým polem typu XC3S500E-4PQ208C. V tabulce 6 jsou uvedeny přítomné obecné vstupy a výstupy na přípravku. Všechny obecné I/O piny vedou přímo na hradlové pole (přes případné překladače logických úrovní a ochrany), proto je možné na ně připojit libovolnou periferii. Konektor
Počet a vlastnosti I/O
Přítomná napájení Primární použítí
J2
16 obecných 3,3 V CMOS vstupů a výstupů
3,3 V
Připojení logického analyzátoru SIGMA
J7
3,3 V a 5 V
IRC čidlo (využity 3 vstupy)
J8
Na každém 6 obecných 5 V tolerantních TTL vstupů (a 4x 5 V CMOS výstup)8
J3
JTAG
2,5 V
JTAG: Ladění a programování
P1
RS-232: Jeden vstup a jeden výstup na pozicích signálů RxD a TxD
-
Připojení k PC přes sériový port
U28
Ethernet 10BASE-T
-
Připojení k PC přes síť ethernet
nevyužito9
Tabulka 6: Stručný přehled uživatelských konektorů na přípravku
8 Z celkem šesti pinů mají čtyři funkci vstupu a výstupu a dva mají pouze vstup. 9 Na tento vstup je možné připojit například další IRC čidlo a regulovat polohu motoru podle tohoto referenčního vstupu, nebo je možné připojit CAN převodník se sériovým rozhraním.
31
5. Hradlová pole Text páté kapitoly byl s mírnými změnami převzat z autorovy bakalářské práce [21].
5.1 Co jsou hradlová pole Jednou z, dnes již všeobecně uznávaných a někdy dokonce až nepostradatelných elektronických digitálních součástek je hradlové pole, angl. FPGA – Field Programmable Gate Array. V posledních patnácti letech zaznamenaly tyto součástky velký pokrok, což se odráží v jejich stále častějším nasazování do praktických aplikací [22]. V roce 1991 uvedla firma Xilinx, jeden z hlavních leaderů v oblasti hradlových polí, na trh součástky rodiny XC4000, což jsou předchůdci dnešních levných velmi úspěšných hradlových polí rodiny Spartan. Od té doby se hlavní myšlenka hradlových polí Xilinx nezměnila.
Hradlové pole je programovatelná součástka, která v prvním přiblížení obsahuje jednotlivé,
velmi
malé
a
jednoduché
programovatelné
bloky
Většinou
se
jedná
o několikavstupou funkci implementovanou jako malá paměť ROM (jejíž obsah lze určit) a klopný obvod typu D, který lze programovatelně přemostit. Bloky které jsou spolu propojeny pomocí vodivých cest, které lze programovatelně sestavovat. Současná hradlová pole obsahují tísíce takovýchto malých programovatelných bloků uspořádaných do matice, jejíž strana čítá desítky buněk. Tato architektura malých programovatelných bloků propojených uživatelsky sestavovatelnými cestami je také inspirací pro název firmy Xilinx - “X” na obou koncích představuje programovatelné bloky a mezi nimi jsou “links” - spoje[22].
Mezi výhody hradlových polí patří zejména [22], [6]: ●
možnost návrhu prakticky libovolného digitálního obvodu
●
v hradlovém poli (na rozdíl od běžného procesoru) lze signály zpracovávat zcela odděleně a paralelně
●
možnost použití několika hodinových domén (fázově i frekvenčně různých)
●
velmi vysoká dosažitelná taktovací rychlost (dnes (r. 2010) nejlevnější hradlové pole firmy Xilinx dokáže pracovat s pamětí SDRAM na taktovací frekvenci 133 MHz)
●
flexibilita těžko dosažitelná s jakýmkoli jiným druhem součástky 32
Mezi nevýhody hradlových polí patří: ●
vyšší cena (architektura Spartan- 3, použitá i v praktickém provedení diplomové práce, se snaží tento problém překonat)
●
konfigurace (program) hradlového pole, kterou je třeba nahrát u většiny typů 10 z externí non-volatile paměti (ROM, flash, ...)
●
hradlové pole nepracuje ihned po zapojení napájecího napětí, neboť musí nejdříve proběhnout inicializace (několik milisekund v závislosti na velikosti hradlového pole) a konfigurace (doba je závislá na rychlosti externí paměti)
●
více napájecích napětí z důvodu pokročilé technologie
●
nezanedbatelně velká statická spotřeba energie
●
absence analogových periferií, běžných u mikrokontrolérů a signálových procesorů Je třeba zdůraznit, že téměř každou z uvedených nevýhod lze v případě potřeby nějakým
způsobem eliminovat.
5.2 Architektura moderních hradlových polí Tato práce se zabývá výhradně hradlovými poli firmy Xilinx (čtěte “zajlinks”), se kterými je autor do značné míry seznámen. Téměř ke každému typu hradlového pole nabízeného firmou Xilinx lze nalézt ekvivalent v nabídce firmy Altera, která tvoří spolu s firmou Xilinx vedoucí dvojici na trhu s hradlovými poli [22], [23], [17]. Historie dnešních hradlových polí rodin Spartan a Virtex firmy Xilinx se začala psát na začátku devadesátých let dvacátého století, kdy byli uvedeni na trh předchůdci těchto součástek – rodina XC4000. Historický vývoj přecházel od rodin XC4000E, Spartan, Spartan-XL (což je rodina součástek pro některé svoje vlastnosti dodnes používaná), Virtex(-E) až k současným Virtex- II (na trhu jsou též high-end rodiny Virtex- 4 a Virtex-5). Rodina Spartan- II je odvozena od rodiny Virtex a rodina Spartan-3 je odvozena od rodiny Virtex- II [22]. Všechny tyto součástky mají společnou architekturu. V součástkách lze najít několik základních bloků, o nichž je třeba se zmínit: ●
bloky CLB (Configurable Logic Block) uspořádané v matici
10 Rodina součástek Spartan-3AN obsahuje sérivou NOR flash paměť AT45DBxxxD (dle velikosti hradlového pole) přímo s hradlovým polem v jednom BGA pouzdře, piny paměti přitom jsou zvenku nepřístupné pro zvýšení bezpečnosti. Cena součástek této rodiny ale podstatně převyšuje cenu jiných hradlových polí.
33
●
programovatelná propojení (Interconnect)
●
bloky IOB (Input / Output Block), které jsou umístěny po okrajích čipu propojující součástku s okolím
●
blok konfigurace
●
globální hodinové signály (GCK)
●
ostatní bloky (paměti RAM, bloky DCM – Digital Clock Management, násobičky, ...) Jak je vidět z obrázku 10, současná rodina Spartan-3 má vnitřní strukturu CLB natolik
složitou, že její hlubší popis by se vymykal rozsahu této práce. Podrobný popis lze nalézt v [6]. Vývojové nástroje pro hradlová pole Xilinx lze však úspěšně a efektivně používat i bez hlubšího poznání vnitřní struktury součástky. Na obrázku 11 je vyobrazeno zjednodušené schéma IOB – Input/Output Block. Bloky IOB a CLB jsou spolu propojeny pomocí programovatelných cest. Nedílnou součástí každého hradlového pole Spartan-nn je konfigurační blok. Ten zajišťuje nahrání konfigurace - “programu” - do hradlového pole po připojení napájecího napětí nebo po resetu. Hradlové pole je z důvodu technologie výroby vybaveno pouze pamětí RAM, konfigurace tedy musí být uložena v externí paměti.
34
Obrázek 10: Zjednodušené schéma jedné slice Spartan-3, čtyři slice tvoří jednu CLB. Obrázek je přejat z [6].
35
Obrázek 11: Zjednodušené schéma jednoho IOB – bloku spojujícího součástku s okolním světem. Obrázek je přejat z [DSXC3SE]. Hradlové pole se dá již od svých počátků konfigurovat hned několika možnými způsoby. Možnosti konfigurace hradlových polí Spartan- 3E jsou[6]: ●
Slave Serial: nejjednodušší způsob konfigurace, kdy kromě signálů pro resetování obvodu jsou pro nakonfigurování třeba dva vstupní signály, hodinový a datový; konfigurační bitstream se bit po bitu nahraje do obvodu; pomocí výstupu dataout lze propojit několik hradlových polí za sebou pro vznik tzv. daisy-chain, z jedné paměti pak lze provést konfiguraci všech propojených hradlových polí přítomných na jednom plošném spoji najednou
●
Master Serial: podobné jako slave serial, pouze s rozdílem, že hodinový signál je výstupní a zdrojem časové základny je interní oscilátor hradlového pole 36
SPI: ke konfiguraci lze použít běžně dostupnou standardní SPI flash paměť, např. od
●
výrobců ST, SST nebo Atmel; tyto paměti jsou z důvodu masového rozšíření velmi cenově příznivé JTAG: v každém připadě (i v případě selhání některého z ostatních způsobů) lze hradlové
●
pole překonfigurovat pomocí JTAG portu Ostatní možnosti: hradlové pole lze, dle typu a počtu dostupných pinů, nakonfigurovat
●
též v režimu Slave Parallel (podobné jako Slave Serial), nebo BPI (Byte Parallel Interface) ze standardní paralelní NOR flash paměti. Hradlové pole na přípravku je konfigurováno v SPI módu z paměti M25P40. Programování a mazání této flash paměti je prováděno nepřímo pomocí speciální konfigurace hradlového pole, která je nahrána pomocí JTAG portu. Vlastní instrukce pro programování jsou prováděny nepřímo přes JTAG port hradlového pole. Tímto se ušetří nutný programovací konektor (v případě předpokladu, že konektor pro JTAG port by na desce stejně musel být) a zároveň se demostruje flexibilita JTAG portu.
5.3 Srovnání výpočetního výkonu FPGA a běžných DSP Srovnávat výkon dvou různých počítačů, procesorů nebo výpočetních strojů je vždy obtížné a velmi zavádějící, neboť každý stroj je optimalizovaný na jiný druh úloh. O to složitější je situace v případě, že bychom chtěli porovnávat hradlové pole s nějakým konvenčním strojem, neboť vnitřní zapojení hradlového pole lze vždy v maximální míře optimalizovat pro danou úlohu. Nikoliv zbytečně se proto v žertu říká, že jednotka MIPS (milion instructions per second – milionů instrukcí za vteřinu) ve skutečnosti znamená “meaningless indication of processor speed” – “bezvýznamný údaj o rychlosti procesoru“ [24]. I přesto lze určitým způsobem srovnávat výpočetní výkon hradlových polí s procesory, jak ukazuje tabulka 7.
37
Algoritmus nebo sw. procesor Využití FPGA
Dosažitelný výkon
1x sw. procesor PicoBlaze [19]
12,5% XC3S50 44 MIPS @ 88 MHz (Spartan-3) 0,3% 100 MIPS @ 200 MHz XC3S5000 (Virtex-II Pro)
1x sw. procesor MicroBlaze [18]
80% XC3S50
MPEG-4 Video Encoder [25]
25% XC3S5000 Realtime komprese PAL nebo NTSC
Násobení Single Precision IEEE754 [26]
100% XC4VSX55
23 424 GLOPs @ 183 Mhz
COPACOBANA [28] (DES Cracker [29])
120x XC3S1000
Průměrná doba k prolomení DES je 7,2dne @ 120 MHz
46 MIPS @ 50 MHz
Tabulka 7: Ukázka výpočetního výkonu FPGA Z této tabulky je vidět propastný rozdíl mezi různými, v tomto případě soft procesory PicoBlaze a MicroBlaze. Při téměř stejném údávaném výkonu v MIPS se procesory propastně liší ve své velikosti a v tom kolik zabírají prostředků hradlového pole. Procesor PicoBlaze je jednoduchý 8-bitový procesor s jednooperandovými instrukcemi, velmi podobný značně rozšířeným mikrokontrolérům firmy Microchip základní řady PIC12 [27], zatímco MicroBlaze je 32-bitový procesor rozvinuté RISC architektury s pipeline, jehož většina instrukcí je tříoperandových. Proto není výjimkou, že na operaci, s níž si MicroBlaze vystačí jedinou instrukcí, je třeba u malých mikrokontrolérů instrukcí deset (např. sečtení a přesun dvou celých 32-bit čísel).
Obrázek 12: Prototyp COPACOBANA se šesti FPGA XC3S1000 na každém z DIMM modulů. Obrázek je přejat z [BC21].
38
Příkladem demostrace výpočetní síly FPGA je jejich časté nasazování do různých strojů, postavených za účelem prolomení šifry hrubou silou. Vyzkoušení všech klíčů pro šifry s celkovým počtem 256 klíčů není v dnešních měřítkách větším problémem. Jedním ze zástupců takovýchto strojů je COPACOBANA, který vznikl na akademické půdě [28], [29], [30] (na obrázku 12).
5.4 Možnosti použití hradlových polí Existují dva základní přístupy návrhářů k programovatelným hradlovým polím: ●
V zařízení je stále použit klasický mikrokontrolér, případně DSP, používají se základní periferie tohoto procesoru a v programovatelném hradlovém poli jsou navíc specifické periferie pro danou aplikaci. Propojení mezi FPGA a mikrokontrolérem může být řešeno některou z periferií procesoru, jako například externí paralelní sběrnice, či sériové rozhraní.
●
Celý procesor, včetně jeho základních periferií, které by byly v zařízení použity se vloží do FPGA. Nároky na velikost FPGA přitom poněkud vzrostou 11, ale jsou vyváženy úsporou místa i množstvím ostatních použitých součástek. V této diplomové práci autor zvolil právě druhou možnost, při které lze demonstrovat
všechny možnosti využití hradlových polí v elektrických pohonech. Hradlové pole není součástka analogová, není možné do něj vložit analogové periferie procesoru jako jsou komparátory, operační zesilovače a analogově-číslicové převodníky (ADC). V příkladu tohoto řízení pohonu se však ukazuje, že handicap není příliš vážný, protože jsou vesměs analogové periferie umístěny na druhé straně optického oddělení a proto by byly vyčleněny z mikrokontroléru i v klasickém návrhu s procesorem.
11 V práci popisovaný procesor MicroBlaze bez periferií se vejde v nejjednodušší verzi do nejmenšího hradlového pole z rodiny Spartan-3, XC3S50, přitom samotné periferie mohou zabírat prostor několinásobně větší.
39
6. Konfigurace hradlového pole V šesté kapitole je podrobný popis vnitřních funkcí konfigurace („programu“) hradlového pole, kterou autor v rámci práce vytvořil.
6.1 Blokové schéma Na obrázku 13 je zobrazeno blokové schéma částí konfigurace.
FPGA ENC28J60
řadič přerušení
SPI rozhraní NOR flash
obecné I/O
2kB RAM
datová LMB sběrnice „hlavního“ procesoru
časovač ms + µs
cache 8kB cache 8kB
UART
ladicí LED
MicroBlaze „hlavní“
I
OPB sběrnice
řadič SDRAM
OPB/OPB bridge
D
OPB arbitr
D MicroBlaze „druhý“
datová LMB sběrnice „druhého“ procesoru
hlídání chyb
synch. PWM synch. PWM
čítač PWM synch. PWM
SPI rozhraní
8kB RAM
AD7908
IRC dekodér
SPI rozhraní
chyby
poloha + rychlost
MC1H
přepětí
instrukční LMB sběrnice „druhého“ procesoru
JTAG
povely pro výk. prvky
SPI rozhraní
instrukční LMB sběrnice „hlavního“ procesoru
20MHz 25MHz 40MHz
generátor hodin
Obrázek 13: Blokové schéma konfigurace hradlového pole
6.2 Hlavní procesor 6.2.1
Základní popis procesoru Srdcem celé konfigurace jsou dva procesory MicroBlaze, pojmenované „hlavní“ a „druhý“.
Hlavní procesor vykonává kód převážně z paměti SDRAM a stará se o síťové služby (připojení do sítě ethernet), včetně TCP/IP stacku, HTTP serveru, i služeb pro komunikaci s aplikací na PC protokolem UDP, komunikuje s PC po sériové lince, čte tlačítka a potenciometry 12 a stará se o nejvyšší úroveň komunikace s uživatelem. V tomto procesoru běží velmi jednoduchý 12 Nepřímo, neboť A/D převodníky jsou dostupné pouze na sběrnici „druhého“ procesoru.
40
preemptivní multithreading. Přesto síťová knihovna encnet není napsána jako vícevláknová a veškeré síťové služby běží v jednom vlákně13. Veškeré informace o stavu pohonu se dozvídá hlavní procesor pouze přes sdílenou oblast v paměti SDRAM (do které mají přístup oba procesory).
6.2.2
Sběrnice hlavního procesoru Procesor je připojen dvakrát jako master na sběrnici OPB (On-Chip Peripheral Bus) [20]
(jednou na rozhraní datové a jednou na rozhraní instrukční), dále jako master na svoji datovou sběrnici LMB (Local Memory Bus) [18] a jako master na svoji instrukční sběrnici LMB. Taktovací frekvence sběrnic je shodná s procesorem, 40 MHz.
6.2.3
Nastavení procesoru Protože procesor vykonává kód i uchovává data převážně v paměti SDRAM, která má
z pohledu procesoru značnou latenci pro čtení i zápis, je zkompilován s instrukční i datovou cache. Velikosti cache byly zvoleny tak, aby obsadily všechny zbylé dostupné bloky paměti RAM v hradlovém poli. Procesor má kromě základních instrukcí podporu pro instrukce násobení (mul, muli) a binárního posunu o libovolný počet bitů (bs, bsi)14. Část nastavení hlavního procesoru MicroBlaze dle souboru mhs z integrovaného vývojového prostředí Xilinx EDK: PARAMETER INSTANCE = microblaze_0 PARAMETER HW_VER = 4.00.a PARAMETER C_USE_FPU = 0 PARAMETER C_USE_ICACHE = 1 PARAMETER C_CACHE_BYTE_SIZE = 8192 PARAMETER C_USE_DCACHE = 1 PARAMETER C_DCACHE_BYTE_SIZE = 8192 PARAMETER C_ICACHE_BASEADDR = 0x40000000 PARAMETER C_ICACHE_HIGHADDR = 0x403fffff PARAMETER C_DCACHE_BASEADDR = 0x40000000 PARAMETER C_DCACHE_HIGHADDR = 0x403fffff PARAMETER C_D_LMB = 1 PARAMETER C_I_LMB = 1 PARAMETER C_USE_BARREL = 1 PARAMETER C_INTERRUPT_IS_EDGE = 0 PARAMETER C_EDGE_IS_POSITIVE = 1 PARAMETER C_USE_PCMP_INSTR = 0 PARAMETER C_ALLOW_ICACHE_WR = 0 PARAMETER C_ALLOW_DCACHE_WR = 0 BUS_INTERFACE DOPB = mb_opb BUS_INTERFACE IOPB = mb_opb BUS_INTERFACE DLMB = lmb_v10_0 BUS_INTERFACE ILMB = lmb_v10_1
13 Síťová knihovna encnet pro obvod ENC28J60 (a s ním kompatibilní – tj. mikrokontroléry PIC s ethernetem) byla napsána v průběhu roku 2007 autorem diplomové práce a Pavlem Chromým pro použití v mikrokontrolérech s minimálními nároky na paměť. 14 Procesor MicoBlaze lze konfigurovat. Jsou uvedeny pouze instrukce, které lze volit, procesor disponuje všemi základními instrukcemi.
41
6.3 Vedlejší procesor 6.3.1
Základní popis Vedlejší (nebo „druhý“) procesor vykonává kód pouze ze svojí dedikované paměti RAM
o omezené velikosti 8 kB s garantovanou dobou přístupu. Stará se o regulační pochody v pohonu a zaznamenává stav pohonu do kruhového bufferu v paměti SDRAM. Veškerou komunikaci s uživatelem provádí vedlejší procesor pouze přes hlavní procesor přes sdílenou oblast v paměti.
6.3.2
Sběrnice vedlejšího procesoru Z důvodu požadavku na zaručení, že procesor stihne vykonat všechny úkony v regulační
smyčce během krátké požadované doby, je procesor připojen na sběrnici OPB přes most15 OPB/OPB. Ten zaručuje minimální počet čekacích stavů při zápisu procesoru do paměti SDRAM a umožnuje i rychlejší čtení z paměti (vizte kapitola 6.6). Dále je procesor připojen na instrukční a datovou LMB sběrnici. Na datové LMB směrnici je připojeno značné množství periferií.
6.3.3
Nastavení procesoru Na rozdíl od hlavního procesoru, který vykonává kód v paměti SDRAM, není tento
procesor vybaven pamětí cache. Blokové RAM, ve které má uprocesor uložen kód i data mají stejnou dobu přístupu jako paměti cache (v FPGA jsou pro paměti cache použity stejné paměťové bloky). Procesor má kromě základních instrukcí také zakompilovánu podporu pro instrukce násobení (mul, muli), dělení (idiv, idivu) a binárního posunu o libovolný počet bitů (bs, bsi). V ohledu na instrukční vybavení, druhý procesor je vybaven lépe než hlavní. Část nastavení hlavního procesoru MicroBlaze dle souboru mhs z integrovaného vývojového prostředí Xilinx EDK: PARAMETER INSTANCE = microblaze_1 PARAMETER HW_VER = 4.00.a PARAMETER C_USE_BARREL = 1 PARAMETER C_USE_DIV = 1 BUS_INTERFACE DOPB = mb_opb BUS_INTERFACE DLMB = lmb_v10_2 BUS_INTERFACE ILMB = lmb_v10_3
6.4 Sběrnice Na blokovém schématu (obrázek 13) je zobrazeno celkem pět sběrnic, jedna hlavní sběrnice OPB [20], na kterou jsou připojeny oba procesory a dále čtyři sběrnice LMB, pro každý procesor dvě, jednu instrukční a jednu datovou. 15 Překlad dle ekvivalentu network bridge → síťový most
42
6.4.1
Použití sběrnice OPB Sběrnice OPB může připojovat více master zařízení. Výběr aktivního master zařízení volí
OPB rozhodčí16. Logika OPB rozhodčího je součástí vývojového prostředí EDK. Nastavení OPB rozhodčího je rozsáhlé, můžeme ho nastavit tak, že jeho parametry lze měnit i za chodu zpřístupněnými registry (OPB rozhodčí se pak stane též slave zařízením). V našem případě to není potřeba, parametry, jakým OPB rozhodčí přiděluje jednotlivým master zařízením přístup na sběrnici je daný parametry při překladu. Část nastavení rozhodčího OPB sběrnice dle souboru mhs z integrovaného vývojového prostředí Xilinx EDK: PARAMETER PARAMETER PARAMETER PARAMETER PARAMETER PARAMETER
INSTANCE = mb_opb HW_VER = 1.10.c C_EXT_RESET_HIGH = 1 C_REG_GRANTS = 0 C_PARK = 1 C_DYNAM_PRIORITY = 0
V nastavení můžeme vidět dva základní parametry, C_PARK a C_DYNAM_PRIORITY. Bus Parking je varianta, při které rozhodčí, pokud žádný z master zařízení o sběrnici nežádá, nechává zvolené poslední vybrané master zařízení. V případě, že další přístup bude vyžadovat právě toto master zařízení, jeho přístup bude o jeden hodinový puls rychlejší. Ostatní master zařízení nejsou ovlivněna. Pokud není zvolena dynamická priorita, master zařízením je sběrnice přidělována tak, že první17 má nejvyšší prioritu a postupně, až poslední má nejnižší přioritu. V případě dynamické priority, pokud kontinuálně žádají o sběrnici všechna master zařízení, jejich požadavky se vyřizují postupně cyklicky.
6.4.2
Použití sběrnic LMB Sběrnice LMB jsou vyhrazené sběrnice pro jedno master zařízení, mají rychlejší přístup,
neboť je neprovádí volba a přidělování sběrnice master zařízení. V hradlovém poli jsou celkem čtyři takové sběrnice. V případě připojení na sběrnici jednoho master a jednoho slave zařízení, tak jak to je u instrukčních LMB sběrnic obou procesorů, jedná se pouze o propojení příslušných signálů obou zařízení. Výhodou oddělených instrukčních a datových sběrnic je možnost přenosu dat na obou sběrnicích současně během jednoho hodinového taktu. Na datové LMB sběrnici druhého procesoru lze vidět množství periferií sloužících k obsluze pohonu.
16 V původním znění OPB arbiter. 17 Zařízení jsou na sběrnici číslována
43
6.4.3
Velikosti sběrnic Všechny sběrnice mají šířku dat i adresy 32 bitů. Zejména u adresy však v přeloženém
hradlovém poli neuvidíme všechny signály, neboť některé periferie na ně vůbec nereagují 18 a proto byly během překladu (optimalizace) zcela vyloučeny jako nepotřebné.
6.5 Paměti 6.5.1
Paměti BRAM Při vytváření konfigurace v hradlových polích se často setkáváme s požadavkem na
vytvoření struktury paměti RAM. Proto již v rodinách součástek XC4000 lze funkční bloky CLB nakonfigurovat jako jednoduché paměti RAM [6], se šířkou dat 1 bit a 4 adresními signály. Pro zápis se používá hodinového CLK a povolovacího signálu CE z klopného obvodu přidruženého v dané CLB. Na dnešní nároky tyto struktury většinou nestačí a proto v hladlovém poli jsou přítomny přímo bloky paměti BRAM19, v rodině Spartan-3 o velikosti 18 kbit každý. Lze je konfigurovat pro různé šířky dat a adresy (512x36, 1024x18, 2048x9, 4096x4, ...). Každá paměť BRAM má navíc dvě rozhraní (porty) označená A a B, a obě mohou pracovat na různých taktovacích frekvencích, což je výhodné zejména při předávání dat mezi různými hodinovými doménami (např. při příjmu a vysílání na vysokorychlostních sériových rozhraních). Všechny vnitřní paměti v hradlovém poli mohou být při nakonfigurování inicializovány.
6.5.2
Paměť BRAM hlavního procesoru Ačkoliv hlavní procesor vykonává kód z paměti SDRAM, tato paměť není po startu
inicializována20. Proto je k procesoru připojena jedna paměť BRAM o velikosti 2 kByte, ve které je uložen bootloader, který nalezne a přečte obraz programu ze sériové NOR flash paměti a okopíruje ho do paměti SDRAM, poté odskočí na začátek paměti SDRAM a tím se program spustí. Celý bootloader zabírá méně než 512 bytů. Při vlastním běhu programu je paměť bootloaderem již nevyužívána, proto do ni lze ukládat některé dočasné proměnné. Přístup do ni je podstatně rychlejší, než do paměti SDRAM. Správu, které proměnné jsou uložené v paměti SDRAM a které v BRAM, provádí sám překladač. 18 Periferie UART je například namapovaná v adresním prostoru 0xC0000000-0xCFFFFFFF. Obsahuje však jen dekodér pro 16 32-bit registrů – používá tedy s celkových 32 pouze 8 adresních signálů (4 nejvyšší pro adresaci periferie, 4 pro výběr registru). 19 Xilinx tyto bloky nazývá Block RAM, BRAM 20 Dokonce musí být nejprve hradlovým polem provedena sekvence pro správné zapnutí paměti a uvedení do nečinného stavu.
44
6.5.3
Paměť BRAM druhého procesoru Veškerý kód i data programu vedlejšího procesoru jsou pro rychlejší přístup uloženy
v pamětech BRAM. Proto je k tomuto procesoru připojeno celkem 8 kByte této paměti. Velikost programu je přibližně 4 kB, na data a zásobník zbývá 4 kB. Tyto paměti jsou inicializovány během konfigurace, proto program může být vykonáván ihned po startu. Při změně v programu je nutné změnit a přeprogramovat celou konfiguraci hradlového pole21.
6.5.4
Paměť SDRAM Paměť SDRAM je připojena na sběrnici OPB. Jedná se o paměť v konfiguraci 4M x 16,
tedy 4 194 304 slov o velikosti 16 bitů (8 MByte). Protože veškeré přistupy na sběrnici OPB jsou 32 bitové, přístupy do paměti se provádí nadvakrát. Paměť SDRAM je synchronní a taktována synchronně s procesory, frekvencí 40 MHz. Část nastavení konstroléru SDRAM paměti dle souboru mhs z integrovaného vývojového prostředí Xilinx EDK: PARAMETER INSTANCE = opb_sdram_0 PARAMETER HW_VER = 1.00.e PARAMETER C_BASEADDR = 0x40000000 PARAMETER C_HIGHADDR = 0x4FFFFFFF PARAMETER C_INCLUDE_HIGHSPEED_PIPE = 0 PARAMETER C_OPB_CLK_PERIOD_PS = 25000 PARAMETER C_SDRAM_REFRESH_NUMROWS = 4096 PARAMETER C_SDRAM_DWIDTH = 16 PARAMETER C_SDRAM_AWIDTH = 12 PARAMETER C_SDRAM_COL_AWIDTH = 8 PARAMETER C_SDRAM_CAS_LAT = 2 PARAMETER C_SDRAM_TWR = 32500 PARAMETER C_SDRAM_TRAS = 44000 PARAMETER C_SDRAM_TRC = 66000 PARAMETER C_INCLUDE_BURST_SUPPORT = 0 PARAMETER C_USE_POSEDGE_OUTREGS = 1 BUS_INTERFACE SOPB = mb_opb
Dolní polovina paměti, 4 MB v oblasti 0x40000000 až 0x403FFFFF, jsou určeny pouze pro hlavní procesor, horní polovina paměti v oblasti 0x40400000 až 0x407FFFFF je určena jako sdílená, do které přistupují oba procesory. Hlavní procesor má proto povolenou cache pouze pro dolní polovinu paměti22.
6.6 OPB/OPB most V této kapitole se jako procesor rozumí druhý procesor MicroBlaze, tj. ten, který je připojen k OPB/OPB mostu.
21 Pomocí utility data2mem, lze nahradit obsah pamětí BRAM v již přeložené inicializační sekvenci hradlového pole. 22 Procesor MicroBlaze má prostředky pro zneplatnění cache: instrukce wdc a wic, případně rozhraní XCL (Xilinx Cache Link). V této práci tyto prostředky použity nebyly, protože nejsou nezbytné.
45
6.6.1
Použití OPB/OPB mostu Obecně, když procesor MicroBlaze vyžaduje čtení určité instrukce nebo dat, vystaví
požadavek souběžně na obou sběrnicových rozhraních, OPB i LMB. Vezme ta data, ze které sběrnice přijde potvrzení dříve a na druhé sběrnici požadavek zruší. V případě druhého procesoru, který běží z vnitřní blokové paměti to znamená, že na sběrnici OPB vytrvale vyžaduje data, která mu však nikdy nepřijdou a zbytečně sběrnici zatěžuje. V případě použití fixní priority na sběrnici OPB to dokonce znamenalo, že hlavní procesor, který měl nižší prioritu, byl zcela zablokovaný. OPB/OPB most vytváří další degradovanou sběrnici OPB, která vede pouze z mostu do procesoru. Na ni je připojeno jedno master zařízení (procesor) a jedno slave zařízení (vlastní most). Takto degradovaná OPB sběrnice je pouze propojení příslušných signálů obou rozhraní.
6.6.2
Funkce OPB/OPB mostu OPB/OPB brigde na rozhraní k procesoru reaguje pouze na požadavky, které se týkají
paměti SDRAM. Na ostatní požadavky nereaguje.
46
Požadavek procesoru o zápis do SDRAM žádost procesoru o sběrnici (jen do bridge)
br_mb_request (in) br_mb_mgrant (out) br_mb_select (in)
sběrnice je vždy poskytována (procesor je jediný master) → trvalá log.1 procesor používá sběrnici (do bridge), adresa je platná procesor si požadavek rozmyslel, zrušil
br_mb_rnw (in) br_mb_addr.sdram (in)
read=1 / write=0 ano
požadavek není do SDRAM, bridgem ignorován
ne
potvrzení převzetí dat bridgem
br_mb_xferack (out)
žádost bridge SDRAM o zápis
br_bus_request (out)
potvrzení předání sběrnice bridgi
br_bus_mgrant (in) br_bus_select (out)
1
2
3
4
sběrnice obsazena bridgem
5
potvrzení zápisu od SDRAM
br_bus_xferack (in) sdram_-ras (out)
precharge recovery
row precharge
write recovery
column write (16bit)
column write (16bit)
row activate
žádost o sběrnici od bridge
sdram_-we (out)
žádost čtení z SDRAM
sdram_-cas (out)
Obrázek 14: Požadavek procesoru o zápis do SDRAM Protože na sběrnici je připojeno jediné master zařízení, tak není nutné provádět volbu při přístupu na sběrnici. Proto signál MGRANT pro procesor je trvale zapojen do log. 1 bez ohledu na stav požadavku procesoru.
6.6.3
Práce OPB/OPB mostu při zápisu do SDRAM Pokud procesor požaduje zápis dat do SDRAM, most si zapamatuje adresu a data k zápisu
a procesoru odpoví, že zápis proběhl, a to okamžitě. Procesor proto není blokován a může ihned vykonávat další instrukce. Most se přitom snaží v co nejbližší době data do paměti skutečně zapsat, proto začne okamžitě žádat o přidělení sběrnice. Dokud most data nezapíše, není schopen vyřizovat další požadavky od procesoru a na následující požadavky reaguje se zpožděním. Na obrázku 14 je vidět, co se děje při zápisu procesoru do paměti SDRAM. Komunikace je reálná a byla odposlechnuta přímo při běhu programu z přípravku logickým analyzátorem. Most zápis potvrzuje ihned v druhém hodinovém taktu a procesor může dále vykonávat instrukce (není 47
bržděn čekacími stavy). V následujícím hodinovém taktu žádá most o sběrnici a protože je volná, ihned v tom samém hodinovém taktu ji dostává přidělenu. V následujících pěti hodinových taktech je zažádána paměť o zápis dat, v posledním paměť zápis potvrzuje. Ve skutečnosti však začne řadič paměti s pamětí komunikovat až ve čtvrtém hodinovém taktu od vystavení požadavku, zápisem prvního příkazu do paměti, row activate. Vlastní data jsou do paměti poslána nadvakrát po 16 bitech v následujících dvou hodinových taktech. V posledních třech zakreslených hodinových taktech se provede row precharge. Před i za příkazem row precharge musí být vložen příkaz nop, označený v obrázku jako write recovery resp. precharge recovery, neboť příkaz row precharge se nesmí z důvodu konstrukce paměti SDRAM vykonávat časově příliš blízko jiných příkazů23.
6.6.4
Práce OPB/OPB mostu při čtení z SDRAM Na rozdíl od zápisu do paměti SDRAM, při čtení z paměti není možné požadavek vyřídit
předčasně, neboť pro vyřízení požadavku je nutné znát data, která jsou z paměti přečtena. Na obrázku 15 je vidět, jak se most snaží vyřídit požadavek čtení. Na rozdíl od předchozího případu na obrázku 14 je sběrnice v okažiku vystavení požadavku obsazena.
23 Paměť je taktována na 40 MHz, tedy perioda 25 ns. Použitá paměť MT48LC4M16A2TG-75:G může být taktována až na 133 MHz (při použití CL=3) a vyžaduje write recovery o velikosti 15 ns a precharge recovery o velikosti 20 ns. Oba dva časy jsou nižší než 25 ns, proto není nutné pro tento typ paměti příkaz nop vkládat. Je vložen pro zajištění kompatibility s pomalejšími typy pamětí.
48
Požadavek procesor o čtení z SDRAM žádost procesoru o sběrnici
br_mb_request (in) br_mb_mgrant (out)
sběrnice je vždy poskytována (procesor je jediný master) → trvalá log.1
br_mb_select (in)
procesor žádá čtení z SDRAM
br_mb_rnw (in) br_mb_addr.sdram (in)
ano
br_mb_xferack (out)
potvrzení čtení pro procesor
br_bus_request (out)
žádost o bridge o sběrnici
br_bus_mgrant (in)
potvrzení žádosti o sběrnici
br_bus_select (out)
bridge žádá čtení z SDRAM potrvrzení čtení od SDRAM
br_bus_xferack (in) sdram_-ras (out) sdram_-cas (out)
data jsou k dispozici
SDRAM vyřizuje požadavek čtení
row precharge
column read
předchozí požadavky na SDRAM
row activate
row precharge
sdram_-we (out)
Obrázek 15: Požadavek procesoru o čtení z SDRAM Jakmile most při požadavku dostane přidělenu sběrnici, změní svoje chování a obě sběrnice propojí. Propojení zruší s příchodem potvrzení. Most si data z paměti při čtení nikam neukládá, neboť se dostanou ihned ke svému cíli: do procesoru. Z obrázku 15 je vidět, že požadavek na čtení z paměti zastaví procesor na poměrně dlouhou dobu. Pokud by OPB/OPB most nebyl použit, doba k přístupu by však byla stejná, neboť by procesor musel stejně žádat o obsazenou sběrnici a teprve, až by mu byla přidělena, mohl by vznést svůj požadavek, jehož vyřízení by trvalo stejně dlouho jako při použití mostu.
6.6.5
Výhody OPB/OPB mostu Výhody a nevýhody použití OPB/OPB mostu jsou následující:
●
požadavky na zápis do paměti jsou vyřizávány okamžitě
●
požadavky na čtení z paměti nejsou výrazně pomalejší (jsou pomalejší o vliv pipeline při žádání o sběrnici)
●
most a tedy i procesor může být připojen na sběrnici s nejvyšší prioritou, protože
49
neblokuje požadavky, které se na sběrnici nemohou vyřídit Důležitým faktem při návrhu varianty s použítím OPB/OPB most je fakt, že procesor v jedné regulační smyčce provede více zápisů, než čtení (neboť hlavně zapisuje do sdílené paměti stav pohonu).
6.7 Sériová rozhraní 6.7.1
Přehled sériových rozhraní v hradlovém poli V hradlovém poli je implementováno poměrně velké množství sériových rozhraní, kterým
běžný mikrokontrolér nedisponuje. Jejich přehled je uveden v tabulce 8. Rozhraní k
Připojeno k
Rychlost rozhraní
Poznámky
NOR flash
LMB hlavního 40 MHz
rychlost pouze při čtení, zápis je prováděn softwarově; pro čtení z paměti je nutno použít příkaz FAST_READ
Ethernet PHY ENC28J60
LMB hlavního 20 MHz
rychlost pouze při zápisu, čtení je prováněno softwarově
UART
OPB
9600 baud
pro komunikaci s PC
A/D převodník AD7908
LMB druhého
20 MHz
přenáší již naformátované příkazy pro A/D převodník.
SPI rozhraní MC1H
LMB druhého
sériové rozhraní 3 byte / 128 μs
pouze periodický příjem balíků dat
Tabulka 8: Přehled sériových rozhraní v hradlovém poli Tato práce se nemůže dopodrobna zabývat všemi rozhraními. Proto je uveden pouze popis rozhraní přímo souvisejících s řízením pohonu.
6.7.2
Sériové rozhraní k A/D převodníku AD7908 Na desce plošných spojů přípravku jsou umístěny dva osmikanálové A/D převodníky
a elektricky jsou zapojeny k hradlovému poli tak, aby mohly měřit vybrané dva analogové kanály zároveň. Přestože je zde tato možnost, při řízení pohonu není využita, neboť všechny analogové kanály použité při řízení asynchronního motoru shodou okolností vedou pouze do jednoho z obou převodníků. Použité A/D převodníky mají rozlišení 8 bitů. Pro některé druhy regulací nemusí být toto rozlišení dostatečné. Je možné použít i 10 a 12 bitové pinově kompatibilní převodníky AD7910 a AD7912.
50
111111111122222222223333333 hodinový takt 123456789012345678901234567890123456 procesor zadal požadavek na měření
zápis čtení
procesor periodicky kontroluje stav RDY
-CS CLK DIN
0
1
2
3
4
5
6
7
8
9
D0 D1 D2 D3 D4 D5 D6 D7 D8 D9
A D10
B
C D E
D11 D12 D13
F
D14 D15
RDY procesor přečetl stav RDY a vyčtená data
Obrázek 16: Čtení z A/D převodníku Na obrázku 16 je vidět jak probíhá komunikace s A/D převodníkem. Funkce komunikující s A/D převodníkem int ad7908_transaction(int din) { M1_FASTSPI_AD = din; while (!(M1_FASTSPI_AD & M1_FASTSPI_AD_DONE)); return M1_FASTSPI_AD; }
Po zápisu do registru M1_FASTSPI_AD se spustí stavový stroj, který aktivuje A/D převodník signálem -CS, vyšle a přijme 16 bitů a nastaví bit RDY. Procesor periodicky kontroluje stav čtením registru M1_FASTSPI_AD a jakmile jsou data připravena, vrátí přečtenou hodnotu. Celá procedura zabrala 35 hodinových taktů, tedy 0,875 μs.
6.7.3
Sériové rozhraní modulu MC1H Pro řízení pohonu je potřeba znát24 napětí na stejnosměrné větvi střídače. Výkonový modul
MC1H posílá tyto hodnoty spolu s aktuální hodnotou síťového napětí periodicky jako 8 bitové hodnoty po sériovém rozhraní. Sériové rozhraní používá pro synchronizaci pouze signál RESET, který je proveden před spuštěním pohonu. Během činnosti není možné při ztrátě synchronizace znovu navázat komunikaci, neboť sériové rozhraní se skládá pouze ze signálů CLK a DATA. Pro detekci rozpadlé komunikace se na sériovém rozhraní vysílá periodicky každý třetí byte 0xF9. Pokud se na místě, kde má být synchronizační byte, tento byte nepřijme, sériové rozhraní
okamžitě vystaví chybový signál a odstaví řídící signály pro výkonové prvky. Chybová detekce funguje zcela nezávisle na firmware a ten se chybu dozví až s určitým zpožděním, když periodicky kontroluje chybová hlášení. 24 Lepší by bylo uvést „je vhodné znát“
51
Firmware může periodicky číst poslední přijaté hodnoty obou vysílaných napětí. Ty také zaznamenává a posílá dále do PC pro možnosti vizualizace. Pro vlastní řízení se hodnoty ve firmware nijak nevyužívají. Rozhraní při příjmu hodnoty napětí na stejnosměrné větvi porovná hodnotu s předem stanovenou a pokud je napětí vyšší, automaticky sepne tranzistor spínající brzdný odpor. Velikost brzdného odporu musí být nastavena na takovou hodnotu, aby velikost proudu, při všech dosažitelných hodnotách napětí na stejnosměrné větvi, nepřekročilo maximální trvalou povolenou hodnotu proudu spínacím tranzistorem. Toto spínání se provádí zcela nezávisle na firmware a není proto kontrola, jak dlouho je odpor sepnutý a zpětná kontrola jak velký proud odporem teče.
6.8 IRC dekodér 6.8.1
Použití IRC dekodéru IRC dekodér25 je při vektorovém řízení asynchronních motorů neodmyslitelná součást
řídícího procesoru. Někdy je tato periferie též nazývána QED (Quadrature Encoder Decoder). Jeho účelem je počítat počet pulsů z inkrementálního snímače otáček (IRC čidla) a zjišťovat tak absolutní26 či relativní polohu rotoru motoru. pohyb vzad 0
1
2
pohyb vpřed 3
0
1
2
3
irc_a irc_b
Obrázek 17: K vysvětlení činnosti IRC čidla Na obrázku 17 je vidět průbeh singálů na dvou výstupech IRC čidla, typicky označovaných jako A a B. Každý ze signálů výkoná předem stanovený počet pulsů za otáčku, signály jsou navzájem posunuty o 90°. Dekodér IRC čidla každý ze čtyř možných stavů dvou signálů převede na číslo 0 až 3, jako posun vpřed pak vyhodnocuje změnu stavu 0→1, 1→2, 2→3 a 3→0, jako posun vzad jako změnu 0→3, 1→0, 2→1, 3→2. Při každém takovém posunu zvětší, resp. zmenší čítač polohy o jedna. Kažná jiná změna stavu je vyhodnocena jako chyba a k změně hodnoty čítače nedojde. Procesor má k dispozici čtením registru k dispozici okamžitou hodnotu čítače polohy. Čítač je implementovaný jako 24 bitový s přetečením. 25 Někdy je tato periferie též nazývána QED (Quadrature Encoder Decoder). 26 Při použití nulovacího Z-pulsu.
52
6.8.2
Měření rychlosti otáčení Při některých regulačních pochodech (např. regulace na konstantní rychlost) je potřeba
znát okamžitou rychlost pohonu. Zjišťování rychlosti odečtením dvou hodnot polohy po uplynutí určité doby vede při zkracovaní doby měření na velké nejistoty měření. Při prodlužování doby měření se zkracuje doba odezvy celého regulačního systému na neúnosnou mez a systém není schopen reagovat na rychlé změny chybové veličiny. Proto je jako součást periferie dekodéru IRC čidla i hardwarová podpora pro automatické měření aktuální rychlosti pomocí IRC čidla. Ve firmware je potřeba provést již pouze potřebné matematické výpočty pro zjištění přesné rychlosti, výsledek je vypočten přímo v ot · min-1. stop
řadič start start
A IRC
B
dekodér
inc dec edge
edge
čítač času
čítač hran
pamět výstupních hodnot
start inc start
R/S KO
dec start
R/S KO
Obrázek 18: Blokové schéma měření rychlosti otáčení IRC čidla Na obrázku 18 je blokové schéma měření rychlosti otáčení. Dekodér IRC čidla je použit stejný jako v případě měření polohy. Z dekodéru vychází signály inc (přičtení), dec (odečtení) a edge (hrana). V okamžiku přichodu hrany řadič provede puls na signálu start. Tím vyresetuje a spustí oba čítače a vyresetuje i klopné obvody. Dále řadič čeká až do okamžiku, kdy je v čítači času načteno alespoň 212 (tj. za 102,4 µs). Od této chvíle sleduje stav čítače hran. Pokud přijde hrana a čítač obsahuje hodnotu, která znamená, že čelkový počet hran je dělitelný čtyřmi27, provede signál stop a ukončí měření. Další měření automaticky začne znovu. Pokud hrana s pořadovým číslem dělitelným čtyřmi nepřijde dříve než čítač načítá 213 (204,8 µs), dále již řadič čeká na kteroukoli hranu. Pokud čítač času dočte do 2 16-1, zastaví se na této hodnotě a dále nečítá a řadič měření zastaví. 27 Tím se zaručí, začátek i konec testu se měří podle stejné hrany stejného vstupu. Eliminuje se tak případný vliv nestejné rychlosti přeběhu hrany a nepřesnost v zarovnání obou výstupů na 90°.
53
Funkce řešící rychlost IRC čidla s 2048 pulsy. Výsledek v ot·min-1 ve fixed-point formátu 16.16 (1 ot·min-1 odpovídá číslu 0x10000).
int ircspeed() { int rawspeed = M1_SPEED; if (rawspeed&M1_SPEED_VALID) { int speed; unsigned int spdtim = (rawspeed&0xFFFF)+1; unsigned int spdpul = ((rawspeed>>16)&0xFF)+1; spdpul *= 1171875; abspeed = speed = ((spdpul/spdtim)<<14) + ((spdpul%spdtim)<<14)/spdtim; if (rawspeed&M1_SPEED_DIR) speed=-speed; return speed; } else return 0; }
Ve velmi nízkých otáčkách měření degraduje na měření doby mezi dvěma hranami čidla, ve vyšších na dobu měření délky jednoho pulsu a v nejvyšších otáčkách se naopak měří počet pulsů za pevně danou dobu. Tímto způsobem je informace o rychlosti často obnovována (vyjma nejnižších otáček) s frekvencí okolo 10 kHz – což je perioda řádově odpovídající regulační periodě a metoda je dostatečně přesná v nízkých i vysokých otáčkách.
6.8.3
Dekódování IRC čidla bez použití periferie Nabízí se možnost dekódovat polohu v mikrokontroléru při použití vyvolání přerušení
při detekci hrany (na obou vstupech). Při použití čidla s 2048 pulsy na otáčku a při rychlosti 6000 ot / min přijde hrana jednou za cca 1,22 μs28. Doba zpracování přerušení by musela být kratší než 1 μs a toho lze reálně dosáhnout pouze u procesorů s taktovací frekvencí podstatně vyšší než 100 MHz. Proto pokud mikrokontrolér nemá pro dekódování IRC čidla vhodnou periferii, je nutné počítat s alespoň minimální hardwarovou podporou, například pomocí obvodu CPLD.
6.9 Souměrná pulsně šířková modulace 6.9.1
Pojem souměrná pulsně šířková modulace Pod pojmem souměrná pulsně šířková modulace29 [14], [15] se rozumí několik výstupů
s modulací PWM, na kterých se výstup mění s pevně danou frekvencí (periodou) a výstupy jsou navzájem fázově vázány. Tam, kde jeden výstup má časový střed log.1, ho má i druhý a třetí výstup. Periferie PWM běžných mikrokontrolérů mají většinou možnost zapnout souměrnost 28 t = 1/(n/60 · 4 · p), kde p je počet pulsů čidla a n jsou otáčky v ot·min-1 29 Atmel v procesorech AVR tuto vlastnost PWM nazývá phase-aligned PWM, Microchip v procesorech dsPIC center-aligned PWM.
54
a synchronnost výstupů.
6.9.2
Čítač souměrné PWM V případě, že všechny PWM výstupy mají stejnou frekvenci a mají být ve fázi, je žádoucí,
aby byly řízeny jediným čítačem. V hradlovém poli je implementovaný jeden 16 bitový čítač pro všechny výstupy. Čítač se vždy nachází v jednom ze dvou možných stavů, up nebo down, podle směru, kterým čítá. Při dočtení do nuly se stav změní na up, při dočtení do nastaveného maxima se stav změní na down. Čítač zůstává ve stavu s načetlou nulou nebo maximem po dva hodinové takty, jeden v původním stavu up nebo down a druhý v novém stavu. Výstupem čítače jsou také dva signály top a bottom. Signál top je aktivní, pokud čítač má hodnotu maxima a stav up, signál bottom je aktivní, pokud čítač má hodnotu 0 a stav down. V případě požadavku na změnu maxima čítače, nová hodnota se aktualizuje právě v okamžiku stavu bottom, tedy když čítač má hodnotu 0. I když reálné použití není příliš očekáváno, frekvenci PWM tak lze bezpečně měnit za chodu (například pro splnění požadavku minimální doby sepnutí výkonových prvků v minimálních nebo nulových otáčkách).
6.9.3
Jednotlivé PWM výstupy Celkem šest výstupů pro spínání výkonových prvků je ovládáno třemi shodnými PWM
moduly, každý ovládá dva výstupy. Nastavení výstupů se provádí třemi nezávislými 16 bitovými registry, nastavení doby přesahu (deadtime) je nastaveno napevno v konfiguraci, v případě potřeby ho lze však přesunout do nastavitelného registru. Na obrázku 19 je vidět blokové schéma takového uspořádání.
16 bitový PWM čítač
16 bitový PWM komparátor
Q
doba přesahu
L
16 bitový PWM komparátor
-Q
doba přesahu
H
16 bitový PWM komparátor
k dalším výstupům
Obrázek 19: Blokové schéma PWM Na obrázku 20 lze vidět průběh výstupů z jednoho PWM modulu. První výstup Q je aktivní, pokud čítač je vyšší (nebo roven30) než nastavená hodnota výstupu, v opačném případě je neaktivní. Výstup L sleduje výstup Q, tak, že neaktivní stav kopíruje okamžitě, avšak aktivní se 30 Aby bylo možné nastavit výstup „trvale sepnutý dolní tranzistor“ jako hodnota = 0.
55
zpožděním rovném době přesahu. Výstup H sleduje negovanou hodnotu Q stejným způsobem. Tím je zaručena dostatečná prodleva od rozepnutí jednoho tranzistoru v jedné větvi střídače do okamžiku sepnutí druhého tranzistoru ve větvi.
top
bottom
čítač a hodnota výstup „Q“ výstup „L“ výstup „H“
okamžik, kdy není aktivní žádný výstup
Obrázek 20: Výstupy z PWM
56
7. Software 7.1 Možnosti komunikace s přípravkem Přípravek vzniklý pro účely této práce je vybaven různými komunikačními rozhraními. V této kapitole jsou popsány možnosti komunikace po nich a jaké komunikační protokoly byly implementovány.
7.1.1
Sériový port Na konektoru P1 (vizte příloha D) je použito standardní rozhraní UART s úrovněmi RS-
232. Rozhraní umožnuje komunikaci s nadřízeným zařízením nebo s počítačem PC. Rychlost na rozhraní je pevně stanovena na 9600 baud, žádná parita, délka slova 8 bitů. Není použito žádné řízení toku, rozhraní používá pouze signály RxD a TxD. Toto rozhraní je též využito pro vysílání ladicích hlášení. Zařízení na tomto rozhraní reaguje na textové příkazy popsané v příloze G. K ovládání na PC lze využít běžné terminálové programy, jako např. PuTTY [32].
7.1.2
Rozhraní ethernet Konektorem U28 (vizte příloha D) je možné připojit přípravek do datové sítě ethernet
a tím zprostředkovat komunikaci s PC nebo jiným nadřízeným zařízením. Tento způsob připojení je preferovaný a byl napsán program pro PC pro komunikaci se zařízením. Vzhledem k mnohem vyšším rychlostem tohoto datového rozhraní oproti sériovému portu, vnitřní sledování stavu pohonu a zaznamenávání je možné pouze po tomto rozhraní. Datový tok při vizualizaci 31 je až 480 000 byte/sec.
7.1.3
Poskytované síťové služby Přes síť ethernet komunikuje přípravek standardním protokolem TCP/IP32. Poskytované
služby jsou: ●
HTTP (TCP port 80) Přes webové rozhraní je možné sledovat stav pohonu, provést nastavení pohonu (parametrů), provést síťová nastavení. Dále je možné ovládat pohon z webového
31 Osciloskopický režim, spínací frekvence tranzistorů je 20 kHz. 32 Zatím pouze IPv4. Autor uvažuje o případném rozšíření na IPv6 z důvodu experimentálního ověření vhodnosti této technologie pro mikrokontroléry.
57
formuláře. ●
proprietální protokol pro ovládání po UDP (UDP port 7925) Základní rozhraní pro ovládání pohonu. Aplikace pro PC komunikuje tímto protokolem.
●
NetBIOS (UDP port 137) Pouze služba NetBIOS Name Service.
●
ICMP Ping Pro testovací účely.
Obrázek 21: Ukázka webového rozhraní přípravku Na obrázku 21 je vidět ukázka webového rozhraní přípravku.
7.1.4
Další možnosti připojení Zařízení má k dispozici konektory vybavené obecnými GPIO a napájením 3,3 V a 5 V.
Všechny obecné I/O piny vedou (přes překladače napěťových úrovní) přímo na hradlové pole, kde lze implemetovat rozsáhlou škálu různých periferií. Proto v případě potřeby je možno zařízení rozšířit, například o rozhraní CAN.
7.2 Ovládací program pro PC 7.2.1
Spuštění programu V rámci práce vznikl ovládací program pro PC. Po spuštění programu je třeba vyplnit
58
správnou IP adresu zařízení (nastavuje se pomocí webového rozhraní) a stisknout tlačítko „Připojit“. Poté lze program intuitivně ovládat podle zvyklostí u aplikací operační systém Windows. Program není rozsáhlý, je možné nastavit jeden ze čtyř možných stavů pohonu: ●
zastaveno
●
regulace na konstantní proud (rozumí se jeho momentotvorná složka)
●
regulace na konstantní otáčky
●
regulace na konstantní polohu
7.2.2
Grafické zobrazení stavu pohonu Po stisku tlačítka „Otevřít grafické okno“ se zobrazí okno s osciloskopicky zobrazeným
stavem pohonu. Dle zvyklostí, informace zobrazené nejvíce vlevo jsou nejstarší. Grafy se však nepřekreslují postupně zleva doprava, jako na osciloskopu, ale celé průběhy veličin se posunují vlevo, jak se přikreslují nové průběhy v pravém konci grafu.
Obrázek 22: Zachycený obraz z grafického okna ovládacího programu pro PC v módu polární souřadnice (a,b); jsou použity falešné barvy pro lepší tisk V liště vpravo od grafu lze vybrat další dva možné módy zobrazení: polární souřadnice (a,b) a polární souřadnice (d,q). Na obrázku 22 je zachyceno, jak vypadá grafický výstup
59
z programu v módu „polární souřadnice (a,b)“ skokovém zadání požadovaných otáček. Zeleně je aktuální poloha a cca půl vteřiny33 dlouhá stopa prostorového vektoru napětí, červeně proudu a modře je odhadovaný vektor magnetického toku rotoru ve stejném měřítku jako proud (vyneseno jako velikost tokotvorné složky proudu). Více o vysvětlení tohoto obrázku se lze dočíst v příloze H.
33 Lze v programu nastavit jako počet regulačních cyklů, nastaveno na 10000, frekvence 20 kHz.
60
8. Závěr Cílem práce bylo prostudovat medody řízení asynchronních strojů, vybrat vhodnou metodu pro řízení motoru Sh80-2B (výrobce Cantoni) a navrhnout vhodné periferie pro procesor MicroBlaze, dále vytvořit ovládací algoritmy a naprogramovat je do procesoru a připravit ovládací program pro PC. Z prostudovaných metod řízení asynchronních strojů bylo k realizaci vybráno vektorové řízení napěťového typu. Jako výkonový prvek byl použit ukázkový střídač dsPICDEM MC1H firmy Microchip napájený z jednofázové sítě. Výkonový modul byl ovládán přípravkem, který autor vytvořil v rámci jeho bakalářské práce. Přípravek je osazen hradlovým polem Spartan-3E firmy Xilinx. Pro splnění požadavků na regulace elektrického pohonu jsou ve strukturách hradlového pole vytvořeny dva 32-bitové procesory MicroBlaze a množství specializovaných, autorem navržených periferií. Přípravek disponuje několika obecnými I/O porty. Na jeden z nich byl připojeno otáčkové IRC čidlo. Dále je na přípravku rozhraní ethernet a sériový port. Pohon lze ovládat příkazy na obou těchto rozhraních, pouze však po rozhraní ethernet lze provádět vizualizace náročné na množství přenesených dat. Pro účely ovládání prohonu byl vytvořen program pro PC, který může pohon ovládat po rozhraní ethernet. Součástí programu jsou je též okno „Osciloskop“, které zobrazuje aktuální stav základních veličin stroje v časových souřadnicích a v polárních souřadnicích (x,y) a (d,q). Všech zvolených cílů bylo dosaženo a s výsledky některých naměřených regulačních pochodů v pohonu se může čtenář seznámit v příloze H. Na přiloženém CD je k dispozici i krátké video.
61
Použitá literatura [1]
Javůrek J. Regulace moderních elektrických pohonů, Praha: Grada Publishing, 2003. 264 s. ISBN 80-247-0507-9.
[2]
Balátě J. Automatické řízení. Praha: BEN, 2003. 664 s. ISBN 80-7300-148-9
[3]
Petrov G.N. Elektrické stroje 2. Praha: Academia, 1982. 732 s.
[4]
Kopylov L.P. Stavba elektrických strojů. Praha: SNTL, 1988. 688 s.
[5]
Pavelka J. Elektrické pohony. Praha: ČVUT, 2007. ISBN 978-80-01-03588-7
[6]
Xilinx. DS312 Spartan-3E Family: Complete Data Sheet. Dostupný online: http://www.xilinx.com/bvdocs/publications/ds312.pdf
[7]
Microchip. DS70098A, dsPICDEM MC1 User's Guide. Dostupný online: http://ww1.microchip.com/downloads/en/devicedoc/70098A.pdf
[8]
Microchip. DS70097A, dsPICDEM MC1L User's Guide. Dostupný online: http://ww1.microchip.com/downloads/en/devicedoc/70097A.pdf
[9]
Microchip: DS70096A, dsPICDEM MC1H User's Guide. Dostupný online: http://ww1.microchip.com/downloads/en/devicedoc/70096A.pdf
[10] Freescale Semiconductor. AN1930, 3-Phase AC Induction Motor Vector Control Using a 56F80x, 56F8100 or 56F8300 Device. Dostupný online: www.freescale.com/files/product/doc/AN1930.pdf [11] Microchip. AN908, Using the dsPIC30F for Vector Control of an ACIM. Dostupný online: http://ww1.microchip.com/downloads/en/AppNotes/00908B.pdf [12] Texas Instruments. BPRA076. Implementation of a Speed Field Orientated Control of Three Phase AC Induction Motor using TMS320F240. Dostupný online: http://focus.ti.com/lit/an/bpra076/bpra076.pdf [13] Microchip. AN1206, Sensorless Field Oriented Control (FOC) of an AC Induction Motor (ACIM) Using Field Weakening. Dostupný online: http://ww1.microchip.com/downloads/en/AppNotes/01206A.pdf [14] Microchip. dsPIC30F6010A/6015 Data Sheet. Dostupný online: http://ww1.microchip.com/downloads/en/DeviceDoc/70150D.pdf [15] Atmel. ATmega48A/48PA/88A/88PA/168A/168PA/328/328P Data Sheet. Dostupné online: http://www.atmel.com/dyn/resources/prod_documents/doc8271.pdf [16] International Rectifier Corp. IR2112(-1-2)(S)PbF Data Sheet. Dostupné online: http://www.irf.com/product-info/datasheets/data/ir2112.pdf [17] Xilinx. WP226, Spartan-3 vs. Cyclone II Performance Analysis. Dostupný online: 62
http://www.xilinx.com/bvdocs/whitepapers/wp226.pdf [18] Xilinx. UG081, MicroBlaze Processor Reference Guide. Dostupný online: http://www.xilinx.com/support/documentation/sw_manuals/mb_ref_guide.pdf. Součást dokumentace EDK. [19] Xilinx. UG129, PicoBlaze 8- bit Embedded Microcontroller User Guide. Dostupný online: http://www.xilinx.com/support/documentation/ip_documentation/ug129.pdf [20] IBM. On-Chip Peripheral Bus. Dostupný online: http://www01.ibm.com/chips/techlib/techlib.nsf/techdocs/9A7AFA74DAD200D087256AB30005F0C 8/$file/OpbBus.pdf. Specifikace. [21] Zoubek O. Signálový procesor pro řízení elektrického pohonu. Praha, 2007. 76 s. Bakalářská práce. ČVUT FEL, Katedra elektrických pohonů a trakce. [22] Xilinx. Webové stránky firmy Xilinx. Dostupné online: http://www.xilinx.com [23] Altera. Webové stránky firmy Altera. Dostupné online: http://www.altera.com [24] Wikipedie. Milion instructions per second. Dostupné online: http://en.wikipedia.org/wiki/Million_instructions_per_second [25] Xilinx. MPEG-4 Video Compression Encoder. Dostupné online: http://www.xilinx.com/support/documentation/ip_documentation/mpeg_4_encoder_ds521_ prod_brf.pdf [26] Digital Code Design – DFPMUL. Dostupné online: http://www.dcd.pl/acore.php? idcore=24 [27] Microchip. Webové stránky firmy Microchip. Dostupné online: http://www.microchip.com/ [28] Internet: COPACOBANA – Special-Purpose Hardware for Code-Breaking, http://www.copacobana.org [29] Wikipedie. EFF DES cracker. Dostupné online: http://en.wikipedia.org/wiki/EFF_DES_cracker [30] Wikipedie. Data Encryption Standard. Dostupné online: http://en.wikipedia.org/wiki/Data_Encryption_Standard [31] Internet: Webové stránky Heidenhain, http://www.heidenhain.com/ [32] Internet: PuTTY - a free telnet/ssh client, http://www.chiark.greenend.org.uk/~sgtatham/putty/
63
Použité vývojové prostředky Použitý software Poznámka: elektronická verze této práce obsahuje internetové odkazy. ●
Xilinx ISE Webpack verze 8.1.03i a 9.2.03i, integrovaný systém pro návrh hradlových polí, http://www.xilinx.com/ise/logic_design_prod/webpack.htm
●
Xilinx Platform Studio 8.1.02i, integrovaný systém vývoj pro embedded aplikací, http://www.xilinx.com/ise/embedded_design_prod/platform_studio.htm
●
OrCAD/SDT 386+ v1.10, návrhový systém schémat (i hradlových polí)
●
FLY EDIT-PCB beta ver. 7.92, návrhový systém plošných spoljů
●
GIMP 2.4.5, software pro zpracování obrázků a fotek, http://www.gimp.org/
●
XnView
1.91.2,
software
pro
prohlížení
a
konverzi
obrázků
a
fotek,
http://www.xnview.com/ ●
Delphi7, integrovaný návrhový systém aplikací
●
PuTTY beta 0.60, telnet/ssh klient, http://www.chiark.greenend.org.uk/~sgtatham/putty/
●
Wireshark 1.0.0, software pro monitorování síťových rozhraní, http://www.wireshark.org/
●
OpenOffice.org 2.4.1, balík kancelářských aplikací, http://www.openoffice.org/
●
file2c, utilita pro snadné vložení binárních souborů do zdrojových textů, na CD /sw/file2c/
●
microblaze_link, utilita pro spojení binárních souborů konfigurace a programu do jednoho obrazu k naprogramování do flash, na CD /sw/microblaze_link/
Použité knihovny ●
knihovní prvky pro návrh hradlových polí Spartan-3
●
knihovní prvky pro návrh plošných spojů a schémat pro FLY a OrCAD
●
knihovna ENCNET (/fpga/mainprog/encnet/)
●
run-time knihovna pro MicroBlaze (/fpga/mainprog/rtl/)
Uvedené vývojové prostředky byly použity s laskavým svolením ASIX s.r.o.
64
Obsah přiloženého CD ●
obsah_cd.pdf
●
diplomova_prace.pdf
●
xd14dip_ctrl.exe
●
dokumenty/aplikacni_poznamky_manualy/
Tento list Vlastní elektronická podoba diplomové práce Ovládací program pro řízení pohonu (pomocí UDP/IP přes síť Ethernet) Aplikační poznámky a manuály souvisijecí s touto diplomovou prací ●
dokumenty/datasheety_katalogy/
Katalogové listy některých použitých součástek ●
edk/
●
fpga/
●
fpga/bootloader/
Projektové soubory systému EDK (parametry procesoru, periferie, ...) Schémata a ostatní soubory ke kompilaci hradlového pole Zdrojové texty bootloaderu hlavního procesoru ●
fpga/mainprog/
Zdrojové texty programu hlavního procesoru ●
fpga/secondary/
●
fpga/common/
●
obrazky/foto-video/
●
obrazky/osciloskop/
Zdrojové texty programu druhého procesoru Společné soubory pro bootloader a oba program (adresy periferií) Fotky z laboratoře H10 Soubory naměřené osciloskopem ●
obrazky/sigma/
Soubory naměřené logickým analyzátorem ●
pcb/bcwork-0/
●
sw/app/
●
sw/file2c/
Schéma a plošný spoj přípravku Zdrojové texty pro ovládací program uložený v kořenovém adresáři CD Zdrojové texty utility file2c, který jednoduše převádí soubory pro vložení do zdrojových textů pro použití HTTP serverem ●
sw/microblaze_link/
Zdrojové texty utility, která spojuje binární obraz hlavního programu a konfigurace a vytváří binární soubor k naprogramování do sériové flash paměti
65
A. Měření parametrů motoru Sh20-2B A.1 Výsledky ze systému Omega 2008 Měření odporů za studena (tabulka naměřených hodnot).............................................................67 Měření charakteristiky naprázdno (tabulka naměřených hodnot) ...............................................68 Měření charakteristiky nakrátko (tabulka naměřených hodnot)...................................................69 Měření charakteristiky naprázdno (graf Rfe a Xμ).........................................................................70 Měření charakteristiky naprázdno (graf P0, Pj, Pfe).......................................................................71 Meření charakteristiky naprázdno (graf I0, cos φ0).......................................................................72 Měření charakteristiky nakrátko (graf Ik, cos φk)..........................................................................73 Měření charakteristiky nakrátko (graf Zk, Rk)...............................................................................74
66
67
68
69
70
71
72
73
74
A.2 Měření konstantním proudem Pro účely ověření hodnot naměřených v systému Omega 2008 a pro nalezení metody vedoucí k určení časové konstanty rotoru bez nutnosti provádět zkoušku nakrátko bylo provedeno kontrolní měření motoru autorem navrhovanou metodou kontantním proudem vinutí statoru. Zkouška byla provedena pro pět různých hodnot proudu. Jako zdroj proudu sloužil laboratorní zdroj 30V / 3A. Zkušební proud Určená časová konstanta 100 mA
81 ms
200 mA
114 ms
400 mA
130 ms
1000 mA
118 ms
2000 mA
75 ms
Z grafu hodnot uloženým osciloskopem při 1000 mA je vidět způsob odečtení časové konstanty. Měření konstantním proudem 1000 mA
12
10
Napětí [V]
8
6
4
2
0 0,000
0,100
0,200
0,300
0,400
0,500
0,600
0,700
0,800
0,900
Čas [s]
Obrázek 23: K měření konstantním proudem Nutno podotknout, že pokud by měla tato metoda vrátit relevantní výsledky, je vhodné pro každý proud změřit časovou konstantu postupně na každém vinutí a při různém natočení rotoru.
75
Na obrázku 24 jsou hodnoty sejmuté z osciloskopu při měření konstantním proudem pro pět různých hodnot proudu.
Obrázek 24: Měření sejmuté z osciloskopu při měření konstantním proudem
76
B. Štítkové hodnoty motoru Sh20-2B Parametr
Hodnota
nn
2780 ot/min
Un
400/230 V (Y/D)
In
2,5/4,3 A (Y/D)
fn
50 Hz
cos φn
0,84
Mn
3,78 Nm
Mzv/Mn
2,6 (=9.83 Nm)
Mz/Mn
2,6 (=9.83 Nm)
Iz/In
5,1 (=12,75 A)
77
C. Kruhový diagram motoru Sh20-2B Kruhový diagram je zkonstruován na základě těchto parametrů: Parametr
Hodnota
R1
6,25 Ω
X1
6,5 Ω
X12
160 Ω
R12
2400 Ω
X2
6,5 Ω
R2
8Ω
X1,s=0.5
6Ω
X2,s=0.5
6Ω
X12,s=0.5
100 Ω
R2,s=0.5
7,5 Ω
X1,s=1
5,5 Ω
X2,s=1
5,5 Ω
X12,s=1
100 Ω
R2,s=1
6,5 Ω
78
79
D. Schéma přípravku a rozmístění součástek D.1 Rozmístění součástek a schéma BCWORK-0 Přípravek vznikl v rámci autorovy bakalářské práce.
80
81
82
83
84
D.2 Schéma DIPLMI-0 Přípravek je určen pro přípojení na konektor J7 resp. J8 přípravku BCWORK-0. Slouží k ochraně vstupních obvodů a k příjmu diferenčních párů signálů z IRC čidla a zakončení diferenční linky terminátory. Tento způsob umožňuje připojení IRC čidla při použití vhodného kabelu na vzdálenost i několik desítek metrů.
85
E. Vybraná schémata z hradlového pole V příloze jsou uvedena vybraná schémata, která jsou zajímavá myšlenkou a/nebo přímo souvisí s řízením pohonu.
E.1 Dekokér IRC čidla Schéma dekodéru IRC čidla s nulováním a měření rychlosti. Na straně 87 je 24 bitový obousměrný čítač s nulováním a vyčítací dva čtecí registry. V případě nulování provádí čítač operaci (zapsanou v jazyce C) CNT = (CNT+4096)&(~8191). Na straně 88 je logika pro dekódování IRC čidla. Signály IRCA a IRCB jsou již (v jiném schématu) filtrovány a zbaveny případných krátných (falešných) pulsů (rušení). Výsledkem jsou signály IRCINC a IRCDEC, které jsou vstupem pro čítač. Na straně 89 je řadič a čítače pro měření rychlosti.
E.2 Přijímač sériového rozhraní modulu Schéma přijímače sériového rozhraní modulu je na straně 90. Lze vidět logiku počítání přijmutých bitů, kontolu rámce (byte 0xF9) a detekci přepětí.
E.3 Generátor mrtvé doby sepnutí tranzistorů Na straně 91 je část schématu generátoru PWM, který vytváří časování mrtvé doby sepnutí tranzistorů. Vstupem do schématu je signál Q-Q a výstupy jsou L a H. Hodnota DEAD[0..7] je konstanta určující mrtvou dobu v jednotkách 25 ns (pro 2 μ je 80).
E.4 OPB/OPB most Na stránkách 92 až 94 je schéma OPB/OPB most.
86
87
88
89
90
91
92
93
94
F. Blokové schéma a ukázka programu regulátoru F.1 Blokové schéma řízení pohonu i1d*
PID
α,β
PID
i1q*
α,β
d,q
AS
střídač
a,b,c
τ i1d
model AS
i1q
α,β d,q τ
ia,ib,(ic) iα
3 2
iβ
τIRC
τr
n
dekodér IRC
Obrázek 25: Blokové schéma realizovaného řízení
F.2 Část programu realizující regulátor Tento kód je vykonáván „druhým“ procesorem ve smyčce každou regulační periodu. Řešení části, jejíž výstup jsou hodnoty want_i1d a want_i1q. int xrpm; switch (currentmotormode) { /* ... */ case (MOTORMODE_EXCITATION): want_i1q = 0; goto dopwms; case (MOTORMODE_POSITION): xrpm = pi_out(pi_bound(ircpos - sharedmem->want_pos, 256000), &pid_pos)<<8; goto dorpm; case (MOTORMODE_SPEED): xrpm = sharedmem->want_rpm; dorpm: want_i1q = pi_out(pi_bound((speed>>8) - xrpm, 256000), &pid_rpm)>>8; goto dopwms; case (MOTORMODE_CURRENT): want_i1q = sharedmem->want_i1q; dopwms: int exc_i1d = max_i1d_rpm / (abspeed>>8); want_i1d = exc_i1d < max_i1d ? exc_i1d : max_i1d; break; }
95
Realizace jádra regulace elektricého pohonu, Clarke-Parkova transformace, model motoru. int thetapsi2 = ((motor_thetapsi2>>16) + (ircpos&0x1FFF))&0x1FFF; /* 0..8191 */ /* zde je jiz vyplneno want_i1d a want_i1q podle typu regulace, udelame regulacni zasah */ /* clarke + park transform pro zjisteni skutecneho i1d, i1q */ int dq_cos = cosinus(thetapsi2); int dq_sin = sinus(thetapsi2); int real_i1d = (real_i1u*dq_cos + (real_i1u+2*real_i1v)*DIVSQRT3(dq_sin)) >> 16; int real_i1q = ((real_i1u+2*real_i1v)*DIVSQRT3(dq_cos) - real_i1u*dq_sin) >> 16; /* PID regulatory u1d, u1q ... */ /* vystup z regulatoru uz v meritku pwmek */ int u1d = pi_out(want_i1d - real_i1d, &pid_u1d); int u1q = pi_out(want_i1q - real_i1q, &pid_u1q); int int int int
u1u u1b u1v u1w
= = = =
(u1d*dq_cos - u1q*dq_sin)>>16; (((u1d*dq_sin + u1q*dq_cos)>>16)*111)>>7; u1b - (u1u>>1); -u1b - (u1u>>1);
/* mat. model motoru */ motor_ipsi2 += ipsi2const*(real_i1d - (motor_ipsi2>>16)); motor_thetapsi2 += ithp2const*real_i1q / (motor_ipsi2>>16);
Za povšimnutí stojí, že vlastní matematický model motoru, výpočet hodnot motor_ipsi2 a motor_thetapsi2 jsou pouze poslední dva řádky. Vypočtené hodnoty u1u, u1v a u1w se dále upravují a detekuje se přetečení. /* jeden z nich se tim nastavi na "nula" */ int u1min; if ((u1min = (u1u < u1v ? u1u : u1v)) > u1w) u1min = u1w; u1u -= u1min; u1v -= u1min; u1w -= u1min; /* detekce preteceni */ if ((u1u > period)||(u1v > period)||(u1w > period)) { if ((u1u>=u1v)&&(u1u>=u1w)) { /* u1u je nejvetsi */ if (u1v) u1v = u1v*period/u1u; else u1w = u1w*period/u1u; u1u = period; } else if ((u1v>=u1u)&&(u1v>=u1w)) { /* u1v je nejvetsi */ if (u1u) u1u = u1u*period/u1v; else u1w = u1w*period/u1v; u1v = period; } else { /* u1w je nejvetsi */ if (u1u) u1u = u1u*period/u1w; else u1v = u1v*period/u1w; u1w = period; } } /* if if if
detekce nespinani dolniho tranzistoru */ (u1u > period2) toptime1++; else toptime1=0; (u1v > period2) toptime2++; else toptime2=0; (u1w > period2) toptime3++; else toptime3=0;
96
Význam odstavce detekce přetečení je ten, že v případě, že prostorový vektor je mimo vyhrazený šestiúhelník, vymezený možnými spínacími stavy střídače, prostorový vektor se zmenší (vynásobí skalárem) o takové velikosti, aby se šestiúhelníku dotýkal. Směr prostorového vektoru přitom zůstane zachován. Hodnota proměnné period je maximální hodnota, které mohou nabývat u1u, u1v a u1w. Hodnota proměnné period2 je předpočítaná a rovna cca 2/3 (po zaokrouhlení) hodnoty period. Výpočet funkcí sinus() a cosinus() se provádí dostatečně rychle a přesně pomocí proložení kvadratickou funkcí. Požadovaný úhel je v rozmezí 0 až 8192 (odpovídá 0 až 2π) je nejprve převeden na hodnotu 0 až 2047, což odpovídá intervalu <0; π/2). Funkce sinus byla v tomto intervalu proložena celkem osmi kvadratickými funkcemi, vždy po 256 (π/16). Funkce cosinus() je ve skutečnosti makrem pro výpočet funkce sinus() posunuté o 2048 (π/2). int sinus(int x); #define cosinus(x)
(sinus((x)+2048))
char sinconsta[8] = {-2, -3, -5, -6, -8, -9, -9, -10}; int sinconstb[8] = {26104, 25356, 23941, 21399, 18348, 14416, 9763, 5078}; int sinconstc[8] = {0, 6546145, 12840725, 18641844, 23726566, 27899491, 31000253, 32909693}; int sinus(int x) { if (x&4096) return -sinus(x-4096); if (x&2048) return sinus(4095-x); // musi byt 4095, jinak dojde k nekonecne smycce... int i = (x&8191)>>8; x&=255; return (sinconsta[i]*x*x + sinconstb[i]*x + sinconstc[i])>>9; }
97
G. Uživatelská příručka G.1 Náčrtek přípravku
Otočný volič 1 Indikační LED
Tlačítko 1 Tlačítko 2
Otočný volič 2 Otočný volič 3
Tlačítko 3 Tlačítko 4 Tlačítko 5
G.2 Připojení Konektory přípravku jsou pro přehlednost uvedeny v tabulce. Účel připojení
Konektor Poznámka
Napájení
J9
Napětí zdroje 8V-12V, proud alespoň 1A. Zdroj napájecího napětí nesmí být uzemněn. - + Konektor s průměrem trnu 2,1 - 2,5 mm, záporný pól na vnějším obalu. Vhodný typ je například MW0910GS z nabídky firmy GM Electronic.
dsPICDEM MC1x P2
Dle typu modulu a izolace rozhraní je třeba dbát zvýšené poroznosti a řídit se dle instrukcí v manuálu k modulu. Při nesprávné manipulaci hrozí nebezpečí úrazu. Výkonový modul i přípravek obsahuje součástky citlivé na statickou elektřinu. Připojovat a manupulovat je možné pouze ve vhodném oděvu, před připojením je třeba vždy nejprve zařízení vybít, například jejich umněním.
98
Účel připojení
Konektor Poznámka
Připojení k PC – sériová linka
P1
Rozhraní není izolované. Pokud je opačná strana uzemněna (u PC běžné), dojde i k uzemnění přípravku a tím se poruší případná ochrana oddělením (bezpečnostním transformátorem, ...)
Připojení k PC síť Ethernet
U28
Rozhraní je izolované a schopné bezpečného provozu až do rozdílu potenciálů 1,5 kV.
Konektory pro rozšiřující připojení
J7, J8, J2
Na konektor J7 se připojuje IRC čidlo pomocí rozhraní DIPLMI-1. Ostatní konektory jsou k volnému použití.
G.3 Nastavení G.3.1 Reset nastavení Provedením resetu nastavení se vrátí původní hodnoty nastavení IP adresy, MAC adresy, NetBIOS jména, výstupní frekvence střídače, nastavení připojení snímačů polohy a nulového bodu proudu. Hodnoty potřebné pro připojení k přípravdu po resetu jsou: Nastavení
Hodnota po resetu
IP adresa
192.168.1.100
Maska podsítě
255.255.255.0
Adresa brány (gateway)
192.168.1.254
MAC adresa
A6:5A:42:43:00:01
NetBIOS jméno
“xd14dip”
Reset nastavení se provede podržením Tlačítka 2 zároveň se stiskem Tlačítka 1. Při provedení resetu se rozsvítí všechny indikační LED na cca jednu vteřinu.
G.3.2 Nastavení TCP/IP Nastavení parametrů je možné pouze pomocí webového rozhraní. Pro změnu nastavení: ●
Ve webovém prohlížeči (Internet Explorer, Firefox, ...) otevřete webové rozhraní přípravku zadáním jeho IP adresy nebo NetBIOS jména. IP adresa počítače musí být jiná než IP adresa přípravku, musí mít však stejnou masku podsítě a stejnou podsíť (v případě adresy
192.168.1.100/255.255.255.0
musí
99
být
adresa
počítače
192.168.1.xxx)
V případě správně nastaveného routeru lze komunikovat s přípravkem i z jiné podsítě. ●
Klikněte v levém menu načtené webové stránky na odkaz Nastavení TCP/IP. Zadejte požadované hodnoty a klikněte na Uložit nastavení. V případě změny IP adresy, NetBIOS jména nebo MAC adresy je možné, že opětovné zobrazení stránek přípravku nebude možné až do restartu počítače. MAC adresa musí být unikátní. První byte nastavované adresy musí končit bity xxxx xx10, vhodné adresy jsou tedy například 02, 06, A6 apod.
G.3.3 Nastavení motoru Stejně jako v případě nastavení TCP/IP otevřete webovým prohlížečem stránku pro nastavení motoru kliknutím na odkaz z levého menu Nastavení motoru. ●
Nastavení motoru se provádí v oddílu Parametry motoru a střídače.
●
V oddílu Přibližný výpočet hodnot ze štítkových údajů lze předpočítat velikost magnetizačního proudu a velikost rotorové časové konstanty.
●
Pro uložení nastavení stiskněte tlačítko Uložit nastavení.
●
Pro nastavení nulového proudu hallových sond modulu stiskněte v okamžiku nulového procházejícího proudu tlačítko Nulovat proud. Aktuální hodnoty ze snímačů lze vidět na stránce Informace o systému.
G.4 Ovládání G.4.1 Ruční ovládání Pro ruční ovládání slouží Tlačítka 2 až 5 a Otočné voliče 1 až 3. Vypnutí, příkaz STOP, odpojení všech tranzistorů, se provádí Tlačítkem 2. Regulace na složdu proudu i1q se vybírá Tlačítkem 3. Hodnota se vybírá Otočným voličem 1. Regulace na otáčky se vybírá Tlačítkem 4. Požadované otáčky za minutu se nastavují Otočným voličem 2 v rozsahu -3000 až 3000 ot/min. Regulace na polohu se vybírá Tlačítkem 5. Požadovaná poloha se nastavuje Otočným voličem 3 v rozsahu cca dvou otáček.
100
G.4.2 Indikace LED Indikace stavu je možná deseti barevnými LED. Neboť se jedná primárně o LED na ladění, jejich význam se může lišit. LED
Význam
● Červená
První červená svítí: neaktivní stav Druhá červená svítí: pouze buzení První oranžová svítí: regulace na proud Druhá oranžová svítí: regulace na otáčky Obě oranžové svítí: regulace na polohu Obě červené blikají: chybový stav
● Červená ● Oranžová ● Oranžová ● Žlutá
Použita pro ladění
● Žlutá
Použita pro ladění
● Zelená
Použita pro ladění – bliká z 20 MHz hodin
● Zelená
Použita pro ladění – bliká z 40 MHz
● Modrá
Použita pro ladění – bliká software
● Modrá
Použita pro ladění
G.4.3 Ovládání pomocí sériové linky Parametry sériové linky jsou 9600 baud, 8 bit/znak, žádná parita, 1 stop bit. Po sériové lince se posílají textové příkazy, vždy jeden příkaz na řádku. Řádek se ukončuje znakem LF nebo CR nebo jejich kombinací. V odpovědích zasílá přípravek pro ukončení řádku vždy pouze znak LF. Speciálním znakem je znak ESC, při jehož příjmu přípravek vždy okamžitě vypíná motor (“červený hřib”). Seznam příkazů je v odstavci 8 Popis příkazů. Odpověď na příkaz může být kladná nebo záporná, s počátečním znakem plus “ +” nebo mínus “-” a textovým popisem případné chyby za úvodním znakem. Na sériovou linku se posílají též ladicí výpisy, které jsou uvozeny znakem “ !” a ty je potřeba při příjmu odpovědi odlišit. Pro posílání příkazů po sériové lince lze použít i jednoduchý terminál, například HyperTerminal ze systému Winows nebo PuTTY.
101
G.4.4 Ovládání pomocí UDP/IP Zařízení reaguje na příkazy zasílané po UDP/IP. Veškeré datagramy se zasílají na port 7925. Existují čtyři typy datagramů: příkazový, odpověďní a malý a velký informační. Příkazové se posílají přípravku, odpověďní a informační zasílá přípravek. Odpověďní datagram je zasílán na IP adresu stanice, která poslala příkazový datagram, vždy na port 7925. Příkazový datagram (PC -> přípravek) Adresa Délka Obsah 0x00
1 byte Znak 'c' - 0x63
0x01
2 byte Pseudonáhodná nebo sekvenční identifikace příkazu
0x03
?
ASCII řetezec bez ukončovacího NULL, CR nebo LF s příkazem k provedení
Odpověďní datagram (přípravek -> PC) Adresa Délka
Obsah
0x00
1 byte
Znak 'a' - 0x61
0x01
2 byte
Identifikace příkazu stejná jako v příkazovém datagramu
0x03
?
ASCII řetezec bez ukončovacího NULL, CR nebo LF s textovou odpovědí na příkaz; První znak musí být plus “+” nebo minus “-” značící kladnou nebo zápornou odpověď.
Informační datagram je zasílán periodicky. Informační datagram (přípravek -> PC) Adresa Délka
Obsah
0x00
1 byte
Znak 'i' - 0x69
0x01
1 byte
Stav pohonu Význam dle konstant uvedených v souboru common/shared.h
0x02
1 byte
Poloha otočného voliče 1
0x03
1 byte
Poloha otočného voliče 2
0x04
1 byte
Poloha otočného voliče 3
0x05
4 byte
Poloha hřídele podle IRC čidla
0x09
4 byte
Rychlost pohonu podle IRC čidla (65536 = 1 ot/min) 102
Informační datagram (přípravek -> PC) Adresa Délka
Obsah
0x0D
Skutečná spínací frekvence tranzistorů (1 = 50 ns)
4 byte
Pro budoucí rozšíření mohou být použity další byte. Měly by být ignorovány.
Datagram pro vizualizaci (přípravek -> PC) Adresa Délka
Obsah
0x00
1 byte
Znak 'I' - 0x49
0x01
24 byte Záznam o stavu pohonu
0x01 4 byte
Dolních 16 bitů: hodnota proudu z A/D převodníku pro fázi U Horních 16 bitů: hodnota proudu z A/D převodníku pro fázi V
0x05 4 byte
magflux
0x09 4 byte
Dolních 16 bitů: poloha podle IRC čidla Horních 16 bitů: aktuální rychlost otáčení v ot/min
0x0D 4 byte
Čítač timestamp, každou regulační periodu se zvyšuje o 1
0x11 4 byte
Poměrné otevření tranzistorů Bity 0-13 a bity 14-29 obsahují dvě 14 bitové hodnoty otevření tranzistorů. Bity 30-31: 0x00000000 Hodnota pro fázi U=0, uloženy hodnoty fáze V,W 0x40000000 Hodnota pro fázi V=0, uloženy hodnoty fáze U,W 0x80000000 Hodnota pro fázi W=0, uloženy hodnoty fáze U,V
0x15 4 byte
0x19
Dolních 8 bitů: Poslední přijatá hodnota VDC Vyšších 8 bitů: Poslední přijatá hodnota VAC Horních 16 bitů: Hodnota přečtená z A/D převodníku vstupního proudu
24 byte Záznam o stavu pohonu
... záznam je uveden celkem 60x 0x589
24 byte Záznam o stavu pohonu
Z podstaty protokolu UDP není jisté, v jakém pořadí přijdou, a zda vůbec, datagramy pro vizualizaci. Proto je nutné pomocí čítače timestamp pořadí rekonstruovat.
G.4.5 Popis příkazů Příkazy jsou textové, parametry oddělené mezerou, malými písmeny. V případě připojení po lince COM jsou akceptována i velká písmena a libovolný počet mezerníků mezi jednotlivými parametry. 103
Příkaz
Význam
stop
Stejný jako Tlačítko 2: Odpojení motoru.
curr xxx
Přepnout do režimu regulace proudu a nastavit proud na hodnotu xxx mA.
rpm xxx
Přepnout do režimu regulace otáček a nastavit proud na hodnotu xxx ot/min.
pos xxx
Přepnout do režimu regulace polohy a nastavit polohu na hodnotu xxx (pulsů IRC snímače).
net ip.ip.ip.ip
Požadavek na zasílání informačního datagramu na uvedenou IP adresu.
netstop
Zrušení zasílání informačního datagramu.
netstart
Požadavek na zasílání informačního datagramu stanici, jež poslala tento příkaz.
netbigstart
Požadavek na zasílání vizualizačních datagramů na IP adresu uvedenou v příkazu net.
netbigstop
Zrušení požadavku na zasílání vizualizačního datagramu.
period dddd
Nastavení periody zasílání informačního paketu v milisekundách v rozsahu 75 až 2000 milisekund.
G.4.6 Ovládací software pro Windows
Na přiloženém CD je k dispozici program s uživatelským rozhraním pro komunikaci přes UDP/IP. Po spuštění programu je třeba vyplnit IP adresu nebo jméno přípravku a stisknout tlačítko „Připojit“. Součástí připojení je vyžádání periodického zasílání informačního datagramu.
104
Po připojení je možné zvolit jeden ze tří způsobů regulace. Po vyplnění textové hodnoty je třeba sptisknout tlačítko Nastavit. Tím lze redukovat nežádoucí změny regulace pohonu během zadávání hodnoty. Naopak, při použití tří posuvných ovladačů (trackbar) k nastavení dochází okamžitě. Vypnutí motoru lze provést pomocí tlačítka STOP, “červeného hřibu” v designu operačního systému Windows nebo zvolením výběru Zastaveno. Při výběru regulace na proud o velikosti 0 mA dojde k zastavení pohonu též, stroj však zůstává nabuzen. Rychlost doběhu je u obou způsobů je řádově srovnatelná.
105
H. Vizualizace některých regulačních pochodů Vizualizace jsou sejmuty z programu přímo za běhu a jsou ve změněných barvách pro lepší tisk. Červeně jsou zakresleny prostorové vektory statorových proudů (přímo tak, jak byly změřeny), tmavě červeně stopa dlouhá půl vteřiny. Zeleně jsou uvedeny poměry otevření tranzistorů34, opět zakresleny jako prostorový vektor, tmavě zeleně pak stopa vektoru. Modře je zakreslen prostorový vektor magnetické indukce v rotoru podle modelu (a směr osy d), tmavě modře pak jeho stopa.
H.1 Regulační pochody v osách (d,q) Tento souřadný systém se otáčí stejně rychle jako magnetický tok v rotoru, prostorové vektory se otáčí se systémem souřadnic. Proto všechny prostorové vektory v ustáleném stavu pohonu v grafu stojí. Prostorové vektory lze je snadno pozorovat a studovat jejich pohyb při různých ustálených stavech pohonu. Systém souřadnic (a,b) se v grafu otáčí skluzovou frekvencí, osa x ukazuje polohu hřídele, která se otáčí v grafu téměř synchronní rychlostí. Šestiúhelník ohraničuje prostor, ve kterém se může teoreticky pohybovat prostorový vektor napětí. Šestiúhelník se otáčí se systémem souřadnic (a,b), proto je mu vepsána a opsána kružnice vyjadřující prostor, kde ze může vyskytovat prostorový vektor napětí vždy a prostor, kde se může vyskytovat jen někdy.
Obrázek 26: Regulace na konstantní otáčky, vlevo nezatížený stroj, vpravo stroj zatížený 34 Tedy nikoli skutečné napětí. Vektor by odpovídal skutečnému napětí při splnění těchto dvou požadavků: 1) zanedbání komutačních jevů na tranzistorech 2) napětí na stejnosměrné větvi střídače je konstantní
106
Na obrázku 26 můžeme pozorovat prostorové uspořádání prostorových vektorů. U nezatíženého stroje jsou vektory magnetického toku a proudu ve fázi, nevytváří tedy žádný elektromagnetický moment35. Vektory napětí a proudu jsou posunuty o téměř 90° a účinník je velmi malý (dodávaný výkon do stroje musí pokrývat pouze ztráty ve vinutí statoru, ztráty v železe a ztráty v ložiscích36). V případě, že stroj zatížíme, dojde zejména k posunu prostorového vektoru proudu. Změní se také skluzová frekvence a tedy i frekvence ve statoru (pohon se otáčí stále stejnou rychlostí, reguluje se na konstantní otáčky). Změna polohy prostorového vektoru proudu způsobí generování elektromagnetického momentu a zvýšení účiníku.
Obrázek 27: Skok požadavku na otáčky Na obrázku 27 je vidět stav po regulačním zásahu při změně požadavku otáček z 30 ot/min na 1000 ot/min. Motor je nezatížen, proto jsou polohy vektorů umístěny stejně jako na obrázku 26. Povšimněme si však, kudy postupovaly prostorové vektory napětí a proudu. Z původního umístění, téměř nulového napětí37 se aplikovalo na statorové vinutí po velmi krátkou dobu maximální možné napětí. Tímto se posunul vektor proudu k hodnotě, kde vyvíjí 35 Musejí být trochu pootočené a malý moment vytvářet, jinak by se stroj zastavil. 36 Ostatní ztráty jsou v tomto případě zanedbatelně malé 37 Z umístění vektoru je vidět, že většina napětí šla na umoření ztrát napětí v odporu vinutí statoru.
107
nejvyšší elektromagnetický moment. Neboť v PID regulátoru otáček převažuje složka P, jak se zvýšily otáčky, postupně se statorový proud snižoval k hodnotě při které je moment nulový. Hodnota napětí se ustálila na nové hodnotě.
H.2 Regulační pochody v časových osách
Proud [mA]
Na obrázku 28 je vidět spuštění pohonu a regulace na 1000 ot/min, včetně nabuzení. 4000
1600
3000
1400
2000
1200
1000
1000
0
800
-1000
600
-2000
400
-3000
200
proud fází U [mA] proud fází V [mA] proud fází W [mA] proud i1d [mA] proud i1q [mA]
-4000
otevření U otevření V otevření W otáčky [1/min]
0
0,00
20,00
40,00
60,00
80,00
100,00
120,00
140,00
160,00
Čas [ms]
Obrázek 28: Spuštění pohonu, pořadavek 1000 ot/min Maximální proud střídače je 3500 mA, je vidět, že rozběh se provádí na hranici proudové
Proud [mA]
zatižitelnosti střídače. 4000
800
3000
700
2000
600
1000
500
0
400
-1000
300
-2000
200
otevření V
-3000
100
otevření W
-4000
0
0,00
1,00
2,00
3,00
4,00
5,00
6,00
7,00
8,00
9,00
proud fází U [mA] proud fází V [mA] proud fází W [mA] proud i1d [mA] proud i1q [mA] otevření U
otáčky [1/min]
10,00
Čas [ms]
Obrázek 29: Skok otáček z 30 na 300 ot/min Z obrázku 29 je vidět, že pohon je schopen reagovat na změnu zadání, přejít do maximálního momentu a zpět v řádu jednotek milisekund.
108
2500
Otáčky [1/min]
2000
1500
1000
500
0 0,00
10,00
20,00
30,00
40,00
50,00
60,00
70,00
80,00
90,00
100,00
Čas [ms]
Obrázek 30: Vliv nastavení časové konstanty rotoru Na obrázku 30 můžeme vidět vliv nastavení konstanty rotoru na regulační děje. Začátek děje probíhá stejně, neboť počáteční požadavek na změnu polohy prostorového vektoru proudu nezávisí na matematickém modelu. Zachycený případ (červeně) nastal při nastavení τr o 50% nižší. Pozice magnetického toku v rotoru byla po 40 ms odhadnuta natolik špatně, že ačkoliv byl požadovaný záporný moment, vyvinul se malý kladný moment. K této situaci může dojít v případě chyby určení polohy magnetického toku o něco více než 90° (tak, že vzájemná poloha vektoru proudu a vektoru magnetického toku překročí 180°).
109