信号ログ設定のオーバーライド
信号ログ設定をオーバーライドする利点
モデルを開発する際に、特定のシミュレーション実行用の信号ログ設定をオーバーライドする場合があります。Simulink® エディターでモデルを変更することなく、信号ログ プロパティをオーバーライドすることができます。
メモリのオーバーヘッドを削減し、シミュレーションのログ結果の解析を容易にするには、信号ログ プロパティをオーバーライドします。信号ログ設定をオーバーライドすると、モデルの再コンパイルを避けることができます。
信号ログ プロパティをオーバーライドすることは、次の項目を実行する際に役立ちます。
ログ記録用にマークが付けられたほとんどの信号のログを無効にして、いくつかの信号にのみ焦点を当てる。ログ記録用の信号のスーパーセットをマークしてから、ログ記録用の信号のさまざまなサブセットを選択することができます。
いくつかの信号を信号ログ出力から除外する。
信号の特定の信号ログ プロパティ (間引きなど) をオーバーライドする。
複数のテスト ベクトルを実行する場合に必要なもののみを収集する。
信号ログ設定をオーバーライドするための 2 つのインターフェイス
次の 2 つのインターフェイスのいずれかを使用して、信号ログ設定をオーバーライドします。
2 つのインターフェイスの組み合わせを使用することができます。オーバーライド設定の保存時に、信号ログ セレクターによって Simulink.SimulationData.ModelLoggingInfo
オブジェクトが作成されます。コマンド ライン インターフェイスには、信号ログ セレクター インターフェイスに対応する名前をもつプロパティがあります。たとえば、Simulink.SimulationData.ModelLoggingInfo
クラスには LoggingMode
プロパティがあります。このプロパティは信号ログ セレクターの [ログ モード] パラメーターに対応します。
信号ログ設定オーバーライドのスコープ
信号ログ設定をオーバーライドする場合、Simulink はモデルのシミュレーション時にそのオーバーライド設定を使用します。
Simulink は、指定した信号ログ オーバーライド コンフィギュレーションをモデルに保存します。ただし、Simulink はモデル内の各信号の [信号プロパティ] ダイアログ ボックスの信号ログ設定を変更しません。
信号ログ セレクターでは、一部の信号ログ設定をオーバーライドして、[ログ モード] を [すべての信号をモデルで指定されたようにログを取る]
に設定した場合、モデルで設定されたログ設定が信号ログ セレクターに表示されます。オーバーライド設定はグレー表示され、これらの設定をオーバーライドできないことを示します。オーバーライド設定をもう一度有効にするには、[ログ モード] を [信号をオーバーライドする]
に設定します。特定の信号のログをオーバーライドするために信号ログ セレクターを使用することは、その信号の信号ログ インジケーターには影響しません。
モデルを一度閉じてからもう一度開くと、そのモデルのログ モードを、信号をオーバーライドするに設定してある場合、ログ設定のオーバーライドが有効になります。モデルで信号ログ インジケーターを表示している場合、オーバーライドしたログ信号も含めてすべてのログ信号のインジケーターが表示されます。
メモ
Simulink は、以下の状況でモデルをリビルドします。
モデルに、信号ログ用にマークされた 1 つ以上の信号が含まれる。
ラピッド アクセラレータ モードでモデルがシミュレートされる。
信号ログ コンフィギュレーションを変更するために、信号ログ セレクターまたは MATLAB® コマンド ラインが使用される。
ラピッド アクセラレータ モードでモデルが再シミュレートされる。
信号ログ セレクターによる信号ログ設定のオーバーライド
次のいずれかの方法を使用して、信号ログ セレクターを開きます。
[コンフィギュレーション パラメーター] 、 [データのインポート/エクスポート] ペインで、[ログを取るために信号を設定] ボタンをクリックします。
ヒント
[ログを取るために信号を設定] ボタンを有効にするには、[信号のログ] コンフィギュレーション パラメーターを選択します。
Model ブロックを含むモデルの場合、次の方法も使用できます。
Simulink エディターで Model ブロックを右クリックします。
コンテキスト メニューで、[参照された信号のログ] を選択します。
[ログ モード] を
[信号をオーバーライドする]
に設定します。メモ
[信号をオーバーライドする]
設定は、モデル階層のすべてのレベルに影響します。この設定の結果、既存の設定に基づいて、階層全体の信号のログ作成が無効になる場合があります。設定を確認するには、[モデルの階層構造] ペインで、適切なノードを選択します。オーバーライドするログ信号を含むノードを表示します。必要に応じて、ノードを拡張するか、マスク サブシステムを表示するように [モデルの階層構造] ペインを構成します。信号ログ セレクターを使用したログ コンフィギュレーションの表示を参照してください。
信号ログ設定をオーバーライドします。ご使用のモデルでモデル参照を使用しているかどうかに応じて、以下のいずれかの方法を使用します。
ヒント
信号ログ セレクターから [コンフィギュレーション パラメーター] 、 [データのインポート/エクスポート] ペインを開くには、 ボタンを使用します。
モデル参照なしのモデル: 信号ログ設定のオーバーライド
モデルがモデル参照を使用しない (つまり、モデルに Model ブロックが含まれない) 場合、次の手順に従って、信号ログ設定をオーバーライドします。
信号ログ セレクターを開きます。[コンフィギュレーション パラメーター] 、 [データのインポート/エクスポート] ペインで、[ログを取るために信号を設定] ボタンをクリックします。
必要に応じて、信号のログ を選択して、[ログを取るために信号を設定] ボタンを選択します。
[ログ モード] を
[信号をオーバーライドする]
に設定します。オーバーライドするログ信号を含むノードを表示します。必要に応じて、ノードを拡張するか、マスク サブシステムを表示するように [モデルの階層構造] ペインを構成します。信号ログ セレクターを使用したログ コンフィギュレーションの表示を参照してください。
[コンテンツ] ペイン テーブルで、ログ設定をオーバーライドする信号を選択します。
ログ設定のオーバーライド:
信号のログ生成を無効にするには、その信号の
DataLogging
チェック ボックスをクリアします。他の信号ログ設定 (間引きなど) をオーバーライドするには、
DataLogging
チェック ボックスが選択されていることを確認します。次に、該当する列の値を編集します。
モデル参照を使用するモデル信号ログ設定のオーバーライド
モデルでモデル参照を使用する (つまり、モデルに 1 つ以上の Model ブロックが含まれる) 場合、次の手順のいずれか 1 つ以上を使用して、信号ログ設定をオーバーライドします。
すべてのログ信号のログを有効にする. 既定では、Simulink は、モデル参照階層全体のログ信号を含めて、1 つのモデルのすべてのログを生成します。
モデル参照階層内の最上位モデルまたは最上位 Model ブロック内の任意のログ信号でログ生成が無効になっている場合、[モデルの階層構造] ペインで、そのノードの左のチェック ボックスは以下のようになります。
一部の信号に対してログ生成が無効になっていると、塗りつぶし (
) になります。
すべての信号に対してログ生成が無効になっていると、空 (
) になります。
ノードのすべてのログ信号のログ生成を有効にするには、次の手順に従います。
信号ログ セレクターを開きます。[コンフィギュレーション パラメーター] 、 [データのインポート/エクスポート] ペインで、[ログを取るために信号を設定] ボタンをクリックします。
[ログ モード] を
[信号をオーバーライドする]
に設定します。オーバーライドするログ信号を含むノードを表示します。必要に応じて、ノードを拡張するか、マスク サブシステムを表示するように [モデルの階層構造] ペインを構成します。信号ログ セレクターを使用したログ コンフィギュレーションの表示を参照してください。
[モデルの階層構造] ペインで、ノードの左のチェック ボックスを選択し、チェック ボックスにチェック マーク (
) が付くようにします。
最上位モデルの場合、ログ生成は最上位モデル内のすべてのログ信号に対して有効になっていますが、モデル参照階層内のログ信号に対しては有効になっていません。
モデル参照階層の最上位にある Model ブロックの場合、ログ生成は選択した参照モデルのモデル参照階層全体に対して有効になっています。
ノードのすべての信号に対するログの無効化. モデル ノード内の信号に対して信号ログが有効になっている場合、[モデルの階層構造] ペインで、ノードの左のチェック ボックスは以下のようになります。
一部の信号に対してログ生成が有効になっていると、塗りつぶし (
) になります。
すべての信号に対してログ生成が有効になっていると、チェックマーク入り (
) になります。
モデルのノード内のすべてのログ信号に対してログ生成を無効にするには、次の手順に従います。
信号ログ セレクターを開きます。[コンフィギュレーション パラメーター] 、 [データのインポート/エクスポート] ペインで、[ログを取るために信号を設定] ボタンをクリックします。
[ログ モード] を
[信号をオーバーライドする]
に設定します。オーバーライドするログ信号を含むノードを表示します。必要に応じて、ノードを拡張するか、マスク サブシステムを表示するように [モデルの階層構造] ペインを構成します。信号ログ セレクターを使用したログ コンフィギュレーションの表示を参照してください。
[モデルの階層構造] ペインで、ノードの左のチェック ボックスをクリアし、チェック ボックスが空 (
) になるようにします。
最上位モデルの場合、ログ生成は最上位モデル内のすべてのログ信号に対して無効になっていますが、モデル参照階層内のログ信号に対しては無効になっていません。
モデル参照階層の最上位にある Model ブロックの場合、ログ生成は選択した参照モデルのモデル参照階層全体に対して無効になっています。
信号のサブセットの信号ログのオーバーライド. モデル ノード内のいくつかの (全部ではない) ログ信号のログを生成するには、次の手順に従います。
信号ログ セレクターを開きます。[コンフィギュレーション パラメーター] 、 [データのインポート/エクスポート] ペインで、[ログを取るために信号を設定] ボタンをクリックします。
[ログ モード] を
[信号をオーバーライドする]
に設定します。オーバーライドするログ信号を含むノードを表示します。必要に応じて、ノードを拡張するか、マスク サブシステムを表示するように [モデルの階層構造] ペインを構成します。信号ログ セレクターを使用したログ コンフィギュレーションの表示を参照してください。
[モデルの階層構造] ペインで、一部の信号に対してログ生成が無効になっている場合に、最上位モデルまたは Model ブロックのチェック ボックスが塗りつぶし (
) になっていて、すべての信号に対してログ生成が無効になっている場合に、チェック ボックスが空 (
) になっていることを確認します。チェック ボックスをクリックして、さまざまな状態を切り替えます。
[コンテンツ] ペイン テーブルのログを生成する信号で
DataLogging
列のチェック ボックスを選択します。複数の信号でログ生成を有効にするには、Shift キーまたは Ctrl キーを押しながら、一連の信号または個々の信号を選択します。強調表示した信号のいずれかの
DataLogging
列のチェック ボックスを選択します。
他の信号ログ プロパティのオーバーライド. 信号の DataLogging
プロパティの設定をオーバーライドするのに加えて、間引きなどの他の信号ログ プロパティをオーバーライドすることができます。
信号ログ セレクターを開きます。[コンフィギュレーション パラメーター] 、 [データのインポート/エクスポート] ペインで、[ログを取るために信号を設定] ボタンをクリックします。
[ログ モード] を
[信号をオーバーライドする]
に設定します。オーバーライドするログ信号を含むノードを表示します。必要に応じて、ノードを拡張するか、マスク サブシステムを表示するように [モデルの階層構造] ペインを構成します。信号ログ セレクターを使用したログ コンフィギュレーションの表示を参照してください。
[モデルの階層構造] ペインで、一部の信号に対してログ生成が無効になっている場合に、最上位モデルまたは Model ブロックのチェック ボックスが塗りつぶし (
) になっていて、すべての信号に対してログ生成が無効になっている場合に、チェック ボックスが空 (
) になっていることを確認します。チェック ボックスをクリックして、さまざまな状態を切り替えます。
[コンテンツ] ペイン テーブルのログをオーバーライドする信号で
DataLogging
列のチェック ボックスを選択してログ生成を有効にします。複数の信号でログ生成を有効にするには、Shift キーまたは Ctrl キーを押しながら、一連の信号または個々の信号を選択します。強調表示した信号のいずれかの
DataLogging
列のチェック ボックスを選択します。[コンテンツ] ペイン テーブルで、
DecimateData
やDecimation
などのプロパティの設定を変更します。
MATLAB からの信号ログ設定のオーバーライド
信号ログ設定をオーバーライドするための MATLAB コマンド ライン インターフェイスは以下のとおりです。
DataLoggingOverride
モデル パラメーター — モデルの信号ログ オーバーライドの値を表示または設定するために使用します。以下はクラスです。
— モデルの信号ログ オーバーライド設定を指定します。このクラスは信号ログ セレクター インターフェイス全体に対応します。Simulink.SimulationData.ModelLoggingInfo
— 特定信号の設定をオーバーライドします。このクラスは信号ログ セレクターのログ プロパティの表の行に対応します。Simulink.SimulationData.SignalLoggingInfo
— 間引きなどの信号ログ設定をオーバーライドします。このクラスは、信号ログ セレクターのログ プロパティの表にある行の編集可能な列に対応します。Simulink.SimulationData.LoggingInfo
信号ログ オーバーライド ステータスのモデルを照会するには、DataLoggingOverride
パラメーターを使用します。
コマンド ラインから信号ログを構成するには、上記の 3 つのクラスのメソッドとプロパティを使用します。設定を適用するには、set_param
を DataLoggingOverride
モデル パラメーターとともに使用します。
次の節では、一般的な信号ログ コンフィギュレーション タスクを実行するための、コマンド ライン インターフェイスの使用方法について説明します。
モデル ログ情報オブジェクトの作成
信号ログ設定をオーバーライドするためのコマンド ライン インターフェイスを使用するには、最初に Simulink.SimulationData.ModelLoggingInfo
オブジェクトを作成します。たとえば、次のコマンドを使用して、ex_bus_logging
モデルのモデル ログ オーバーライド オブジェクトを作成し、モデルの各ログ信号をそのオブジェクトに自動的に追加します。
open_system(docpath(fullfile(docroot, 'toolbox', 'simulink', ... 'examples', 'ex_bus_logging'))); open_system(docpath(fullfile(docroot, 'toolbox', 'simulink', ... 'examples', 'ex_mdlref_counter_bus'))); mi = Simulink.SimulationData.ModelLoggingInfo.createFromModel(... 'ex_bus_logging')
mi = ModelLoggingInfo with properties: Model: 'ex_bus_logging' LoggingMode: 'OverrideSignals' LogAsSpecifiedByModels: {} Signals: [1x4 Simulink.SimulationData.SignalLoggingInfo]
LoggingMode
プロパティは OverrideSignals
に設定され、Signals
プロパティで指定された信号に限定してログを作成するようモデル ログ オーバーライド オブジェクトを設定します。
モデル オーバーライド オブジェクト設定を適用するには、以下のようにします。
set_param(ex_bus_logging, 'DataLoggingOverride', mi);
Simulink では、モデルを保存すると設定が保存されます。
ログ信号を含むシステムの種類を制御できます。既定の設定では、Simulink.SimulationData.ModelLoggingInfo
オブジェクトは以下のログ信号を含みます。
ライブラリ
マスク サブシステム
参照モデル
アクティブなバリアント
そのほかに、Simulink.SimulationData.ModelLoggingInfo
コンストラクターを使用して、各信号に Simulink.SimulationData.SignalLoggingInfo
オブジェクトを指定することができます。モデルに有効な信号ログ設定を指定したことを確認するには、モデルに verifySignalAndModelPaths
メソッドと Simulink.SimulationData.ModelLoggingInfo
オブジェクトを使用します。
ログを作成するモデルの指定
モデルおよびすべての参照モデルに指定された信号ログ設定を使用するか、またはこれらの設定をオーバーライドするかどうかを指定するには、Simulink.SimulationData.ModelLoggingInfo
オブジェクトの LoggingMode
プロパティを使用します。
最上位モデルと参照モデルでオーバーライド信号ログ設定を使用するかまたはモデルによって指定された信号ログ設定を使用するかを制御できます。
のドキュメンテーションを参照してください。Simulink.SimulationData.ModelLoggingInfo
次の例は、最上位モデルとすべての参照モデルで指定されるように、すべての信号のログを作成する方法を表示します。信号ログ出力は topOut
に保存されます。
open_system(docpath(fullfile(docroot, 'toolbox', 'simulink', ... 'examples', 'ex_bus_logging'))); open_system(docpath(fullfile(docroot, 'toolbox', 'simulink', ... 'examples', 'ex_mdlref_counter_bus'))); mi = Simulink.SimulationData.ModelLoggingInfo... ('ex_bus_logging'); mi.LoggingMode = 'LogAllAsSpecifiedInModel'
mi = ModelLoggingInfo with properties: Model: 'ex_bus_logging' LoggingMode: 'LogAllAsSpecifiedInModel' LogAsSpecifiedByModels: {} Signals: []
モデル オーバーライド オブジェクト設定を適用するには、以下のようにします。
set_param(ex_bus_logging, 'DataLoggingOverride', mi);
次の例は、最上位モデルの信号のみのログを作成する方法を示します。
open_system(docpath(fullfile(docroot, 'toolbox', 'simulink', ... 'examples', 'ex_bus_logging'))); open_system(docpath(fullfile(docroot, 'toolbox', 'simulink', ... 'examples', 'ex_mdlref_counter_bus'))); mi = Simulink.SimulationData.ModelLoggingInfo... ('ex_bus_logging'); mi.LoggingMode = 'OverrideSignals'; mi = mi.setLogAsSpecifiedInModel('ex_bus_logging',true);
モデル オーバーライド オブジェクト設定を適用するには、以下のようにします。
set_param(ex_bus_logging,'DataLoggingOverride', mi);
Simulink では、モデルを保存すると設定が保存されます。
信号のサブセットのログ作成
ログ信号の数が限定されるシンプルなモデルの場合に可能な方法として、空の Simulink.SimulationData.ModelDataLogInfo
オブジェクトを作成します。さらに、ログを作成する信号ごとに Simulink.SimulationData.SignalLoggingInf
オブジェクトを作成して、このオブジェクトをモデル ログ情報オブジェクトに割り当てます。
open_system(docpath(fullfile(docroot, 'toolbox', 'simulink', ... 'examples', 'ex_bus_logging'))); open_system(docpath(fullfile(docroot, 'toolbox', 'simulink', ... 'examples', 'ex_mdlref_counter_bus'))); mdl = 'ex_bus_logging'; blk = 'ex_bus_logging/IncrementBusCreator'; blkPort = 1; load_system(mdl); ov = Simulink.SimulationData.ModelLoggingInfo(mdl); so = Simulink.SimulationData.SignalLoggingInfo(blk,blkPort); ov.Signals(1) = so; % apply this object so the model set_param(mdl,'DataLoggingOverride',ov); % Simulate sim(mdl); % observe that only the signal topOut
モデル オーバーライド オブジェクト設定を適用するには、以下のようにします。
set_param(mdl, 'DataLoggingOverride', ov);
Simulink では、モデルを保存すると設定が保存されます。
モデル参照を使用する複雑なモデルの場合、ログを作成するログ信号のサブセットを指定するには、findSignal
メソッドと Simulink.SimulationData.ModelLoggingInfo
オブジェクトを使用する方法を検討してください。たとえば、参照される参照モデルのインスタンスから 1 つの信号のみのログを作成するには、次のようにします。
open_system(docpath(fullfile(docroot, 'toolbox', 'simulink', ... 'examples', 'ex_bus_logging'))); open_system(docpath(fullfile(docroot, 'toolbox', 'simulink', ... 'examples', 'ex_mdlref_counter_bus'))); mi = Simulink.SimulationData.ModelLoggingInfo.createFromModel(... 'ex_bus_logging'); pos = mi.findSignal({'ex_bus_logging/CounterA' ... 'ex_mdlref_counter_bus/Bus Creator'}, 1)
pos = 4
for idx=1:length(mi.Signals) mi.Signals(idx).LoggingInfo.DataLogging = (idx == pos); end
モデル オーバーライド オブジェクト設定を適用するには、以下のようにします。
set_param(ex_bus_logging,'DataLoggingOverride', mi);
Simulink では、モデルを保存すると設定が保存されます。
他の信号ログ プロパティのオーバーライド
信号の DataLogging
プロパティの設定をオーバーライドするのに加えて、間引きなどの他の信号ログ プロパティをオーバーライドすることができます。
プロパティを使用して、信号ログ プロパティをオーバーライドします。以下の例は、間引きオーバーライド設定の設定方法を示します。Simulink.SimulationData.LoggingInfo
open_system(docpath(fullfile(docroot, 'toolbox', 'simulink', ... 'examples', 'ex_bus_logging'))); open_system(docpath(fullfile(docroot, 'toolbox', 'simulink', ... 'examples', 'ex_mdlref_counter_bus'))); mi = Simulink.SimulationData.ModelLoggingInfo.createFromModel... ('ex_bus_logging'); pos = mi.findSignal({'ex_bus_logging/CounterA' ... 'ex_mdlref_counter_bus/Bus Creator'}, 1); mi.Signals(pos).LoggingInfo.DecimateData = true; mi.Signals(pos).LoggingInfo.Decimation = 2;
モデル オーバーライド オブジェクト設定を適用するには、以下のようにします。
set_param(ex_bus_logging,'DataLoggingOverride', mi);
Simulink では、モデルを保存すると設定が保存されます。