システムとモデリング

modelica, Julia, Design Structure Matrix, SysML, 他モデリング全般について。

Juliaで過渡応答解析(by ControlSystems)

今回はJuliaの制御工学系パッケージ"ControlSystems.jl"で遊んでみたいと思います。

GitHub

github.com

Document

juliacontrol.github.io

バネマスダンパ台車系の過渡応答解析

下記Matlab用制御工学の参考書から例題を解いてみます。

制御のためのMATLAB

制御のためのMATLAB

下記のような台車にのったバネマスダンパ系を考えます。 f:id:Otepipi:20190402202823p:plain uは台車の位置の変位で入力です。 yはマスの位置の変位で、出力です。

この系を微分方程で立式すると以下のようになります。

$$ \begin{equation} m\frac{d^{2}y}{dt^{2}} + b\frac{dy}{dt} + ky = b\frac{du}{dt} + ku \end{equation} $$

これをラプラス変換すると以下の式になります。

$$ \begin{equation} (ms^{2} + bs + k)Y(s) = (bs + k)U(s) \end{equation} $$

ここで各定数を $$ m = 10 {\rm kg},\quad
b = 20 {\rm Ns/m}, \quad
k = 100 {\rm N/m} \quad $$ とすると伝達関数は以下のようになる。

$$ \begin{equation} G(s) = \frac{Y(s)}{U(s)} = \frac{20s + 100}{10s^{2} + 20s + 100} = \frac{2s + 10}{s^{2} + 2s + 10} \end{equation} $$

この式の単位ステップ応答を求めてみます。

using ControlSystems

分子 = [2;10]
分母 = [1;2;10]
sys = tf(分子,分母)
print(sys)
stepplot(sys)

出力は以下になります.

2*s + 10
---------------
1s^2 + 2*s + 10

f:id:Otepipi:20190402210139p:plain

Matlabに近い感覚でステップ応答を出力できました。 伝達関数を記述するときの分子[num]と分母[den]について Juliaでは列表現なのに対しMatlabは行表現になるのが大きな違いでしょうか。

今回はここまでにします。