バリアントを含む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真软件。参数オブジェクトへの変換を参照してください。
列挙型を使用し,バリアント制御値として使う整数に意味のある名前を与えます。
MATLABエディターで,列挙型の値を意味のある名前にマップするクラスを定義します。
Classdef.sldemo_mrv_CONTROLLER_TYPE <仿金宝app真软件。IntEnumType枚举非线性(1)秒_Order(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. |
idivide(a,b) |
2番目のオペランド( |
快速眼动(A, B) |
2番目のオペランド( |
关键词 | |
|
A = = |
|
一个= B ! |
|
A |
|
A> B. |
|
A <= B. |
|
> = B |
论 | |
〜A. |
! (一个 は整数ではない) |
& & B |
& & B |
一个| | B |
一个| | B |
ビット単位(一个 とB の両方を定数の整数リテラルにすることはできない) |
|
|
A和B |
|
A |B |
|
A ^ B. |
|
〜A. |
|
< < x |
|
一个> > x |
正味のバリアント条件は,ローカル条件とその祖先条件の合計です。
それぞれバリアント条件をV = = 1
およびW = = 1
とする,2つの単入力量(siso)变体源ブロック变体源
および变体Source1
をもつこのモデルslex_netvariant
について考えます。
このモデルをシミュレーションする場合,变体Source1
ブロックと子系统ブロック内の他のブロックには,变体Source1
ブロックから伝播されたローカル条件W = = 1
があります。祖先祖先V = = 1
は,变体源
ブロックから子系统ブロックに伝播されます。そのため,变体Source1
ブロックおよび子系统ブロック内の他のブロックの正味バリアント条件はv == 1 && w == 1
となります。