В этом примере показано, как применить явное разделение, чтобы улучшить параллельное выполнение приложения реального времени, которое вы генерируете при помощи Simulink Real-Time.
Simulink Real-Time поддерживает параллельное выполнение при помощи неявного разделения или явного разделения моделей. Для явного разделения пользователи Simulink Real-Time делят модель корневого уровня при помощи моделей, на которые ссылаются, Подсистем Simulink или других опций, которые поддерживает Simulink. Для получения дополнительной информации о разделении модели для параллельного выполнения, см.:
Неявное и явное разделение моделей (Simulink)
Реализуйте параллелизм задачи в Simulink (Simulink)
Реализуйте параллелизм данных в Simulink (Simulink)
Этот пример показывает отношение между явным разделением задач в подсистемах модели и выполнением задач при помощи инструмента профилирования Simulink Real-Time.
Модель dxpcmds6t
в качестве примера запуски на уровне частоты дискретизации 0,001 секунд.
Чтобы запустить модель с настроенной частотой дискретизации 0,01 секунд, измените выборку, оцененную прежде, чем запустить пример. В Командном Окне MATLAB введите:
Ts = 0.01;
Откройте модель dxpcmds6t
. Модель сопоставлена с семью потоками: 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
.
mdl='dxpcmds6t'; open_system(fullfile(matlabroot,'toolbox','rtw','targets','xpc','xpcdemos',mdl));
Явное разделение в модели верхнего уровня происходит в подсистемах System1
и System2
.
open_system([mdl,'/System1']);
open_system([mdl,'/System2']);
Чтобы применить явное разделение, в Редакторе Simulink, на вкладке Real-Time, нажимают Hardware Settings, и затем выбирают Solver> Configure Tasks. Выберите Tasks and Mapping
узел.
Создайте, загрузите и запустите модель.
set_param(mdl,'RTWVerbose','off'); rtwbuild(mdl); tg = slrt('TargetPC1'); load(tg,mdl); startProfiler(tg); start(tg); pause(2); stop(tg);
### Starting Simulink Real-Time build procedure for model: dxpcmds6t ### Generated code for 'dxpcmds6t' is up to date because no structural, parameter or code replacement library changes were found. ### Successful completion of build procedure for model: dxpcmds6t ### Created MLDATX ..\dxpcmds6t.mldatx
Профильные данные показывают время выполнения каждого потока на многожильном целевом компьютере
profData = tg.getProfilerData; profData.plot;
Processing data, please wait ...
bdclose('all');