Sensor: Evaluate

Model ElementSensor_Evaluate要素は、常に1つまたは複数のSensor_Eventモデリング要素に関連付けられます。Sensor_Eventが“active”の場合、Sensor_Evaluateをオプションで呼び出し、システム状態の現在の値に基づいてスカラー値を定義することができます。この値は、親Sensor_Eventのいずれかが再度アクティブになるまで再評価されません。

説明

したがって、Sensor_Evaluateは、Sensor_Eventがアクティブなときに、システム状態に情報を格納するために使用できます。

次の2タイプのSensor_Evaluate要素がサポートされています:
  • MotionSolve式ベース。
  • MotionSolveユーザーサブルーチンベース。

式ベースのSensor_Evaluateは、含まれる式を評価し、その値を格納します。ユーザーサブルーチンベースのSensor_Evaluateは、センサーがアクティブの場合に、ユーザーサブルーチンSEVSUBを呼び出します。SEVSUBはその値を計算して格納します。どちらのケースも、MotionSolve関数SENVAL(ID)を使用して、この値を取得できます。

数量の計算が比較的単純な場合は、式ベースの値が使用されます。数量の計算が複雑で、多くの論理判断が必要な場合は、ユーザーサブルーチンベースの値が使用されます。この場合、プログラミング言語をフルに活用し、注目する数量を効率的に計算できます。

フォーマット

<Sensor_Evaluate
    id                   = "integer"    
  [ label                = "string" ]
{   type                 = "EXPRESSION"
    expr                 = "motionsolve_expression"    
  | type                 = "USERSUB"
    usrsub_dll_name      = "valid_path_name"
    usrsub_param_string  = "USER([[par_1[,...][,par_n]])" } >
    usrsub_fnc_name      = "custom_fnc_name"  >    
  | type                 = "USERSUB"
    script_name          = valid_path_name
    interpreter          = "PYTHON" | "MATLAB"
    usrsub_param_string  = "USER([[par_1[,...][,par_n]])"
    usrsub_fnc_name      = "custom_fnc_name" >
</ Sensor_Evaluate>

属性

id
要素識別番号(整数 > 0)。この番号は、すべてのSensor_Evaluate要素の中で一意です。
label
Sensor_Evaluate要素の名前。
type

EXPRESSIONまたはUSERSUBを選択します。Sensor_Eventがアクティブ化されているときに評価される式を指定します。

EXPRESSIONオプションは、イベントの値が実行時に評価できるMotionSolveの式であることを指定します。USERSUBオプションは、イベントの値がユーザー定義のサブルーチンで指定されることを示します。パラメータusrsub_param_stringおよびusrsub_dll_name/script_nameは、このユーザー定義サブルーチンに関する詳細情報を提供するために使用されます。

expr
センサーイベントを定義する式を定義します。このパラメータは、type = EXPRESSIONである場合にのみ使用します。任意の有効な実行時MotionSolve式を入力として指定できます。
usrsub_param_string
データファイルからユーザー定義のSEVSUBに渡されるパラメータのリスト。このキーワードは、type = USERSUBが選択されている場合にのみ使用します。
usrsub_dll_name
ユーザーサブルーチンを含むDLLまたは共有ライブラリのパスと名前を指定します。MotionSolveはこの情報を使用して、実行時にDLL内のユーザーサブルーチンSEVSUBを読み込みます。
usrsub_fnc_name
ユーザー作成サブルーチンSEVSUBの代替名を指定します。
script_name
usrsub_fnc_nameで指定されたルーチンを含むユーザー作成スクリプトのパスと名前を指定します。
interpreter
ユーザースクリプトが記述されたインタープリタ型言語を指定します。有効な選択肢は、MATLABまたはPYTHONです。

下の例は、Sensor_Evaluateを使用して、油圧システムの状態を格納する方法を示しています。

このシステムは、チェックバルブが開いた状態と閉じた状態の2つのコンフィギュレーションで動作します。ユーザーは、これがシミュレーションでどの程度の頻度で発生するかを出力することに関心を寄せています。微分方程式 Diff/1021を使用して、回路内の圧力をモデル化します。圧力がしきい値を下回ると、チェックバルブが閉じます。圧力がしきい値を上回ると、チェックバルブが開きます。圧力を監視するSensor_Evaluateがこれらの発生を検出し、MotionSolveSensor_Evaluate/100を呼び出すよう指示します。

Sensor_Evaluate/100は、システム内の圧力を測定します。これが7.7というしきい値を上回っている場合は0(バルブが開いている状態)を格納し、それ以外の場合は1(バルブが閉じている状態)を格納します。

SENVAL(100) を、測定要求のステートメントで使用できます。これにより、バルブの開閉を時間の関数としてプロットできます。

<Sensor_Evaluate
  id                  = "100"
  type                = "EXPRESSION"
  expr                = "IF (DIF(1021)-7.7) 1, 1, 0">
</Sensor_Evaluate>

下に示す2番目の例は、ユーザーサブルーチンでSensor_Evaluateの計算が行われることを除き、最初の例とまったく同じです。

DiffのID1021としきい値7.7がパラメータとして渡され、ユーザー定義サブルーチンは多くのSensor_Evaluateモデリング要素に対して機能することができます。

<Sensor_Evaluate
  id                  = "100"
  type                = "USERSUB"
  usrsub_param_string = "USER(1021, 7.7)"
  usrsub_dll_name     = " C:\jsnow\Desktop\test\sensor\sensor.dll">
</Sensor_Evaluate>

コメント

Sensor_Evaluateを使用することで、離散変数の値を定義できます。関連付けられたSensor_Eventが、離散状態のサンプリング間隔を決定し、Sensor_Evaluateが変数の離散値を定義します。