Control: Plant Output

Model ElementControl_PlantOutput要素は、機構システムまたはプラントからの出力を定義します。

説明

これは、線形化されたプラントモデルの作成や、連成シミュレーションに必要となる情報の一部です。Control_PlantInput要素を使用して、プラントへの入力を指定することも必要です。入力と出力が与えられると、LinearタイプのSimulateコマンドを使用して、次の線形化された状態空間形式でマトリクスを計算できます。

x ˙ ( t ) = A   x ( t ) + B   u ( t ) y ( t ) = C   x ( t ) + D   u ( t )

x は状態ベクトル、uは入力変数、yは出力変数です。ABC、および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)”のように設定します(各パラメータはユーザーが選択します)。

スライダーに取り付けられた倒立振り子の安定化という制御問題について考えてみましょう。次の図は、その構成の一例を示しています。スライダー(緑のブロック)は、グラウンド(赤い細片)に対する並進ジョイントによって全体座標系のx軸に沿って動くように拘束されています。振り子はヒンジでスライダーに取り付けられており、回転軸は全体座標系のy軸に平行です。スライダーのモーションは、線形スプリングダンパによって制止されます。


図 1. 倒立振り子モデル
ここでの目的は、上図の不安定なコンフィギュレーションを安定化するためのコントローラーを設計することとします。まず、MATLABを使用してコントローラーを設計するために、状態空間形式の運動方程式を計算します。次の条件が与えられています:
  • プラント入力:全体座標系のX軸に沿ってスライダーに作用する制御力Fc
  • プラント出力:振り子角度θ。

プラント出力は次のように定義できます:

<Control_PlantOutput
     id               = "303001"
     num_element      = "1"
     variable_id_list = "12"
     hold_order       = "1"
 />

Reference_Variable 12によって振り子角度θが定義されます。

コメント

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