Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

インメモリ列挙型クラスを使用したバリアント制御の作成

Simulink® モデル内のバリアントのそれぞれの選択は、"バリアント制御" と呼ばれる条件式に関連付けられます。true として評価されるバリアント制御によって、モデル内のアクティブなバリアント選択が決まります。この例では、インメモリ列挙型クラスを使用してモデル内のバリアント制御を作成する方法を説明します。列挙型は、関数Simulink.VariantConfigurationDataを使用して作成されます。MATLAB® ファイルに列挙型を保存する必要はありません。コード生成では、条件値がリテラル値ではなく意味のある名前として表されるため、列挙型で可読性が向上します。

モデルの確認

モデル slexVariantSetupUsingInMemoryEnums を開きます。このモデルには、2 つのバリアントの選択 Linear controller および Nonlinear controller が含まれます。バリアント領域の実装には、Variant Sink ブロックと Variant Source ブロックが使用されています。

open_system('slexVariantSetupUsingInMemoryEnums');

モデルの PreLoad コールバックでの列挙型クラスの指定

この例では、列挙型クラス Controller がモデルの PreLoad コールバック関数で定義されます。列挙型クラスは、基となる整数値 0 および 1 を使用して、2 つの列挙型メンバー Linear および Nonlinear を定義します。コード生成時に、列挙型定義が Controller.h という名前のヘッダー ファイルにエクスポートされます。MATLAB 変数 V は、現在アクティブなバリアント選択を保存するバリアント制御変数として使用されます。

Simulink.defineIntEnumType('Controller',...
    {'Linear', 'Nonlinear'}, [0;1], 'Description', 'Controller',...
    'DefaultValue', 'Linear', 'HeaderFile', 'Controller.h', 'DataScope',...
    'Exported');
V = Controller.Linear;

バリアント条件式の作成

バリアント マネージャーからバリアント制御を設定できます。バリアント マネージャーを開くには、Variant Sink ブロックまたは Variant Source ブロックでバリアントのバッジを右クリックし、[バリアント マネージャーで開く] を選択します。

列挙型メンバーと制御変数を使用して条件式 V == ControllerChoice.Linear および V == ControllerChoice.Nonlinear を作成する方法を確認できます。サポートされるすべての Simulink 列挙型を使用して条件式を作成できます。Simulink での列挙値の詳細については、Simulink 列挙型を参照してください。

参考