制御工学でのシミュレーションとして、ボード線図を描くときにはMATLABを使うのが一般的ですが、コストがかかるため趣味程度で遊ぶには敷居が高いです
ScilabはMATLABに似た機能を持つソフトで、無料で使用することができるので気安く使えます
今回はScilabでボード線図を描く方法について説明していきます
シンプルなボード線図の描き方
伝達関数\(G(s)\)を以下のようにします
$$G(s) = \frac{1}{s^2 + s + 1}$$
最もシンプルに描く方法は以下の通りになります
1 2 3 4 | s = %s;//変数sの定義 Gs = 1/(s^2 + s + 1);//伝達関数の定義 sys = syslin('c', Gs);//連続時間線形システムへ伝達関数Gsを登録 bode(sys)//ボード線図の描画 |
Gsの部分を変更すれば、各々好きな伝達関数の式で計算できます
出力は以下のようになります
グラフの横軸が[Hz]となっているのが注意点です
横軸をHzからrad/sにする
横軸をHzからrad/sに変更するのはとても簡単です
bode(sys)→bode(sys,"rad")に変更するだけです
分母がsの多項式でない場合
比例要素、微分要素、一次進み要素の伝達関数\(G_{1}(s)~,~G_{2}(s)~,~G_{3}(s)\)はそれぞれ
$$\begin{align*}
G_{1}(s) &= K\\
G_{2}(s) &= s\\
G_{3}(s) &= 1+Ts
\end{align*}$$
であり、分母は1になっています
そのままGsに代入してしまうと、エラーになってしまいます
そのようなときは、分母に\(s^{0}\)を付けて以下のように記述します
1 | Gs = s/s^0; |
横軸(角周波数)の調整
開始周波数や終了周波数、目盛の最小値を設定するためには、以下のコマンドを使用します
1 | bode(線形システムに登録された関数,開始周波数,終了周波数,最少目盛) |
\(10^{-2}\leq f[Hz] \leq 10^{3}\)で、最少目盛を0.1にしたいならば
1 2 3 4 | s = %s; Gs = 1/(s^2 + s + 1); sys = syslin('c', Gs); bode(sys,10^(-2),10^(3),0.1) |
のように記述します
複数のボード線図を重ね合わせて描く
複数のボード線図を1画面に重ね合わせて描く場合は
1 2 3 4 5 6 7 8 | s = %s; Gs1 = s/s^0; Gs2 = s+1/s^0; Gs3 = 1/(s+1); sys1 = syslin('c', Gs1); sys2 = syslin('c', Gs2); sys3 = syslin('c', Gs3); bode([sys1;sys2;sys3]) |
のように記述します
色分けは自動で行ってくれます
まとめ
この記事では、Scilabでのボード線図の描き方について簡単に説明しました
Scilabはネット上に日本語の情報が少ないですが、制御シミュレーションで遊ぶにはこのソフトはおすすめです
ぜひ使ってみてください
むだ時間要素のボード線図の描き方は、こちらの記事をご覧ください
Scilabでむだ時間要素のボード線図を描く方法
続きを見る
Scilabでのベクトル軌跡の描き方についてはこちらの記事をご覧ください
Scilabでベクトル軌跡を描いてみる
続きを見る