Параллельное выполнение на Simulink® Real-Time™

Этот пример показывает, как выполнить параллельное выполнение модели на Simulink Real-Time. Это отображает выполнение каждого образцового потока с помощью инструмента профилирования Simulink Real-Time.

dxpcmdsdemo запускает модель с шагом расчета по умолчанию 0,001 секунды.

Чтобы запустить модель с настроенным шагом расчета nnn второй, введите Ts = nnn прежде dxpcmdsdemo. Например:

Ts = 0.01;

dxpcmdsdemo;

Требования

  1. Загрузите целевой компьютер с ядром реального времени Simulink Real-Time.

  2. В командной строке 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: модель, состоявшая из семи задач

Детали в Model1

open_system([mdl,'/Model1']);

Рисунок 2: четыре задачи в Model1

Детали в Model2

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);