サンプル時間に依存しない S-Function をどのように生成しますか?

조회 수: 2 (최근 30일)
MathWorks Support Team
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
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개)

카테고리

Help CenterFile Exchange에서 Code and Tool Customization에 대해 자세히 알아보기

태그

아직 태그를 입력하지 않았습니다.

제품


릴리스

R2013a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!