exponenta event banner

getSignalIDsByName

Получение идентификаторов сигналов внутри Simulink.sdi.Run объект с использованием имени сигнала

Описание

пример

sigIDs = getSignalIDsByName(runObj,name) возвращает один или несколько идентификаторов сигналов в Simulink.sdi.Run объект с указанным именем, name.

Примеры

свернуть все

Вы можете получить доступ к идентификаторам сигналов внутри Simulink.sdi.Run путем указания имени сигнала, для которого требуется идентификатор сигнала. Идентификатор сигнала можно использовать для сравнения сигналов с помощью Simulink.sdi.compareSignals функция, доступ к Simulink.sdi.Signal объект для сигнала с помощью Simulink.sdi.getSignal или удалить сигнал из инспектора данных моделирования с помощью Simulink.sdi.deleteSignal функция.

В этом примере показано, как использовать getSignalIDsByName функция доступа к сигналу с использованием его имени или пути к блоку и способ доступа к идентификатору сигнала для сигнала, содержащегося внутри шины.

Создание данных в инспекторе расчетных данных

В этом примере используется модель счетчика импульсов для создания данных моделирования в инспекторе данных моделирования. Модель содержит два входных сигнала, определяющих верхний и нижний пределы счетчика, и один входной импульсный сигнал с импульсами для подсчета. Модель использует шины для отправки данных в Bus Counter и из нее в блок Outport. Модель сконфигурирована для регистрации импульсного сигнала, inputи выходной сигнал, OUT, который подключен к блоку Outport.

Смоделировать модель для создания прогона, содержащего записанные данные в инспекторе расчетных данных.

out = sim('ex_pulse_counter');

Идентификаторы сигналов доступа

Для доступа к записанным данным используйте программный интерфейс Simulation Data Inspector. Simulink.sdi.Run.getLatest функция возвращает Simulink.sdi.Run объект, соответствующий последнему созданному прогону. Вы можете получить доступ к идентификаторам сигналов для зарегистрированных сигналов из Simulink.sdi.Run объект.

countRun = Simulink.sdi.Run.getLatest;

Используйте getSignalIDsByName для доступа к идентификатору сигнала для input сигнал.

inSigID = getSignalIDsByName(countRun,'input');

В более сложной модели несколько сигналов могут иметь одно и то же имя. В этом случае используется только имя сигнала с getSignalIDsByName функция приводит к массиву идентификаторов сигналов для всех зарегистрированных сигналов в модели, которые используют это имя. Чтобы избежать дублирования результатов, можно указать путь блока и имя сигнала вместе. Для разделения элементов контура блока вместо косой черты используются точки. Например, для доступа к идентификатору сигнала для input signal, можно также указать имя как 'ex_pulse_counter.Pulse Generator.input'.

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

Идентификаторы сигналов доступа для сигналов внутри составных сигналов

Выходные данные, зарегистрированные в ex_pulse_counter модель является сигналом шины. Вы можете получить доступ к идентификатору сигнала, который соответствует сигналу верхней шины, OUT, вложенная шина, LIMITBUSи отдельные сигналы в шине: output, upper_limit, и lower_limit.

Для доступа к идентификатору сигнала для верхней шины укажите имя сигнала, OUT.

OUTSigID = getSignalIDsByName(countRun,'OUT');

Чтобы получить доступ к идентификатору сигнала для вложенной шины, укажите путь к сигналу в иерархии шин.

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

Для доступа к идентификатору сигнала для одного из отдельных сигналов укажите путь к сигналу в иерархии шин. Доступ к сигналу с использованием только имени сигнала невозможен. Name имущества Signal объект включает иерархию шины.

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

Входные аргументы

свернуть все

Прогон, содержащий сигналы с идентификаторами сигналов, к которым требуется получить доступ, указанные как Simulink.sdi.Run объект.

Имя сигнала с идентификатором сигнала, к которому требуется получить доступ, указанное как символьный вектор или строка.

Модель может использовать одно и то же имя сигнала для нескольких сигналов. В этом случае, когда требуется получить доступ к идентификатору сигнала для конкретного сигнала, можно включить путь блока, который генерирует сигнал, в name аргумент. Например, укажите name как 'slexAircraftExample.Pilot.Stick' для доступа к идентификатору сигнала с именем Stick это выходной сигнал Pilot блок в slexAircraftExample модель.

Для доступа к сигналам внутри составных сигналов укажите путь к сигналу через иерархию составного сигнала. Например, укажите name как 'COUNTERBUS.LIMITBUS.lower_limit' для доступа к идентификатору сигнала для lower_limit сигнал внутри шины LIMITBUS которая вложена в шину COUNTERBUS.

Типы данных: char | string

Выходные аргументы

свернуть все

Один или несколько идентификаторов сигналов для сигналов с указанным именем, возвращаемых в виде скаляра или массива.

Представлен в R2020a