Средства поиска и генераторы отчетов уменьшают количество времени и сложность, требуемую записать код, чтобы найти и сообщить относительно элементов модели Simulink®, таких как схемы и блоки, и на графиках Stateflow® и переходах, и т.д. API Отчета Simulink Report Generator™ является слоем сверху API DOM. Его средства поиска и генераторы отчетов основаны на Simulink, и Stateflow находят базовый класс. Вы задаете контейнер, в котором можно найти определенные элементы, такие как блоки в подсистеме или состояния в графике. Объекты средства поиска возвращают свои результаты в соответствующий массив объектов результата средства поиска.
API Отчета Simulink также включает классы генератора отчетов, которые возвращают изображение контейнера. Это изображение является верхним уровнем модели.
Каждый объект результата, возвращенный средством поиска, имеет связанный объект генератора отчетов, который сообщает относительно тех результатов. Объект генератора отчетов содержит содержимое и форматирует содержимое, такое как таблицы свойств и графики данных. Вы добавляете, что генератор отчетов возражает против ваших отчетов. Используйте генераторы отчетов MATLAB® Report API, чтобы задать общие элементы отчета. Смотрите то, Что Генератор отчетов? для получения информации.
Все средства поиска и генераторы отчетов имеют эти функции:
Поведения по умолчанию и значения
Позвольте заменять и настраивать их выход
Все средства поиска имеют find
hasnext
, и next
методы. find
метод находит и возвращает в массиве объектов результата все элементы для каждого найденного элемента заданного типа. hasNext
и next
методы находят и возвращают один элемент за один раз и используются, чтобы выполнить итерации по списку результатов. hasNext
метод проверяет, имеет ли контейнер по крайней мере один из элемента заданного типа. Если контейнер имеет один или несколько элементов, то hasNext
метод ставит его в очередь для next
метод, чтобы найти и возвратить в результате объект.
Все генераторы отчетов предопределили шаблоны. Шаблон для каждого генератора отчетов задает свое форматирование, размещение и отверстия содержимого. Вы не должны изменять шаблон или задавать любые форматы, размещения или отверстия, если вы не хотите индивидуально настраиваемый отчет. Можно настроить отчет путем копирования и редактирования его шаблона по умолчанию или при помощи нового шаблона. Редактирование копии шаблона по умолчанию дает вам начальную точку и структуру, чтобы следовать, чтобы настроить ваш шаблон. Используя новый шаблон позволяет вам полностью задать свой шаблон начиная с пустого файла. Чтобы изменить порядок содержимого отчета, переупорядочьте отверстия в шаблоне. Средства поиска не используют шаблоны. Другой способ настроить класс генератора отчетов путем разделения на подклассы его.
Шаблоны генератора отчетов по умолчанию для каждого выходного типа находятся в библиотеке шаблонов, которая является в
matlab\toolbox\shared\slreportgen\rpt\rpt\+slreportgen\ +report\@<reporter>\resources\templates\<output>
DiagramReporter
для PDF выход matlab\toolbox\shared\slreportgen\rpt\rpt\+slreportgen\ +report\@DiagramReporter\resources\templates\pdf\default.pdftx
API Отчета Simulink предоставляет им средство поиска, результат и классы генератора отчетов. Чтобы использовать эти классы в программе генератора отчетов, необходимо создать контейнер типа slreportgen.report.Report
содержать отчет.
Сообщите о классе API | Описание |
---|---|
slreportgen.finder.AnnotationFinder | Находит аннотации Диаграммы Simulink. |
slreportgen.finder.BlockFinder | Находит блоки в Диаграмме Simulink. |
slreportgen.finder.BlockResult | Содержит блок, найденный BlockFinder объект. |
slreportgen.finder.ChartDiagramFinder | Находит диаграммы Stateflow в модели. |
slreportgen.finder.DataDictionaryFinder | Находит словари данных Simulink. |
slreportgen.finder.DataDictionaryResult | Содержит словарь данных, найденный DataDictionary объект. |
slreportgen.finder.DiagramElementFinder | Находит элементы Диаграммы Simulink или диаграммы Stateflow. |
slreportgen.finder.DiagramElementResult | Содержит элемент диаграммы, найденный DiagramElementFinder объект. |
slreportgen.finder.DiagramFinder | Находит блок-схемы и графики в модели Simulink. |
slreportgen.finder.DiagramResult | Содержит схему, найденную DiagramFinder объект. |
slreportgen.finder.ModelVariableFinder | Находит переменные используемыми моделью Simulink. |
slreportgen.finder.ModelVariableResult | Содержит переменную модели, найденную ModelVariableFinder объект. |
slreportgen.finder.StateFinder | Находит состояния в диаграмме Stateflow. |
slreportgen.finder.StateflowDiagramElementFinder | Находит элементы диаграммы Stateflow. |
slreportgen.finder.SystemDiagramFinder | Находит системные блок-схемы в модели Simulink. |
Сообщите о классе API | Описание |
---|---|
slreportgen.report.BusObject | Отчеты относительно Simulink.Bus объекты используют моделью. |
slreportgen.report.DataDictionary | Отчеты относительно словаря данных Simulink. |
slreportgen.report.Diagram | Создает снимок состояния Диаграммы Simulink или диаграммы Stateflow. |
slreportgen.report.DocBlock | Отчеты относительно DocBlock Simulink. |
slreportgen.report.ExecutionOrder | Отчеты относительно задач или невиртуальной подсистемы модели и блоков в каждой задаче, отсортированной по порядку выполнения. |
slreportgen.report.LookupTable | Отчеты относительно точек останова и выходных точек блока интерполяционной таблицы Simulink. |
slreportgen.report.MATLABFunction | Отчеты относительно |
slreportgen.report.ModelConfiguration | Отчеты относительно активной конфигурации модели модели. |
slreportgen.report.ModelVariable | Отчеты относительно переменной модели. |
slreportgen.report.Notes | Отчеты относительно Simulink или Stateflow схематически изображают примечания. |
slreportgen.report.SimulinkObjectProperties | Составляет таблицу свойств объекта Simulink. |
slreportgen.report.StateflowObjectProperties | Составляет таблицу свойств объекта Stateflow. |
slreportgen.report.SystemHierarchy | Создает вложенный список подсистем модели Simulink или подсистемы. |
slreportgen.report.SystemIO | Отчеты относительно системных сигналов ввода и вывода Simulink. |
slreportgen.report.TestSequence | Отчеты относительно блока Simulink Test Sequence. |
slreportgen.report.TruthTable | Отчеты относительно таблицы истинности Simulink блокируются или объект таблицы истинности Stateflow. |
В этом примере показано, как найти и сообщить относительно всех блоков Simulink в vdp
модель с помощью BlockFinder
класс. Получившийся отчет HTML включает информацию по умолчанию и использует форматирование значения по умолчанию для каждого блока.
Импортируйте пакет API Отчета, которые позволяют вам использовать имена классов без включения их имен пакета. Например, можно использовать BlockFinder
вместо slreportgen.finder.BlockFinder
. В дополнение к импорту базовых классов API Отчета Simulink импортируйте базовый класс API Отчета MATLAB. Типичный отчет включает в себя титульный лист, оглавление, главы и разделы, которые вы включаете как классы генератора отчетов в API Отчета MATLAB.
import slreportgen.finder.* import slreportgen.report.* import mlreportgen.report.*
Загрузите vdp
модель.
model_name = 'vdp'; load_system(model_name)
Создайте контейнерный объект, чтобы содержать отчет и открыть отчет. В этом случае выходной отчет сохранен в заархивированном vdp_model.htmx
Отчет HTML. Можно использовать любое выходное имя, которое вы хотите. Если при запуске генератор отчетов несколько раз с помощью того же имени выходного файла, выходной файл перезаписывается. Чтобы использовать средства поиска API Отчета Simulink и генераторы отчетов в вашей программе генератора отчетов, необходимо использовать полностью определенное имя, чтобы создать контейнерный объект.
rpt = slreportgen.report.Report('vdp_model','html'); open(rpt)
Добавьте главу и задайте ее заголовок.
ch = Chapter('Blocks in Simulink vdp model');
Используйте BlockFinder
класс, чтобы создать средство поиска. В этом случае, BlockFinder
находит все блоки в модели. Используйте find
метод, чтобы найти блоки заданными средством поиска.
finder = BlockFinder(model_name); results = find(finder);
Цикл через результаты метода находки и создает раздел для каждого блока и добавляет таблицу свойства блока в раздел. Затем добавьте каждый раздел в главу. После того, как все блоки были добавлены, добавьте главу в отчет.
for result = results sect = Section('Title',result.Name); append(sect,result) append(ch,sect) end append(rpt,ch);
Закройте отчет и модель, и просмотрите отчет.
close(rpt); close_system(model_name); rptview(rpt);
Полная программа
import slreportgen.finder.* import slreportgen.report.* import mlreportgen.report.* model_name = 'vdp'; load_system(model_name); rpt = slreportgen.report.Report('vdp_model','html'); open(rpt) ch = Chapter('Blocks in Simulink vdp model'); finder = BlockFinder(model_name); results = find(finder); for result = results sect = Section('Title',result.Name); append(sect,result) append(ch,sect); end append(rpt,ch); close(rpt) close_system(model_name) rptview(rpt)
Заголовок главы и заголовки раздела и таблицы свойства первых двух блоков получившегося отчета показывают.
Создайте генератор отчетов PDF, который находит все блоки в sldemo_radar_eml
модель.
Чтобы найти все блоки, используйте BlockFinder
. if
оператор показывает, как протестировать на блоки MATLAB Function. Используйте MATLABFunction
генератор отчетов, чтобы сообщить о деталях блока MATLAB Function. else
оператор показывает, как блоки кроме блоков MATLAB Function используют BlockFinder
find
результаты метода.
blkfinder = BlockFinder(model_name); blks = find(blkfinder); if slreportgen.utils.isMATLABFunction(blks(i).Object) rptr = MATLABFunction(blks(i).Object); sec = Section(blks(i).Name); append(sec,rptr) append(ch,sec) else sec = Section(blks(i).Name); append(sec,blks(i)) append(ch,sec)
blkfinder = BlockFinder(model_name); blks = find(blkfinder);
Полная программа
import slreportgen.report.* import slreportgen.finder.* import mlreportgen.report.* model_name = 'sldemo_radar_eml'; load_system(model_name) rpt = slreportgen.report.Report('radar','pdf'); open(rpt) blkfinder = BlockFinder(model_name); blks = find(blkfinder); ch = Chapter('Blocks in sldemo_radar_eml Model'); for i=1:length(blks) if slreportgen.utils.isMATLABFunction(blks(i).Object) rptr = MATLABFunction(blks(i).Object); sec = Section(blks(i).Name); append(sec,rptr) append(ch,sec) else sec = Section(blks(i).Name); append(sec,blks(i)) append(ch,sec) end end append(rpt,ch) close(rpt) close_system(model_name) rptview(rpt)
Пример информации, сообщенной для блока MATLAB Function MATLABFunction
генератор отчетов
О примере информации сообщает find
метод BlockFinder
Этот пример описывает, как найти и сообщить относительно состояний Stateflow, переходов и соединений. Это сообщает относительно control_logic
график sldemo_fuelsys
модель.
Этот фрагмент кода использует StateFinder
и его find
метод, чтобы найти и сообщить относительно состояний в графике. Это циклично выполняется через массив найденных состояний и добавляет каждого в главу.
stFinder = StateFinder(subsys); states = find(stFinder); for state = states append(chapter,state) end append(rpt,chapter)
Чтобы сообщить относительно переходов, используйте StateflowDiagramElementFinder
и его find
метод. Чтобы показать таблицу свойства с более узкой шириной, чем значение по умолчанию, настройте выход. Во-первых, получите генератор отчетов для результата. Чтобы установить ширину, используйте TableWidth
свойство генератора отчетов.
chapter = Chapter('Title','Transitions'); trFinder = StateflowDiagramElementFinder... ('Container',subsys,'Types','transition'); transitions = find(trFinder); for transition = transitions rptr = transition.getReporter; rptr.PropertyTable.TableWidth = '3in'; append(chapter,rptr) end append(rpt,chapter)
Полная программа
import mlreportgen.report.* import slreportgen.report.* import slreportgen.finder.* model_name = 'sldemo_fuelsys'; load_system(model_name); subsys = strcat(model_name,... '/fuel_rate_control/control_logic'); rpt = slreportgen.report.Report('output','pdf'); open(rpt) tp = TitlePage('Title',... 'Control Logic Chart of sldemo_fuelsys'); append(rpt,tp) append(rpt,TableOfContents); chapter = Chapter('Title','States'); stFinder = StateFinder(subsys); states = find(stFinder); for state = states append(chapter,state) end append(rpt,chapter) chapter = Chapter('Title','Transitions'); trFinder = StateflowDiagramElementFinder... ('Container',subsys,'Types','transition'); transitions = find(trFinder); for transition = transitions rptr = transition.getReporter; rptr.PropertyTable.TableWidth = '3in'; append(chapter,rptr) end append(rpt,chapter) close(rpt) close_system(model_name) rptview(rpt)