技術士(総合技術監理・機械部門)のブログ

技術士がお届けする,技術,工学,技術者倫理などの話題

SCILABによる制御系設計 その17

2017-04-03 20:45:05 | 工学
Scilab 17

前回、
位相進み補償器をやったので、今回は
位相遅れ補償器、位相遅れ進み補償器
というものを取り扱うことを考えましたが、scilabの使い方に関しては同じなので
割愛いたします。

では、今回は「状態空間表現」に基づいた制御系設計に入ります。 <尾形先生の第6章>
制御のためのMATLAB
石川 潤 訳
東京電機大学出版局


まず、可制御性と可観測性です。
1)可制御性
可制御性は、状態空間表現で与えられたシステム
dx/dt = Ax+Bu
に対して(n次)
可制御行列
[B:AB:….:A^n-1B]
のランクを調べることで確認できる。ランクがnであれば可制御である。
2)可観測性
[C:CA:….:CA^n-1]t
がランクnであれば可観測である。
これらをscilabで調べてみよう。

->A=[0 1 0;0 0 1;-6 -11 -6];
-->B=[0;0;1];
-->C=[5 6 1];
-->D=[0];
-->n=contr(A,B)
n =
3.
なので 可観測
-->m=unobs(A,C)
m =
1.
なので、1つの次元が不可観測であることがわかる。

SCILABによる制御系設計 その16

2017-04-01 20:31:50 | 工学
Scilab 16

制御システムの設計として、
位相進み補償器、位相遅れ補償器、位相遅れ進み補償器
というものがあります。これらはボード線図によって設計していきます。

1) 位相進み補償
制御対象をG1とし
->s=poly(0,'s');
-->g=10/(s*(s+1));
-->G1=syslin('c',g);
-->bode(G1);


ということで、制御対象に対して、「位相余裕を50度になる位相進み補償をすること」という要求があったとすると、現状余裕が12.7度なので あと37,3度進ませることが必要であることがまずわかります。
ここから省略しますが、以下の位相進み補償器Gcが必要となります。
-->gc=2*(0.3357*s+1)/(0.0705*s+1);

-->Gc=syslin('c',gc);

-->bode(Gc);


そして、それらの閉ループ伝達関数は
->gl=g*gc/(g*gc+1)
gl =

283.68794 + 95.234043s
--------------------------------------
         2  3
283.68794 + 109.41844s + 15.184397s + s
->t=0:0.01:10;
-->y=csim('step',t,G);
-->plot2d(t,y);
一方補償器を入れる前の伝達関数は、
-->go=g/(g+1);
-->Go=syslin('c',go);
-->y1=csim('step',t,Go);
-->plot2d(t,y);
-->plot2d(t,y1);
となり、ステップ応答をみても改善されているのが確認できる。