このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。
エクスポート関数モデルは,外部環境およびスケジューラと統合できる独立した関数のコードを生成する仿金宝app真软件®モデルです。関数は,函数调用子系统ブロック,関数呼び出し模型ブロック,金宝app仿真软件的功能ブロック,および功能ブロックを使用して定義されます。
以下のエクスポート関数モデルには,函数调用子系统ブロックで定義された2つの関数が含まれています。このモデルを作成する手順については,エクスポート関数モデルの作成を参照してください。
このモデルから生成されたコードには,遅延関数用と関数平方用の2つの独立した関数が含まれています。
/* * File: export_function_model.c *为Simulink模型'export_f金宝appunction_model'生成代码。export_function_call_100ms (void) /*采样时间:[0.1s, 0.0s]output_100ms = export_function_model_DW.UnitDelay_DSTATE;export_function_model_DW。UnitDelay_DSTATE = export_function_model_Y。output_100ms + 1.0;} void function_call_10ms(void) /*采样时间:[0.01s, 0.0s] */ {export_function_model_Y. txt ();output_10ms = export_function_model_U。input_10ms * export_function_model_U.input_10ms;}
エクスポート関数モデルを作成するための4つの一般的なプロセスは,関数のコードを生成する前のモデルのシミュレーションとテストの方法が異なります。
関数呼び出しシーケンスが単純でモデル入力として指定できる場合,入力行列を使用したシミュレーションが,エクスポート関数モデルをテストする推奨方法になります。入力行列を使用したエクスポート関数モデルのシミュレーションのテストを参照してください。
関数呼び出しシーケンスが複雑すぎて入力行列で指定できない場合,テストモデル(ハーネス)を作成してターゲット環境の動作を再現します。このテストモデルを使用して関数呼び出し入力をエクスポート関数モデルに提供します。関数呼び出しジェネレーターを使用したエクスポート関数モデルのシミュレーションのテスト、スケジュールエディターを使用したエクスポート関数モデルのシミュレーションのテスト,およびStateflowチャートを使用したエクスポート関数モデルのシミュレーションのテストを参照してください。
最上位で,エクスポート関数モデルは,バーチャルブロック,定数(正
)のサンプル時間をもつブロック,および以下のブロックに制限されます。
轮廓尺寸
外港
总线的创造者
总线选择器
在公共汽车元素
公共汽车元素
函数调用子系统
関数呼び出し入力端子をもつ模型
金宝app仿真软件的功能
初始化函数
重置功能
终止函数
数据存储内存
合并
関数呼び出し入力端子をもつ功能
函数调用分裂
显示
范围
非バーチャルブロックとバーチャルブロックを参照してください。
エクスポート関数モデルで関数コードを正常に生成するには,以下の要件を満たさなければなりません。
モデルコンフィギュレーションパラメーター:
ソルバーの[タイプ]を(固定ステップ]
に設定します。
[ソルバー]を[自動]
または[離散]
に設定します。
[コード生成]の[システムターゲットファイル]を(ert.tlc)
に設定します。ert.tlc
を選択するには,嵌入式编码器®ライセンスが必要です。
関数呼び出し模型ブロックの場合,参照モデルの(周期的なサンプル時間の制約]を[サンプル時間に依存しない]
に設定します。
ルートレベルの関数呼び出し轮廓尺寸ブロック:
[関数呼び出しの出力)チェックボックスはオンにします。
异步任务规范ブロックから信号を受信できません。
ルートレベルのデータ轮廓尺寸ブロックと外港ブロックは,バーチャルバスデータ信号に接続できません。
ルートレベルの函数调用子系统ブロックと関数呼び出し模型ブロック:
ブロック内のすべての内部ブロックはコード生成をサポートしなければなりません。
触发ブロックの[サンプル時間タイプ]は以下のように設定されます。
[トリガー]
。内部ブロックの[サンプル時間]は-1
に設定しなければなりません。
[周期的]
。ルートレベルの関数呼び出し轮廓尺寸ブロックの[サンプル時間]を指定された離散時間に設定し,すべての内部ブロックの[サンプル時間]を-1
または指定された離散時間に設定しなければなりません。
エクスポート関数モデルでは,ルートレベルの函数调用子系统ブロックまたは関数呼び出し模型ブロック内のルートレベルの関数呼び出し轮廓尺寸ブロックと触发ブロックにサンプル時間を指定できます。これらのサンプル時間を指定する方法について次の表で説明します。
触发ブロックの[サンプル時間タイプ] | 触发ブロックの[サンプル時間] | 轮廓尺寸ブロックの[サンプル時間] | シミュレーション中の関数呼び出しレート |
|
未指定で,パラメーターは非アクティブです。 | -1 (継承) |
シミュレーションの場合,轮廓尺寸ブロックに接続されている関数呼び出しイニシエーターがシミュレーションのレートを設定します。 |
指定された離散時間 |
轮廓尺寸ブロックに接続されたテストモデルの関数呼び出しイニシエーターのサンプル時間は,轮廓尺寸ブロックの指定された離散時間と一致しなければなりません。 シミュレーションでは,指定された離散レートでコンポーネントが実行されます。関数呼び出しソースが別のサンプルを使用すると、Simulink にエラー メッセージが表示されます。 |
||
エクスポート関数モデルが模型ブロックから参照される場合,周期関数呼び出しの実行時チェックが適用されます。 |
1(継承)または轮廓尺寸ブロックの指定された離散時間。 | -1 (継承) |
この構成は許可されません。金宝app仿真软件にエラーメッセージが表示されます。 |
指定された離散時間 |
シミュレーションの場合,コンポーネントは指定された離散サンプル時間で実行されます。関数呼び出しソースが異なるサンプル時間を使用すると、Simulink にエラー メッセージが表示されます。 |
関数呼び出し轮廓尺寸ブロックのサンプル時間と優先順位を指定すると,函数调用子系统と関数呼び出し在仿真模型の実行順序を制御できます。あるいは,スケジュールエディターまたはStateflow®チャートを使用して,スケジューリングをテストできます。スケジュールエディターを使用したエクスポート関数モデルのシミュレーションのテストおよびStateflowチャートを使用したエクスポート関数モデルのシミュレーションのテストを参照してください。
シミュレーション実行のサンプル時間を指定します。関数呼び出し轮廓尺寸ブロックを右クリックし,[ブロックパラメーター]を選択します。
(信号属性]タブを選択します。[サンプル時間]ボックスに,離散時間を入力します。
シミュレーションのブロック優先順位を指定します。関数呼び出し轮廓尺寸ブロックを右クリックし,[プロパティ]を選択します。
[優先順位]ボックスに,優先順位値を入力します。
シミュレーションのブロック実行順序を表示します。[デバッグ]タブで,(情報のオーバーレイ]を選択してから,ドロップダウンダイアログから[実行順序]を選択します。この表示は生成されるコードに影響しません。
以下のエクスポート関数モデルでは,轮廓尺寸ブロック2の[サンプル時間]を0.01
(10)女士に設定した函数调用子系统2が,轮廓尺寸ブロック1の[サンプル時間]を0.1
(100毫秒)に設定した函数调用子系统1よりも前に実行されます。
金宝app仿真软件では,関数呼び出し轮廓尺寸ブロックのプロパティを比較し,以下のルールを使用して相対実行順序を決定します。
優先順位——優先順位の高い(数値が小さい)方が最初に実行される
サンプル時間——サンプル時間が小さい方が最初に実行される
端子番号——端子番号が小さい方が最初に実行される
2つのブロックの[優先順位]パラメーターの値が異なる場合は,より高い優先順位をもつブロックが最初に実行されます。[優先順位]パラメーターが等しい場合は,より速いレート(サンプル時間が小さい)をもつブロックが最初に実行されます。両方のブロックの[優先順位]とサンプル時間が同じ場合は,より小さい端子番号をもつブロックが最初に実行されます。
メモ
最上位モデルのシミュレーションモードが[アクセラレータ]または[ラピッドアクセラレータ]の場合,仿真软件はル金宝appートレベルの関数呼び出し轮廓尺寸ブロックの実行順序に関する実行時シミュレーションチェックを参照されるエクスポート関数モデル内で実行しません。
エクスポート関数モデルに,表に示すブロックプロパティをもつ5つのルートレベルの関数呼び出し轮廓尺寸ブロック~ Eがあると仮定します。相対的な実行順序を決定するために,金宝app仿真软件は,それらの[優先順位]パラメーター,サンプル時間(異なる継承されないサンプル時間の場合),端子番号を順に比較します。
ルートレベルの関数呼び出し轮廓尺寸ブロック | 一个 | B | C | D | E |
---|---|---|---|---|---|
優先順位 | 10 | 30. | 40 | 40 | 30. |
サンプル時間 | 1 | 0.2 | 0.1 | 0.1 | 1 |
端子番号 | 5 | 4 | 3. | 2 | 1 |
ブロックは5個のすべてのブロックの中で最高の優先順位をもっています。一个が最初に実行されます。
BとEがの後CとDの前に実行されます。Bと E は同じ優先順位のため、Simulink はサンプル時間を比較して実行順序を決定します。E のサンプル時間は-1
(継承)でありBのサンプル時間0.2
よりも小さくなります。Eが B の前に実行されます。
CとDは同じ優先順位と同じ別個の継承されないサンプル時間をもちます。Dの端子番号(2) は C (3) よりも小さいため、D が C の前に実行されます。
これらの関数呼び出し轮廓尺寸ブロックの相対実行順序はA、E、B, D,およびCです。
函数调用子系统ブロック内の轮廓尺寸ブロックの入力データをラッチしてデータの整合性を確保できます。入力データをラッチするには,轮廓尺寸ブロックパラメーターで(函数调用子系统出力のフィードバック信号の入力をラッチする]を選択します。
以下のモデルでは,函数调用子系统ReadDSAndCal1
の轮廓尺寸ブロックの入力データがラッチされ(<李>
で示される),サブシステムの実行中は変更できません。数据存储读取ブロックと数据存储写ブロックは,各函数调用子系统内で呼び出されます。1回目と2回目の関数呼び出しでデータが書き込まれ,最後の関数呼び出しでデータが数据存储内存ブロックに読み込まれます。
メモ
内部轮廓尺寸ブロックに接続されているルートレベルのデータ轮廓尺寸ブロックも,ルートレベルのブロックに接続されているすべてのブロックがラッチされる場合,ラッチされます。詳細については,函数调用子系统出力のフィードバック信号の入力をラッチする,门闩输入反馈信号的函数调用子系统outputsFunction-Call子系统出力のフィードバック信号の入力をラッチする门闩输入函数调用子系统输出的反馈信号を参照してください。
メモ
既定では,データ転送信号は生成されるコードにおいて保護されません。カスタムのストレージクラスを使用して,ターゲット環境内の現在のタスクのプリエンプションによる,これらの信号のデータ破損を防ぎます。
入れ子にされたエクスポート関数モデルは,編成の追加の層を提供します。以下のモデルは,模型ブロックから参照された2つの参照エクスポート関数モデルをもっています。
メモ
エクスポート関数モデルは,非同期関数呼び出し入力をもつ参照モデルを含むことはできませんが,函数调用子系统および関数呼び出しモデルを含むことはできます。非同期関数呼び出し入力をもつモデルは,エクスポート関数モデル,函数调用子系统または関数呼び出しモデルを含むことができます。
エクスポート関数モデル内では,函数调用子系统ブロックまたは関数呼び出し模型ブロックを使用できます。関数呼び出し模型ブロックを使用する場合,モデルの複数のインスタンスも作成できます。
触发ブロックを含むモデルでアルゴリズムを定義します。[トリガータイプ]を[関数呼び出し]
に設定します。
模型ブロックからモデルを参照します。結果は関数呼び出しモデルになります。
関数呼び出し轮廓尺寸ブロックを接続し,[関数呼び出しの出力)チェックボックスをオンにします。信号轮廓尺寸ブロックおよび外港ブロックを追加します。モデルを更新します(Ctrl + D)。結果は,関数呼び出しモデルをもつエクスポート関数モデルになります。
参照モデルと端子ブロックをコピーして,モデルの2つ目のインスタンスを作成します。2つのインスタンスは,異なるタスクの異なるルートレベルの関数呼び出し轮廓尺寸ブロックで呼び出されます。
エクスポート関数モデルの機能は非同期関数呼び出し入力端子をもつモデルで使用できます。これらのモデルは関数が Simulink スケジューラで呼び出される Simulink 環境で主に使用します。
比較特性 | エクスポート関数モデル | 非同期関数呼び出し入力をもつモデル |
---|---|---|
定義 | これらのモデルには,异步任务规范ブロックに接続されない,ルートレベルの関数呼び出し轮廓尺寸ブロックがあります。これらの轮廓尺寸ブロックは,函数调用子系统または関数呼び出しモデル(触发ブロックをもつ模型ブロック)をトリガーします。 | これらのモデルには,异步任务规范ブロックに接続されたルートレベルの関数呼び出し轮廓尺寸ブロックがあります。これらの轮廓尺寸ブロックは,函数调用子系统または関数呼び出しモデルをトリガーします。 |
ルートレベルブロック | 関数呼び出しコンテキストで実行されるブロックのみ,ルートレベルに存在することが許されます。 | 関数呼び出しコンテキスト以外で実行されるブロックも許されます。 |
データ転送 | データ転送インジケーターを使用してシミュレーション結果を解釈します。既定で,エクスポート関数モデルのデータ転送は,生成されるコード内で保護されません。詳細については,函数调用子系统のラッチされた入力データを参照してください。 | 率转换ブロックを使用して,異なるレートで実行される函数调用子系统間でのデータ転送を保護します。詳細については,率转换を参照してください。 |
シミュレーションのサポート | これらのモデルは,スタンドアロンシミュレーションとテストモデルシミュレーションをすべてのシミュレーションモードでサポートします。 | これらのモデルは,テストモデルシミュレーションをすべてのシミュレーションモードで,スタンドアロンシミュレーションをノーマル,アクセラレータ,ラピッドアクセラレータの各モードでサポートします。 |
コード生成のサポート | 最上位モデルおよびスタンドアロンのコード生成はサポートされます。 | 最上位モデルおよびスタンドアロンのコード生成はサポートされます。 |