Main Content

信号ログを使用した信号データの保存

信号ログを使用すると、モデルにブロックを追加することなくシミュレーションから信号データを取得できます。信号がログ用にマークされると、ログ バッジ が表示されます。この例では、信号ログを使用して、シミュレーション データのログをワークスペースおよびシミュレーション データ インスペクターに記録する方法を示します。

信号ログ データを収集して使用するには、次を行います。

マークした信号のサブセットをログに記録することもできます。モデルの開発時にその一部をテストする際に使用できる 1 つのアプローチとして、ログを記録する信号のスーパーセットをマークしてから、信号ログ設定のオーバーライドを使用して、ログを記録する信号の異なるサブセットを選択する方法があります。信号ログ セレクターまたはプログラムによるインターフェイスを使用できます。詳細については、信号ログ設定のオーバーライドを参照してください。

シミュレーション データを取得するその他の方法の概要については、シミュレーション データの保存を参照してください。

メモ

ログ用にマークされた信号をもつカスタム ライブラリ ブロックを保存すると、不要なデータのログが記録される可能性があるため、推奨されません。代わりに、ログに記録される信号がないカスタム ライブラリ ブロックをモデルに配置します。次に、そのライブラリ ブロック インスタンスでのみログ記録対象の信号をマークします。

モデルを開く

この例では、次の方程式によって求められる減衰非線形バネのモデルを使用します。

$\ddot{x} + \dot{x} + k(x-a) + (x-a)^3 = 0$,

ここで、

  • "a" = 3 m はバネの静止長です。

  • "k" = 1 N/m はバネ定数です。

モデルには Outport ブロックは含まれておらず、ログ用にマークされた信号はありません。この例では、信号ログを有効にして信号ログ名を指定する方法を示します。

モデルの信号ログの有効化

既定では、信号ログは有効です。信号ログが有効の場合、ログ用にマークした信号のシミュレーション中にデータが記録されます。モデルの信号ログを有効または無効にするには [コンフィギュレーション パラメーター] ダイアログ ボックスを使用します。たとえば、モデル damped_nonlin_spring の信号ログが有効かどうかを確認します。

  1. [モデル化] ペインで [モデル設定] を選択します。

  2. [データのインポート/エクスポート] タブで、[信号のログ] パラメーターが選択されていることを確認します。

信号ログは有効なので、モデルでログ記録対象の信号をマークすると、シミュレーション中に信号データが記録されます。[信号のログ] パラメーターが選択されていない場合は、信号ログ記録用にマークされている信号も記録されません。

関数 set_param を使用して、モデルの信号ログをプログラムで有効または無効にすることもできます。

set_param("damped_nonlin_spring",'SignalLogging','on')

ログ記録用の信号のマーク

減衰非線形バネのダイナミクスを解析するには、ログ記録対象の信号をマークします。Integrator1 という名前の Integrator ブロックからの信号は位置を表します。Integrator という名前の Integrator ブロックからの信号は速度を表します。バネの位置と速度の信号データを記録するには、ログ記録対象の信号をマークします。

  1. モデルで信号を選択します。

  2. [シミュレーション] タブで、[信号のログ] をクリックします。

ログ バッジ は、その信号が信号ログ記録用にマークされていることを示します。

あるいは、関数 Simulink.sdi.markSignalForStreaming を使用してプログラムでログ記録対象の信号をマークできます。

Simulink.sdi.markSignalForStreaming('damped_nonlin_spring/Integrator',1,'on')
Simulink.sdi.markSignalForStreaming('damped_nonlin_spring/Integrator1',1,'on')

モデル データ エディターを使用すると、モデルの階層構造全体で信号を信号ログ記録用にマークする処理が簡単になります。モデル データ エディターにはモデル内の信号のフラット リストが表示され、その並べ替え、グループ化およびフィルター処理を実行できます。

信号名の指定

damped_nonlin_spring モデル内の信号には名前が付いていません。モデル内でログに記録する信号に名前を付けると、ログ データの解析が容易になります。既定では、ワークスペースおよびシミュレーション データ インスペクター内の信号名が使用されます。信号に名前が付いていない場合、データのログがワークスペースに記録される際に空の名前が使用されます。シミュレーション データ インスペクターでは、名前のない信号はそのブロック パスと端子番号で識別されます。

たとえば、ログ データをより簡単に解析できるように、位置と速度を表す信号に対話形式で名前を付けます。

  1. Integrator1 という名前のブロックから出力される信号をダブルクリックします。次に、「position」と入力します。

  2. Integrator という名前のブロックから出力される信号をダブルクリックします。次に、「velocity」と入力します。

あるいは、信号名をプログラムで指定できます。

  1. 位置を表す信号と速度を表す信号の端子ハンドルを取得します。

    posph = get_param('damped_nonlin_spring/Integrator1','PortHandles');
    velph = get_param('damped_nonlin_spring/Integrator','PortHandles');
  2. 関数 get_param を使用して、各端子に接続されたラインのハンドルを取得します。

    poslh = get_param(posph.Outport,'Line');
    vellh = get_param(velph.Outport,'Line');
  3. 関数 set_param を使用して信号名を設定します。

    set_param(poslh,'Name','position')
    set_param(vellh,'Name','velocity')

モデルで使用される信号名とは異なる信号のログ名を指定することもできます。信号レベルのログ名を指定すると、モデル内で名前のないままにする必要がある信号や、モデルの階層構造内で別の信号と重複する名前を共有する信号に対して便利です。信号のログのカスタム名を設定するには、[信号プロパティ] ダイアログ ボックス、[インストルメンテーションのプロパティ] ダイアログ ボックス、またはモデル エクスプローラーを使用します。

モデルのシミュレーションとデータの表示

信号ログではデータのログがシミュレーション データ インスペクターに記録されるため、シミュレーション データを簡単に可視化できます。シミュレーション データ インスペクターで位置と速度のログ データを表示するには、次を行います。

  1. モデルをシミュレートします。

  2. [シミュレーション] タブで、[結果の確認] にある [データ インスペクター] をクリックします。

  3. シミュレーション データ インスペクターで、position 信号と velocity 信号を選択して信号データをプロット領域に追加します。

初期状態では、バネは圧縮されています。解放されると、バネは振動します。最終的に、システムは減衰するため、バネはその静止長 3 m で静止します。

The position and velocity signals plotted in the Simulation Data Inspector.

シミュレーション データ インスペクターにおけるログ記録された信号データの表示の詳細については、シミュレーション データの検証およびシミュレーション データ インスペクターを使用したプロットの作成を参照してください。

信号ログ データへのプログラムによるアクセス

ワークスペース データのログを MATLAB® を使用して解析することもできます。既定では、ログ記録されたすべてのシミュレーション データが単一の Simulink.SimulationOutput オブジェクトとして out という名前の変数で返されます。

out
out = 

  Simulink.SimulationOutput:

                logsout: [1x1 Simulink.SimulationData.Dataset] 
                   tout: [59x1 double] 

     SimulationMetadata: [1x1 Simulink.SimulationMetadata] 
           ErrorMessage: [0x0 char] 

信号ログ データは、既定の名前 logsout をもつ Simulink.SimulationData.Dataset オブジェクトにグループ化されます。シミュレーション結果が単一の Simulink.SimulationOutput オブジェクトとして返される場合は、ドットを使用して信号ログ データにアクセスできます。

out.logsout
ans = 

Simulink.SimulationData.Dataset 'logsout' with 2 elements

                         Name      BlockPath                        
                         ________  ________________________________ 
    1  [1x1 Signal]      velocity  damped_nonlin_spring/Integrator 
    2  [1x1 Signal]      position  damped_nonlin_spring/Integrator1

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

ワークスペースにデータをログ記録して単一のシミュレーション出力を返すと、Simulink.SimulationOutput オブジェクトには各ログ タイプのプロパティが含まれます。たとえば、信号ログを使用してデータをログ記録して、Dataset オブジェクトに既定のワークスペース変数名を使用すると、Simulink.SimulationOutput オブジェクトのプロパティ logsout には、ログ記録された信号データが含まれます。[単一のシミュレーション出力] パラメーターを有効または無効にするには [コンフィギュレーション パラメーター] ダイアログ ボックスを使用します。例については、Simulink.SimulationOutput オブジェクトのデータへのアクセスを参照してください。

信号ログを使用してログ記録された各信号は、Dataset オブジェクト内の要素として保存されます。信号ログ Dataset オブジェクトのワークスペース変数名を変更するには、[コンフィギュレーション パラメーター] ダイアログ ボックスの [信号のログ] パラメーターの横にあるテキスト ボックスを使用します。

参考

モデル設定

オブジェクト

ツール

関連するトピック