高度な関数
LibAppendToModelReferenceUserData(data)
現在ビルドしているモデルの binfo ファイル内のユーザー データに指定されたデータ オブジェクトを追加します。この関数は、モデル参照ターゲットのビルド中にのみ呼び出されます。
メモ
データ引数をベクトルまたは行列にすることはできません。この制限を回避するには、ベクトルまたは行列のデータを含むフィールドをもつレコードを作成し、このレコードを関数に渡します。
modelrefutil.tlc の LibAppendToModelReferenceUserData を参照してください。
LibBlockInputSignalBufferDstPort(portIdx)
同じメモリを共有する入力端子 (portIdx) に対応する出力端子を返します。共有しない場合は (-1) が返されます。S-Function で ssSetInputPortOverWritable(S,portIdx,TRUE) を指定する場合は、LibBlockInputSignalBufferDstPort を使用する必要があります。
ブロックの入力端子といずれかの出力端子が以下に該当する場合、
テスト ポイントでない
入力端子が上書き可能
その出力端子は入力端子と同じバッファーを再利用する可能性があります。この場合、LibBlockInputSignalBufferDstPort は、指定された入力端子のバッファーを再利用する出力端子のインデックスを返します。ブロックのどの出力端子も指定された入力端子のバッファーを再利用しない場合、LibBlockInputSignalBufferDstPort は -1 を返します。
LibBlockInputSignalBufferDstPort は、Simulink® マクロ ssGetInputPortBufferDstPort の TLC バージョンです。
例
ブロックに入力端子が 2 つあり、どちらも複素数を 2 つの幅の広いベクトルで受け取るとします。このブロックは、2 つの複素数の積を出力します。
%assign u1r = LibBlockInputSignal (0, "", "", 0)
%assign u1i = LibBlockInputSignal (0, "", "", 1)
%assign u2r = LibBlockInputSignal (1, "", "", 0)
%assign u2i = LibBlockInputSignal (1, "", "", 1)
%assign yr = LibBlockOutputSignal (0, "", "", 0)
%assign yi = LibBlockOutputSignal (0, "", "", 1)
%if (LibBlockInputSignalBufferDstPort(0) != -1)
%% The first input is going to be overwritten by yr so
%% we need to save the real part in a temporary variable.
{
real_T tmpRe = %<u1r>;
%assign u1r = "tmpRe";
%endif
%<yr> = %<u1r> * %<u2r> - %<u1i> * %<u2i>;
%<yi> = %<u1r> * %<u2i> + %<u1i> * %<u2r>;
%if (LibBlockInputSignalBufferDstPort(0) != -1)
}
%endif出力端子が 1 つしか存在しないため、この例では、%if ステートメントの論理条件として (LibBlockInputSignalBufferDstPort(0) == 0) も使用できることに注意してください。
blkiolib.tlc の LibBlockInputSignalBufferDstPort を参照してください。
LibBlockInputSignalStorageClass(portIdx, sigIdx)
指定されたブロックの入力端子信号のストレージ クラスを返します。ストレージ クラスは、"Auto"、"ExportedSignal"、"ImportedExtern"、"ImportedExternPointer" のいずれかになります。
blkiolib.tlc の LibBlockInputSignalStorageClass を参照してください。
LibBlockInputSignalStorageTypeQualifier
(portIdx, sigIdx)
指定されたブロックの入力端子信号のストレージ型修飾子を返します。型修飾子は、const などのユーザーが入力した任意の値です。既定の型修飾子は "Auto" で、既定のアクションの実行を意味します。
blkiolib.tlc の LibBlockInputSignalStorageTypeQualifier を参照してください。
LibBlockOutputSignalIsGlobal(portIdx)
指定されたブロックの出力端子信号がグローバル スコープで宣言されている場合は 1 を返し、それ以外の場合は 0 を返します。
LibBlockOutputSignalIsGlobal が 1 を返す場合、この信号を保持する変数には生成コード内の任意の場所からアクセスできます。たとえば、信号がテスト ポイント信号、外部信号、または不変信号の場合に LibBlockOutputSignalIsGlobal は 1 を返します。
blkiolib.tlc の LibBlockOutputSignalIsGlobal を参照してください。
LibBlockOutputSignalIsInBlockIO(portIdx)
指定されたブロックの出力端子がグローバルなブロック I/O データ構造体に存在する場合は 1 を返します。S-Function で ssSetOutputPortReusable(S,portIdx,TRUE) を指定する場合は、この使用が必要になることがあります。
sfun_multiport.tlc を参照してください。
blkiolib.tlc の LibBlockOutputSignalIsInBlockIO を参照してください。
LibBlockOutputSignalIsValidLValue(portIdx)
指定されたブロックの出力端子信号を代入式の有効な左辺引数 (lvalue) として使用できる場合は 1 を返し、それ以外の場合は 0 を返します。たとえば、ブロックの出力端子信号が読み取り/書き込みメモリ内にある場合、LibBlockOutputSignalIsValidLValue は 1 を返します。
blkiolib.tlc の LibBlockOutputSignalIsValidLValue を参照してください。
LibBlockOutputSignalStorageClass(portIdx)
ブロックの指定された出力信号のストレージ クラスを返します。ストレージ クラスは、"Auto"、"ExportedSignal"、"ImportedExtern"、"ImportedExternPointer" のいずれかになります。
blkiolib.tlc の LibBlockOutputSignalStorageClass を参照してください。
LibBlockOutputSignalStorageTypeQualifier
(portIdx)
ブロックの指定された出力信号のストレージ型修飾子を返します。型修飾子は、const などのユーザーが入力した任意の値です。既定の型修飾子は Auto で、既定のアクションの実行を意味します。
blkiolib.tlc の LibBlockOutputSignalStorageType を参照してください。
LibBlockSrcSignalBlock(portIdx, sigIdx)
指定されたブロックの入力端子要素のソースであるブロックの参照を返します。戻り引数は次のいずれかになります。
[systemIdx, blockIdx] | ブロックの出力または状態が一意である場合 |
"ExternalInput" | 外部入力 (ルート入力端子) の場合 |
"Ground" | 未接続の場合、または Ground に接続されている場合 |
"FcnCall" | 関数呼び出し出力の場合 |
0 | 一意でない場合 (つまり、Merge ブロックのソース、またはブロック I/O 最適化のために再利用された信号のソースの場合) |
例
次のコード フラグメントでは、現在のブロックの最初の端子で 2 番目の入力を駆動するブロックを見つけて、このソース ブロックの入力信号を変数 y に代入します。
%assign srcBlock = LibBlockSrcSignalBlock(0, 1)
%% Make sure that the source is a block
%if TYPE(srcBlock) == "Vector"
%assign sys = srcBlock[0]
%assign blk = srcBlock[1]
%assign block = CompiledModel.System[sys].Block[blk]
%with block
%assign u = LibBlockInputSignal(0, "", "", 0)
y = %<u>;
%endwith
%endifblkiolib.tlc の LibBlockSrcSignalBlock を参照してください。
LibBlockSrcSignalIsDiscrete(portIdx, sigIdx)
指定されたブロックの入力端子要素に対応するソース信号が離散信号である場合は 1 を返し、それ以外の場合は 0 を返します。
駆動ブロックがマージした信号または再利用された信号である (つまり、ソースが Merge ブロックであるか、信号が最適化のために再利用されている) と一意に判定できない場合にも、LibBlockSrcSignalIsDiscrete は 0 を返すことに注意してください。
blkiolib.tlc の LibBlockSrcSignalIsDiscrete を参照してください。
LibBlockSrcSignalIsGlobalAndModifiable
(portIdx, sigIdx)
LibBlockSrcSignalIsGlobalAndModifiable は、指定されたブロックの入力端子要素に対応するソース信号が次の 3 つの条件を満たす場合に 1 を返します。
生成コード内のあらゆる場所で読み取り可能である。
そのアドレスで参照できる。
その値を変更できる (つまり、
constとして宣言されていない)。
そうでない場合、LibBlockSrcSignalIsGlobalAndModifiable は 0 を返します。
blkiolib.tlc の LibBlockSrcSignalIsGlobalAndModifiable を参照してください。
LibBlockSrcSignalIsInvariant(portIdx, sigIdx)
指定されたブロックの入力端子要素に対応するソース信号が不変信号である (つまり、信号が変化しない) 場合は 1 を返します。
たとえば、定数 TID (つまり、無限のサンプル時間) をもつソース ブロックは、不変信号を出力します。
blkiolib.tlc の LibBlockSrcSignalIsInvariant を参照してください。
LibGetModelReferenceUserData(modelName)
指定されたモデルのユーザー データを取得します。これは、指定されたモデルで LibAppendToUserData が呼び出されるたびに、1 つの要素をもつベクトルを返します。この関数を、ターゲット タイプが SIM のビルド中に呼び出すことはできません。
modelrefutil.tlc の LibGetModelReferenceUserData を参照してください。
LibGetReferencedModelNames()
現在ビルドしているモデルによって参照されるモデルの名前を取得します。データを次の 2 つのフィールドをもつ構造体として返します。
NumReferencedModels: モデル名の数を示す整数ReferencedModel: 参照モデルの名前を含むフィールドNameをもつ構造体の配列
modelrefutil.tlc の LibGetReferencedModelNames を参照してください。
LibIsModelReferenceRTWTarget()
ビルド プロセスによってモデル参照ターゲット向けのコードが生成されている場合は true を返します。
utillib.tlc の LibIsModelReferenceRTWTarget を参照してください。
LibIsModelReferenceSimTarget()
モデル参照シミュレーション ターゲット向けのコードを生成している場合は true を返します。
utillib.tlc の LibIsModelReferenceSimTarget を参照してください。
LibIsModelReferenceTarget()
モデル参照ターゲット向けのコードを生成している場合は true を返します。
utillib.tlc の LibIsModelReferenceTarget を参照してください。