Control: Plant Output
Model ElementControl_PlantOutput要素は、機構システムまたはプラントからの出力を定義します。
説明
これは、線形化されたプラントモデルの作成や、連成シミュレーションに必要となる情報の一部です。Control_PlantInput要素を使用して、プラントへの入力を指定することも必要です。入力と出力が与えられると、LinearタイプのSimulateコマンドを使用して、次の線形化された状態空間形式でマトリクスを計算できます。
x は状態ベクトル、uは入力変数、yは出力変数です。A、B、C、およびDは、それぞれ状態マトリクス、入力マトリクス、出力マトリクス、および直接フィードスルーマトリクスです。これらのマトリクスは多くの場合、制御システム設計の開始点として役に立ちます。
フォーマット
<Control_PlantOutput
id = "integer"
num_element = "integer"
variable_id_list = "integer, integer, ..., integer"
[
type = "USERSUB"
usrsub_dll_name = "valid_path_name"
usrsub_fnc_name = "custom_fnc_name"
usrsub_param_string = "USER(par_1, ..., par_n)"
]
[[
label = "string"
hold_order = "integer"
sampling_period = "real"
offset_time = "real"
]]
/>
属性
- id
- 要素識別番号(整数 > 0)。この番号は、すべてのControl_PlantOutput要素の中で一意です。
- label
- 要素のオプションラベル。これは、Control_PlantOutput要素の名前であってもかまいません。
- num_element
- このControl_PlantOutput要素を使用して指定されるプラントからの出力の数。
num_element > 0
- hold_order
- Control_PlantInputから伝搬する制御信号に適用される外挿の次数を指定します。1つ目の時間ステップについては、外挿する履歴がないため、値は一定(次数0)に保たれます。
デフォルト値は1.0です。
- variable_id_list
- プラントからの出力を定義する変数のIDのリストを指定します。このリストの長さは、num_elementの値と等しくなります。
- sampling_period
- 出力ポートのサンプル時間を指定します。0.0の値は連続サンプリングを指定し、ゼロ以外の値は、離散サンプリングを指定します。負の値にはできません。デフォルト値は0.0です。ほとんどの場合、この値をデフォルト値から変更する必要はありませんが、離散サンプリングが必要なモデルの場合は除きます。このパラメータが使用されるのは、MATLAB/Simulinkを使用した連成シミュレーションの場合のみです。 3
- offset_time
- 各出力ポートのサンプル時間オフセットを指定します。サンプル時間オフセットは、sampling_periodより確実に小さい必要があります(後者がゼロでない場合)。sampling_periodが0.0(連続)の場合は、offset_timeもデフォルトで0.0になります。ほとんどの場合は、この値をデフォルト値から変更する必要はありませんが、離散サンプリングが必要なモデルの場合は除きます。このパラメータが使用されるのは、MATLAB/Simulinkを使用した連成シミュレーションの場合のみです。
- usrsub_dll_name
- ユーザーサブルーチンを含むDLLまたは共有ライブラリのパスと名前を指定します。MotionSolveはこの情報を使用して、実行時にDLL内のユーザーサブルーチンを読み込みます。このキーワードは、type = USERSUBの場合にのみ使用します。
- usrsub_fnc_name
- このパラメータにより、ユーザーサブルーチンの名前を指定できます。この属性が指定されない場合は、デフォルト名POUTSUBが使用されます。このキーワードは、type = USERSUBの場合にのみ使用します。
- usrsub_param_string
- データファイルからユーザー定義のPOUTSUBに渡されるパラメータのリスト。このキーワードは、type = USERSUBの場合にのみ使用します。このパラメータは、“USER(parameter 1, par 2,…, par n)”のように設定します(各パラメータはユーザーが選択します)。
例

図 1. 倒立振り子モデル
- プラント入力:全体座標系のX軸に沿ってスライダーに作用する制御力Fc。
- プラント出力:振り子角度θ。
プラント出力は次のように定義できます:
<Control_PlantOutput
id = "303001"
num_element = "1"
variable_id_list = "12"
hold_order = "1"
/>
Reference_Variable 12によって振り子角度θが定義されます。
コメント
- Control_PlantOutput要素を使用して指定された出力には、POUVAL関数を使用してアクセスします。この関数は、MotionSolveの式から直接呼び出して、SYSFNC()とSYSARY()を使用してユーザーサブルーチン内で使用できます。
- Control_PlantOutputとControl_PlantInputは、連成シミュレーションで使用されます。これは、問題が2つのソルバーに分かれるシナリオです。これら2つのソルバーは連携して問題を解析し、必要な情報をControl_PlantOutputおよびControl_PlantInputオブジェクトを使用して交換します。一般的なシナリオは、機構システムの制御です。制御システムは制御ソフトウェアでモデル化され、機構システムはMotionSolveでモデル化されます。機構システムは現在実行している内容をコントローラーに通知し、コントローラーはこの情報に基づいて適用する制御力を決定します。この情報は継続的に、または離散サンプリングステップで交換されます。Control_PlantInputは、コントローラーからモデルに入力される内容をMotionSolveに通知します。Control_PlantOutputは、コントローラーに送信する情報をMotionSolveに通知します。ユーザーサブルーチンのオプションは、連成シミュレーションで使用されます。連成シミュレーションの詳細については、MotionSolveと他のソフトウェアとの連携をご参照ください。
- Simulink内の離散(のみの)システムでは、sampling_periodが離散時間(ゼロ以外など。ゼロは連続サンプリングです)に設定される必要があります。このように設定しないと、シミュレーションは実行されず、エラーが発生します。
- Simulink主導のモデルから行う連成シミュレーションの場合は、ユーザーにとって都合がいい数のControl_PlantOutputを作成してください。MotionSolveモデルを表すS-Functionによって適宜更新が行われます。MV-7002:Simulinkとの連成シミュレーションをご参照ください。
- Simulink Coderライブラリを使用した連成シミュレーションの場合は、適切なインターフェースコミュニケーションをセットアップするために、Simulinkモデル内のInportと同数のControl_PlantOutputを作成してください。(例えば、各InportにControl_PlantOutputを1つずつ。Simulinkモデルの入力はMotionSolve(プラント)モデルへの出力になります。)MV-7005: Matlab/Simulink生成のコード(Simulink Coder)とMotionSolveのリンクに例を示します。
- MotionSolveモデル(.xml)内に見つかるControl_PlantOutputの順序(行番号順、上から下)は、変数が正しい順序で交換されるよう、Simulinkモデル内のOutportのIDの順序に一致していなければなりません。Simulink主導の連成シミュレーションの場合は、S-Functionへの入力順序についても同じことが当てはまります。
- 1つのSimulink Coderライブラリ連成シミュレーションについて、使用されているSimulink Coderライブラリを一意に認識する1つの整数を持つようにusrsub_param_stringを設定します。この番号(id)は、このSimulink Coderライブラリに使用されているすべてのControl_PlantInputおよびControl_PlantOutputについて同じでなければなりません。