Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

Simulink.SimulationData.ModelLoggingInfo

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

説明

Simulink.SimulationData.ModelLoggingInfo オブジェクトは、Simulink® エディターでモデルを変更することなく、モデルの信号ログ設定をオーバーライドするために使用します。

Simulink.SimulationData.ModelLoggingInfo オブジェクトは、モデルのすべての信号ログ オーバーライド設定を指定する Simulink.SimulationData.SignalLoggingInfo オブジェクトのコレクションです。

このオブジェクトのオブジェクト関数とプロパティは次の目的に使用します。

  • 信号または Model ブロックのログをオフにする。

  • モデル内でログに記録するようにマークされている信号のログ設定を変更する。

最上位モデルと参照モデルで信号ログ設定をオーバーライドするか、またはモデルによって指定された信号ログ設定を使用するかを制御できます。どちらのログ設定を適用するかを制御するには LoggingMode プロパティと LogAsSpecifiedByModels プロパティを使用します。

モデルのログ モードプロパティの設定

最上位モデルとすべての参照モデルにモデルで指定されているログ設定を使用する。

LoggingModeLogAllAsSpecifiedInModel に設定します。

最上位モデルとすべての参照モデルでオーバーライド信号ログ設定を使用する。

LoggingModeOverrideSignals に設定します。

最上位モデルと参照モデルでオーバーライド信号ログ設定とモデルで指定されている信号ログ設定を組み合わせて使用する。

LoggingModeOverrideSignals に設定します。

cell 配列 LogAsSpecifiedByModels に、信号ログ設定のオーバーライドを無視するモデルを含めます。

Simulink.SimulationData.ModelLoggingInfo コンストラクターを使用する場合はログ設定をオーバーライドするログ信号ごとに Simulink.SimulationData.SignalLoggingInfo オブジェクトを指定します。

モデルに有効な信号ログ オーバーライド設定が指定されていることを確認するには、モデルの Simulink.SimulationData.ModelLoggingInfo オブジェクトで関数 verifySignalAndModelPaths を使用します。

作成

説明

mdlInfo = Simulink.SimulationData.ModelLoggingInfo(mdl) は、指定された最上位モデルの Simulink.SimulationData.ModelLoggingInfo オブジェクトを作成します。

入力引数

すべて展開する

Simulink.SimulationData.ModelLoggingInfo オブジェクトを作成する最上位モデルの名前。string または文字ベクトルとして指定します。

プロパティ

すべて展開する

信号ログ オーバーライド ステータス。'OverrideSignals' または 'LogAllAsSpecifiedInModel' として指定します。

  • 'OverrideSignals'Signals プロパティで指定されている信号ログ設定を使用します。モデルの場合、getLogAsSpecifiedInModel は次のようになります。

    • true — Simulink は、モデルで指定されているとおりにすべての信号をログに記録します。

    • false — Simulink は、Simulink.SimulationData.ModelLoggingInfo オブジェクトの Signals プロパティで指定されている信号のみをログに記録します。

  • 'LogAllAsSpecifiedInModel' — モデルで指定されているとおりに最上位モデルとすべての参照モデルで信号をログに記録します。Simulink は信号ログ インジケーター (青いアンテナ) に従い、Signals プロパティを無視します。

最上位モデルや特定の参照モデルなど、個々のモデルのログ モードを変更するには、関数 setLogAsSpecifiedInModel を使用します。最上位モデルとすべての参照モデルの "両方" のログ モードをすばやく変更するには、LoggingMode プロパティを 'LogAllAsSpecifiedInModel' に設定します。たとえば、モデルでの指定に従って信号をログに記録するようにモデル sldemo_mdlref_bus.slx とすべての参照モデルを設定するには、Simulink.SimulationData.ModelLoggingInfo オブジェクトの LoggingMode プロパティを 'LogAllAsSpecifiedInModel' に設定します。

mdlInfo = Simulink.SimulationData.ModelLoggingInfo("sldemo_mdlref_bus");
mdlInfo.LoggingMode = 'LogAllAsSpecifiedInModel'

最上位モデルまたは最上位 Model ブロックの信号ログ設定のソース。cell 配列として指定します。

LoggingMode'OverrideSignals' に設定されている場合、cell 配列 LogAsSpecifiedByModels で指定された最上位モデルおよび最上位 Model ブロックでは 'OverrideSignals' 設定を無視し、そのモデルまたは Model ブロックでの指定に従って信号をログに記録します。

  • cell 配列に含まれている最上位モデルおよび最上位 Model ブロックの場合、Signals プロパティのオーバーライドは無視されます。

  • cell 配列に "含まれていない" モデルまたは Model ブロックの場合、Signals プロパティを使用してどの信号をログに記録するかが決定されます。

LoggingMode'LogAllAsSpecifiedInModel' に設定されている場合、LogAsSpecifiedByModels プロパティは無視されます。

最上位モデルまたは最上位 Model ブロックがモデルでの指定 (既定のログ) に従って信号をログに記録するかどうかを調べるには、関数 getLogAsSpecifiedInModel を使用します。最上位モデルまたは最上位 Model ブロックに対する既定のログのオンとオフを切り替えるには、setLogAsSpecifiedInModel を使用します。

信号オーバーライド設定をもつ信号。Simulink.SimulationData.SignalLoggingInfo オブジェクトのベクトルとして指定します。

オブジェクト関数

Simulink.SimulationData.ModelLoggingInfo.createFromModelCreate Simulink.SimulationData.ModelLoggingInfo object for top model with override settings for each logged signal in model
findSignalFind index of signals in Signals property vector
getLogAsSpecifiedInModelDetermine whether model logs as specified in model or uses override settings
setLogAsSpecifiedInModelSet logging mode for top model or top-level Model block
verifySignalAndModelPathsVerify paths in Simulink.SimulationData.ModelLoggingInfo object

すべて折りたたむ

最上位モデルと参照モデルでオーバーライド信号ログ設定を使用するかまたはモデルによって指定された信号ログ設定を使用するかを制御できます。次の例は、最上位モデルとすべての参照モデルで指定されるように、すべての信号のログを作成する方法を表示します。

モデル sldemo_mdlref_bus には、ログ記録用にマークされた信号が 4 つあります。モデルの詳細については、Bus オブジェクトを使ったインターフェイス指定を参照してください。

mdl = "sldemo_mdlref_bus";
open_system(mdl)

モデル ログ オーバーライド オブジェクトを作成します。

mdlInfo = Simulink.SimulationData.ModelLoggingInfo(mdl);

モデルおよびすべての参照モデルで指定されている信号ログ設定を使用するか、それらの設定をオーバーライドするかを指定するには、モデル ログ オーバーライド オブジェクトの LoggingMode プロパティを使用します。

mdlInfo.LoggingMode = 'LogAllAsSpecifiedInModel'
mdlInfo = 
  ModelLoggingInfo with properties:

                     Model: 'sldemo_mdlref_bus'
               LoggingMode: 'LogAllAsSpecifiedInModel'
    LogAsSpecifiedByModels: {}
                   Signals: [0x0 Simulink.SimulationData.SignalLoggingInfo]

関数 set_param を使用してモデル オーバーライド オブジェクト設定を適用します。モデルを保存すると設定が保存されます。

set_param(mdl,'DataLoggingOverride',mdlInfo);

モデルをシミュレートします。信号ログ出力は topOut に保存されます。

sim(mdl);
topOut
topOut = 
Simulink.SimulationData.Dataset 'topOut' with 4 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   
    4  [1x1 Signal]      INNERDATA     ...erA|sldemo_mdlref_counter_bus/COUNTER

  - Use braces { } to access, modify, or add elements using index.

関数 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.

Simulink.SignalData.SignalLoggingInfo オブジェクトを使用して、特手の信号のログ設定をプログラムでオーバーライドできます。たとえば、Simulink.SimulationData.SignalLoggingInfo オブジェクトを作成して、ログ記録用にマークされた複数の信号のうちの 1 つのみをログ記録するように信号ログ設定をオーバーライドできます。

この例では、回転クラッチ システムのモデルを使用します。このモデルでは、10 個の信号がログ記録用にマークされています。モデルの詳細については、クラッチ ロックアップ モデルの作成を参照してください。

mdl = "sldemo_clutch_override";
open_system(mdl);

Simulink.SimulationData.SignalLoggingInfo オブジェクトを使用して、VehicleSpeed 信号のみをログに記録できます。VehicleSpeed 信号は、Unlocked サブシステムの 2 番目の出力端子に接続されています。BlockPath プロパティと OutputPortIndex プロパティを使用して、VehicleSpeed 信号の Simulink.SimulationData.SignalLoggingInfo オブジェクトを作成します。

blkPath = "sldemo_clutch_override/Unlocked";
portNum = 2;
sigInfo = Simulink.SimulationData.SignalLoggingInfo(blkPath,portNum);

空の Simulink.SimulationData.ModelLoggingInfo オブジェクトを作成します。その後、信号ログ オーバーライド設定 sigInfo をモデル ログ情報オブジェクトに割り当てます。

mdlInfo = Simulink.SimulationData.ModelLoggingInfo(mdl);
mdlInfo.Signals(1) = sigInfo;

関数 verifySignalAndModelPaths を使用して、モデルに有効な信号ログ設定を指定したことを確認します。

verifiedObj = verifySignalAndModelPaths(mdlInfo)
verifiedObj = 
  ModelLoggingInfo with properties:

                     Model: 'sldemo_clutch_override'
               LoggingMode: 'OverrideSignals'
    LogAsSpecifiedByModels: {}
                   Signals: [1x1 Simulink.SimulationData.SignalLoggingInfo]

関数 set_param を使用してモデル オーバーライド オブジェクト設定を適用します。

set_param(mdl,'DataLoggingOverride',mdlInfo)

モデルをシミュレートします。Simulink.SimulationData.Dataset オブジェクト sldemo_clutch_output にアクセスして、ログに記録された信号が VehicleSpeed のみであることを確認します。

sim(mdl);
sldemo_clutch_output
sldemo_clutch_output = 
Simulink.SimulationData.Dataset 'sldemo_clutch_output' with 1 element

                         Name          BlockPath                       
                         ____________  _______________________________ 
    1  [1x1 Signal]      VehicleSpeed  sldemo_clutch_override/Unlocked

  - Use braces { } to access, modify, or add elements using index.

バージョン履歴

R2012b で導入