この記事でターボジェットエンジンの過渡モデルにフィードバック制御機能を実装した。このとき、コンプレッサの機械回転数を制御対象に設定したが、本当は「修正回転数」というvariableを制御対象にしたい。さらに、修正回転数そのものではなく、修正回転数の定格点修正回転数に対する割合「修正回転数比」を制御対象にしたい。
複数のセンサと関数コンポーネントを使えば取得できる。しかし、修正回転数比のvariableはコンプレッサの内部変数として存在しているのだから、接続線1本で値を制御システムに渡してスッキリしたモデルスケマティックを作りたい。
ここで"expandable connector"の出番である。Propulsion System Library製作初期からすべてのコンポーネントに付けている、PCのモニタ出力プラグのようなものがそれである(Fig.1中の赤矢印)。
*「修正回転数って何?」についての解説はこの記事では割愛します。Modelicaメインのブログですので。
TurboJet001_012_02
Fig.1 
Expandable connectorを使うとrealInput, RealOutputを使うことなく、コンポーネント内のvariableを他コンポーネントにconnectすることができる。また、物理portと異なり、渡すvariablesを事前に定義しておく必要もなく必要に応じて柔軟に使える。
TurboJet001_012_03
Fig.2
使い方は以下の通り。かなり簡単。
1. Diagram Viewで、Fig.2のようにexpandable connectorとつなぎたいport/別のExpandable connectorを線でつなぐ。
2. Fig.3に示すexpandable connectorを通してどの変数を接続するかを指定するウィンドウが現れるので、New Variablesを選択し、繋ぐ対象の変数の名を書き込む。expandable connector同士を繋ぐ場合は、connectorの指定だけし、両connectorとも何も変数を指定せずに"OK"を選択する。
3. ユーザインターフェース上の操作だけでは不完全なので、Fig.4実線部のコードを手で書く。
 青線:コンポーネントで、内部variableとexpandable connectorを接続する記述。
 赤線:なぜこれを書き足さなければならないのか解せない。expandable connectorが、コンポーネント"Cmp020"のものであることを示す記述。
TurboJet001_012_04
Fig.3 

TurboJet001_012_06
Fig.4 
で、計算実行して動作確認を取る。ただし、制御目標値・対象variableの値のオーダーが、機械回転数制御の時と大きく異なるので、ゲインを適当に変更している。
TurboJet001_012_01
Fig.5 
意図したとおり、オーバシュート・振動を伴う減衰をしながら目標値に静定してゆく動きを確認できる。制御対処が異なるだけなので、詳しい解説は本記事では行わない、

ソースコードはこれまで通りGPL3で保護してGitHubに公開しているので、ソースを観たい人はどうぞ。
GitHubへのリンク
 ライブラリ:PropulsionSystem
 パッケージ:Example -> Engines
 モデル:TurboJet001_012

正直、expandable connectorの概念や機能の理解は不完全だ。使い方だけ掴んで、無事に意図通り動作させられた、という状態。
この状態は好ましいものではない。本当に使いこなせるようになるために、改めて文献の当該章を読み込んで理解・消化しなければな。

以上、ここまで。

<文献紹介>

---------------
[ブログ内リンク]
●ブログトップへ:
http://virtuallabmodelica.blog.jp/

[z_plusplusの他のブログへのリンク]
●地球の重力の井戸の底から:
http://zplusplus-anti-gravity.blog.jp/
a481420c
本ブログと異なり,テーマを絞らずに理工系に繋がる趣味記事をちょくちょく書いているブログです。どうぞお立寄り下さい。   




ブログ移転の案内

この記事 でお知らせしたとおり、本ブログはブログサービス下での運営を止め、個人サーバー上のwebページに引越しします。livedoorブログが存続している限り本ブログは閉鎖せず残り続けますが、 この記事 以降の記事は総て こちらの新ブログ にて公開してゆきますので、これからもよろしくお願いします。

文献紹介

Modelica, Model-based degign

Modelicaによるシステムシミュレーション入門

入門者に最適の書。Modelicaって何?という導入から、簡単なコードベースやGUIベースの例モデルまで解説。筆者も入門時に手に取った。訳に少し癖が有る印象だが、英語書物がハードルになる方には確かな助けになる筈。


[amazon、紙面・電子]
[楽天、紙面書籍版] [AU payマーケット、紙面書籍版]
[honto、電子版] [楽天、電子書籍版] [AU payマーケット、電子書籍版] [7ネットショッピング、電子書籍版]

Introduction to Modeling and Simulation of Technical and Physical Systems with Modelica

「Modelicaによるシステムシミュレーション入門」の英語版原書。英語に抵抗がなければこちらを入手したら良いと思う。


[amazon、電子版・紙面版]
[Yahoo、紙面書籍版]

Principles of Object-Oriented Modeling and Simulation with Modelica 3.3 A Cyber-Physical Approach (Wiley-IEEE Press)

本格的にModelicaを使い込むなら必携の書。辞書的に適宜調べものをするような形で手元に有ると頼もしい武器。量が多いので電子版もお勧め。筆者もKindle版を所有し、かなりの頻度で参照している。


[amazon、電子版・紙面版]
[楽天、電子書籍版]

はじめてのModelicaプログラミング -1日で読める わかる Modelica入門-


[amazon、紙面版]

Modelicaによるモデルベースシステム開発入門-ModelicaとFMIの活用による実践的モデルベース開発-


[amazon、電子版・紙面版]

Introduction to Physical Modeling With Modelica


[amazon、紙面版] [楽天、紙面書籍版]

Development of Modelica Library for Dynamics Simulation of CHP Plant: Modelica library structure design and modeling for transient simulation of Combined Heat and Power (CHP) plant


[amazon、紙面版]

Python

入門 Python 3


[amazon、紙面版]

かんたん Python


[honto、電子版]

スッキリわかるPython入門 (スッキリシリーズ)


[amazon、電子版・紙面版]

ゲームを作りながら楽しく学べるPythonプログラミング


[amazon, 紙面版・電子版] [honto、電子版]

流体力学(Fluid Mechanics)

Fundamentals of Fluid Mechanics


[amazon、紙面版] [Yahoo、紙面書籍版]

[amazon、紙面版]

[Yahoo、紙面書籍版]


熱力学(Thermodynamics), 熱機関(Engine, power system)

Fundamentals of Engineering Thermodynamics


[amazon, 紙面版]

Fundamentals of Jet Propulsion with Applications


[amazon、電子版・紙面版]
[amazon、紙面版]


航空力学/飛行力学(Aerodynamics/Flight Dynamics)

航空機の飛行力学と制御


[amazon, 紙面版]

Flight Stability and Automatic Control


[amazon, 紙面版]


------------------------------