Анализируйте интерфейс сгенерированного кода

Интерфейс кода сообщает об обзоре

Когда вы выбираете опцию Create code generation report для основанной на ERT модели, раздел Code Interface Report автоматически включен в сгенерированный отчет HTML. Раздел Code Interface Report предоставляет документацию интерфейса сгенерированного кода, включая функции точки входа модели и интерфейсные данные, для потребителей сгенерированного кода. Информация в отчете может помочь упростить рассмотрение кода и интеграцию кода.

Отчет интерфейса кода включает в себя следующие подразделы:

  • Entry-Point Functions — интерфейсная информация о каждой функции точки входа модели, включая model_initialize, model_step, и (если применимо) model_reset и model_terminate.

  • Inports и Outports — интерфейсная информация о каждом импорте модели и выходном порте.

  • Interface Parameters — интерфейсная информация о настраиваемых параметрах, которые сопоставлены с моделью.

  • Data Stores — интерфейсная информация о хранилищах глобальных данных и хранилищах данных с non-auto устройство хранения данных, которые сопоставлены с моделью.

Для ограничений, которые применяются к отчетам интерфейса кода, смотрите Ограничения Отчета Интерфейса Кода.

В целях рисунка этот раздел использует следующие модели:

  • rtwdemo_basicsc (с кнопкой ExportedGlobal Storage Class, нажатой в окне модели) для примеров подразделов отчета

  • rtwdemo_mrmtbb для примеров времени выполнения

  • rtwdemo_fcnprotoctrl для примеров аргумента функции и информации о возвращаемом значении

Генерация отчета интерфейса кода

Чтобы сгенерировать код соединяют интерфейсом с отчетом для вашей модели:

  1. Откройте свою модель, перейдите к панели Code Generation диалогового окна Configuration Parameters и выберите ert.tlc или основанный на ERT System target file, если вы уже не выбраны.

  2. Перейдите к Code Generation> панель Report диалогового окна Configuration Parameters и выберите опцию Create code generation report, если это уже не выбрано. rtwdemo_basicsc, rtwdemo_mrmtbb, и rtwdemo_fcnprotoctrl модели, используемые в этом разделе, выбирают несколько опций панели Report по умолчанию. Но выбирая только Create code generation report, генерирует раздел Code Interface Report в отчете HTML.

    В качестве альтернативы можно программно выбрать опцию путем выдачи следующей команды MATLAB®:

    set_param(bdroot, 'GenerateReport', 'on')

    Если параметр Code-to-model выбран, сгенерированный отчет содержит гиперссылки на модель. Оставьте это значение выбранным, если вы не планируете использовать отчет вне среды MATLAB.

  3. Создайте модель. Если вы выбрали опцию панели Report Open report automatically, отчет генерации кода открывается автоматически после того, как процесс сборки завершен. (В противном случае можно открыть его вручную из папки сборки модели.)

  4. Чтобы отобразить отчет интерфейса кода для вашей модели, перейдите к панели Contents отчета HTML и щелкните по ссылке Code Interface Report. Например, вот отчет интерфейса сгенерированного кода для модели rtwdemo_basicsc (с кнопкой ExportedGlobal Storage Class, нажатой в окне модели).

Для справки, перемещающейся по содержимому подразделов отчета интерфейса кода, смотрите Перешедшие Подразделы Отчета Интерфейса Кода. Для справки, интерпретирующей содержимое подразделов отчета интерфейса кода, смотрите, что разделы начинаются с Интерпретации Подраздела Функций Точки входа.

Навигация по интерфейсу кода сообщает о подразделах

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

  • Для большого подраздела отчет обеспечивает [-] и [+] символы, которые позволяют вам сворачивать или расширять тот раздел. В примере в предыдущем разделе символы обеспечиваются для разделов Interface Parameters и Inports.

  • Несколько форм навигации гиперссылки обеспечиваются в отчете интерфейса кода. Например:

    • Table of Contents, расположенный наверху отчета интерфейса кода, обеспечивает ссылки на каждый подраздел.

    • Можно кликнуть по каждому имени функции, чтобы перейти к его определению в modelC.

    • Можно кликнуть по имени заголовочного файла каждой функции, чтобы перейти к списку источников заголовочного файла.

    • Если вы выбрали параметр Code-to-model для своей модели, чтобы перейти к соответствующему местоположению в отображении модели, можно кликнуть по гиперссылкам для любого следующего:

      • Аргумент функции

      • Функциональное возвращаемое значение

      • Inport

      • Выходной порт

      • Интерфейсный параметр (если источник параметра является блоком),

      • Хранилище данных (если источник хранилища данных является блоком Data Store Memory),

Для обратной и прямой навигации в рамках отчета генерации кода HTML используйте кнопки Back и Forward выше раздела Contents в верхнем левом углу отчета.

Интерпретация подраздела функций точки входа

Подраздел Entry-Point Functions отчета интерфейса кода предоставляет следующую интерфейсную информацию о каждой функции точки входа модели, включая model_initialize, model_step, и (если применимо) model_reset и model_terminate.

Поле Описание
Function:Перечисляет имя функции. Можно кликнуть по имени функции, чтобы перейти к его определению в modelC.
PrototypeОтображает прототипа функции, включая функциональное возвращаемое значение, имя и аргументы.
DescriptionПредоставляет текстовое описание цели функции в приложении.
TimingОписывает характеристики синхронизации функции, такой как, сколько раз функция вызвана, или если это периодически называется, и в какое время интервал. Для многоскоростного примера синхронизации смотрите следующий rtwdemo_mrmtbb сообщите о выборке.
ArgumentsЕсли функция имеет аргументы, отображает номер, имя, тип данных и описание Simulink® для каждого аргумента. Если вы выбираете параметр Code-to-model для своей модели, можно кликнуть по гиперссылке в описании, чтобы продаться на аукционе, соответствуя аргументу в отображении модели. Для примеров аргумента смотрите rtwdemo_fcnprotoctrl сообщите о выборке ниже.
Return valueЕсли функция имеет возвращаемое значение, это поле отображает тип данных возвращаемого значения и описание Simulink. Если вы выбрали параметр Code-to-model для своей модели, можно кликнуть по гиперссылке в описании, чтобы продаться на аукционе, соответствуя возвращаемому значению в отображении модели. Для примера возвращаемого значения смотрите следующий rtwdemo_fcnprotoctrl сообщите о выборке.
Header fileПеречисляет имя заголовочного файла для функции. Можно кликнуть по имени заголовочного файла, чтобы перейти к списку источников заголовочного файла.

Например, вот подраздел Entry-Point Functions для модели rtwdemo_basicsc.

Чтобы проиллюстрировать, как время выполнения может быть перечислено для многоскоростной модели, вот, Entry-Point Functions и подразделы Inports для модели rtwdemo_mrmtbb. Это многоскоростное, дискретное время, многозадачная модель содержит блоки 1 и 2 Inport, которые задают 1 второй и 2-секундный шаг расчета, соответственно. Шаги расчета ограничиваются к требуемым временам опцией Periodic sample time constraint на панели Solver диалогового окна Configuration Parameters.

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

Интерпретация Инпортов и подразделов выходных портов

Inports и подразделы Outports отчета интерфейса кода предоставляют следующую интерфейсную информацию о каждом импорте и выходном порте в модели.

Поле Описание
Block NameОтображает имя блока Simulink импорта или выходного порта. Если вы выбрали параметр Code-to-model для своей модели, можно нажать на каждый импорт или выходной порт значение Block Name, чтобы перейти к его местоположению в отображении модели.
Code Identifier

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

  • Если данные заданы в сгенерированном коде, поле отображает текст идентификатора.

  • Если данные объявлены, но не заданы в сгенерированном коде — например, если данные разрешены с импортированным классом памяти — поле отображает текст идентификатора, снабженный префиксом метку 'Imported data:'.

  • Если данные ни не заданы, ни объявлены в сгенерированном коде — например, если параметр конфигурации модели Code interface packaging установлен в Reusable function — поле отображает текст 'Defined externally'.

Data TypeПеречисляет тип данных импорта или выходного порта.
Scaling

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

Примечание

У вас должна быть лицензия Fixed-Point Designer™, чтобы видеть, что фиксированная точка масштабирует информацию в отчете. Для получения дополнительной информации о том, как масштабирование представлено в таблице, смотрите Тип данных с фиксированной точкой и Масштабирующееся Обозначение (Fixed-Point Designer).

DimensionПеречисляет размерности импорта или выходного порта (например, 1 или [4, 5]).

Например, вот Inports и подразделы Outports для модели rtwdemo_basicsc.

Интерпретация интерфейсного подраздела параметров

Подраздел Interface Parameters отчета интерфейса кода предоставляет следующую интерфейсную информацию о настраиваемых параметрах, которые сопоставлены с моделью.

Поле Описание
Parameter Source

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

  • Если источник значения параметров является блоком, поле отображает имя блока, такое как <Root>/Gain2 или <S1>/Lookup1. Если вы выбрали параметр Code-to-model для своей модели, можно кликнуть по значению Parameter Source, чтобы перейти к местоположению параметра в отображении модели.

  • Если источник значения параметров является переменной рабочей области, поле отображает имя переменной рабочей области.

Code Identifier

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

  • Если данные заданы в сгенерированном коде, поле отображает текст идентификатора.

  • Если данные объявлены, но не заданы в сгенерированном коде — например, если данные разрешены с импортированным классом памяти — поле отображает текст идентификатора, снабженный префиксом метку 'Imported data:'.

  • Если данные ни не заданы, ни объявлены в сгенерированном коде — например, если параметр конфигурации модели Code interface packaging установлен в Reusable function — поле отображает текст 'Defined externally'.

Data TypeПеречисляет тип данных настраиваемого параметра.
Scaling

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

Примечание

У вас должна быть лицензия Fixed-Point Designer, чтобы видеть, что фиксированная точка масштабирует информацию в отчете. Для получения дополнительной информации о том, как масштабирование представлено в таблице, смотрите Тип данных с фиксированной точкой и Масштабирующееся Обозначение (Fixed-Point Designer).

DimensionПеречисляет размерности настраиваемого параметра (например, 1 или [4, 5, 6]).

Например, вот подраздел Interface Parameters для модели rtwdemo_basicsc (с кнопкой ExportedGlobal Storage Class, нажатой в окне модели).

Интерпретация подраздела хранилищ данных

Подраздел Data Stores отчета интерфейса кода предоставляет следующую интерфейсную информацию о хранилищах глобальных данных и хранилищах данных с non-auto устройство хранения данных, которые сопоставлены с моделью.

Поле Описание
Data Store Source

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

  • Если хранилище данных задано с помощью блока Data Store Memory, поле отображает имя блока, такое как <Root>/DS1. Если вы выбрали параметр Code-to-model для своей модели, можно нажать на значение Data Store Source, чтобы перейти к местоположению хранилища данных в отображении модели.

  • Если хранилище данных задано с помощью Simulink.Signal объект, поле отображает имя Simulink.Signal объект.

Code Identifier

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

  • Если данные заданы в сгенерированном коде, поле отображает текст идентификатора.

  • Если данные объявлены, но не заданы в сгенерированном коде — например, если данные разрешены с импортированным классом памяти — поле отображает текст идентификатора, снабженный префиксом метку 'Imported data:'.

  • Если данные ни не заданы, ни объявлены в сгенерированном коде — например, если параметр конфигурации модели Code interface packaging установлен в Reusable function — поле отображает текст 'Defined externally'.

Data TypeПеречисляет тип данных хранилища данных.
Scaling

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

Примечание

У вас должна быть лицензия Fixed-Point Designer, чтобы видеть, что фиксированная точка масштабирует информацию в отчете. Для получения дополнительной информации о том, как масштабирование представлено в таблице, смотрите Тип данных с фиксированной точкой и Масштабирующееся Обозначение (Fixed-Point Designer).

DimensionПеречисляет размерности хранилища данных (например, 1 или [1, 2]).

Например, вот подраздел Data Stores для модели rtwdemo_basicsc (с кнопкой ExportedGlobal Storage Class, нажатой в окне модели).

Интерфейс кода сообщает об ограничениях

Нижеследующие ограничения применяются к разделу интерфейса кода отчетов генерации кода HTML.

  • Отчет интерфейса кода не поддерживает интерфейс GRT с целью ERT или упаковкой интерфейса C++ class кода. Для этих настроек отчет интерфейса кода не сгенерирован и не появляется в генерации кода HTML, сообщает панель Contents.

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

    • Свойство Type класса памяти установлено в FlatStructure. Например, BitField и Struct классам памяти в пакете Simulink установили Type на FlatStructure.

    • Свойство Type класса памяти установлено в Other. Например, GetSet классу памяти в пакете Simulink установили Type на Other.

    • Свойство Data access класса памяти установлено в Pointer, указание, которое импортировало символы, объявляется как переменные указателя, а не простые переменные. Это свойство доступно только, когда свойство Data scope класса памяти установлено в Imported или Instance-specific.

    В этих случаях отчет отображает пустые поля Data Type и Dimension.

  • Для выходных портов отчет интерфейса кода не может описать связанную память (тип данных и размерности), если память оптимизирована. В этих случаях отчет отображает пустые поля Data Type и Dimension.

  • Отчет интерфейса кода не поддерживает замену типа данных с помощью Code Generation> панель Data Type Replacement диалогового окна Configuration Parameters. Типы данных, перечисленные в отчете, соединятся со встроенными типами данных, а не их заданными заменяющими типами данных.

Похожие темы