Main Content

getSignalIDsByName

信号名を使用してSimulink.sdi.Runオブジェクト内の信号の信号 ID を取得

説明

sigIDs= getSignalIDsByName(runObj,name)は、指定された名前nameをもつSimulink.sdi.Runオブジェクト内の信号の 1 つ以上の信号 ID を返します。

すべて折りたたむ

信号 ID が必要である信号の名前を指定することで、Simulink.sdi.Runオブジェクト内の信号の信号 ID にアクセスできます。信号 ID を使用することで、関数Simulink.sdi.compareSignalsを使用して信号を比較したり、関数Simulink.sdi.getSignalを使用して信号のSimulink.sdi.Signalオブジェクトにアクセスしたり、あるいは関数Simulink.sdi.deleteSignalを使用してシミュレーション データ インスペクターから信号を削除することができます。

この例では、関数getSignalIDsByNameを使って名前またはブロック パスを使用して信号にアクセスする方法、およびバス内に含まれる信号の信号 ID にアクセスする方法を示します。

シミュレーション データ インスペクターでのデータの作成

この例では、パルス カウンターのモデルを使用して、シミュレーション データ インスペクターでシミュレーション データを作成します。モデルにはカウンターの上限と下限を定義する 2 つの入力信号と、カウントするパルスをもつ 1 つの入力パルス信号があります。モデルはバスを使用してBus Counterサブシステムにデータを送信し、そこから Outport ブロックに送信します。モデルはパルス信号inputと、Outport ブロックに接続されている出力信号OUTを記録するように設定されています。

モデルをシミュレートし、ログ データが含まれる実行をシミュレーション データ インスペクターで作成します。

out = sim('ex_pulse_counter');

信号 ID へのアクセス

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

countRun = Simulink.sdi.Run.getLatest;

関数getSignalIDsByNameを使用して、input信号の信号 ID にアクセスします。

inSigID = getSignalIDsByName(countRun,的输入ut');

より複雑なモデルでは、複数の信号に同じ名前が付けられている場合があります。この場合、関数getSignalIDsByNameで信号名のみを使用することで、その名前を使用するモデル内のすべてのログ信号の信号 ID の配列になります。結果の重複を回避するために、プロック パスと信号名を一緒に指定できます。ブロック パスの要素を区切るにはスラッシュの代わりにドットを使用します。たとえば、input信号の信号 ID にアクセスするには、名前を'ex_pulse_counter.Pulse Generator.input'と指定することもできます。

inSigID = getSignalIDsByName(countRun,'ex_pulse_counter.Pulse Generator.input');

合成信号内の信号の信号 ID へのアクセス

ex_pulse_counterモデルに記録された出力はバス信号です。一番上のバス信号OUT、入れ子にされたバスLIMITBUS、バス内の個々の信号 (outputupper_limit、およびlower_limit) に対応する信号 ID にアクセスできます。

一番上のバスの信号 ID にアクセスするには、信号名OUTを指定します。

OUTSigID = getSignalIDsByName(countRun,'OUT');

入れ子にされたバスの信号 ID にアクセスするには、バス階層内の信号へのパスを指定します。

LIMITBUSSigID = getSignalIDsByName(countRun,'OUT.LIMITBUS');

いずれかの個別の信号の信号 ID にアクセスするには、バス階層内の信号へのパスを指定します。信号名のみを使用して信号にアクセスすることはできません。SignalオブジェクトのNameプロパティにはバス階層が含まれます。

upper_limitSigID = getSignalIDsByName(countRun,'OUT.LIMITBUS.upper_limit'); upper_limitSig = Simulink.sdi.getSignal(upper_limitSigID); upper_limitSig.Name
ans = 'OUT.LIMITBUS.upper_limit'

入力引数

すべて折りたたむ

アクセスする必要がある信号 ID をもつ信号が含まれる実行。Simulink.sdi.Runオブジェクトとして指定します。

アクセスする必要がある信号 ID をもつ信号の名前。文字ベクトルまたは string として指定します。

モデルは、複数の信号に対して同じ信号名を使用できます。この場合、特定の信号の信号 ID にアクセスするときは、信号を生成するブロックのブロック パスをname引数に含めることができます。たとえば、name'slexAircraftExample.Pilot.Stick'として指定して、slexAircraftExampleモデルの飞行员ブロックの出力であるStickという名前の信号の信号 ID にアクセスします。

合成信号内の信号にアクセスするには、合成信号の階層構造を通じて信号へのパスを指定します。たとえば、name'COUNTERBUS.LIMITBUS.lower_limit'として指定して、バスCOUNTERBUSに入れ子にされているバスLIMITBUS内のlower_limit信号の信号 ID にアクセスします。

データ型:char|string

出力引数

すべて折りたたむ

指定された名前をもつ信号の 1 つ以上の信号 ID。スカラーまたは配列として返されます。

バージョン履歴

R2020a で導入