Main Content

信号ログ設定のオーバーライド

信号ログを使用すると、モデルにブロックを追加することなくシミュレーションから信号データを取得できます。詳細については、信号ログを使用した信号データの保存を参照してください。

モデルを開発する際に、特定のシミュレーション実行用の信号ログ設定をオーバーライドする場合があります。信号ログ セレクターまたはプログラムによるインターフェイスを使用して、Simulink® エディターでモデルを変更することなく、信号ログ プロパティをオーバーライドすることができます。信号ログ設定をオーバーライドすると、モデルの再コンパイルを回避し、メモリのオーバーヘッドを削減できます。

信号ログ設定をオーバーライドするには、次の 2 つの方法のいずれかまたは組み合わせを使用できます。

信号ログ設定をオーバーライドする利点

信号ログ プロパティをオーバーライドすることは、次の項目を実行する際に役立ちます。

  • ログ記録用にマークが付けられたほとんどの信号のログを無効にして、いくつかの信号にのみ焦点を当てる。信号の上位集合をログ記録用にマークしてから、それらの信号のさまざまな部分集合をログ記録用に選択できます。

  • いくつかの信号を信号ログ出力から除外する。

  • 信号の特定の信号ログ プロパティ (間引きなど) をオーバーライドする。

  • 複数のテスト ベクトルを実行する場合に必要なもののみを収集する。

信号ログ設定オーバーライドのスコープ

信号ログ設定をオーバーライドすると、指定したコンフィギュレーションがモデルに保存され、モデルのシミュレーション時にそれらのオーバーライド設定が使用されます。ただし、モデル内の各信号の [信号プロパティ] ダイアログ ボックスの信号ログ設定は変更されません。

信号をオーバーライドするようにログ モードで設定したモデルでは、そのモデルを閉じて再度開くと、設定した信号ログ オーバーライドが有効になります。モデルで信号ログ インジケーターを表示している場合、オーバーライドしたログ信号も含めてすべてのログ信号のインジケーターが表示されます。

メモ

信号ログ記録用にマークされた信号を含むモデルがラピッド アクセラレータ モードでシミュレートされている場合、信号ログ設定をオーバーライドし、モデルをラピッド アクセラレータ モードで再度シミュレートすると、モデルがリビルドされます。

信号ログ セレクターによる信号ログ設定のオーバーライド

信号ログ セレクターを使用すると、信号ログ設定を対話形式で表示してオーバーライドできます。

信号ログ セレクターを使用してオーバーライド設定を適用するには、[ログ モード][信号をオーバーライドする] に設定されていなければなりません。信号ログ設定をオーバーライドした後に [ログ モード][すべての信号をモデルで指定されたようにログを取る] に設定した場合、モデルで定義されているログ設定が信号ログ セレクターに表示されます。オーバーライド設定はグレー表示され、これらの設定をオーバーライドできないことを示します。オーバーライド設定をもう一度有効にするには、[ログ モード][信号をオーバーライドする] に設定します。特定の信号のログをオーバーライドするために信号ログ セレクターを使用することは、その信号の信号ログ インジケーターには影響しません。

  1. 信号ログ セレクターを開きます。[モデル化] タブで [モデル設定] をクリックして [コンフィギュレーション パラメーター] ダイアログ ボックスを開きます。次に、[データのインポート/エクスポート] ペインで [ログを取るために信号を設定] をクリックします。

    The Configure Signals to Log button in the Configuration Parameters dialog box.

    ヒント

    [ログを取るために信号を設定] ボタンを有効にするには、[信号のログ] コンフィギュレーション パラメーターを選択します。

  2. [ログ モード][信号をオーバーライドする] に設定します。

    信号ログ セレクターでは、一部の信号ログ設定をオーバーライドしてから [ログ モード][すべての信号をモデルで指定されたようにログを取る] に設定した場合、モデルで定義されているログ設定が信号ログ セレクターに表示されます。オーバーライド設定はグレー表示され、これらの設定をオーバーライドできないことを示します。オーバーライド設定をもう一度有効にするには、[ログ モード][信号をオーバーライドする] に設定します。特定の信号のログをオーバーライドするために信号ログ セレクターを使用することは、その信号の信号ログ インジケーターには影響しません。

    The Signal Logging Selector with the Logging Mode list expanded to show the Override signals option.

    メモ

    [信号をオーバーライドする] 設定は、モデル階層のすべてのレベルに影響します。この設定により、階層全体のすべての信号のログ記録がオフになる場合があります。設定を確認するには、[モデルの階層構造] ペインで、適切なノードを選択します。

  3. オーバーライドするログ信号を含むノードを表示します。必要に応じて、ノードを拡張するか、マスク サブシステムを表示するように [モデルの階層構造] ペインを構成します。信号ログ セレクターを使用したログ コンフィギュレーションの表示を参照してください。

  4. 信号ログ設定をオーバーライドします。

    モデルに参照モデルが含まれる場合は、[モデルの階層構造] ペインのチェック ボックスにノードに対応するモデルのオーバーライド コンフィギュレーションが示されます。

    チェック ボックス信号ログ コンフィギュレーション
    Filled box with white check mark

    最上位モデル ノードの場合、最上位モデルのすべてのログ信号のログが作成されます。

    Model モデル ブロック ノードの場合、そのブロックのモデル参照階層のすべてのログ信号のログが作成されます。

    Empty box

    最上位モデル ノードの場合、最上位モデルのすべてのログ信号のログの作成を無効にします。

    Model ブロック ノードの場合、そのブロックのモデル参照階層のすべての信号のログの作成を無効にします。

    Filled box with white dash

    最上位モデル ノードの場合、DataLogging 設定が有効になっているすべてのログ信号のログを作成します。

    Model ブロック ノードの場合、DataLogging 設定が有効になっているブロックの、モデル参照階層のすべてのログ信号のログを作成します。

信号ログ セレクターを使用して信号ログ設定をオーバーライドする方法の例については、Override Signal Logging Settingsを参照してください。

プログラムによる信号ログ設定のオーバーライド

MATLAB® コマンド ラインを使用すると、信号ログ設定をプログラムでオーバーライドできます。

信号ログ オーバーライド設定をプログラムで構成するには、次のオブジェクトの関数とプロパティを使用します。

  • Simulink.SimulationData.ModelLoggingInfo — モデルのオーバーライド設定。このオブジェクトは、信号ログ セレクター インターフェイス全体に対応します。

  • Simulink.SimulationData.SignalLoggingInfo — 特定の信号のオーバーライド設定。このオブジェクトは、信号ログ セレクターのログ プロパティの表にある行に対応します。

  • Simulink.SimulationData.LoggingInfoSimulink.SimulationData.SignalLoggingInfo オブジェクトの LoggingInfo プロパティのオーバーライド設定。このオブジェクトは、信号ログ セレクターのログ プロパティの表にある行の編集可能な列に対応します。

モデルの信号ログ オーバーライド ステータスを照会するには、DataLoggingOverride モデル パラメーターを使用します。

get_param(mdl,"DataLoggingOverride")

信号ログ オーバーライド コンフィギュレーションを適用するには、関数 set_paramDataLoggingOverride モデル パラメーターを使用します。

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 つの信号がログ記録用にマークされています。ログ記録用にマークされた信号のうち、COUNTERBUSINCREMENTBUS、および 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.

参考

オブジェクト

ツール

関連するトピック