Scilab Transfer Function

「フィードバック制御入門」なる本がO’Reillyから先月発売されました。最初「O’Reillyがフィードバック制御?」とちょっと違和感を感じましたが、頭に「エンジニアのための」とついていることが、肝です。ソフトウエアエンジニアのために書かれた制御入門なのですが、これから重要になってくるということなのでしょう。まさにこのブログを始めたのも、このあたりを感じていたからなので、このタイムリーな出版に本当に驚きました。昔組み込みの仕事で使っていたMatlabが、最近使いだしたRによってもう一度使ってみたくなっていたのも、自然なことだったのかもしれません。

今回は、そのMatlabの代わりに使えるScilabを使ってみました。書籍は随分前に買ったことがありますが、アプリを使うのは初めてです。

参考:MATLABの代わりに使えるソフトウェアまとめ
http://matome.naver.jp/odai/2136163231573327601

ここにその他も代わりに使えるソフトの情報があります。

まず最初は、一次おくれ伝達関数に対して、ステップ応答、インパルス応答、サイン波の応答をプロットしてみました。

s=poly(0, 's');
S1=syslin('c', 1/(s+1))
t=0:0.01:10;
y=csim('step', t, S1);
plot(t, y, 'r')
y=csim('step', t, S1*S1);
plot(t, y, 'g')
y=csim('step', t, S1*S1*S1);
plot(t, y, 'b')
y=csim('step', t, S1/.S1);
plot(t, y, 'c')

Sci01

y=csim('impulse',t,S1);
plot(t, y, 'r')
y=csim('impulse',t,S1*S1);
plot(t, y, 'g')
y=csim('impulse',t,S1*S1*S1);
plot(t, y, 'b')
y=csim('impulse',t,S1*S1*S1+S1*S1*S1);
plot(t ,y, 'c')

Sci02

u=sin(t); 
y=csim(u, t, S1);
plot(t, u, 'r') 
plot(t, y, 'g')
y=csim(u,t,S1*S1);
plot(t, y, 'b')

Sci03

S1*S1は直列接続、S1+S1は並列接続、S1/.S1はフィードバック接続をあらわします。
参考:http://alk.fam.cx/block_010.html

About

Categories: 未分類 タグ: