Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

Simulink.SimulationData.ModelLoggingInfo

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

説明

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

このクラスのメソッドとプロパティの使用目的は以下のとおりです。

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

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

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

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

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

LoggingModeLogAllAsSpecifiedInModel に設定します。

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

LoggingModeOverrideSignals に設定します。

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

LoggingModeOverrideSignals に設定します。

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

詳細と例については、MATLAB からの信号ログ設定のオーバーライドを参照してください。

プロパティのまとめ

名前

説明

LoggingMode

信号ログ オーバーライド ステータス

LogAsSpecifiedByModels

最上位モデルまたは最上位 Model ブロックの信号ログ設定のソース

Signals

信号オーバーライド設定をもつすべての信号

メソッドのまとめ

名前

説明

findSignal

ブロック パスと出力端子インデックスを使用して Signals ベクトル内で信号を検出します。

verifySignalAndModelPaths

モデル信号ログ オーバーライド オブジェクトの信号およびモデル パスを確認します。

getLogAsSpecifiedInModel

モデルがモデルで指定されているとおりに信号をログに記録するかまたはオーバーライド設定を使用するかを判定します。

setLogAsSpecifiedInModel

最上位モデルまたは最上位 Model ブロックのログ モードを設定します。

createFromModel

モデル信号ログ オーバーライド オブジェクトを作成してモデル階層内のすべてのログ信号に追加します。

ModelLoggingInfo

ログに記録する信号を設定するかまたはログ設定をオーバーライドします。

プロパティ

LoggingMode

説明

信号ログ オーバーライド ステータス。次の値を使用できます。

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

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

    • falseSignals プロパティで指定されている信号だけをログに記録します。

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

最上位モデルまたは特定の参照モデルのログ モードを変更するには setLogAsSpecifiedInModel メソッドを使用します。

データ型

文字配列

アクセス

RW

LogAsSpecifiedByModels

説明

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

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

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

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

最上位モデルまたは最上位 Model ブロックがモデルで指定されている (既定のログ) とおりに信号をログに記録するかどうかを判定するには getLogAsSpecifiedInModel メソッドを使用します。既定のログのオンとオフを切り替えるには setLogAsSpecifiedInModel を使用します。

データ型

cell 配列 — 最上位モデルの場合はモデル名を指定します。Model ブロックの場合はブロック パスを指定します。

アクセス

RW

Signals

説明

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

データ型

Simulink.SimulationData.SignalLoggingInfo オブジェクトのベクトル

アクセス

RW

メソッド

createFromModel

目的

最上位モデルのそれぞれのログ信号のオーバーライド設定を使用してそのモデルの Simulink.SimulationData.ModelLoggingInfo オブジェクトを作成します。

構文
model_logging_info_object = ...
Simulink.SimulationData.ModelLoggingInfo.createFromModel(...
model,options)
入力引数
model

Simulink.SimulationData.ModelLoggingInfo オブジェクトを作成する最上位モデルの名前。

options

次のオプション名と値のペアを任意に組み合わせるとどの種類のシステムからログ信号を含めるかを制御できます。

  • FollowLinks

    • on — (既定の設定) ライブラリ内からのログ信号を含めます。

    • off — すべてのライブラリをスキップします。

  • LookUnderMasks

    • all — (既定の設定) すべてのマスク サブシステムからのログ信号を含めます。

    • none — すべてのマスク サブシステムをスキップします。

    • graphical — ワークスペースまたはダイアログ ボックスがないマスク サブシステムからのログ信号を含めます。

    • functional — ダイアログ ボックスがないマスク サブシステムからのログ信号を含めます。

  • Variants

    • ActiveVariants — (既定の設定) アクティブなサブシステムおよびモデル バリアントだけからのログ信号を含めます。

    • AllVariants — すべてのサブシステムおよびモデル バリアントからのログ信号を含めます。

  • RefModels

    • on — (既定の設定) 参照モデルからのログ信号を含めます。

    • off — すべての参照モデルをスキップします。

複数のオプションを選択した場合、作成される Simulink.SimulationData.ModelLoggingInfo オブジェクトには指定されたオプションの組み合わせ ("AND") に一致する信号が含まれます。たとえば、FollowLinkson に設定し、RefModelsoff に設定した場合、モデル信号ログ オーバーライド オブジェクトには参照モデル内に存在するライブラリ リンクからの信号が含まれません。

出力引数
model_logging_override_object

最上位モデルの Simulink.SimulationData.ModelLoggingInfo オブジェクト

説明

model_logging_info_object = Simulink.SimulationData.ModelLoggingInfo.createFromModel(model) は以下の種類のシステムのログ信号を含むモデルの Simulink.SimulationData.ModelLoggingInfo オブジェクトを作成します。

  • ライブラリ

  • マスク サブシステム

  • 参照モデル

  • アクティブなバリアント

model_logging_override_object = Simulink.SimulationData.ModelLoggingInfo.createFromModel(model, options) はモデルの Simulink.SimulationData.ModelLoggingInfo オブジェクトを作成します。含まれるログ信号は以下の種類のシステムのオプションの設定を反映します。

  • ライブラリ

  • マスク サブシステム

  • 参照モデル

  • バリアント

次の例では sldemo_mdlref_bus モデルのモデル ログ オーバーライド オブジェクトを作成し、そのオブジェクトにモデル内の各ログ信号を自動的に追加します。

openExample('sldemo_mdlref_bus')
mi = Simulink.SimulationData.ModelLoggingInfo.createFromModel(...
'sldemo_mdlref_bus')
mi = 

  ModelLoggingInfo with properties:

                     Model: 'sldemo_mdlref_bus'
               LoggingMode: 'OverrideSignals'
    LogAsSpecifiedByModels: {}
                   Signals: [1×4 Simulink.SimulationData.SignalLoggingInfo]

モデル オーバーライド オブジェクト設定を適用するには、以下のようにします。

set_param(sldemo_mdlref_bus,'DataLoggingOverride',mi);

createFromModel メソッドのオプションを使用すると、このメソッドでバリアントやモデル参照などのモデル コンポーネントを扱う方法を指定できます。たとえば、Variants オプションを使用して、sldemo_variant_subsystems モデルのすべてのバリアントでログ記録された信号を含む model_logging_override オブジェクトを作成します。

既定では、sldemo_variant_subsystems モデルは、どの信号もログ記録しません。まず、ログに記録する Linear Controller サブシステムおよび Nonlinear Controller サブシステムの出力信号を設定します。

% Open the sldemo_variant_subsystems model
sldemo_variant_subsystems;

% Mark the output of the Linear Controller subsystem for logging
ph = get_param('sldemo_variant_subsystems/Controller/Linear Controller',...
    'PortHandles');
set_param(ph.Outport(1),'DataLogging','on');

% Mark the output of the Nonlinear Controller subsystem for logging
ph1 = get_param('sldemo_variant_subsystems/Controller/Nonlinear Controller',...
    'PortHandles');
set_param(ph1.Outport(1),'DataLogging','on');

次に、createFromModel メソッドを使用して、sldemo_variant_subsystems モデルのすべてのバリアント サブシステムでログ記録された信号を含む model_logging_override オブジェクトを作成します。

% Create a model_logging_override object for the model including all variants
mi = Simulink.SimulationData.ModelLoggingInfo.createFromModel(...
'sldemo_variant_subsystems', 'Variants', 'AllVariants')
mi = 

  ModelLoggingInfo with properties:

                     Model: 'sldemo_variant_subsystems'
               LoggingMode: 'OverrideSignals'
    LogAsSpecifiedByModels: {}
                   Signals: [1×2 Simulink.SimulationData.SignalLoggingInfo]

ModelLoggingInfo

目的

ログに記録する信号を指定するかまたはログ設定をオーバーライドします。

構文
model_logging_override_object = ....
Simulink.SimulationData.ModelLoggingInfo(model)
入力引数
model

Simulink.SimulationData.ModelLoggingInfo オブジェクトを作成する最上位モデルの名前

出力引数
model_logging_override_object

指定した最上位モデルに対して作成された Simulink.SimulationData.ModelLoggingInfo オブジェクト。

説明

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

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

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

次の例は、最上位モデルとすべての参照モデルで指定されるように、すべての信号のログを作成する方法を表示します。

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

  ModelLoggingInfo with properties:

                     Model: 'sldemo_mdlref_bus'
               LoggingMode: 'LogAllAsSpecifiedInModel'
    LogAsSpecifiedByModels: {}
                   Signals: []

モデル オーバーライド オブジェクト設定を適用するには、以下のようにします。

set_param(sldemo_mdlref_bus, 'DataLoggingOverride', mi);

次の例は、最上位モデルの信号のみのログを作成する方法を示します。

mi = ...
Simulink.SimulationData.ModelLoggingInfo('sldemo_mdlref_bus');
mi.LoggingMode = 'OverrideSignals';
mi = mi.setLogAsSpecifiedInModel('sldemo_mdlref_bus', true); 
set_param('sldemo_mdlref_bus', 'DataLoggingOverride', mi);

findSignal

目的

ブロック パスおよびオプションの出力端子インデックスを使用して Signals ベクトル内で信号を検出します。

構文
signal_indices = ...
      model_logging_override_object.findSignal(block_path)
signal_indices = ...
      model_logging_override_object.findSignal(...
      block_path, port_index)
入力引数
block_path

検索するソース ブロック。block_path は、次のいずれかでなければなりません。

  • 文字ベクトル

  • 文字ベクトルの cell 配列

  • Simulink.BlockPath オブジェクト

port_index

検索する出力端子のインデックス。1 以上のスカラーを指定します。

出力引数
signal_indices

Simulink.SimulationData.ModelLoggingInfo オブジェクトの信号ベクトルの数値インデックスのベクトル。

説明

signal_indices = model_logging_override_object.findSignal(block_path) は指定するブロック パスの信号のインデックスを検出します。

参照モデル内にある信号の "1 つ" のインスタンスを検出するには Simulink.BlockPath オブジェクトまたは "絶対パス" をもつ cell 配列を使用します。

参照モデル内にある信号の "すべて" のインスタンスを検出するには、参照モデル内にある信号の "相対" パスをもつ文字ベクトルを使用します。

Stateflow® チャート内にあるログ チャート信号を検出するには Simulink.BlockPath オブジェクトを使用し、SubPath プロパティを Stateflow チャート信号の名前に設定します。

signal_indices = model_logging_override_object.findSignal(block_path, port_index) は指定するブロック パスの指定する端子の出力信号のインデックスを検出します。

Stateflow チャート信号には port_index 引数を使用しないでください。

Stateflow チャートには "なく"、参照モデルの複数のインスタンスに "表示されない" 信号を検出するには次の方法を使用します。

open_system(docpath(fullfile(docroot,'toolbox','simulink','examples','ex_bus_logging')))
% Open the referenced model
ex_mdlref_counter_bus
mi = Simulink.SimulationData.ModelLoggingInfo.createFromModel(... 
     'ex_bus_logging');
% Click the COUNTERBUSCreator block that is the source of 
% the logged COUNTERBUS signal
signal_index = mi.findSignal(gcb)
signal_index =

     1

Stateflow チャートにない参照モデルの特定のインスタンスで信号を検出するには次の方法を使用します。

signal_index = mi.findSignal({'ex_bus_logging/CounterA', ...
'ex_mdlref_counter_bus/Bus Creator'})
signal_index =

     4

Stateflow チャートでの findSignal メソッドの使用例については、コマンド ライン API によるログ プロパティのオーバーライド (Stateflow)を参照してください。

getLogAsSpecifiedInModel

目的

モデルがモデルで指定されているとおりにログに記録するかまたはオーバーライド設定を使用するかを判定します。

構文
logging_mode = ...
getLogAsSpecifiedInModel(model_logging_override_object, path)
入力引数
model_logging_override_object

Simulink.SimulationData.ModelLoggingInfo オブジェクト。

path

path は次のいずれかを指定する文字ベクトルです。

  • 最上位モデルの名前

  • 最上位モデル内の Model ブロックのブロック パス

出力引数
logging_mode

logging_mode は以下のいずれかになります。

  • path で指定されたモデルがモデルで指定されているとおりにログに記録される場合は true

  • path で指定されたモデルが Signals プロパティで指定されたオーバーライド設定を使用してログに記録される場合は false

説明

logging_mode = model_logging_override_object.getLogAsSpecifiedInModel(path) は、以下を返します。

  • path で指定されたモデルがモデルで指定されているとおりにログに記録される場合は true

  • path で指定されたモデルが Signals プロパティで指定されたオーバーライド設定を使用してログに記録される場合は false

次の例では Simulink.SimulationData.ModelLoggingInfo オブジェクト miSignals プロパティで指定されたオーバーライド設定を使用します。

mi = Simulink.SimulationData.ModelLoggingInfo('sldemo_mdlref_bus');
logging_mode = getLogAsSpecifiedInModel(mi, 'sldemo_mdlref_bus')
logging_mode =

     0

setLogAsSpecifiedInModel

目的

最上位モデルまたは最上位 Model ブロックのログ モードを設定します。

構文
setLogAsSpecifiedInModel(override_object, path)
入力引数
override_object

Simulink.SimulationData.ModelLoggingInfo オブジェクト。

path

次のいずれかを指定する文字ベクトル。

  • 最上位モデルの名前

  • 最上位モデル内の Model ブロックのブロック パス

value

ログ モードは以下のいずれかになります。

  • path で指定されたモデルがモデルで指定されているとおりにログに記録される場合は true

  • path で指定されたモデルが Signals プロパティで指定されたオーバーライド設定を使用してログに記録される場合は false

説明

setLogAsSpecifiedInModel(override_object, path, value) は最上位モデルまたは最上位モデル内の Model ブロックの LoggingMode プロパティを設定します。

次の例は最上位モデルで指定されているログ設定を使用してその最上位モデル内の信号だけをログに記録する方法を示します。

sldemo_mdlref_bus;
mi = Simulink.SimulationData.ModelLoggingInfo('sldemo_mdlref_bus');
mi.LoggingMode = 'OverrideSignals';
mi = setLogAsSpecifiedInModel(mi, 'sldemo_mdlref_bus', true); 
set_param('sldemo_mdlref_bus', 'DataLoggingOverride', mi);

verifySignalAndModelPaths

目的

Simulink.SimulationData.ModelLoggingInfo オブジェクトでパスを確認します。

構文
verified_object = verifySignalAndModelPaths...
     (model_logging_override_object, action)
入力引数
model_logging_override_object

確認する Simulink.SimulationData.ModelLoggingInfo オブジェクト。この引数は必須です。

action

検証が失敗したときに関数が実行するアクション。この引数はオプションです。以下のいずれかの値を指定します。

  • error — (既定の設定) 検証が失敗したときにエラーをスローします。

  • warnAndRemove — 検証が失敗したときに警告を発行し、Simulink.SimulationData.ModelLoggingInfo オブジェクトを更新します。

  • removeSimulink.SimulationData.ModelLoggingInfo オブジェクトを暗黙的に更新します。

出力引数
verified_object

メソッドで無効なパスが検出されなかった場合は、検証されたオブジェクトが返されます。以下に例を示します。

verified_object = 

  Simulink.SimulationData.ModelLoggingInfo
  Package: Simulink.SimulationData

  Properties:
                     Model: 'logging_top'
               LoggingMode: 'OverrideSignals'
    LogAsSpecifiedByModels: {}
                   Signals: [1x11 Simulink.SimulationData.SignalLoggingInfo]

メソッドで無効なパスが検出された場合、引数 action で指定されたアクションを実行します。既定では、エラー メッセージを発行します。

説明

verified_object = verifySignalAndModelPaths(model_logging_override_object, action)

Simulink.SimulationData.ModelLoggingInfo オブジェクトの場合は以下の項目を確認します。

  • LogAsSpecifiedByModels プロパティ内のすべての文字ベクトルが最上位モデルの名前または最上位モデル内の Model ブロックのブロック パスであること。

  • Signals プロパティ内の信号のブロック パスが最上位モデルの階層内にある有効なブロックを参照していること。

  • Signals プロパティ内のすべての信号の OutputPortIndex プロパティが特定のブロックに有効であること。

  • Signals プロパティ内のすべての信号が "ログ" 信号を参照していること。

引数 action は、メソッドが実行するアクションを指定します。既定では、メソッドが無効なパスを検出した場合にエラーを返します。

Simulink.SimulationData.ModelLoggingInfo コンストラクターを使用して各信号の Simulink.SimulationData.SignalLoggingInfo オブジェクトを指定する場合は verifySignalAndModelPaths メソッドを使用してオブジェクト定義が有効であることを確認することを検討してください。

以下の例では、Simulink.SimulationData.ModelLoggingInfo オブジェクトの信号とブロックのパスを検証する方法を示します。引数 actionwarnAndRemove であるため、検証が失敗すると verifySignalAndModelPaths メソッドは警告を発行し、Simulink.SimulationData.ModelLoggingInfo オブジェクトを更新します。

mi = Simulink.SimulationData.ModelLoggingInfo('sldemo_mdlref_bus');
verified_object = verifySignalAndModelPaths...
     (mi, 'warnAndRemove')

バージョン履歴

R2012b で導入