В этом примере показано, как создать отчет, отображающий информацию обо всех задачах, выполняемых моделью, и порядок выполнения блоков в течение каждой задачи.
Выполнение блока может быть разделено на различные задачи на основе времени выборки, если выбран параметр Рассматривать каждую дискретную скорость как отдельный параметр конфигурации задачи. Модели и системы с функциями экспорта, содержащие определенные блоки, такие как асинхронные прерывания или подсистемы, инициируемые событиями, также группируют выполнение блоков в различные задачи. Дополнительные сведения о просмотре информации о задачах и порядке выполнения блоков в Simulink ® см. в разделе Порядок выполнения управления и отображения.
На этом рисунке показана схема образца модели slreportgen_demo_ExecutionOrder и порядок выполнения сводки задач и блоков для модели.

Потому что модель - это непрерывная система, главная задача, Cont, имеет значение времени выборки, равное 0. Во всех моделях блоки констант разделяются на Constant задачи.
MultiplyMu является невиртуальной подсистемой. По умолчанию невиртуальные элементы подсистемы в списке порядка выполнения блока содержат ссылку на список порядка выполнения блока для этой подсистемы. Кроме того, можно настроить ExecutionOrder для отображения блоков подсистем в виде вложенного списка.
Откройте модель. В этом примере используется однозадачная модель, то есть все блоки, кроме постоянных, выполняются во время одной и той же задачи.
model = "slreportgen_ExecutionOrder_example";
open_system(model);Импортируйте пакеты API Report Generator, чтобы не использовать длинные, полные имена классов.
import mlreportgen.report.* import slreportgen.report.* import slreportgen.finder.*
Создайте и откройте объект отчета Simulink. Чтобы создать отчет Microsoft ® Word, HTML или однофайловый HTML, измените "pdf" комуdocx", "html", или "html-file"соответственно.
rpt = slreportgen.report.Report(model + "_Report","pdf"); open(rpt);
Добавление титульной страницы и оглавления.
titlepage = TitlePage("Title",model + ": Execution Order Report","Author","Jane Doe"); add(rpt,titlepage); toc = TableOfContents(); add(rpt, toc);
Поиск и петля по всем системам в модели.
finder = SystemDiagramFinder(model);
while hasNext(finder)
system = next(finder);Создайте новую главу и добавьте результат диаграммы.
ch = Chapter("Title",sprintf("System %s",system.Name)); add(ch,system);
Сообщите порядок выполнения системы только в том случае, если это блок-схема или невиртуальная подсистема. Блоки в виртуальных подсистемах отображаются в порядке выполнения родительского блока.
isNonvirtualSubsystem = strcmp(system.Type, "Simulink.SubSystem") ... && strcmp(get_param(system.Object, "IsSubsystemVirtual"), "off"); if strcmp(system.Type,"Simulink.BlockDiagram") || isNonvirtualSubsystem
Создание Execution Order раздел и ExecutionOrder репортер.
eoSect = Section("Execution Order");
eoRptr = ExecutionOrder(system); Для подсистем установите ExecutionOrder опции, чтобы подробности задачи не сообщались, поскольку эта информация уже сообщается порядком выполнения родительской блок-схемы.
if isNonvirtualSubsystem eoRptr.ShowTaskDetails = false; end
Добавить ExecutionOrder репортер для Execution Order и добавьте эту главу в отчет.
add(eoSect,eoRptr);
add(ch,eoSect);
endСоздайте раздел, содержащий сведения о каждом блоке в системе. Блоки, включенные в ExecutionOrder списки заказов на выполнение блоков ссылаются на соответствующие подробные данные блоков в этом разделе.
blkSect = Section("Blocks");
blkFinder = BlockFinder(system);
results = find(blkFinder);
add(blkSect,results);
add(ch,blkSect);Добавьте главу в отчет.
add(rpt,ch);
endclose(rpt); rptview(rpt);
Для просмотра отчета о порядке выполнения для других типов моделей просмотрите примеры отчетов, доступных в этом примере.
Образец модели slreportgen_demo_Multitasking конфигурируется для обработки каждого дискретного времени выборки как отдельной задачи. Время выборки для блоков In1_1s, SS1, и SS2 составляет 1 секунду, а время выборки для блока In2_2s 2 секунды.

Модель также сконфигурирована для отображения блоков, кодированных цветом по времени выборки. Блоки, которые выполняются за 1 секунду выборки, являются красными, а блоки, которые выполняются за 2 секунды выборки, - зелеными. Многоскоростные блоки, такие как блок перехода скорости между Integrator блок и две подсистемы - желтые. Чтобы программно настроить модель таким образом, выполните следующую команду:
set_param(model, "SampleTimeColors", "on");
Порядок выполнения для этой модели отражает две задачи. Trigger в столбце таблицы сведений о задаче отображается время выборки (в секундах) для каждой задачи.

Блоки модели разделяются задачами. Блок «скорость-переход» выполняется во время обеих задач, поэтому он включается в оба списка. Однако во время выполнения задачи выполняется только его выходной порт D1, и только его входной порт выполняется во время задачи D2.

Чтобы просмотреть полный образец отчета, выполните следующую команду:
rptview("slreportgen_demo_Multitasking_Report.pdf")Некоторые задачи, например задачи, созданные асинхронными прерываниями или прослушивателями событий, не выполняются на основе времени выборки. Например, образец модели slreportgen_demo_InitResetTerm использует три подсистемы с выполнением, управляемым прослушивателями событий. Каждый прослушиватель событий сконфигурирован для выполнения подсистемы при получении события инициализации, сброса или завершения вызова функции.

События инициализации, сброса и завершения отображаются как отдельные задачи в порядке выполнения. Их выполнение напрямую не зависит от времени выборки модели, поэтому им не присваивается номер заказа в таблице задач. SourceBlock столбец обозначает, какой блок определяет задачу.

Чтобы просмотреть полный образец отчета, выполните следующую команду:
rptview("slreportgen_demo_InitResetTerm_Report.pdf")Образец модели slreportgen_demo_ConditionalExecution содержит блок If и блок генератора вызовов функций, которые управляют выполнением определенных подсистем в модели.

Условно выполненные подсистемы не указываются в списке порядка выполнения блоков, поскольку они не обязательно выполняются на каждом шаге времени. Вместо этого они включаются в Conditional Execution таблица, которая отображается после списка порядка выполнения блокировки.

Чтобы просмотреть полный образец отчета, выполните следующую команду:
rptview("slreportgen_demo_ConditionalExecution_Report.pdf")slreportgen.report.ExecutionOrder