Сообщите о порядке выполнения задач и блоков в системе Simulink

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

Блокируйтесь выполнение может быть разделено на различные задачи на основе шага расчета, если Обработка каждый дискретный уровень как отдельный параметр конфигурации задачи выбрана. Модели экспорта функций и системы, содержащие определенные блоки, такие как асинхронные прерывания или триггируемые подсистемы события, также выполнение блока группы в различные задачи. Смотрите Порядок выполнения Управления и Отображения для получения дополнительной информации о просмотре информации о задаче и блокируйте порядок выполнения в Simulink®.

Это изображение показывает схему демонстрационной модели slreportgen_demo_ExecutionOrder и сводные данные задачи и порядок выполнения блока для модели.

Поскольку модель является непрерывной системой, основной задачей, Cont, имеет значение шага расчета 0. Во всех моделях постоянные блоки разделены на Constant задачи.

MultiplyMu невиртуальная подсистема. По умолчанию невиртуальные записи подсистемы в списке порядков выполнения блока содержат ссылку на список порядков выполнения блока для той подсистемы. В качестве альтернативы можно сконфигурировать ExecutionOrder опции генератора отчетов к подсистеме отображения блокируются как вложенный список.

Открытая модель

Откройте модель. Этот пример использует однозадачную модель, то есть, все блоки кроме постоянных блоков выполняются во время той же задачи.

model = "slreportgen_ExecutionOrder_example";
open_system(model);

Сообщите о Setup

Импортируйте пакеты 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")

Смотрите также

Похожие темы