Main Content

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

モデルの信号ログを有効にする

モデル レベルでの信号ログの有効化と無効化

信号をログに記録するには、ログ用に信号をマークします。詳細については、ログ記録用の信号の構成を参照してください。

モデルでのログ用にマークしたすべての信号のログ生成をグローバルに有効または無効にします。既定では、信号ログは有効です。Simulink® は、[コンフィギュレーション パラメーター][データのインポート/エクスポート][信号のログ] パラメーターがオンの場合に信号をログに記録します。このオプションがオフになっている場合、Simulink は個々の信号に関する信号ログ設定を無視します。

信号がログ用にマークされると、既定では信号データはワークスペースとシミュレーション データ インスペクターに記録されます。信号ログは、[コンフィギュレーション パラメーター] ダイアログ ボックスを使用するか、あるいはプログラムによって無効にできます。

  • [コンフィギュレーション パラメーター] ダイアログ ボックスで、[コンフィギュレーション パラメーター][データのインポート/エクスポート][信号のログ] パラメーター チェック ボックスをオフにする。

  • コマンド ラインで、SignalLogging パラメーターを使用する。

    set_param(bdroot,'SignalLogging','off')

ログを作成する信号のサブセットを選択

以下を備えたモデルのログを作成する信号のサブセットを選択できます。

  • 信号ログ有効

  • ログ信号

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

データセット信号要素の形式の指定

ログに記録された信号データは Dataset 形式で保存されます (Simulink.SimulationData.Dataset オブジェクトとして)。データセット内の個別の信号のデータで MATLAB® timeseries または timetable 要素を使用するかを指定するには、[データセットの信号形式] コンフィギュレーション パラメーターを設定します。既定の設定は timeseries です。詳細については、データセットの信号形式を参照してください。

レガシ ModelDataLogs API を使用するスクリプトの移行

ログ記録に [ModelDataLogs] 形式を使用する R2016a より前のリリースで作成されたモデルをシミュレートするスクリプトでは、Dataset 形式でログ記録するようにコードを更新します。

信号データを [ModelDataLogs] 形式で既にログに記録している場合、関数 Simulink.ModelDataLogs.convertToDataset を使用して、[ModelDataLogs] 信号のログ データを [データセット] 形式を使用するように更新できます。たとえば、older_model_dataset[ModelDataLogs] 形式から [データセット] 形式に更新するには、次の手順に従います。

new_dataset = logsout.convertToDataset('older_model_data')

ModelDataLogs 形式を使用するモデルを Dataset 形式を使用するモデルに変換する場合、既存モデルや、コールバック、関数、スクリプトまたはテストのコードに変更を加えなければならない場合があります。以下の表は、Dataset 形式への変換後に発生する可能性がある問題を示し、それぞれへの解決策を提示しています。

予想される Dataset 形式への変換後の問題解決法

ModelDataLogs のプログラム インターフェイスによりデータにアクセスしていた既存のコールバック、関数、スクリプトまたはテストのコードが、エラー終了する場合がある。

ModelDataLogs 形式のアクセス メソッドを使用するコードがあるかどうかをチェックします。そのコードを、Dataset 形式のアクセス メソッドを使用するように更新します。

たとえば、既存のコードに以下の行が含まれるとします。

logsout.('Subsystem Name').X.data

このコードを Dataset アクセス メソッドに置き換えます。

logsout.getElement('x').Values.data

Mux ブロック信号名が失われる。

Dataset 形式では、Mux ブロック信号をベクトルとして処理します。信号名で信号を特定するには、Mux ブロックを Bus Creator ブロックに置き換えます。

信号ログに信号ビューアーを使用できない。

Simulink は信号ログ データを信号ビューアーに記録しません。

信号のログ出力変数を使用してログ データを表示します。

unpack メソッドでエラーが生成される。

unpack メソッドは、Simulink.ModelDataLogs および Simulink.SubsysDataLogs オブジェクトではサポートされていますが、Simulink.SimulationData.Dataset オブジェクトではサポートされて "いません"

たとえば、mlog のデータに、xy および z の 3 つのフィールドがあるとします。

ModelDataLogs 形式データの場合、mlog.unpack メソッドはベース ワークスペースに 3 つの変数を作成します。

Dataset 形式データの場合、名前でメソッドにアクセスします。次に例を示します。

x = logsout.getElement('x').Values

ModelDataLogs 形式と Dataset 形式で、名前のない信号に対する命名規則が異なる。

必要に応じて、信号名を追加します。

ModelDataLogs 形式では、Simulink はブロックから出力される名前のない信号に対し、以下の形式の名前を割り当てます。

SL_BlockName+<portIndex>

例: SL_Gain1

Dataset 形式では、要素に名前は不要であるため、Simulink は信号名を空のままにします。

ModelDataLogs 形式と Dataset 形式の両方について、Simulink は Bus Selector ブロックから出力された名前のない信号に同じ名前を割り当てます。

参照モデル内のテスト ポイントがログに記録されない。

参照モデル内のテスト ポイントに対して信号ログの有効化を検討します。

スクリプトは関数 who または関数 whos を使用します。

代わりに find の使用を検討してください。

信号ログ データへの名前の指定

モデルの信号ログ データにアクセスするには、モデル レベルの信号ログ名を使用します。信号ログ データの既定の名前は logsout です。モデル レベルの信号ログ名を指定すると、ログ データのソースを特定しやすくなります。たとえば、データが car モデルの信号ログ データであることがわかるように、car_logsout という信号名を指定できます。

別のモデル レベルの信号ログ名を指定するには、以下のいずれかの方法を使用します。

  • [コンフィギュレーション パラメーター][データのインポート/エクスポート][信号のログ] パラメーターの隣のエディット ボックスに、信号ログ名を入力します。

  • SignalLoggingName パラメーターを使用して、信号ログ名を指定します。次に例を示します。

    set_param(bdroot, 'SignalLoggingName', 'heater_model_signals')

関連するトピック