Этот пример показывает, как выполнить параллельное выполнение модели на Simulink Real-Time. Это отображает выполнение каждого образцового потока с помощью инструмента профилирования Simulink Real-Time.
dxpcmdsdemo запускает модель с шагом расчета по умолчанию 0,001 секунды.
Чтобы запустить модель с настроенным шагом расчета nnn второй, введите Ts = nnn прежде dxpcmdsdemo. Например:
Ts = 0.01;
dxpcmdsdemo;
Загрузите целевой компьютер с ядром реального времени Simulink Real-Time.
В командной строке MATLAB® введите dxpcmdsdemo
, чтобы загрузить и запустить модель на целевом компьютере.
Откройте модель dxpcmds6t
(см. рисунок 1). Модель сопоставлена с 7 потоками (Model1_R1, Model1_R2, Model1_R3, Model1_R4, Model2_R1, Model2_R3 и Model2_R4) запускающийся в шагах расчета Ts, 2*Ts, 3*Ts, 4*Ts, Ts, 3*Ts и 4*Ts соответственно.
addpath(fullfile(matlabroot,'toolbox','rtw','targets','xpc','xpcdemos')); mdl='dxpcmds6t'; open_system(fullfile(matlabroot,'toolbox','rtw','targets','xpc','xpcdemos',mdl));
Рисунок 1: модель, состоявшая из семи задач
open_system([mdl,'/Model1']);
Рисунок 2: четыре задачи в Model1
open_system([mdl,'/Model2']);
Рисунок 3: три задачи в Model2
slrtpingtarget; set_param(mdl,'RTWVerbose','off'); rtwbuild(mdl); tg = slrt; tg.load(mdl); tg.startProfiler; tg.start; pause(2); tg.stop;
### Successfully updated the model reference SIM target for model: dxpcmds_ref1 ### Successfully updated the model reference SIM target for model: dxpcmds_ref2 ### Starting Simulink Real-Time build procedure for model: dxpcmds_ref1 ### Successful completion of build procedure for model: dxpcmds_ref1 ### Starting Simulink Real-Time build procedure for model: dxpcmds_ref2 ### Successful completion of build procedure for model: dxpcmds_ref2 ### Starting Simulink Real-Time build procedure for model: dxpcmds6t Warning: This model contains blocks that do not handle sample time changes at runtime. To avoid incorrect results, only change the sample time in the original model, then rebuild the model. ### Successful completion of build procedure for model: dxpcmds6t ### Created MLDATX ..\dxpcmds6t.mldatx ### Looking for target: TargetPC1 ### Download model onto target: TargetPC1
Профильные данные показывают время выполнения каждого потока на многожильном целевом компьютере
profData = tg.getProfilerData; profData.plot;
Processing data, please wait ...
Рисунок 5: график записанных профильных данных
close_system(mdl,0); close_system('dxpcmds_ref1',0); close_system('dxpcmds_ref2',0);