メインコンテンツ

Simulink 関数の複数のインスタンスの再利用

この例では、同じ Simulink® 関数のインスタンスを再利用する方法を示します。モデル slexCounterFunctionMdlRef に、カウンターを実装する update 関数が含まれています。サブシステム CounterACounterB のそれぞれにカウンターのインスタンスが含まれており、モデルで関数ロジックを再利用できます。

モデルを開きます。

open_system('slexMultiInstanceFunctionsExample');

Simulink model with an UpdateCounterA subsystem, UpdateCounterB subsystem, a Model block referencing CounterA, a Model block referencing CounterB, a Constant block with value 0, a Constant block with value 1000, and multiple Pulse Generater blocks.

再利用可能な Simulink 関数の実装

slexMultiInstanceFunctionsExample モデルの関数は、slexCounterFunctionMdlRef サブシステムで定義されている update 関数です。

Simulink Function ブロックを表示するには、CounterA サブシステムを開きます。

open_system('slexMultiInstanceFunctionsExample/CounterA');

A Simulink Function block with function prototype, output equals update of upper, input, and lower.

サブシステム CounterACounterB のそれぞれに、slexCounterFunctionMdlRef モデルで実装されるカウンターのインスタンスが含まれています。カウンターのインスタンスが複数あるため、モデルで関数ロジックを再利用し、各インスタンスを複数のブロックから呼び出すことができます。

異なる呼び出し元からの同じ Simulink 関数の呼び出し

slexMultiInstanceFunctionsExample モデルの関数の呼び出し元は、UpdateCounterA サブシステムと UpdateCounterB サブシステムにあります。呼び出し表記 CounterA.updateCounterB.update で、カウンター ロジックの 2 つの異なるインスタンスを区別します。

CounterA の呼び出し元を表示するには、UpdateCounterA サブシステムをダブルクリックします。サブシステムの Function Caller ブロックでは、関数名が Model ブロック名で修飾されています。この場合は、CounterA が Model ブロック名で update が関数名です。

sim('slexMultiInstanceFunctionsExample');

参考

| | | |

トピック