В этом примере показано, как создать отчет, что информация об отображениях обо всех задачах, выполняемых моделью и порядком, в котором блоки выполняются во время каждой задачи.
Блокируйтесь выполнение может быть разделено на различные задачи на основе шага расчета, если Обработка каждый дискретный уровень как отдельный параметр конфигурации задачи выбрана. Модели экспорта функций и системы, содержащие определенные блоки, такие как асинхронные прерывания или триггируемые подсистемы события, также выполнение блока группы в различные задачи. Смотрите Порядок выполнения Управления и Отображения для получения дополнительной информации о просмотре информации о задаче и блокируйте порядок выполнения в 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. Чтобы создать Word Microsoft®, 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);
end
close(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
содержит, Если блок и Блок Function-Call Generator, которые управляют, когда определенные подсистемы в модели выполняются.
Об условно выполняемых подсистемах не сообщают в списке порядков выполнения блока, потому что они не обязательно выполняются на каждом временном шаге. Вместо этого они включены в Conditional Execution
таблица, о которой сообщают после списка порядков выполнения блока.
Чтобы просмотреть полный демонстрационный отчет, выполните эту команду:
rptview("slreportgen_demo_ConditionalExecution_Report.pdf")
slreportgen.report.ExecutionOrder