exponenta event banner

getSignalsByName

Сигналы доступа в Simulink.sdi.Run объект с использованием имени сигнала

Описание

пример

sigs = getSignalsByName(runObj,name) возвращает один или несколько Simulink.sdi.Signal объекты с именем, указанным name.

Примеры

свернуть все

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

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

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

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

out = sim('ex_pulse_counter');

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

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

countRun = Simulink.sdi.Run.getLatest;

Используйте getSignalsByName для доступа к input сигнал. Проверьте Name свойство возвращенного Simulink.sdi.Signal объект.

inSig = getSignalsByName(countRun,'input');
inSig.Name
ans = 
'input'

input сигнал не является составным сигналом, поэтому Children имущества Signal пуст объект.

inChildren = inSig.Children;
size(inChildren)
ans = 1×2

     0     0

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

outSig = getSignalsByName(countRun,'OUT');

Проверьте Name и Children свойства для возвращенного Signal объект. Children значение свойства содержит два Signal объекты, которые соответствуют сигналам на следующем уровне иерархии в OUT автобус.

outSig.Name
ans = 
'OUT'
outChildren = outSig.Children;
size(outChildren)
ans = 1×2

     1     2

Потому что Signal объект outSig соответствует составному сигналу, невозможно построить график данных сигнала в инспекторе данных моделирования с помощью Checked свойство или plotOnSubPlot функция. Для построения графика данных в составном сигнале необходимо получить доступ к индивидуальному Signal объекты.

Сигналы доступа внутри составного сигнала

Вы можете получить доступ к сигналам внутри OUT автобус и LIMITBUS путем индексации в Children свойство соответствующего Signal объект. Например, можно получить доступ к output сигнал от OUT автобус Signal объект.

outChildren = outSig.Children;
outputSig = outChildren(1);
outputSig.Name
ans = 
'OUT.output'

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

outputSig = getSignalsByName(countRun,'OUT.output');
outputSig.Name
ans = 
'OUT.output'

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

upper_limitSig = getSignalsByName(countRun,'OUT.LIMITBUS.upper_limit');
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

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

свернуть все

Один или несколько сигналов, соответствующих указанному имени, возвращенному как Simulink.sdi.Signal объект или массив Simulink.sdi.Signal объекты.

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