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

2 visualizaciones (últimos 30 días)
MathWorks Support Team
MathWorks Support Team el 2 de Mzo. de 2011
Editada: MathWorks Support Team el 30 de Sept. de 2015
Subsystem ブロックを右クリック、"Real-Time Workshop" -> "S-Function を生成" からS-Function ブロックを生成しています。生成された S-Function コードを見ると、サンプル時間が明示的となって記述されています。そのため、異なるモデルでこのブロックを使おうとすると、実行できない場合があります。
どのようにサンプル時間に依存しない S-Function ブロックを作成するかを教えて下さい。

Respuesta aceptada

MathWorks Support Team
MathWorks Support Team el 30 de Sept. de 2015
この点は、ヘルプドキュメントを次のように辿った箇所に説明があります。
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" で活用し、上流からのサンプル時間を継承します。

Más respuestas (0)

Categorías

Más información sobre Code and Tool Customization en Help Center y File Exchange.

Etiquetas

Aún no se han introducido etiquetas.

Productos


Versión

R2013a

Community Treasure Hunt

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

Start Hunting!