カスタムステートメント

スタムステートメントにより上級ユーザーは、新しい標準モデル要素を追加することでMotionSolveモデルのセットを拡張することができます。カスタムステートメントは、1つまたは複数のモデル要素にマッピングできます。

カスタムステートメントは、同じタイプまたは異なるタイプの要素にマッピングが可能です。ユーザーは、要素名と属性名を選ぶことができます。

予め定義されているMotionSolveモデル要素と同じ名前をカスタムモデル要素が持つ場合、カスタム要素のほうが優先されます。すなわち、カスタムモデル要素は予め定義されたモデル要素を無効にします。

例えば、PIDコントローラーを考えます。


図 1. PIDコントローラーのブロック図
PIDコントローラーの計算には、比例値、積分値および微分値の3つのパラメータが関わります。
  1. 比例値は現在のエラーに対する反応を決定し、次のように表わされます:(1) K [ u ]
  2. 積分値は、最近のエラーの和に基づいて反応を決定します: (2) 1 s [ u ] = x 1
  3. この式を別のフォームで書くと:(3) x ˙ 1 = u
  4. 微分値はエラーの変化率に基づいた反応を決定し、2つのパートを有します:(4) C [ u ] = x 3
  5. または:(5) x 3 C [ u ] = 0
  6. および:(6) s [ x 3 ] = x 2
  7. または:(7) x ˙ 3 x 2 = 0
  8. これら3つの反応の加重合計は、コントロールバルブの位置といったコントロール要素を介してプロセスを調整するために使用されます:(8) x 1 + x 2 + K [ u ] = y

比例、積分および微分の項は、PIDコントローラの出力を計算するために合計されます。

したがって、3つのControl_Diff(1つは陽的、2つは陰的)と1つのReference_Variableを有したカスタム要素(8)が得られます。

カスタムステートメントの作成

  1. マッピングファイルを編集します。
    カスタム関数を宣言するマッピングファイルへのエントリは、下記のように作成されます:


    図 2. マッピングファイルを編集してカスタム関数を宣言


    図 3.
    CustomElement要素のための一般的なシンタックスは:
    <CustomFunction
       SYMBOL              = "string"
      <Attribute
        ID                 = "integer"
        NAME               = "string"
        TYPE               = "string"
        DEFAULT            = "real"
      />
    ... (to be repeated for each attribute)
      <Component
        ID                 = "integer"
        CTYPE              = "string"
    [In addition, all attributes needed to define the Component completely based on its type]
    />
    ... (to be repeated for each component)
    />
    表 1. 子 . .ATTRIBUTE: カスタム要素の特定の属性の定義を指定します。
    属性 説明
    ID 属性識別番号(整数 > 0)。カスタム要素の全ての属性内で固有の数値。
    NAME MotionSolve XMLで使用されるべき属性の名称。
    TYPE 属性の値のデータタイプを指定します。
    DEFAULT 属性に使用されるデフォルト値を指定します。
    表 2. 子. COMPONENT - カスタム要素の特定のコンポーネントの定義を指定します。
    属性 説明
    ID コンポーネントのID(整数>0)。カスタム要素の全てのコンポーネント内で固有の数値。
    CTYPE コンポーネントのタイプを指定します。サポート対象のコンポーネントタイプとして以下があります:

    Non-Usersub Cases

    • GRAPHICS
    • MARKER
    • PART
    • POINT_MASS
    • STRING
    Single Usersub Cases
    • GFOSUB
    • VFOSUB
    • VTOSUB
    • SFOSUB
    • FIESUB
    • CURSUB
    • SURSUB
    • UCOSUB
    • GCOSUB
    • MOTSUB
    • REQSUB
    • VARSUB
    • DIFSUB
    • SENSUB
    • SEVSUB
    • SPLINE_READ
    • GRASUB
    Multiple Usersub Cases
    • CNFSUB, CFFSUB [どちらか(同等)]
    • COUSUB [COUSUB/COUXX/COUXX2にマップ]
    • GSESUB
  2. マッピングファイルへのパスを定義します。
    1. 環境変数Variable name: MS_CUSTOM_MAPPING_FILE を、マッピングファイルを指すように修正します。


      図 4. 環境変数の設定
  3. 下に示すように、VARSUBおよびDIFSUBライクなユーザーサブルーチンを作成し、DLLを構築します:


    図 5. ユーザー定義のサブルーチン、DLL、および対応するXMLファイル


    図 6.
この時点以降、PIDコントローラ用のVARSUB関数はVAR_PID、DIFSUB関数名はDIF_PID1、DIF_PID2、DIF_PID3です。 これらは、予め定義されているMotionSolve関数と全く同じようにモデル内で使用することのできるカスタム関数です。標準のMotionSolveモデル要素と同様、これらをモデル内の任意の場所で使うことができます。
例えば、下の図の左側にある要素は、MotionSolveによって内部的に右側の要素のセットとして解釈されます。


図 7. 内部的なカスタム表現

MotionSolveは、マッピングファイルの指示に従い、標準の要素の組み合わせを使ってカスタム要素を内部的に解釈します。<Save/>をクリックして、得られたマッピングをチェックします。