FAQ
PE-Expertシリーズ
Q. コンパイルをすると
「cp: c:/ti/c6000/bios/include/csl_timer: No such file or directory make: ***[patch]Error 1」
というエラーがでます。
A. コンパイラのパスの設定を行ってください。コンパイラのパス設定はWindowsの「スタート」→「プログラム」→「PE-View9」→「Environ Configure for EXP3C6713」で行います。
Q. 同じ種類のボードを同時に複数枚使用することはできますか?
A. Expert3の拡張ボードは、ひとつのExpert3システムで同じ種類のボードを同時に最大4枚まで利用することが可能です。
ディップスイッチによるボード番号の設定が必要です。詳細は各ボードのマニュアルを参照ください。
ただし、DSPボード(MWPE3-C6713またはMWPE3-C6713A)は複数枚同時に利用することはできません。
Q. スイッチング周波数について教えて下さい
A. スイッチング周波数(キャリア周波数)はスイッチングデバイスが1秒間にON/OFFを繰り返す回数のことです
Q. サンプリング周波数について教えて下さい
A. デジタル制御で、実際に1秒間の計算時間のことを指します。当社では、これを割り込みによって実現しています。従って、この場合は割り込み周波数という意味にもなります。また、三角波変調の場合は、サンプリング周波数=キャリア周波数が一般的です。一方、ベクトル変調の場合は、サンプリング周波数=2×キャリア周波数が一般的です。 (注) 計算時間が足りないなどの場合は、2回の割り込みで1回の計算を実現することもしばしばあります。そういった場合は、例えばプログラム上ではサンプリング周波数を20kHzと定義しても実質のサンプリング周波数は10kHzとなります。
Q. 三角波変調とベクトル変調について教えて下さい
A. 三角波変調は三角波(キャリア)と指令値との比較でPWM変調をする方式で、空間ベクトル変調はベクトル指令値から直接PWM信号を出力させる方式です。一般に、複雑な制御では3相の量をベクトルとして捉え、演算された指令値ベクトルをそのままPWM信号に出せば理想的です。当社では、この機能をハードウェアで実現しているので、大変便利です。
Q. 三角波変調でキャリア周波数を上げずに計算精度を上げることはできますか?
A. 三角波変調でキャリア周波数を変えずに、割り込み周波数を倍にすることで実現しています。
Q. 空間ベクトル変調で計算時間が足りないのでサンプリング周波数を半分にするにはどうすればよいか教えて下さい
A. 当社では、この機能を割り込み周波数を半分にする(inv2_start_inthalf()関数)ことで実現しています。
Q. 割り込み間隔はどのくらいですか?
A. 実行中の割り込みが禁止されるwait()関数を使用しなければ、ハード的には1μs以内です。
Q. 割り込みがかかってからユーザプログラムが起動するまで何μsかかりますか?
A. 割り込みがかかってからレジスタの退避を行うため、通常2μs程度かかります。
Q. 割り込みに関係する処理がすべて完了するまで何μsかかりますか?
A. 割り込み処理自体は、割り込みに入る時と出るときの合計3~4μs程度です。この時間はリンクファイルの設定によって大きく変化します。.textのエリア、.stackのエリアが0x91000からのエリアに割り当てられていると割り込みが発生してからユーザが記述したプログラム部分に入るまで約2μsかかります。また、割り込みルーチンから出るときも約2μsかかります。.textが0x91000からのエリア、.stackが0x87fe00 .. 0x87ffffまでのエリアに割り当てられていれば約半分の時間に短縮できます。
Q. PE-ExpertIIのシステムにて、「watch_data()」関数を使用しても波形表示ができなくなる場合の対処方法について教えて下さい。
A. PE-ExpertIIの起動手順に注意して下さい。起動の際は、下記手順を遵守して下さい。
(手順)
1. コンピュータに電源を投入して起動して下さい。
2. PE-ExpertIIシステムの電源をONして下さい。
3. 開発環境PE-Viewを起動して下さい。
Q. PWMキャリア同期割込みにて、関数の演算時間を計測する方法について教えて下さい
A. 時間計測には、タイマの値を読み込む「timer0_read()」および「timer1_read()」関数を使用します。
(1) プログラムの記述例
(例) PWMのキャリア同期割込み関数をinv_init()とした場合
int t,t0,t1; /* 3つのグローバル変数を宣言 */
inv_init(...)
{
t0=timer1_read();
…
(計測関数部分)
…
t1=timer1_read();
t=t1-t0;
}
(2)次にプログラムを実行し、統合開発環境PE-ViewのInspectorツールで変数「t」の値を読み取って下さい。
(3)変数「t」はタイマの値を時間に換算するのではなく、そのまま読み込まれます。得られた値をもとに計測時間を計算して下さい。
(計算式)
得られる値(t)=カウンタがリセットされてからの時間/(システムクロックサイクル×4)
※読み込まれる値は内臓カウンタそのものですので、このカウント値はシステムクロックに依存します。
Q. ライブラリ関数「①int_ev0_pio_in()」、「②pev0_pio_clr_bit()」、「③pev0_pio_set_bit()」関数はリエントラント(再入可能)ですか?
A. ①、②、③のこれらの関数はすべてリエントラント可能です。
※リエントラント:複数のプログラムルーチンから同時かつ非同期に呼び出されることが可能なルーチンのこと。
①:ハードのI/Oポートを読み出しているだけなので、問題ありません。
②、③:リードモディファイライトを使用せず、ハード的なビットセットポートを利用しているため、問題ありません。
Q. PIOSボード(MWPE3-PIOS)のマニュアルにはABZカウンタの応答速度500[kpps]との記載がありますが、これはどのような意味でしょうか?
A. AB相の入力信号が500[kpps](pulse-per-second)まで対応できる、という意味です。
ABZカウンタは4逓倍方式でカウントされますので、カウンタとしては2000[kcps](count-per-second)まで対応することができます。
Q. PEボード(MWPE3-PEV)の2系統の3相PWM信号のそれぞれのキャリアを同期させることはできますか。
A. 2系統の3相PWM生成機能のキャリア位相を同期することはできません。
inverter0とinverter1を同じキャリア周波数に設定した場合、2つのキャリア信号の位相差は同じ値を維持します。(完全に同じキャリア周波数に設定されます)
なお複数のMWPE3-PEVを利用する場合、異なるボードの3相PWM機能に同じキャリア周波数を設定しても完全に同じ周波数とはなりません。
Q. 高速ADボード(MWPE3-ADC)の分解能14bitはどの入力電圧範囲に対しての分解能ですか。
A. ±5Vの入力電圧に対して14bitの分解能を持っている仕様です。
マニュアルにある定格入力範囲の±4.5Vは公開仕様を満たす入力範囲ですのでこちらとは違うことをご了承ください。
Q. 多機能FPGAボード(MWPE3-FPGAA)を使用する際、コンフィギュレーションレートはいくつに設定すればよいですか。
A. コンフィギュレーションレートは25MHzを推奨しています。
特別な理由がない場合は25MHzに設定してご使用ください。
Q. PEボード(MWPE3-PEV)やPIOSボード(MWPE3-PIOS)に搭載されているフォトカプラ絶縁のディジタル入力を使うための接続方法を教えてください。
A. 一例を下図に示します。

COM+端子に5Vの電圧源を接続し、使用したいDIxの端子をGNDに接続するスイッチなどに接続してください。
スイッチがOFFのときは論理値0が、ONのときは論理値1が入力されます。
高速ディジタル入力についても同様の接続です。(電圧源の必要電圧や電圧源の必要電流の値は変わります。)
Q. PEボード(MWPE3-PEV)で使用するゲートコントロール関数pev_inverter_control_gate()の使い方を教えてください。
A. 本関数はMWPE3-PEVの3相PWM機能の6本のゲート信号に対して、それぞれ別の動きをさせたいときに使います。
本関数の使い方を例を用いて解説します。
例1. 3相PWM機能ch0のゲート信号にU相に正論理PWM、V相に負論理PWM、そしてW相はWPが常時ON、WNが常時OFFという動きをさせたいとき
サンプルプログラム「test_pev_inverter01_uvw.c」の「pev_inverter_set_uvw( BDN, CH0, 0.0, 0.0, 0.0 );」という記述の直前に「pev_inverter_control_gate(BDN, CH0, 0xE50);」という記述を入れます。
例2. 三相PWM機能ch1のゲート信号にU相は上下とも常時ON、V相に正論理PWM、
そしてW相は負論理PWMという動きをさせたいとき
サンプルプログラム「test_pev_inverter01_uvw.c」の「pev_inverter_set_uvw(
BDN, CH1, 0.0, 0.0, 0.0 );」という記述の直前に「pev_inverter_control_gate(BDN, CH1, 0x50A);」という記述を入れます。
MWPE3-PEVのボード上のDSW1の4bitをOFFにします。
※「上下アーム短絡防止回路」が無効になりますので設定する際は十分にご注意ください。
例3. 3相PWM機能ch0のキャリアに同期して3相PWM機能ch0の全ゲート信号がONOFFを繰り返すという動きをさせたいとき
サンプルプログラム「test_pev_inverter01_uvw.c」の「pev_inverter_set_uvw( BDN, CH0, 0.0, 0.0, 0.0 );」という記述の直前に「pev_inverter_control_gate(BDN, CH0, 0xBEB);」という記述を入れます。
キャリア割り込み関数「carrier_int()」の中に「pev_inverter_control_gate(BDN, CH0, 0xEBE);」と「pev_inverter_control_gate(BDN, CH0, 0xBEB);」を各割り込み発生ごとに繰り返す記述を書きます。
Q. PID関数の使い方を教えてください。
A. 「PIDパラメータを格納する構造体の宣言」、「その構造体をPID関数に適用して初期化」、「計算実行」の3つの手順が必要です。
◎「PIDパラメータを格納する構造体の宣言」
mwPID pid1;
本関数用のPIDパラメータ格納用構造体mwPID型としてpid1という構造体を宣言しています。
◎「その構造体をPID関数に適用して初期化」
kp = 0.0; (比例ゲイン)
ki = 1.0; (積分ゲイン)
kd = 0.0; (微分ゲイン)
T = 0.0; (入力ローパスフィルタの時定数)
Ts = 10-6; (計算を実行する周期)
x0 = 0; (入力の初期値)
y0 = 0; (出力の初期値)
mwPIDinit(&pid1,kp,ki,kd,T,Ts,x0,y0);
PID関数の各パラメータ(各ゲイン、計算周期など)をpid1に格納し、PID関数を初期化しています。(上記の例は積分計算のみの場合です。)
◎「計算実行」
y1 = mwPIDcal(&pid1,x1);
x1という入力値に対してpid1に格納したPIDパラメータでPID計算を行い、その結果をy1という変数に出力しています。
上記の演算を一定周期で繰り返し実行してください。(正しい計算を行うために本関数の実行周期と構造体内のメンバーTsの値は同じにしてください。)

