Main Content

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

Simulink.sdi.markSignalForStreaming

信号のログ作成をオンまたはオフにする

説明

Simulink.sdi.markSignalForStreaming(block,portIndex,log) は、log'on' と指定した場合に、指定された block の指定された portIndex にある信号をログ作成用にマークします。信号のログ作成を停止するには、log'off' と指定します。

Simulink.sdi.markSignalForStreaming(portHandle,log) は、log'on' と指定した場合に、portHandle によって指定された端子の信号をログ作成用にマークします。信号のログ作成を停止するには、log'off' と指定します。

Simulink.sdi.markSignalForStreaming(lineHandle,log) は、log 'on' と指定した場合に、指定された lineHandle を持つ信号をログ作成用にマークします。信号のログ作成を停止するには、log'off' と指定します。

すべて折りたたむ

この例では、slexAircraftExample モデルを使用して、制御システムの入力信号と出力信号の比較方法を示します。

モデルの設定とシミュレーション

slexAircraftExample モデルはデータを記録しません。モデルを読み込み、入力信号と出力信号をログ記録するようマークします。

load_system('slexAircraftExample')
Simulink.sdi.markSignalForStreaming('slexAircraftExample/Pilot',1,'on')
Simulink.sdi.markSignalForStreaming('slexAircraftExample/Aircraft Dynamics Model',4,'on')

モデルをシミュレートします。ログ信号のデータはシミュレーション データ インスペクターとワークスペースに記録されます。

out = sim('slexAircraftExample');

シミュレーション データへのアクセス

シミュレーション データ インスペクターのプログラムによるインターフェイスを使用して、データにアクセスします。関数 Simulink.sdi.Run.getLatest は、シミュレーション データ インスペクター リポジトリ内で最後に作成された実行を返します。関数 getSignalIDByIndex を使用して、ログ信号の信号 ID にアクセスします。

aircraftRun = Simulink.sdi.Run.getLatest;

signalID1 = getSignalIDByIndex(aircraftRun,1);
signalID2 = getSignalIDByIndex(aircraftRun,2);

許容誤差値の指定

比較に使用する許容誤差値を、記録された Simulink.sdi.Signal オブジェクトのプロパティとして指定できます。関数 Simulink.sdi.getSignal を使用し、信号 ID を使用して Signal オブジェクトにアクセスします。

signal1 = Simulink.sdi.getSignal(signalID1);
signal1.AbsTol = 0.1;

信号の比較

関数 Simulink.sdi.compareSignals を使用して、入力信号と出力信号を比較します。この例では、関数 isValidSignalID を使用して、両方の信号 ID が関数 Simulink.sdi.compareSignals の呼び出し前に依然として有効であることを検証します。信号がシミュレーション データ インスペクターから削除されると、信号 ID は無効になります。比較後、Simulink.sdi.DiffSignalResult オブジェクトのステータスをチェックします。

if (isValidSignalID(aircraftRun,signalID1) && isValidSignalID(aircraftRun,signalID2))
    sigDiff = Simulink.sdi.compareSignals(signalID1,signalID2);

    match = sigDiff.Status
end
match = 
OutOfTolerance

比較結果は許容誤差の範囲外です。関数 Simulink.sdi.view を使用して、比較結果を検証および解析できます。

この例では、端子ハンドルを使用してログを作成する信号をマークする方法を示します。

モデルの読み込みとストリーミングする信号のマーク

get_param を使用して、対象信号を含むブロックに対する端子ハンドルを取得します。次に、ハンドルを使用してログを作成する必要がある信号をマークします。

load_system('vdp')

% Get port handles
x1_handles = get_param('vdp/x1','PortHandles');
x1 = x1_handles.Outport(1);
x2_handles = get_param('vdp/x2','PortHandles');
x2 = x2_handles.Outport(1);

% Mark signals for streaming
Simulink.sdi.markSignalForStreaming(x1,'on');
Simulink.sdi.markSignalForStreaming(x2,'on');

モデルのシミュレーションとシミュレーション データ インスペクターでの信号の表示

モデルのシミュレーションを実行してから、シミュレーション データ インスペクターを開いてログが作成された信号を表示します。

sim('vdp');

Simulink.sdi.view

この例では、ライン ハンドルを使用してログを作成する信号をマークする方法を示します。

システムの読み込みとログを作成する信号のマーク

モデルを読み込み、get_param を使用してモデル内の信号のハンドルを取得します。その後、ライン ハンドルを使用してログを作成する対象信号をマークします。

load_system('slexAircraftExample')

lines = get_param('slexAircraftExample','Lines');

sig1handle = lines(1).Handle;
sig2handle = lines(2).Handle;

Simulink.sdi.markSignalForStreaming(sig1handle,'on')
Simulink.sdi.markSignalForStreaming(sig2handle,'on')

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

モデルのシミュレーションを実行し、ログ作成用にマークされた信号をシミュレーション データ インスペクターで表示します。

sim('slexAircraftExample')

Simulink.sdi.view

入力引数

すべて折りたたむ

出力端子の 1 つに接続された目的の信号をもつブロックのブロック パス。

例: 'slexAircraftExample/Pilot'

ストリーミング用にマークする信号に接続されている端子のインデックス。

例: 1

信号に必要なログ状態。

  • 'on' –– 信号のログ作成を有効にする。

  • 'off' –– 信号のログ作成を無効にする。

信号に接続するソース ブロックの出力端子の端子ハンドル。

例: x1_handles.Outport(1)

信号のライン ハンドル。

例: lines(1).Handle

R2015b で導入