サンプル時間に依存しない S-Function をどのように生成しますか?
5 ビュー (過去 30 日間)
古いコメントを表示
MathWorks Support Team
2011 年 3 月 2 日
編集済み: MathWorks Support Team
2015 年 9 月 30 日
Subsystem ブロックを右クリック、"Real-Time Workshop" -> "S-Function を生成" からS-Function ブロックを生成しています。生成された S-Function コードを見ると、サンプル時間が明示的となって記述されています。そのため、異なるモデルでこのブロックを使おうとすると、実行できない場合があります。
どのようにサンプル時間に依存しない S-Function ブロックを作成するかを教えて下さい。
採用された回答
MathWorks Support Team
2015 年 9 月 30 日
この点は、ヘルプドキュメントを次のように辿った箇所に説明があります。
Real-Time Workshop -> S-Function Target -> Creating an S-Function Block from a Subsystem
ここにある通り、サブシステムから S-Function ブロックを生成する時は、ブロックは明示的なサンプル時間を持ちます。しかし、モデルがサンプル時間に依存しない場合には、サンプル時間に依存しない S-Function を生成することができます。
下記の、
Real-Time Workshop -> S-Function Target -> Introduction -> Sample Time Propagation in Generated S-Functions
このセクションにある通り、 S-Function のサンプル時間の伝播に影響する 6 つの条件があります。「サンプル時間の継承」に関しての詳細は、下記より参照することができます。
Simulink -> Referencing a Model -> Inheriting Sample Times
このページの関連ドキュメントからダウンロードすることができるサンプルモデル "sampleModel_R14SP3.mdl" は、このことを示します。このモデルは、コンフィギュレーションパラメータ -> ソルバ -> ソルバオプション -> 「周期的なサンプル時間の制約」 : 「サンプル時間に依存しない」の設定となっており、サンプル時間に依存しません。この状況下において生成される S-Function ブロックは、サンプル時間に依存しないものとなります。生成される S-Function ソースコード "SourceSubsys_sf.c" を見ると、 mdlInitializeSampleTimes() 関数において ssSetSampleTime(S, 0, INHERITED_SAMPLE_TIME); という記述を確認することができます。
この S-Function ブロックは "sampleModel_sfun_R14SP3.mdl" で活用し、上流からのサンプル時間を継承します。
0 件のコメント
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Code and Tool Customization についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!