То В этом примере показано, как создать список сигнала для модели 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 и индексом порта. Добавить xpcosc
модель Integrator
блокируйте вход к списку сигнала блоком path и индексу порта, команда:
add(mySignals,'xpcosc/Integrator',1);
Чтобы просмотреть сигналы в объекте списка сигнала, используйте view
команда.
view(mySignals)
Integ_out Integ1_out
Создайте модель и загрузите приложение реального времени на целевой компьютер. После создания приложения реального времени можно закрыть модель.
Модель не должна быть открыта для потоковых данных сигнала из приложения реального времени.
evalc('rtwbuild(''xpcosc'')'); tg = slrt('TargetPC1'); load(tg,'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