基本ブロック用アトミックタブ
ブロックビルダーのアトミックタブで基本ブロックを定義します。
基本ブロックの場合、アトミックタブにシミュレーション機能のリストが表示されます。通常、ブロックは複数のシミュレーション機能を持ちます。シミュレーション関数ごとに、共有ライブラリとそれに対応するエントリポイントを指定する必要があります。基本ブロックを定義するには、最大3つのOML関数を作成する必要があり、これらの関数の部分コードはアトミックタブに含まれています。
最初の関数 SetParametersは、ブロックパラメータとポートプロパティに基づいてブロックの構造を作成します。他の2つの関数、SetIOとResetは、この構造体の変更が必要なときに登場します。
パラメータの設定
関数を定義するために提供しなければならないOMLコードは、以下のものが利用可能であることを前提としています:
- 変数_labelで定義されたブロック名。
- 対応するパラメータ名の下にあるブロックパラメータ値。
- ブロックを配置するダイアグラムで、変数_diagramで定義します。
_block = vssAddNewObject (’Block’, _diagram);
vssSetBlockName (_block, _label);
ブロックによって表現された構造は、提供されるAPIを使用して補足されます。ここで適用されるコードは、新しいブロックの属性によって大きく異なります。 APIとその使い方の網羅的なリストを提供するのではなく、既存のブロックに関連するコード、特に新しいブロックのプロパティに似たコードを確認することをお勧めします。このアプローチは、新しいコードを作成するプロセスを簡素化し、既存のコードの数行を修正するだけにします。
SetParameters関数は、提供されたOMLコードに基づいて自動的に生成されます。エラーメッセージを生成するための系統的なテストも含まれています。 この関数は、コンパイルとシミュレーションに使用されるモデル構造を構築するモデル評価フェーズで呼び出されます。
他の2つの関数は、SetParameters関数で設定されなかった値を設定するために使用されます。これらの値は、ブロック入出力ポートの未定義のサイズとデータタイプに関するものです。SetParameters関数は一般的にすべてのブロック構造プロパティを指定しますが、コンパイラが未決定のプロパティを残す場合があります。
サイズベクトルを負の値、例えば[-1, -2]に設定することで、入力のサイズを未知のままにしておくことができます。負の値は任意のサイズを示します。別の入力または出力のサイズも[-1, -2]に設定されている場合、どちらも任意のサイズを持ち、それらは等しくなります。入力サイズが[-1, -1]の場合は、任意のサイズの正方行列を意味します。負の値は未知のサイズを表し、同一の負の値は同一のサイズを表します。このアプローチでは、ブロックポートサイズの制約を多くの一般的なブロックに適用することができます。例えば、行列の転置ブロックは、入力サイズが[-1, -2]、出力サイズが[-2, -1]となり、入力と出力に課される制約をカプセル化します。
コンパイラは、これらの制約とブロックの相互接続方法を考慮して、実際のポートサイズを決定します。同様に、ブロックポートのデータ型は、コンパイラが実際の型を推測して、任意の値に設定することができます。
入出力の設定
パラメータのリセット
コンパイラがブロックの入出力データサイズとデータ型を計算した後、ブロックのリセットOML関数が実際のポートデータサイズとデータ型を含むブロック構造で呼び出されます。この関数は、必要に応じて他のブロックのプロパティを調整することができます。ほとんどの場合、リセット関数はポートのデータ型に基づいて適切なシミュレーション関数を選択し、ユーザが提供したコードに基づいてアトミックで定義されます。