信号ログ設定のオーバーライド
信号ログを使用すると、モデルにブロックを追加することなくシミュレーションから信号データを取得できます。詳細については、信号ログを使用した信号データの保存を参照してください。
モデルを開発する際に、特定のシミュレーション実行用の信号ログ設定をオーバーライドする場合があります。信号ログ セレクターまたはプログラムによるインターフェイスを使用して、Simulink® エディターでモデルを変更することなく、信号ログ プロパティをオーバーライドすることができます。信号ログ設定をオーバーライドすると、モデルの再コンパイルを回避し、メモリのオーバーヘッドを削減できます。
信号ログ設定をオーバーライドするには、次の 2 つの方法のいずれかまたは組み合わせを使用できます。
信号ログ設定をオーバーライドする利点
信号ログ プロパティをオーバーライドすることは、次の項目を実行する際に役立ちます。
ログ記録用にマークが付けられたほとんどの信号のログを無効にして、いくつかの信号にのみ焦点を当てる。信号の上位集合をログ記録用にマークしてから、それらの信号のさまざまな部分集合をログ記録用に選択できます。
いくつかの信号を信号ログ出力から除外する。
信号の特定の信号ログ プロパティ (間引きなど) をオーバーライドする。
複数のテスト ベクトルを実行する場合に必要なもののみを収集する。
信号ログ設定オーバーライドのスコープ
信号ログ設定をオーバーライドすると、指定したコンフィギュレーションがモデルに保存され、モデルのシミュレーション時にそれらのオーバーライド設定が使用されます。ただし、モデル内の各信号の [信号プロパティ] ダイアログ ボックスの信号ログ設定は変更されません。
信号をオーバーライドするようにログ モードで設定したモデルでは、そのモデルを閉じて再度開くと、設定した信号ログ オーバーライドが有効になります。モデルで信号ログ インジケーターを表示している場合、オーバーライドしたログ信号も含めてすべてのログ信号のインジケーターが表示されます。
メモ
信号ログ記録用にマークされた信号を含むモデルがラピッド アクセラレータ モードでシミュレートされている場合、信号ログ設定をオーバーライドし、モデルをラピッド アクセラレータ モードで再度シミュレートすると、モデルがリビルドされます。
信号ログ セレクターによる信号ログ設定のオーバーライド
信号ログ セレクターを使用すると、信号ログ設定を対話形式で表示してオーバーライドできます。
信号ログ セレクターを使用してオーバーライド設定を適用するには、[ログ モード] が [信号をオーバーライドする]
に設定されていなければなりません。信号ログ設定をオーバーライドした後に [ログ モード] を [すべての信号をモデルで指定されたようにログを取る]
に設定した場合、モデルで定義されているログ設定が信号ログ セレクターに表示されます。オーバーライド設定はグレー表示され、これらの設定をオーバーライドできないことを示します。オーバーライド設定をもう一度有効にするには、[ログ モード] を [信号をオーバーライドする]
に設定します。特定の信号のログをオーバーライドするために信号ログ セレクターを使用することは、その信号の信号ログ インジケーターには影響しません。
信号ログ セレクターを開きます。[モデル化] タブで [モデル設定] をクリックして [コンフィギュレーション パラメーター] ダイアログ ボックスを開きます。次に、[データのインポート/エクスポート] ペインで [ログを取るために信号を設定] をクリックします。
ヒント
[ログを取るために信号を設定] ボタンを有効にするには、[信号のログ] コンフィギュレーション パラメーターを選択します。
[ログ モード] を
[信号をオーバーライドする]
に設定します。信号ログ セレクターでは、一部の信号ログ設定をオーバーライドしてから [ログ モード] を
[すべての信号をモデルで指定されたようにログを取る]
に設定した場合、モデルで定義されているログ設定が信号ログ セレクターに表示されます。オーバーライド設定はグレー表示され、これらの設定をオーバーライドできないことを示します。オーバーライド設定をもう一度有効にするには、[ログ モード] を[信号をオーバーライドする]
に設定します。特定の信号のログをオーバーライドするために信号ログ セレクターを使用することは、その信号の信号ログ インジケーターには影響しません。メモ
[信号をオーバーライドする]
設定は、モデル階層のすべてのレベルに影響します。この設定により、階層全体のすべての信号のログ記録がオフになる場合があります。設定を確認するには、[モデルの階層構造] ペインで、適切なノードを選択します。オーバーライドするログ信号を含むノードを表示します。必要に応じて、ノードを拡張するか、マスク サブシステムを表示するように [モデルの階層構造] ペインを構成します。信号ログ セレクターを使用したログ コンフィギュレーションの表示を参照してください。
信号ログ設定をオーバーライドします。
モデルに参照モデルが含まれる場合は、[モデルの階層構造] ペインのチェック ボックスにノードに対応するモデルのオーバーライド コンフィギュレーションが示されます。
チェック ボックス 信号ログ コンフィギュレーション 最上位モデル ノードの場合、最上位モデルのすべてのログ信号のログが作成されます。
Model モデル ブロック ノードの場合、そのブロックのモデル参照階層のすべてのログ信号のログが作成されます。
最上位モデル ノードの場合、最上位モデルのすべてのログ信号のログの作成を無効にします。
Model ブロック ノードの場合、そのブロックのモデル参照階層のすべての信号のログの作成を無効にします。
最上位モデル ノードの場合、
DataLogging
設定が有効になっているすべてのログ信号のログを作成します。Model ブロック ノードの場合、
DataLogging
設定が有効になっているブロックの、モデル参照階層のすべてのログ信号のログを作成します。
信号ログ セレクターを使用して信号ログ設定をオーバーライドする方法の例については、Override Signal Logging Settingsを参照してください。
プログラムによる信号ログ設定のオーバーライド
MATLAB® コマンド ラインを使用すると、信号ログ設定をプログラムでオーバーライドできます。
信号ログ オーバーライド設定をプログラムで構成するには、次のオブジェクトの関数とプロパティを使用します。
Simulink.SimulationData.ModelLoggingInfo
— モデルのオーバーライド設定。このオブジェクトは、信号ログ セレクター インターフェイス全体に対応します。Simulink.SimulationData.SignalLoggingInfo
— 特定の信号のオーバーライド設定。このオブジェクトは、信号ログ セレクターのログ プロパティの表にある行に対応します。Simulink.SimulationData.LoggingInfo
—Simulink.SimulationData.SignalLoggingInfo
オブジェクトのLoggingInfo
プロパティのオーバーライド設定。このオブジェクトは、信号ログ セレクターのログ プロパティの表にある行の編集可能な列に対応します。
モデルの信号ログ オーバーライド ステータスを照会するには、DataLoggingOverride
モデル パラメーターを使用します。
get_param(mdl,"DataLoggingOverride")
信号ログ オーバーライド コンフィギュレーションを適用するには、関数 set_param
で DataLoggingOverride
モデル パラメーターを使用します。
set_param(mdl,"DataLoggingOverride",mdlInfoObject)
ログ信号を含むシステムの種類を制御できます。既定では、Simulink.SimulationData.ModelLoggingInfo
オブジェクトは以下のログ信号を含みます。
ライブラリ
マスク サブシステム
参照モデル
アクティブなバリアント
以下のセクションでは、一般的な信号ログ コンフィギュレーション タスクをプログラムで実行する方法について説明しています。
その他の例については、以下を参照してください。
ログ信号を含むモデル ログ オーバーライド オブジェクトの作成
モデル sldemo_mdlref_bus
のモデル ログ オーバーライド オブジェクトを作成し、そのオブジェクトにモデル内の各ログ信号を自動的に追加できます。モデル sldemo_mdlref_bus
には、ログ記録用にマークされた信号が 4 つあります。
mdl = 'sldemo_mdlref_bus';
open_system(mdl)
mdlInfo = Simulink.SimulationData.ModelLoggingInfo.createFromModel(mdl)
mdlInfo = ModelLoggingInfo with properties: Model: 'sldemo_mdlref_bus' LoggingMode: 'OverrideSignals' LogAsSpecifiedByModels: {} Signals: [1x4 Simulink.SimulationData.SignalLoggingInfo]
LoggingMode
プロパティは 'OverrideSignals'
に設定され、Signals
プロパティで指定された信号に限定してログを作成するようモデル ログ オーバーライド オブジェクトを設定します。
モデル オーバーライド オブジェクト設定を適用します。モデルを保存すると設定が保存されます。
set_param(mdl,'DataLoggingOverride',mdlInfo);
モデル ログ オーバーライド オブジェクトのログ モードの設定
関数 setLogAsSpecifiedInModel
を使用して、モデルで指定されている信号ログ設定をオーバーライドできます。たとえば、モデルの階層構造内の最上位モデルのみや参照モデルのみをログに記録できます。モデル sldemo_mdlref_bus
には、モデル sldemo_mdlref_counter_bus
を参照する CounterA
という名前の Model ブロックが含まれています。合計で 4 つの信号がログ記録用にマークされています。ログ記録用にマークされた信号のうち、COUNTERBUS
、INCREMENTBUS
、および OUTERDATA
の 3 つは最上位モデルにあります。ログ記録用にマークされたもう 1 つの信号 INNERDATA
は参照モデルにあります。
mdl = 'sldemo_mdlref_bus'; mdlInner = 'sldemo_mdlref_bus/CounterA'; open_system(mdl)
ログ モードを Signals
プロパティで指定したオーバーライド設定に設定したときにいずれの信号もログに記録しないように、空の Simulink.SimulationData.ModelLoggingInfo
オブジェクトを作成します。
mdlInfo = Simulink.SimulationData.ModelLoggingInfo(mdl);
関数 setLogAsSpecifiedInModel
を使用して、最上位モデルの信号のみをそのモデルで指定されているログ設定を使用してログに記録できます。モデルでの指定に従って信号をログに記録するように外側のモデルを設定します。さらに、オーバーライド設定を使用するように内側のモデルを設定します。Signals
プロパティのベクトルが空であるため、オーバーライド設定が適用されているときはいずれの信号もログに記録されません。
mdlInfo = setLogAsSpecifiedInModel(mdlInfo,mdl,true); mdlInfo = setLogAsSpecifiedInModel(mdlInfo,mdlInner,false);
関数 getLogAsSpecifiedInModel
でログ モードが返されます。
outerLogMode = getLogAsSpecifiedInModel(mdlInfo,mdl)
outerLogMode = logical
1
innerLogMode = getLogAsSpecifiedInModel(mdlInfo,mdlInner)
innerLogMode = logical
0
モデル オーバーライド オブジェクト設定を適用します。その後、モデルをシミュレートします。最上位モデルのログ記録用にマークされた信号のみがログに記録されます。
set_param(mdl,'DataLoggingOverride',mdlInfo);
sim(mdl);
topOut
topOut = Simulink.SimulationData.Dataset 'topOut' with 3 elements Name BlockPath ____________ _____________________________________ 1 [1x1 Signal] COUNTERBUS sldemo_mdlref_bus/Concatenate 2 [1x1 Signal] OUTERDATA sldemo_mdlref_bus/CounterA 3 [1x1 Signal] INCREMENTBUS sldemo_mdlref_bus/IncrementBusCreator - Use braces { } to access, modify, or add elements using index.
また、関数 setLogAsSpecifiedInModel
を使用して、参照モデルの信号のみをそのモデルで指定されているログ設定を使用してログに記録することもできます。オーバーライド設定を使用するように外側のモデルを設定します。さらに、モデルでの指定に従って信号をログに記録するように内側のモデルを設定します。
mdlInfo = setLogAsSpecifiedInModel(mdlInfo,mdl,false); mdlInfo = setLogAsSpecifiedInModel(mdlInfo,mdlInner,true);
最上位モデルと内側のモデルのログ モードが変更されたことを確認するには、関数 getLogAsSpecifiedInModel
を使用します。
outerLogMode = getLogAsSpecifiedInModel(mdlInfo,mdl)
outerLogMode = logical
0
innerLogMode = getLogAsSpecifiedInModel(mdlInfo,mdlInner)
innerLogMode = logical
1
モデル オーバーライド オブジェクト設定を適用します。その後、モデルをシミュレートします。今回は INNERDATA
信号のみがログに記録されます。
set_param(mdl,'DataLoggingOverride',mdlInfo);
sim(mdl);
topOut
topOut = Simulink.SimulationData.Dataset 'topOut' with 1 element Name BlockPath _________ ________________________________________ 1 [1x1 Signal] INNERDATA ...erA|sldemo_mdlref_counter_bus/COUNTER - Use braces { } to access, modify, or add elements using index.
参考
オブジェクト
Simulink.SimulationData.ModelLoggingInfo
|Simulink.SimulationData.SignalLoggingInfo
|Simulink.SimulationData.LoggingInfo