slreportgen.report.ExecutionOrder class

Пакет: slreportgen.report
Суперклассы: slreportgen.report.Reporter

Репортер системной задачи и блока порядка выполнения

Описание

Используйте объект slreportgen.report.ExecutionOrder класс для отчета о задачах модели или невиртуальной подсистемы и блоках в каждой задаче, отсортированных по порядку выполнения. По умолчанию an ExecutionOrder reporter генерирует:

  • Таблица имен и свойств задач

  • Список блоков в каждой задаче

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

Используйте ExecutionOrder свойства reporter для фильтрации сообщенного содержимого и настройки форматирования содержимого.

Примечание

Как использовать slreportgen.report.ExecutionOrder репортер в отчете, вы должны создать отчет с помощью slreportgen.report.Report класс или подкласс. Система координат ExecutionOrder reporter не генерирует содержимое, если оно добавлено в slreportgen.report.Report объект, который имеет CompileModelBeforeReporting установлено на false.

The slreportgen.report.ExecutionOrder класс является handle класс.

Атрибуты класса

HandleCompatible
true

Для получения информации об атрибутах класса см. раздел «Атрибуты класса».

Создание

Описание

reporter = slreportgen.report.ExecutionOrder() создает пустой ExecutionOrder объект reporter на основе шаблона по умолчанию. Необходимо задать модель или подсистему, для которой необходимо сообщить о порядке выполнения путем установки свойства Object. Используйте другие свойства для задания опций отчета.

пример

reporter = slreportgen.report.ExecutionOrder(system) создает ExecutionOrder reporter и устанавливает свойство Объекта в заданную модель или подсистему.

reporter = slreportgen.report.ExecutionOrder(Name,Value) устанавливает свойства reporter с помощью пар "имя-значение". Можно задать несколько аргументы пары "имя-значение" в любом порядке. Заключайте каждое имя свойства в одинарные или двойные кавычки.

Свойства

расширить все

Моделируйте или невиртуальный блок подсистемы для отчета, заданный как один из следующих типов значений:

  • Вектор символов или строковый скаляр, содержащий путь модели или подсистемы

  • Указатель на модель или подсистему

  • Система координат slreportgen.finder.BlockResult объект

  • Система координат slreportgen.finder.DiagramResult объект

Определение BlockResult или DiagramResult который представляет выгруженную модель или виртуальную подсистему, приводит к ошибке.

Включать ли таблицу сведений о задаче, заданную как true или false. Если ShowTaskDetails является true, reporter генерирует таблицу, в которой отображаются имена и свойства задач в указанной системе.

Типы данных: logical

Будет ли включать списки порядка выполнения блоков, заданные как true или false. Если ShowBlockEecutionOrder является true, репортер включает список блоков, отсортированных в порядке выполнения, для каждой задачи в системе. Условно выполненные блоки, такие как подсистемы, инициируемые вызовом функции или If блоком, не отображаются в списке порядка выполнения. Вместо этого эти блоки отображаются в Conditional Execution таблица, следующая за списком порядков выполнения блоков. В таблице перечислены условно выполненные блоки и блоки, которые запускают их выполнение.

Типы данных: logical

Свойства для отчета каждой системной задачи, заданные как строковые массивы или массив ячеек из векторов символов. По умолчанию все свойства включены. Допустимые свойства:

  • Order - Место задачи в порядке выполнения задачи на каждом временном шаге. Для задач Asynchronous и Constant это свойство сообщается как N/A.

  • Name - Имя задачи.

  • Type - Тип задачи, например Periodic, Aperiodic, Asynchronous, или Constant.

  • Trigger - Скорость выполнения периодических задач или список времени выполнения апериодических задач.

  • TaskID - Индекс задачи в указанной системе.

  • SourceBlock - Блок, который определяет задачу.

Пример: ["Order" "Name" "Type" "Trigger" "TaskID" "SourceBlock"]

Пример: {'Order' 'Name' 'Type'}

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

Типы данных: logical

Отображать ли тип каждого блока в списках порядка выполнения блоков, задается как true или false. Если ShowBlocktype является true, репортер включает тип каждого блока рядом с именем блока в списках порядка выполнения.

Типы данных: logical

Отображать ли блоки, созданные во время компиляции, задается как true или false. Если ShowHiddenBlocks является true, репортер включает блоки, которые Simulink® вставляется при компиляции модели. Если ShowHiddenBlocks является false, репортер включает только добавленные пользователем блоки.

Типы данных: logical

Ссылка ли на блочные списки невиртуальных подсистем, задается как true или false. Если IncludeSubsystemBlocks true, reporter включает ссылки на невиртуальные подсистемные блоки. Свойство SubsystemBlocksDisplayPolicy определяет, как на блоки невиртуальной подсистемы ссылаются.

Типы данных: logical

Политика для ссылки на списки порядка выполнения блоков, которые находятся в невиртуальных подсистемах, заданная в качестве одного из следующих строковых скаляров или векторов символов:

  • "Link" - (по умолчанию) Рядом с именем подсистемы вставляется ссылка на отдельный список порядка выполнения блоков для подсистемы. Ссылка работает, только если программа генерации отчетов, которая включает этого репортера, также включает отдельную ExecutionOrder reporter для подсистемы. Для каждой задачи, которая включает подсистему в модель многозадачности, ссылка переходит к списку порядка выполнения блока для соответствующей задачи, сообщенной подсистемой ExecutionOrder репортер. Для подсистем MATLAB Function блоков не вставлено ссылки.

  • "NestedList" - Блоки Subsystem отображаются как вложенный список.

Функция или выражение для фильтрации системных задач из отчета, заданные как указатель на функцию, строковый скаляр или вектор символов. Задайте функцию как указатель на функцию. Задайте выражение как строковый скаляр или вектор символов. Если TaskFilterFcn пуст, все задачи включены в отчет.

Если вы предоставляете указатель на функцию, связанная функция должна:

  • Примите следующие аргументы:

    • taskName - Имя задачи.

    • taskType - Тип задачи.

    • trigger - Шаг расчета или времени хита задачи. Если время хита для апериодической задачи задано как выражение, триггером является строка, содержащая выражение, которое будет вычисляться.

    • sourceBlock- Блок, который определяет задачу.

  • Возврат true для фильтрации указанной задачи из отчета или false включить задачу в отчет.

Для примера этот код использует TaskFilterFcn свойство для отчета только о периодических задачах:

import slreportgen.finder.*
import slreportgen.report.*
import mlreportgen.report.*

model_name = "vdp";
load_system(model_name);

rpt = slreportgen.report.Report("ExecutionOrder_example","html");

finder = DiagramFinder(model_name);

ch = Chapter("Diagrams");
while hasNext(finder)
    result = next(finder);
    % Only report block diagrams and nonvirtual subsystems
    if (strcmpi(result.Type,"Simulink.SubSystem")...
            && strcmpi(get_param(result.Object,"IsSubsystemVirtual"),"off")) ...
            || strcmpi(result.Type,"Simulink.BlockDiagram")
        sect = Section(result.Name);
        append(sect,result);
        % Create ExecutionOrder reporter and add to report
        rptr = ExecutionOrder(result);
        % Filter all but periodic tasks
        filterFcnHandle = @(taskName, taskType, trigger, sourceBlock) ...
            ~strcmpi(taskType, "Periodic");
        rptr.TaskFilterFcn = filterFcnHandle;
        append(sect,rptr);
        
        append(ch,sect);
    end
end

append(rpt,ch);
close(rpt);
rptview(rpt);

Если вы задаете строковый скаляр или вектор символов, он должен содержать выражение. Выражение:

  • Можно использовать переменные taskName, taskType, trigger, и sourceBlock

  • Необходимо задать переменную isFiltered на true для фильтрации указанной задачи из отчета или false включить задачу в отчет

Для примера этот код использует TaskFilterFcn свойство для отчета только о периодических задачах:

import slreportgen.finder.*
import slreportgen.report.*
import mlreportgen.report.*

model_name = "vdp";
load_system(model_name);

rpt = slreportgen.report.Report("ExecutionOrder_example","html");

finder = DiagramFinder(model_name);

ch = Chapter("Diagrams");
while hasNext(finder)
    result = next(finder);
    % Only report block diagrams and nonvirtual subsystems
    if (strcmpi(result.Type,"Simulink.SubSystem")...
            && strcmpi(get_param(result.Object,"IsSubsystemVirtual"),"off")) ...
            || strcmpi(result.Type,"Simulink.BlockDiagram")
        sect = Section(result.Name);
        append(sect,result);
        % Create ExecutionOrder reporter and add to report
        rptr = ExecutionOrder(result);
        % Filter all but periodic tasks
        % Code string to include only asynchronous tasks
        filterStr = "isFiltered = ~strcmpi(taskType, ""Periodic"");";
        rptr.TaskFilterFcn = filterStr;
        append(sect,rptr);
        
        append(ch,sect);
    end
end

append(rpt,ch);
close(rpt);
rptview(rpt);

Форматтер для таблицы сведений о задаче, заданный как mlreportgen.report.BaseTable объект. Значение по умолчанию этого свойства является BaseTable объект со TableStyleName значение свойства установлено в ExecutionOrderTable стиль, заданный в шаблоне по умолчанию для ExecutionOrder репортер. Чтобы настроить внешний вид таблицы, измените свойства BaseTable по умолчанию объект или замените объект на свой собственный BaseTable объект. Если вы добавляете содержимое в Title свойство BaseTable объект, содержимое появляется перед заголовком таблицы в сгенерированном отчете.

Форматтер для списков порядка выполнения блоков, заданный как mlreportgen.dom.OrderedList объект или mlreportgen.dom.UnorderedList объект. The OrderedList или UnorderedList объект не должен содержать элементов списка.

Значение по умолчанию этого свойства является OrderedList объект со StyleName значение свойства установлено в ExecutionOrderList стиль, заданный в шаблоне по умолчанию для ExecutionOrder репортер. Чтобы настроить внешний вид списка, измените свойства OrderedList по умолчанию объект или замените объект на свой собственный OrderedList или UnorderedList объект.

Источник шаблона для этого репортера, заданный одним из следующих способов:

  • Вектор символов или строковый скаляр, который задает путь к файлу, содержащему шаблон для этого репортера

  • Репортер или отчет, шаблон которого используется для этого репортера или библиотека шаблонов которого содержит шаблон для этого репортера

  • DOM-документ или деталь документа, шаблон которой используется для этого репортера или библиотека шаблонов которой содержит шаблон для этого репортера

Указанный шаблон должен совпадать с типом отчета, к которому добавлен этот репортер. Для примера, для Microsoft® Отчет о словах, TemplateSrc должен быть шаблоном репортера Word. Если на TemplateSrc свойство пусто, этот репортер использует шаблон reporter по умолчанию для типа выхода отчета.

Имя шаблона для этого репортера, заданное как вектор символов или строковый скаляр. Шаблон для этого репортера должен быть в библиотеке шаблонов источника шаблона (TemplateSrc) для этого репортера.

Цель гиперссылки для этого репортера, заданная как вектор символов или строковый скаляр, задающий идентификатор цели ссылки или mlreportgen.dom.LinkTarget объект. Вектор символов или строковое скалярное значение преобразуется в LinkTarget объект. Цель ссылки непосредственно предшествует содержимому этого репортера в выход отчете.

Методы

расширить все

Примеры

свернуть все

Для каждого блока или виртуальной подсистемы vdp моделировать, сообщать системные задачи и блоки в каждой задаче, в порядке выполнения.

Импортируйте пакеты MATLAB и Simulink Report API так, чтобы вам не пришлось использовать длинные, полные имена классов.

import mlreportgen.report.*
import slreportgen.finder.*
import slreportgen.report.*

Откройте модель и создайте отчет.

model_name = 'vdp';
load_system(model_name);
 
rpt = slreportgen.report.Report("ExecutionOrder_example","pdf");

Создайте искатель, чтобы найти все схемы в модели. Создайте Diagrams глава.

finder = DiagramFinder(model_name);
ch = Chapter("Diagrams");

Для каждой схемы, которая является блок-схемой или невиртуальной подсистемой, сообщите о системных задачах и блоках в порядке выполнения, используя значения по умолчанию slreportgen.report.ExecutionOrder свойства reporter.

while hasNext(finder)
    result = next(finder);
    if (strcmpi(result.Type,"Simulink.SubSystem") &&...
            strcmpi(get_param(result.Object,"IsSubsystemVirtual"),"off")) ...
            || strcmpi(result.Type,"Simulink.BlockDiagram")
        sect = mlreportgen.report.Section(result.Name);
        append(sect,result);
        rptr = slreportgen.report.ExecutionOrder(result);
        append(sect,rptr);
        append(ch,sect);
    end
end

Добавьте главу к отчету. Закройте и просмотрите отчет.

append(rpt,ch);
close(rpt);
rptview(rpt);
Введенный в R2020b