主要内容

このページの翻訳は最新ではありませ。

バリアント制御の绍介

バリアントを含むs金宝appimulink®〖〗

モデル内のバリアントのそれぞれの選択は,バリアント制御と呼ばれる条件式に関連付けられます。バリアント制御は,どのバリアントの選択がアクティブであるかを決定します。バリアント制御の値を変更することによって,アクティブなバリアントの選択を切り替えることができます。

バリアントのそれぞれの選択がバリアント制御に関連付けられますが,1つのバリアント制御のみが真正として評価されます。バリアント制御が真正に評価された場合,仿真软件金宝appはそのバリアント制御に対応するバリアント選択を有効にします。

バリアント制御は,真正的に評価される場合に特定のバリアント選択を有効にする論理式です。

メモ

バリアント制御はMATLAB®グローバルワークスペース,マスクワークスペース,またはデータディクショナリで指定できます。

バリアント制御は金宝appsimulink.variant.オブジェクト,matlab式(构造体を含む),または1つ以上のこれらオペランドおよび子を含むとして指定できますできできます。

バリアント制御モード

[ブロックパラメーター]ダイアログボックスの[バリアント制御モード]パラメーターを使使と,バリアントブロックブロックモデル化に使するとし[式][ラベル],または[sim / codegenの切り替え]を选択できます。

  • 表达式:バリアント条件の評価に基づいてアクティブなバリアントを指定します。

    バリアント制御モード:式

  • 标签:名前に基づいたバリアント制御(ラベルモードのアクティブな選択肢)を指定します。(标签)代わりに,ラベルモードはな选択をコマンドラインでする选択ををコマンドラインで选択することができことができをコマンドラインでアクティブすることができことができをコマンドラインのアクティブなすることができをコマンドコマンドラインのアクティブすることができ肢をコマンドラインではアクティブすることができますをコマンドラインスペースは选択することができますをコマンドコマンドラインスペースは选択制御をますをコマンドラインラインスペースアクティブバリアントますをset_param(块,“LabelModeActiveChoice”、“Choice_1”)

    バリアント制御モード:ラベル

  • sim codegen切换:を使用すると,バリアントブロック内でのシミュレーションおよびコード生成ワークフローに対して,バリアントの切り替えを自動化できます。この機能は,シミュレーションとコード生成のモード間を切り替えるのに便利です。

    モデルをシミュレーションするときに(ノーマル,アクセラレータ,ラピッドアクセラレータ),仿真金宝app软件はアクティブな選択肢としてsim卡分享到自动的にますますます。同様同様,ソフトウェアインザループ(sil)シミュレーション,プロセッサインプロセッサイン(pil)シミュレーションを実実実し,コードを生成し,エクスターナルエクスターナルを使使とき,si金宝appmulinkは自动的にCodegen.分享到选択します。

    メモ

    バリアントブロックの[バリアント制御モード][ラベル]または[式]に设定されてている合,その选択条件にsim卡またはCodegen.を使用することはサポートされていません。

    バリアント制御モード:sim / codegenのの

    メモ

    [バリアントのアクティベーションのタイミング]ドロップダウンリストで,[ブロック線図の更新)または[ブロック図の更新时にすべての选択肢を解析]を选択できでき。データ信号については,[ブロック図の更新时にすべての选択肢を解析]によって,信号属性(データ型,次元など)を両方の选択肢间で必ず一致させることができます。

    Sim选択に切り替えられたブロックをを示すのサンプル以以以以以にに示し示し

    范例模型:模拟游戏选择

オペランド

  • 整数データ型または列挙データ型とスカラーリテラル値をもつMATLAB変数または金宝app仿真软件。参数オブジェクトに解決される変数名

  • 金宝appsimulink.variant.オブジェクトに解決される変数名

  • 整数または列挙値を表す表すのリテラル

演算子

  • グループ化に使用される小かっこ

  • 算术燕子,关键词,演算原子,またはまたはビット単位子

详细については,バリアント条件式の演算子とオペランドを参照してください。

モデルモデルの时に,si金宝appmulinkは,バリアント制御が真正的。

既知の制限事項

  • 金宝app仿真软件の構造体内のバリアントオブジェクトは許可されません。

  • 金宝appSimulink銇銇銇銇銇銇銇銇銇銇銇銇銇銇銇銇銇銇銇銇銈尾

  • ブロック内のすべてのバリアント制御変数は同じソースから生じなければなりません。

バリアント制御をを指定方法

プロトタイプを作物するとき使使するオプション,モデルからコード生成するため必要なオプション,バリアントの选択までためのくのを切り替える。

指定 目的
スカラー変数 ラピッドプロトタイピング = = 1
金宝appsimulink.variant.オブジェクト バリアント条件の再利用 linearcontroller = 金宝appsimulink.variant('fuel == 2 && emis == 1');
金宝app仿真软件。参数オブジェクトまたはMATLAB変数 コード生成用のプリプロセッサ条件の生成 mode == 1,ここで模式金宝app仿真软件。参数オブジェクトまたはMATLAB変数
列挙型 条件値が整数ではなく意味のある名前として表されるため,コードの可読性が向上 级别==级别.Advanced.

関数金宝appSimulink.VariantManager.findVariantControlVarsを使用して,制御変数を見つけることができます。

ラピッドプロトタイピングのためののスカラー

スカラーのMATLAB変数は,まだモデルを作成しているときに,バリアントの選択のプロトタイプをすばやく作成できるようにします。これにより,バリアントの選択を有効にする式の開発よりも,バリアントの選択の作成により集中できます。

不同的子系统ブロックで表現された2つのバリアントの選択を含むモデルについて検討します。

不同的子系统ブロックの[ブロックパラメーター]ダイアログボックスで,バリアント制御を最も単纯な形式であるスカラー変数で指定できます。

このバリアント制御はそれ自体が条件であるため,线性控制器非线性控制器の両方向[条件]フィールドは(N / A)です。

スカラー変数Vを定義し,MATLABコマンドウィンドウでその値を1に設定することによって,バリアントの選択の1つを有効にできます。

v = 1;
この条件は,バリアントの選択线性控制器を有効にします。記号を使用した場合,バリアント制御は無視されます。同様に、バリアント制御が空である場合、選択は無視されます。

同様にVの値を2に変更すると,金宝app仿真软件はバリアントの選択非线性控制器を有効にします。

バリアント条件の再利用ののの金宝appsimulink.variant.オブジェクト

モデルが必要とするバリアントの選択を特定した後で,バリアントの選択のアクティブ化を制御するために複雑なバリアント条件を構築できます。バリアント条件を金宝appsimulink.variant.オブジェクトとして定义します。

金宝appsimulink.variant.オブジェクトは,共通のバリアント条件をモデル间で再利用できるようにし,复雑なバリアント条件式のカプセル化にも役立ちます。

バリアント制御がグローバルワークスペースで既に定義されている例について考えます。

V = 1;V = 2;

これらの制御を金宝appsimulink.variant.オブジェクトとしてカプセル化された条件式に変換できます。

linearcontroller 金宝app= simulink.variant('v == 1');nonlinearcontroller 金宝app= simulink.variant('v == 2');

次に不同的子系统ブロックの[ブロックパラメーター]ダイアログボックスで,これらの金宝appsimulink.variant.オブジェクトをバリアント制御として指定ますます。

今回は[条件]フィールドにはカプセル化されたバリアント条件が反映されています。この方法を使用すると,再利用可能な複雑なバリアント条件式を開発できます。

コード生成のための金宝app仿真软件。参数オブジェクトまたは马铃薯草変数

バリアント选択を含むモデルモデルのの生成する料,バリアントバリアント函数をmatlab変数または金宝app仿真软件。参数オブジェクトとして指定します。金宝app仿真软件。参数オブジェクトによって,コード生成に必要なの(データデータなど)ををできます。

VSSMODE = 金宝appSimulink.Parameter;VSSMODE。Value = 1; VSSMODE.DataType = 'int32'; VSSMODE.CoderInfo.StorageClass = 'Custom'; VSSMODE.CoderInfo.CustomStorageClass = 'ImportedDefine'; VSSMODE.CoderInfo.CustomAttributes.HeaderFile =... 'rtwdemo_importedmacros.h';
金宝app仿真软件。参数オブジェクトとして定义されたバリアント制御変数は,次のいずれかのストレージクラスをもつことができます。

  • ヘッダーファイルが指定された定义またはImportededefine.

  • Compilerflag.

  • SystemConstant (AUTOSAR)

  • データをマクロとして定义する独自のストレージクラス

スカラーのバリアント制御制御数を金宝app仿真软件。参数オブジェクトに変換することもできます。バリアント制御変数の仿金宝app真软件。参数オブジェクトへの変換を参照してください。

コードの可読性を高度ための列挙型

列挙型を使用し,バリアント制御値として使う整数に意味のある名前を与えます。

  1. MATLABエディターで,列挙型の値を意味のある名前にマップするクラスを定義します。

    Classdef.sldemo_mrv_CONTROLLER_TYPE <仿金宝app真软件。IntEnumType枚举非线性(1)秒_Order(2)结束结束
  2. これらのクラスに対して金宝appsimulink.variant.オブジェクトをグローバルワークスペース内に定義します。

    VE_NONLINEAR_CONTROLLER = 金宝appSimulink.Variant ...( 'E_CTRL == sldemo_mrv_CONTROLLER_TYPE.NONLINEAR')VE_SECOND_ORDER_CONTROLLER = Simulink.Variant ...( 'E_CTRL == sldemo_mrv_CONTROLLER_TYPE.SECOND_ORDER')VE_PROTOTYPE = Simulink.Variant ...('E_CURRENT_BUILD == sldemo_mrv_BUILD_TYPE.prototype')Ve_production = 金宝appsimulink.variant ...('e_current_build == sldemo_mrv_build_type.production')

    列挙列挙を使使と,整数ではなく値名前使さので,生成されコードがわかりやすくます。

バリアント条件の表示

[バリアント条件の凡例]を使用すると,モデルに関連付けられたバリアント条件を可視化できます。[バリアント条件の凡例]を表示するには,[デバッグ]タブで,(情報のオーバーレイ][バリアント凡例)を選択します。

メモ

[バリアント凡例)がが用できでき场合,[デバッグ]タブで,(情報のオーバーレイ][バリアント条件]を選択します。

既定の設定では[バリアント条件の凡例]には,バリアント条件の注釈,シミュレーション中のバリアント条件,およびバリアント条件変数のソースが表示されます。生成コードでバリアント条件を表示するには,[バリアント条件の凡例]ウィンドウで[生成さされたコードの条件の表示オプションを選択します。

[バリアント条件の凡例]で,ブロックのバリアント条件,V:C.のように注釈されます。ここでvはバリアントセマンティクスインジケーターで,cはバリアント条件のインデックスを表します。ハイパーリンクされたバリアントの注釈をクリックして,条件が該当するモデルの部分を表示できます。

バリアント条件をもつブロックにカーソルを合わせると,ツールヒントにバリアントの注釈とブロックに関連するバリアント条件が表示されます。バリアント条件の注釈のツールヒントを表示するには,[バリアント条件]オプションを选択しなければなりません。

凡例には,バリアント条件変数のソースも表示されます。変数はマスク、モデル、またはベース ワークスペースから生じる可能性があります。ブロック内で使用されるすべての変数は同じソースから生じなければなりません。モデル内で、異なるマスク ワークスペースから生じる変数は、同じ名前および異なる値をもつことができます。変数のソースを確認するには、ハイパーリンクされたワークスペースをクリックします。

メモ

[バリアントのアクティベーションのタイミング]パラメーターを[ブロック線図の更新)に設定すると,非アクティブな選択肢に対して表示される変数のソースが正しくならない可能性があります。これは,非アクティブな選択肢が信号属性の伝播の前に削除されるため,評価されないことが原因です。

[バリアント条件の凡例)をプログラムで表示するには,MATLABコマンドウィンドウで関数金宝appSimulink.VariantManager.VariantLegendを使使し。

バリアント条件式の演算子とオペランド

金宝appsimulinkはバリアント制御内条件式をし,アクティブなバリアントのを决定します。

  • スカラー変数

  • 构造体ではない,金宝app仿真软件。公共汽车オブジェクト以外のデータ型をもつ金宝app仿真软件。参数オブジェクト

  • 列挙型

  • グループ化に使用される小かっこ

式がブール値を评価评価する合,バリアント条件式にはmatlab演算子を含めることができ。一个およびBはは数を评価するするであり,xは定数の整数リテラルです。

プリプロセッサ条件の生成をサポートmatlab式 Cプリプロセッサ条件での等価な式
算术
  • A + B.

  • +一个

  • A + B.

  • 一个

  • A - B.

  • ——一个

  • A - B.

  • ——一个

A * B. A * B.
idivide(a,b)

A / B.

2番目のオペランド(B)の値が0の结合,动作は未です。

快速眼动(A, B)

% B

2番目のオペランド(B)の値が0の结合,动作は未です。

关键词

A = =

A = =

~ = B

一个= B !

A

A

A> B.

A> B.

A <= B.

A <= B.

> = B

> = B
〜A. !一个は整数ではない)
& & B & & B
一个| | B 一个| | B
ビット単位(一个Bの両方を定数の整数リテラルにすることはできない)

Bitand(A,B)

A和B

bitor (A, B)

A |B

bitxor (A, B)

A ^ B.

Bitcmp(a)

〜A.

bitshift (A, x)

< < x

比特(A,-X)

一个> > x

正味のバリアント条件

正味のバリアント条件は,ローカル条件とその祖先条件の合計です。

それぞれバリアント条件をV = = 1およびW = = 1とする,2つの単入力量(siso)变体源ブロック变体源および变体Source1をもつこのモデルslex_netvariantについて考えます。

このモデルをシミュレーションする場合,变体Source1ブロックと子系统ブロック内の他のブロックには,变体Source1ブロックから伝播されたローカル条件W = = 1があります。祖先祖先V = = 1は,变体源ブロックから子系统ブロックに伝播されます。そのため,变体Source1ブロックおよび子系统ブロック内の他のブロックの正味バリアント条件はv == 1 && w == 1となります。

关键词する

詳細