別記事にてLTspiceで制御理論の回あり、まだ途中ですがLTspiceでも制御理論の勉強できるのは分かりましたです。でも制御理論「向き」のツールあるんじゃないかと。。。今回は、これまた別件の信号処理でお世話になっているScilabとその上のブロックダイアグラム描いてシミュレーションできるXcosで同じことをやってみます。
※「やっつけな日常」投稿順 indexはこちら
別記事にて参照させているアナデバ、Simon Bramble 様の解説記事は以下です。普通はブロックダイアグラム・ベースで説明されることが多い制御理論をLTspiceで解説しようという「意欲」作です。
皆大好きLTspiceだけれども、ちょっと手を広げすぎという感じがしないでもないです(個人の感想です。)
今回は上の記事で例題になっているRLC回路を、ブロックダイアグラム・ベースのシミュレーションツール、ScilabのXcosで、伝達関数を定義するブロック1個使ってシミュレーションをかけてみたいと思います。
伝達関数そのままのブロックダイアグラム
当然、もっと「小分け」のブロックでシステムを表現してシミュレーションかけることはできるのですが、記事にて伝達関数はアカラサマになっているので、それをそのまま利用させていただきました。何も考えないで済むのでお楽。
伝達関数を表すブロックが2個並んでいますが、それぞれ箱の下のRLCの定数のケースに対応しています。
またアナデバ様の記事では「インパルス」的な一発パルスで駆動しているのですが、こちらではステップ関数で置き換えてしまってます。このため0に収束ではなく、ステップの高さに収束です。
コンテキスト設定、係数などの事前準備
実際のRLCの値などは、XCOSのシミュレーション・メニューの中のコンテキスト設定というところで値を定義しています。こんな感じ。
ここで設定した値は、シミュレーションの冒頭で一回だけ評価されて、以降参照できる、ということでした。OmegaNは、非減衰振動数(減衰係数を考えないときの固有振動数 rad/s です。Zeta1、Zeta2は、2つの回路(Rのみ異なる)の減衰係数です。伝達関数を評価するときに無駄な計算を繰り返さないように、分母、分子にあらわれる定数をA, B1, B2としてここで計算してしまっています。
伝達関数の設定
伝達関数ブロック(連続時間)は、以下のように s を使って記述できます。continuous SISO transfer のSISOは、単入力単出力ということで良いみたいです。本当か?
コンテキスト設定で係数準備してあったので、伝達関数はシンプルよな。
シミュレーションの設定
シミュレーションの設定はほとんどデフォルト値のままですが、「積分終了時間」のところ(シミュレーションの終了時間と同義だという理解)だけ変更してあります。100μsのつもり。
入力波形
入力のステップ波形、0[V]から始まって10ns後に1[V]にステップして以後ずっと1のつもり。
スコープ用のクロック設定
グラフを描くためにスコープに「サンプリング・クロック」的なものを与えないとなりません。10nsとしてみました。あまり細かいと計算大変そうだし、荒いと綺麗な曲線にならないし、ということでテキトーです。初期化時間はとりあえず0です。この辺、どう効いてくるのかまだ良く分かってないです。やっつけでご乱心。
CMSCOPEの設定
CMSCOPEは1個のスコープブロックに複数個のトレースを並べて表示できるものです。設定はこんな感じでどうよ。
シミュレーション結果
ここまでの設定でシミュレーションをした結果を、冒頭のアイキャッチ画像に掲げました。一方、LTspiceで計算した結果は、こちら に(LTspiceの青トレースが、アイキャッチ画像の黒トレース、LTspiceの赤トレースがアイキャッチ画像の緑トレースに対応です。)
まあ、雰囲気は出ているんでないかい。いい加減でやっつけだな。