Řízení asynchronního motoru signálovým procesorem

Transkript

Řízení asynchronního motoru signálovým procesorem
Č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 aM 1 cos 120 °⋅i bM 1 cos 240 °⋅i c 
.
M 12 i A M 12 cos 120 ° i BM 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 bL 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 Ad  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 2dd 2
dt
1q
1 1d
dt
u2q =R2⋅i 2q1− 2
u 1d=R1⋅i 1dd
●
u 1q =R1⋅i 1qd
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 1kd
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= 12I 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 cosn
.
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