0.5MB

本ドキュメントはCypress (サイプレス) 製品に関する情報が記載されております。
AN706-00036-1v0-J
32-BIT MICROCONTROLLER
MB9B100A/MB9B300A/MB9B400A/MB9B500A series
空間ベクトル パルス幅変調
ARM is the registered trademark of ARM Limited in the EU and other countries.
Cortex is trademark of ARM Limited in the EU and other countries.
AN706-00036-1v0-J
注意事項

本資料の記載内容は、予告なしに変更することがありますので、ご用命の際は営業部
門にご確認ください。

本資料に記載された動作概要や応用回路例は、半導体デバイスの標準的な動作や使い
方を示したもので、実際に使用する機器での動作を保証するものではありません。し
たがいまして、これらを使用するにあたってはお客様の責任において機器の設計を行
ってください。これらの使用に起因する損害などについては、当社はその責任を負い
ません。

本資料に記載された動作概要・回路図を含む技術情報は、当社もしくは第三者の特許
権、著作権等の知的財産権やその他の権利の使用権または実施権の許諾を意味するも
のではありません。また、これらの使用について、第三者の知的財産権やその他の権
利の実施ができることの保証を行うものではありません。したがって、これらの使用
に起因する第三者の知的財産権やその他の権利の侵害について、当社はその責任を負
いません。

本資料に記載された製品は、通常の産業用、一般事務用、パーソナル用、家庭用など
の一般的用途に使用されることを意図して設計・製造されています。極めて高度な安
全性が要求され、仮に当該安全性が確保されない場合、社会的に重大な影響を与えか
つ直接生命・身体に対する重大な危険性を伴う用途(原子力施設における核反応制御、
航空機自動飛行制御、航空交通管制、大量輸送システムにおける運行制御、生命維持
のための医療機器、兵器システムにおけるミサイル発射制御をいう)、ならびに極め
て高い信頼性が要求される用途(海底中継器、宇宙衛星をいう)に使用されるよう設
計・製造されたものではありません。したがって、これらの用途にご使用をお考えの
お客様は、必ず事前に営業部門までご相談ください。ご相談なく使用されたことによ
り発生した損害などについては、責任を負いかねますのでご了承ください。

半導体デバイスはある確率で故障が発生します。当社半導体デバイスが故障しても、
結果的に人身事故、火災事故、社会的な損害を生じさせないよう、お客様は、装置の
冗長設計、延焼対策設計、過電流防止対策設計、誤動作防止設計などの安全設計をお
願いします。

本資料に記載された製品を輸出または提供する場合は、外国為替及び外国貿易法およ
び米国輸出管理関連法規等の規制をご確認の上、必要な手続きをおとりください。

本書に記載されている社名および製品名などの固有名詞は、各社の商標または登録商
標です。
Copyright© 2011 FUJITSU SEMICONDUCTOR LIMITED all rights reserved
1
AN706-00036-1v0-J
改版履歴
版数
日付
内容
1.0 版
2011.08.24
新規作成
2
AN706-00036-1v0-J
目次
改版履歴 ...............................................................................................................................2
目次 ...................................................................................................................................... 3
1.
はじめに ........................................................................................................................ 4
2
SVPWMの原理 .............................................................................................................. 5
2.1
概要 ........................................................................................................................ 5
2.2
原理 ........................................................................................................................ 7
2.3
実際のSVPWM ..................................................................................................... 10
2.4
SVPWM演算 ........................................................................................................ 12
2.4.1
Urefがどのセクタに属するのかの確認 ............................................................. 12
2.4.2
隣接する 2 つの基本ベクトルのオープン時間の決定 ...................................... 14
2.4.3
伝達時間の計算 ............................................................................................... 15
2.4.4
SVPWM波形の生成 ......................................................................................... 16
3
AN706-00036-1v0-J
1. はじめに
このアプリケーションノートでは, 空間ベクトル パルス幅変調(SVPWM)機能の原理、
各ブロック、関数、フロー、サンプル、パラメータについて説明します。
4
AN706-00036-1v0-J
2
SVPWMの原理
技術的な背景
2.1
概要
モータの理論では、モータ速度は以下の式で定義されます。
(1)
ここで、 f は電源の周波数、p は、モータ極のペア数を示します。
この数式から分かるようにモータ速度の安定化を図る場合、電源周波数を変更するか、モ
ータの極のペア数を変更するかのいずれかの方法があります。電源周波数を変更するほう
がモータの極のペア数を変更するより簡単です。そのため、速度の安定化を図るには、多
くの場合で周波数の変換を行っています。
どのようにして周波数の変更を行うのでしょうか?現在は、AC-DC-AC による方式が多
く採用されています。つまり、三相 AC を一旦 DC に変換し、さらに DC を三相 AC に変換
することで、AC 周波数の変更を行います。
三相電源 AC 位相間電圧は以下のように定義されます。
√2 cos
2π/3
√2 cos
4π/3
√2 cos
(2)
この三相 AC 電源電圧を以下に示すように静止座標システム (α-β)に代入します。
(これらの元になった数式に関しては、別に記載のアプリケーションノートのクラーク変換
式を参照してください。)
2
3
ua
2
3
0.5ub
√3
u
2 b
0.5uc
√3
u
2 c
√2 cos
√2 sin
(3)
(3)式を電圧空間ベクトルに代入します。
us
(4)
正弦波電力では以下のようになります。
us
√2
cos
sin
√2
(5)
この数式は、複素平面内で循環しています。したがって、モータ理論では、複素平面にお
ける一定の電圧(U)、周波数、固定子電圧空間ベクトルは、電源周波数のサイクルを循環し
ます。
図 2-1 に示した電源電圧空間ベクトルはこれとは別の循環系で、位相電圧循環 √3 を越え
る放射状のものであり、位相角は 30°です。
固定子三相電圧空間では、ベクトルはある循環系(開始)から他の循環系(安定)に移動します。
5
AN706-00036-1v0-J
SVPWM は電源周波数を安定させ、DC-AC 成分により、優れた循環性を引き出します。
図 2-1
6
AN706-00036-1v0-J
2.2
原理
SVPWM
(Space Vector Pulse Width Modulation :空間ベクトルパルス幅変調).は、二相 α-β
座標システムの固定子電圧ベクトルを直接、パルス幅変調 (PWM)信号(デューティサイクル
値)に変換することができます。以下の数式が一般的に知られています。
U1
dψ1
dt
R1 i1
(6)
U1 は固定子電圧ベクトル、Ψ1 は固定子磁束ベクトル、i1 は固定子電流ベクトルです。
U1 が標準的な正弦波であれば、大きさは一定で、ベクトル方向は連続的に変化します。
軌跡は理想的な円となります。したがって、以下のような式となります。
ψ1
U1
R1 i1 dt
(7)
R1 ×i1<<U の時は以下のようになります。
ψ1
U1 dt
(8)
収束する軌跡は、電圧ベクトルによって異なります。
したがって、DC 回路は三相の AC 回路として設計することができます。
図 2-2
7
AN706-00036-1v0-J
図 2-2 の回路図に示すように a、b、c、a’、b’、c’ の 6 つの電源スイッチが 2 つのグループ
を構成し、S [a,b,c]、S’[a’, b’, c’]によってスイッチ ON/OFF を制御することで、下記のよう
に相互排除を行います。
S
S′
Sx
1
0
このことは、各電圧ベクトルが 3 桁の数値によってコード化されており、8 つのスイッチン
グ状態(ベクトル)が使用可能であることを示しています。
例えば、
=[1,0,0]の場合、
[a], [b’], [c’] スイッチが ON, [a’], [b], [c]スイッチが OFF となります。
UaN
Udc , UbN
UcN
0
モータの原理では,
UaN
b
UbN
Udc
c
UaN
Udc , UbN
b
UcN
c
0
Udc
0
を式に代入すると,
表 2-1 に示すように他のスイッチング状態も同様にして求めることができます。
表 2-1
Sa
Sa
Sa
Vector
UaN
UbN
UcN
Ua
Ub
Uc
0
0
0
U0
0
0
0
0
0
0
1
0
0
U4
Udc
0
0
2Udc/3
- Udc/3
- Udc/3
1
1
0
U6
Udc
Udc
0
Udc/3
Udc/3
- 2Udc/3
0
1
0
U2
0
Udc
0
- Udc/3
2Udc/3
- Udc/3
0
1
1
U3
0
Udc
Udc
- 2Udc/3
Udc/3
Udc/3
0
0
1
U1
0
0
Udc
- Udc/3
- Udc/3
2Udc/3
1
0
1
U5
Udc
0
Udc
Udc/3
- 2Udc/3
Udc/3
1
1
1
U7
0
0
0
0
0
0
式(3)と(4)から、電圧空間ベクトルの式を以下のように導くことができます。
us
a
ここで
2
3
ua
exp j
2π
3
aub
a2 uc
a2
exp j
8
(9)
4π
3
AN706-00036-1v0-J
表 2-1 のベクトル値を代入して、
U4
2
U 3 dc U2
2
2π
Udc exp j
U3
3
3
U1
U6
2
4π
Udc exp j
U5
3
3
2
π
Udc exp j
3
3
2
U exp jπ
3 dc
(10)
2
5π
Udc exp j
3
3
2
Udc
ゼロ以外のベクトル値はすべて同じ振幅 3
を持ち、境界間では 2 つのベクトルの角度
π
は
t
3
60° ,
と な り ま す 。 例 え ば 、 f=50Hz の と き は 、 ベ ク ト ル 変 化 時 間 は
60 1
360 50
3.33ms
となります。
すべての組み合わせをグラフィック表示すると、図 2-3 に示すような六角形になります。
α、β 座標軸に 6 つの非ゼロベクトル U0、U60、U120、U180、U240、U300 と 2 つのゼロ
ベクトル O000、O111 が定義されています。
β軸
セクタ番号
基本空間ベクトル
最大位相電圧振幅 = 1
α軸
α軸, β軸の
電圧ベクトル成分
図 2-3
9
AN706-00036-1v0-J
図 2-3 では、赤い線で六角形が 6 つのセクタに分割されています。2 つのベクトルはそれぞ
れ 60°の角度を形成しており、2 つのベクトルとゼロベクトルでランダムな電圧ベクトルを
構成します。
Tx
T
0
Uref dt
0
Ux dt
Tx Ty
Tx
T
Uy dt
Tx Ty
U0 dt
(11)
あるいは
Uref T
Ux Tx
Uy Ty
U0 T0
(12)
この式は、電圧ベクトルが回転するセクタ内でも多くの小さな要素をプロットさせるこ
とができることを意味します。
したがって、三相正弦波 AC 電圧処理時は、電圧ベクトル成分を使用して U4(100)から増
分を開始して、増分のたびごとに境界の 2 ベクトルとゼロベクトル間で成分が構成されま
す。それによって、回転する電圧ベクトルと等価な電圧ベクトルが得られ、それらはすべ
て SVPWM となります。
図 2-4 は SVPWM 変換の様子を示したもので、f = 50Hz 時の単相電圧が DC 電圧に、さら
に f=100Hz の三相電圧に変換されています。
AC
DC
AC
図 2-4
2.3
実際のSVPWM
三相 AC 電圧時の回転速度: ω 2πf 、1 サイクル回転するには、T=1/f の時間がかかりま
す。搬送波の周波数を fs とすると、周波数比は R fs /f で、これは電圧回転面が R 単位の
増分で描画することを意味し、電圧ベクトル増分角度は
r
2π
R
2πf
fs
2πTs /T
になります。
例えば、電圧ベクトル Uref を作成する必要のあるときは、図 2-5 に示すように最初の増分
のセクタ I に位置しており、非ゼロベクトル 2 つを使用し(U4,U6)、さらにゼロベクトル 2
増分(U0,U7)を使用します。
10
AN706-00036-1v0-J
図 2-5
静止システムの二相(α-β)では、U4 の
|T6 U6 /Tz |
sinθ
|Uref |
sin2π/3
U4
U6
の角度は θ であるため、
以下のようになります。
|T4 U4 /Tz |
π
θ
sin
3
(13)
2
U
3 dc であるため、ベクトルホールド時間は、以下のようになります。
π
θ
3
mTs sin θ
mTs sin
4
6
ここで、m は SVPWM 制御比です。
(14)
√3|Uref |
Udc
ゼロベクトルホールド時間は:
スイッチングの無駄を軽減するため、1 位相分だけのスイッチ状態のみを変更します。最良
のスイッチシーケンスは、次の表 2-2 に示すとおりです。
表 2-2
Uref
I
スイッチシーケンス
セクタ (0°≤θ≤60°)
0-4-6-7-7-6-4-0
II
セクタ (60°≤θ≤120°)
0-2-6-7-7-6-2-0
III
セクタ (120°≤θ≤180°)
0-2-3-7-7-3-2-0
IV
セクタ (180°≤θ≤240°)
0-1-3-7-7-3-1-0
V
セクタ (240°≤θ≤300°)
0-1-5-7-7-5-1-0
VI セクタ (300°≤θ≤360°)
0-4-5-7-7-5-4-0
1 サイクル回転後の電圧は表 2-2 に準じて各成分ベクトルとなり、図 2-5 に示すような三相
電圧が I セクタで得られます。
11
AN706-00036-1v0-J
図 2-6
2.4
SVPWM演算
添付の本サンプルプログラムにおいて、SVPWM により正弦波を実現するために、以下の 4
つのステップを必要とします。
・Uref がどのセクタに属するかを確認します。
・隣接する 2 つの基本ベクトルのオープン時間を確定するために X, Y, Z を計算します。
・2 つの隣接する基本ベクトルの伝達時間を確定します。
・多機能タイマ
OCCP レジスタ値を CH1,CH3,CH5 に書き込み、SVPWM 波形を
生成します。
2.4.1 Uref がどのセクタに属するのかの確認
関数アプリケーション
関数: SVPWM 電圧ベクトルのセクタ数の計算
関数名: CalcSectorNo
C ファイル名: SVPWM.C, SVPWM.H
関数インタフェース:
INT8U CalcSectorNo(_stDataInFixAxis *pstDataInFixAxis //fixed 2-axis system)
typedef struct
{
Q15_VAL32 alpha_Q15;//
Q15_VAL32 beta_Q15;//
}_stDataInFixAxis;
表 1
項目
入力
出力
名称
alpha
beta
SectorNo
説明
固定二相の位相アルファ
固定二相の位相ベータ
SVPWM 電圧ベクトルのセクタ番号
12
フォーマット
Q15_VAL32
Q15_VAL32
Q15_VAL32
AN706-00036-1v0-J
このモジュールのコード例を以下に示します。
void example_ CalcSectorNo ()
{
CurrentInFixAxis. alpha_Q15= INa;//Input alpha
CurrentInFixAxis. beta_Q15= INb;//Input beta
CalcSectorNo (&pstDataInFixAxis);
OUTa= SectorNo;
}
13
AN706-00036-1v0-J
2.4.2
隣接する 2 つの基本ベクトルのオープン時間の決定
関数アプリケーション
関数: 2 つの隣接する基本ベクトルのオープン時間確定に使用する X, Y, Z の計算
関数名: CalcDutyTime
C ファイル名: SVPWM.C, SVPWM.H
void CalcDutyTime(_stDataInFixAxis *pstDataInFixAxis, _stXYZ *pstXYZ,
INT8U WhichMFT, INT8U WhichFRTCh)
typedef struct
{
Q15_VAL32 alpha_Q15;
Q15_VAL32 beta_Q15;
}_stDataInFixAxis;
typedef struct
{
INT32S X;
INT32S Y;
INT32S Z;
}_stXYZ;
表 2
項目
入力
出力
名称
alpha
beta
WhichMFT
WhichFRTCh
X
Y
Z
説明
固定二相の位相アルファ
固定二相の位相ベータ
有効値は MFT0, MFT1
FRT チャンネルを設定
X は伝達時間
Y は伝達時間
Z は伝達時間
フォーマット
Q15_VAL32
Q15_VAL32
INT8U
INT8U
INT32S
INT32S
INT32S
このモジュールのコード例を以下に示します。
void example_ CalcDutyTime ()
{
pstDataInFixAxis. alpha_Q15= INa;//Input alpha
pstDataInFixAxis. beta_Q15= INb;//Input beta
WhichMFT=0;
WhichFRTCh=0;
CalcDutyTime (&pstDataInFixAxis,& pstXYZ, WhichMFT, WhichFRTCh);
OUTa= pstXYZ->X;
OUTb= pstXYZ->Y;
OUTc= pstXYZ->Z;
}
14
AN706-00036-1v0-J
2.4.3
伝達時間の計算
関数アプリケーション
関数: 2 つの隣接する基本ベクトルの各伝達時間を確定
関数名: CalcTon
C ファイル名: SVPWM.C, SVPWM.H
void CalcTon(INT8U SectorNo, _stXYZ *pstXYZ, _stOnTimingOfUVW *pstOnTimingOfUVW,
INT8U WhichMFT, INT8U WhichFRTCh)
typedef struct
{
INT32S X;
INT32S Y;
INT32S Z;
}_stXYZ;
typedef struct
{
INT32S TU;
INT32S TV;
INT32S TW;
}_stOnTimingOfUVW;
表 3
項目
入力
出力
名称
X
Y
Z
SectorNo
WhichMFT
WhichFRTCh
TU
TV
TW
説明
X は伝達時間
Y は伝達時間
Z は伝達時間
SVPWM 電圧ベクタのセクタ番号
有効値は MFT0, MFT1
FRT チャンネルを設定
DC 電源に接続する A 位相の伝達時間
DC 電源に接続する B 位相の伝達時間
DC 電源に接続する C 位相の伝達時間
フォーマット
INT32S
INT32S
INT32S
INT8U
INT8U
INT8U
INT32S
INT32S
INT32S
このモジュールのコード例を以下に示します。
void example_ CalcTon ()
{
pstXYZ .X= INa;
pstXYZ .Y = INb;
pstXYZ .Z=INc;
SectorNo=1;
WhichMFT=0;
WhichFRTCh=0;
CalcTon (SectorNo ,& pstXYZ,& pstOnTimingOfUVW, WhichMFT, WhichFRTCh);
OUTa= pstOnTimingOfUVW ->TU;
OUTb= pstOnTimingOfUVW ->TV;
OUTc= pstOnTimingOfUVW ->TW;
}
15
AN706-00036-1v0-J
2.4.4
SVPWM 波形の生成
関数アプリケーション
関数: OCCP レジスタ値を CH1,CH3,CH5 に書き込み, SVPWM 波形を生成
関数名: WriteCmpValToReg
C ファイル名: SVPWM.C, SVPWM.H
void WriteCmpValToReg(INT8U WhichMFT, _stOnTimingOfUVW *pstOnTimingOfUVW)
typedef struct
{
INT32S TU;
INT32S TV;
INT32S TW;
}_stOnTimingOfUVW;
表 4
項目
入力
名称
TU
TV
TW
WhichMFT
説明
DC 電源に接続する A 位相の伝達時間
DC 電源に接続する B 位相の伝達時間
DC 電源に接続する C 位相の伝達時間
有効値は MFT0, MFT1
フォーマット
INT32S
INT32S
INT32S
INT8U
このモジュールのコード例を以下に示します。
void example_ WriteCmpValToReg ()
{
pstOnTimingOfUVW .TU=INa;
pstOnTimingOfUVW .TV=INb;
pstOnTimingOfUVW .TW=INc;
WhichMFT=0;
WriteCmpValToReg (WhichMFT,& pstOnTimingOfUVW);
}
– 以上 –
16