scilabで遊ぼう (8) [プログラム三昧]
いよいよ、PI制御を作成します。
scilabで、P優先型PI制御を作る
ここで作成するのは、トランジスタ技術、2008年7月号と9月号に掲載されていた「dsPICで作るDC-DCコンバータのソフトウェア」という記事からの完全な焼き直しです。 100Hzを境に低周波側で積分特性、高周波側で比例特性をもつフィルタを作ります。 サンプリング周期は、50µ秒(20kHz)です。
-->Ts=50d-6; -->A=3.87; -->Fc=100;
まず、各種定数を定義しておきます。 ここで定義するのは、サンプリング周期(Ts)、比例制御ゲイン(A)、P/I制御の交点周波数(Fc)の三つです。
-->z=poly(0,'z'); -->p_factor=syslin(Ts,A/(1+z*0)) p_factor = 3.87 ---- 1
"p_factor"は、比例制御部分の伝達関数です。 第二引数は、本来は定数なのですが、"z"の関数しか受け付けられないので、"z*0"というおまじないを入れてあります。
-->i_factor=syslin(Ts,2*%pi*Fc*Ts*(z/(z-1))) i_factor = 0.0314159z ---------- - 1 + z
"i_factor"は、積分制御部分の伝達関数です。 記事の「実用的なディジタル積分器」をそのまま使っています。
-->PI=p_factor*(1+i_factor) PI = - 3.87 + 3.9915796z ----------------- - 1 + z
"p_factor"と"i_factor"を記事の「ブロック図」を参考にしてPI制御を構成します。 これで、完成です。
PI制御の周波数特性を確認する
出来上がったPI制御の周波数特性をボード線図で確認します。
-->scf(1);clf;bode(p_factor,1,1e4);
最初は、比例制御部分単体の特性です。 あたりまえですが、平坦な周波数特性になっています。
-->scf(1);clf;bode(i_factor,1,1e4);
二つ目は、積分制御部分単体の特性です。 ゲインが直線的に落ちていくのがわかります。 100Hzの時のゲインがちょうど0dBになっています。
-->scf(1);clf;bode(PI,1,1e4);
最後は、PI制御全体の特性です。 100Hz付近を境に積分制御と比例制御が切り替わっているのがわかります。
部品がそろったので、次回はフィードバック・ループを組み、ループ・ゲインを確認します。
付録 : 「scilab で遊ぼう」索引
- scilabで遊ぼう (1)
- scilabで遊ぼう (2)
- scilabで遊ぼう (3)
- scilabで遊ぼう (4)
- scilabで遊ぼう (5)
- scilabで遊ぼう (6)
- scilabで遊ぼう (7)
- scilabで遊ぼう (8)
- scilabで遊ぼう (9)
- scilabで遊ぼう (10)
- scilabで遊ぼう (11)
- scilabで遊ぼう (12)
- scilabで遊ぼう (13)
参考文献
トランジスタ技術 (Transistor Gijutsu) 2008年 07月号 [雑誌]
- 作者:
- 出版社/メーカー: CQ出版
- 発売日: 2008/06/10
- メディア: 雑誌
トランジスタ技術 (Transistor Gijutsu) 2008年 09月号 [雑誌]
- 作者:
- 出版社/メーカー: CQ出版
- 発売日: 2008/08/09
- メディア: 雑誌
コメント 0