サンプル時間に依存しない S-Function をどのように生成しますか?
조회 수: 2 (최근 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!