В этом примере показано, как применить явное разбиение для улучшения параллельного выполнения приложения реального времени, создаваемого с помощью Simulink Real-Time.
Simulink Real-Time поддерживает параллельное выполнение, используя неявное разбиение или явное разбиение моделей. В этом примере показана взаимосвязь между явным разбиением задач в подсистемах модели и выполнением задач с помощью инструмента профилирования Simulink Real-Time.
Пример модели slrt_ex_mds_and_tasks работает с частотой выборки 0,001 секунды.
Чтобы запустить модель с откорректированной частотой выборки 0,01 секунды, измените оценку пробы перед выполнением примера. В окне команды MATLAB введите:
Ts = 0,01;
Явное разбиение в модели верхнего уровня происходит в подсистеме1.
open_system(fullfile(matlabroot,'toolbox','slrealtime','examples','slrt_ex_mds_subsystem1'));

Явное разбиение в модели верхнего уровня происходит в подсистеме2.
open_system(fullfile(matlabroot,'toolbox','slrealtime','examples','slrt_ex_mds_subsystem2'));

Открытие модели slrt_ex_mds_and_tasks. Модель сопоставлена семи потокам: 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='slrt_ex_mds_and_tasks'; open_system(fullfile(matlabroot,'toolbox','slrealtime','examples',mdl));

Чтобы применить явное разбиение, в редакторе Simulink на вкладке Real-Time щелкните Hardware Settings, а затем выберите Solver > Configure Tasks. Выберите Tasks and Mapping узел.

Создайте, загрузите и запустите модель.
set_param(mdl,'RTWVerbose','off'); slbuild(mdl); tg = slrealtime; load(tg,mdl); % Open TET Monitor slrtTETMonitor; % Start profiler on the target computer startProfiler(tg); start(tg); pause(2); stop(tg);
### Starting serial model reference simulation build ### Model reference simulation target for slrt_ex_mds_subsystem1 is up to date. ### Model reference simulation target for slrt_ex_mds_subsystem2 is up to date. ### Starting serial model reference code generation build ### Successful completion of build procedure for: slrt_ex_mds_subsystem1 ### Successful completion of build procedure for: slrt_ex_mds_subsystem2 ### Generated code for 'slrt_ex_mds_and_tasks' is up to date because no structural, parameter or code replacement library changes were found. ### Successful completion of build procedure for: slrt_ex_mds_and_tasks ### Created MLDATX ..\slrt_ex_mds_and_tasks.mldatx Build Summary 0 of 3 models built (3 models already up to date) Build duration: 0h 0m 14.687s
Данные профилирования показывают время выполнения каждого потока на многоядерном целевом компьютере.
profData = tg.getProfilerData; profData.plot;
Processing data on target computer ... Transferring data from target computer ... Processing data on host computer ...


bdclose('all');