Этот пример показывает, как создать список сигнала для модели Simulink Real-Time при помощи API сигналов потоковой передачи. После того, как вы создадите приложение реального времени из модели и запустите приложение на целевом компьютере, можно передать данные сигнала потоком Инспектору Данных моделирования от динамически выбранных сигналов.
Откройте модель, идентифицируйте программируемые имена блоков в модели и создайте объект списка сигнала. Для получения дополнительной информации смотрите SimulinkRealTime.SignalList.
open_system(fullfile(matlabroot,'toolbox','rtw','targets','xpc','xpcdemos','xpcosc')); find_system('xpcosc') mySignals=SimulinkRealTime.SignalList()
ans =
11×1 cell array
{'xpcosc' }
{'xpcosc/Gain' }
{'xpcosc/Gain1' }
{'xpcosc/Gain2' }
{'xpcosc/Integrator' }
{'xpcosc/Integrator1' }
{'xpcosc/Mux' }
{'xpcosc/Scope' }
{'xpcosc/Signal↵Generator'}
{'xpcosc/Sum' }
{'xpcosc/Outport' }
mySignals =
SignalList with no properties.

Чтобы добавить сигналы по наименованию в объект списка сигнала, получите информацию параметра для сигналов и используйте информацию о параметре в команде add. Добавление сигналов по наименованию облегчает находить сигналы в Инспекторе Данных моделирования при просмотре данных сигнала.
p = get_param('xpcosc/Integrator','PortHandles'); l = get_param(p.Outport,'Line'); set_param(l,'Name','Integ_out'); add(mySignals,'Integ_out') p = get_param('xpcosc/Integrator1','PortHandles'); l = get_param(p.Outport,'Line'); set_param(l,'Name','Integ1_out'); add(mySignals,'Integ1_out')
Также можно добавить сигналы в объект списка сигнала блоком path и индексом порта. Чтобы добавить вход блока Integrator модели xpcosc в список сигнала блоком path и индекс порта, команда:
add(mySignals,'xpcosc/Integrator',1);
Чтобы просмотреть сигналы в объекте списка сигнала, используйте команду view.
view(mySignals)
Integ_out Integ1_out
Создайте модель и загрузите приложение реального времени на целевой компьютер. После создания приложения реального времени можно закрыть модель.
Модель не должна быть открыта для потоковых данных сигнала из приложения реального времени.
evalc('rtwbuild(''xpcosc'')'); bdclose('all');
Установите время остановки и запустите приложение реального времени. Чтобы сгенерировать данные сигнала, запустите приложение в течение 20 секунд.
tg.StopTime=Inf; start(tg); pause(20);
Чтобы выбрать сигналы передать потоком, используйте команду setStreamingSignals. Этот выбор сигнала с объектом списка сигнала является динамическим, потому что выбор происходит после того, как вы создаете и загружаете приложение реального времени.
После того, как вы выбираете сигналы передать потоком, отобразить сигналы в Инспекторе данных моделирования (SDI). Для получения дополнительной информации смотрите setStreamingSignals.
setStreamingSignals(tg,mySignals); Simulink.sdi.view;
Чтобы прекратить передавать сигналы потоком, используйте команду:
setStreamingSignals(tg,[]);
stop(tg);
SimulinkRealTime.utils.TETMonitor.open