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

5 ビュー (過去 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 Center および File ExchangeCode and Tool Customization についてさらに検索

タグ

タグが未入力です。

製品


リリース

R2013a

Community Treasure Hunt

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

Start Hunting!