ブロックを積みながら(182) Scilab/Xcos、Maximaから伝達関数「輸入」

Joseph Halfmoon

別シリーズ「忘却の微分方程式第176回」にて、ラプラス変換関数を使って伝達関数を求めてみました。Maxima様にお願してメンドクセー「伝達関数」が得られるとなれば、ブロック線図を描くのはお茶の子サイサイ? あとはScilab/Xcos側に伝達関数を輸入すれば時間領域でのシミュレーションができるハズ。サンプルを実地検証。

※「ブロックを積みながら」投稿順 index はこちら

※動作確認にはWindows 11の パソコン(64bit)上にインストールしたScilabの以下バージョンを使用しています。

    Scilab 2024.0.0

別シリーズの「例題」

みんな大好き Maxima は「フリーの数式処理」ソフトウエアの代表選手です。微分、積分、三角関数、代数方程式でも微分方程式でも「数式のまま(具体的な数値になってなくても)」解くことが可能。数学力のない忘却力の年寄りには必携のツールであります。別シリーズでは使い方をいろいろ修練。

今回は、そのMaxima様で微分方程式からラプラス変換して伝達関数に変換した結果を、Scilab / Xcos (Scicos) 上で受け止めて時間領域でシミュレーションをしたいと思います。

まずは別シリーズの例題を再掲。

上記のアリガチな力学系(適当な定数を選んでやれば減衰振動するハズ)の微分方程式から、以下のようなブロックダイアグラムに書き込まれている伝達関数をもとめてます。BlockDiag0

Scilab / Xcos上でのフロー

上記のようにブロックダイアグラムに書き込める伝達関数が求まっているのであれば、Xcosのフローは簡単。こんな感じ。TF0_flow

外部からの入力として力Fの波形をScilab上の変数として与えてみます。こんな感じ。TF0_input_waveform

 

とりあえず時間は 秒 、力は N ということにしておきます。

一方、伝達関数の中に現れる、質量、ダンパ定数、バネ定数などはコンテキスト設定で与えておきます。こんな感じ。TF0_context

最後にシミュレーションのパラメータ設定が以下に。TF0_parameters

今回は、減衰振動を味わいたかったので30秒分です。

シミュレーション結果

Scilab / Xcos によるシミュレーション結果が以下に。上の「黒」グラフが入力である力F、下の「緑」グラフが出力である位置 X です。横軸は時間[秒」ね。TF0_results

メンドイところはMaximaとScilab/Xcosにおまかせ。何も頭を使ってね~。

ブロックを積みながら(181) Scilab/Xcos、摩擦力計算をSuper Block化 へ戻る

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です