Code Mappings Editor – C

Ассоциируйте элементы модели с определениями кода

Описание

Редактор Отображения является графическим интерфейсом, где можно сконфигурировать элементы данных в модели, исключая модели-ссылки, для генерации кода. Каждая модель в иерархии модели-ссылки имеет свои собственные отображения кода. Связать каждую категорию элемента данных моделей с определенным классом памяти в модели. Затем переопределите эти настройки, при необходимости, для конкретных элементов данных.

Класс памяти определяет такие свойства, как внешний вид и местоположение, которые генератор кода использует при создании кода для связанных данных.

Чтобы сконфигурировать элементы данных и функции для генерации кода, используйте таблицы в Отображения Code отображения editor:

  • Data Defaults

  • Inports

  • Outports

  • Parameters

  • Data Stores

  • Signals/States

При выборе строки в активной таблице в Code разделе Property Inspector отображаются параметры свойства класса памяти для выбранного элемента данных.

Прежде чем вы сможете сконфигурировать сигнал для генерации кода, добавьте сигнал к отображениям кода модели. Добавьте и удалите сигналы из отображений кода путем паузы на эллипсисе, который появляется выше или ниже сигнальной линии, чтобы открыть панель действий. Нажмите кнопку Add Signal или Remove Signal. Эти кнопки также доступны в редакторе Отображения на вкладке Signals/States.

Откройте Редактор отображений кода - C

Выполните одно из следующих действий:

  • Откройте Simulink® Coder™ п. На вкладке C Code выберите Code Interface > Default Code Mappings или Code Interface > Individual Element Code Mappings.

  • Откройте приложение Simulink Coder на вкладке C Code, в левом нижнем углу окна Редактор, нажмите вкладку Code Mappings - C.

  • В холсте модели окна Редактор щелкните элемент управления перспективой в правом нижнем углу и выберите Code. Затем перейдите на вкладку Code Mappings - C.

Примеры

Сконфигурируйте генерацию кода для блоков Inport и Outport корневого уровня

Сконфигурируйте генерацию кода для Inport корневого уровня и блоков Outport на протяжении всей модели. Применение строений по умолчанию может сэкономить время, особенно для крупномасштабных моделей, которые используют значительный объем данных. После применения отображений по умолчанию можно настроить преобразования для отдельных элементов данных.

Настройте пример Окружения
  1. Скопируйте файл внешнего кода exDblFloat.h в папку с возможностью записи.

    copyfile(fullfile(matlabroot,'toolbox','rtw','rtwdemos','exDblFloat.h'));
  2. Откройте rtwdemo_configrpinterface модели. Сохраните копию модели в том же месте, что и файл exDblFloat.h.

  3. Откройте приложение Simulink Coder. Вкладка C Code включает редактор Отображения.

Сконфигурируйте отображения по умолчанию

Сконфигурируйте генератор кода, чтобы объявить и задать глобальные переменные для входных и выходных портов в сгенерированных файлах rtwdemo_configrpinterface.h и rtwdemo_configrpinterface.c.

  1. На вкладке C Code выберите Code Interface > Default Code Mappings.

  2. На вкладке Data Defaults, под Inports and Outports, выберите строку для Inports. Затем установите класс памяти равным ImportedExternPointer. Установите класс памяти для Outports равным ExportedGlobal. Редактор обновляет настройку класса памяти по умолчанию для двух выбранных категорий элементов данных.

Сконфигурируйте отдельные входные и выходные порты для строения по умолчанию
  1. В редакторе Отображения перейдите на вкладку Inports. Класс памяти для каждого входного порта установлен на Auto, что означает, что генератор кода может исключить или изменить представление соответствующего кода в целях оптимизации. Если оптимизация невозможна, генератор кода применяет строение модели по умолчанию.

  2. Заставьте генератор кода использовать строение по умолчанию для inports, которая является классом памяти ImportedExternPointer. Нажмите клавишу Ctrl и выберите входные порты. Для одного из выбранных входных портов установите класс памяти равным Model default: ImportedExternPointer. Редактор обновляет настройку класса памяти для выбранных входных портов.

  3. Заставьте генератор кода использовать класс памяти ExportedGlobal для исходного порта корня модели. Перейдите на вкладку Outports. Выберите строку для Out2. Затем установите класс памяти равным Model default: ExportedGlobal.

Сконфигурируйте отдельные элементы данных

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

По умолчанию генератор кода называет переменные inport и outport на основе имени Inport или Outport блока в модели. Когда вы конфигурируете элементы данных с настройкой класса памяти кроме Autoможно переопределить этот параметр по умолчанию для отдельных элементов, задав Identifier свойства класса памяти. Это свойство позволяет вам задать идентификатор кода, не изменяя проект модели. В данном примере установите Identifier для блоков Inport и Outport.

  1. В редакторе Отображения перейдите на вкладку Inports.

  2. Для In1, установите класс памяти равным ImportedExtern.

  3. Для каждого входного порта выберите строку. Затем в Property Inspector установите свойство Identifier следующим образом:

    • Задайте In1 на input1.

    • Задайте In2 на input2.

    • Задайте In3 на input3.

    • Задайте In4 на input4.

  4. Нажмите Outports.

  5. Выберите команду outport Out1. Затем в Property Inspector установите свойство Identifier на output.

Сгенерируйте и проверьте код

Сгенерируйте код и проверьте, что код, сгенерированный для блоков Inport и Output, появляется, как вы ожидаете. Для примера:

  • rtwdemo_configrpinterface_private.h включает в себя следующие объявления:

    /* Exported data declaration */
    
    /* Data with Imported storage */
    extern real_T input1;               /* '<Root>/In1' */
    extern real_T input2;               /* '<Root>/In2' */
    extern real_T input3;               /* '<Root>/In3' */
    extern real_T input4;               /* '<Root>/In4' */
  • rtwdemo_configrpinterface.h перечисляет output как поле в структуре output ExtY_rtwdemo_configrpinterfac_T.

    /* External outputs (root outports fed by signals with default storage) */
    typedef struct {
      real_T output;                   /* '<Root>/Out1' */
    } ExtY_rtwdemo_configrpinterfac_T;
    
  • Этот фрагмент кода показывает переменную, которая представляет In2, input2, используемый в сгенерированной функции шага точки входа для частоты дискретизации 1 секунду.

    /* Model step function for TID1 */
    void rtwdemo_configrpinterface_step1(void) /* Sample time: [1.0s, 0.0s] */
    {
       /* Lookup_n-D: '<Root>/Table1D' incorporates:
        * Inport: '<Root>/In2'
        */
       rtwdemo_configrpinterface_B.Table1D = look1_binlcpw(input2,
       rtwdemo_configrpinterfac_ConstP.Table1D_bp01Data,
       rtwdemo_configrpinterfac_ConstP.Table1D_tableData, 10U);
    .
    .
    .
    

Похожие примеры

Параметры

Значения по умолчанию для данных

Называет категорию элементов данных моделей Simulink. Класс памяти, заданный для категории, применяется к элементам этой категории на протяжении всей модели.

Категория элемента моделиОписание
InportsВходные порты корневого уровня модели, такие как блоки Inport и In Bus Element.
Вспомогательные портыВыходные порты корневого уровня модели, такие как блоки Outport и Out Bus Element.
Сигналы, состояния и внутренние данныеЭлементы данных, которые являются внутренними для модели, такие как выходные сигналы блоков, дискретные состояния блока, хранилища данных и сигналы пересечения нулем.
Общие локальные хранилища данныхData Store Memory блоки, которые имеют параметры блоков Share across model instances установленные. Эти хранилища данных доступны только в модели, где они определены. Значение хранилища данных разделяется между образцами модели.
Глобальные данныеДанные хранятся, которые заданы сигнальным объектом в базовом рабочем пространстве или в словаре данных. Эти хранилища данных могут использоваться несколькими моделями в приложении. Чтобы просмотреть и сконфигурировать эти хранилища данных в редакторе Отображения, нажмите Refresh ссылка справа от имени категории. При нажатии на эту ссылку обновляется диаграмма модели.
Параметры моделиПараметры, которые заданы в модели, такие как параметры в рабочем пространстве модели. Исключает аргументы модели.
Внешние параметрыПараметры, которые вы определяете как объекты в базовом рабочем пространстве или в словаре данных. Эти параметры могут использоваться несколькими моделями в приложении. Чтобы просмотреть и сконфигурировать эти параметры в редакторе Отображения, нажмите Refresh ссылка справа от имени категории. При нажатии на эту ссылку обновляется диаграмма модели.

Редактор Отображения представляет допустимые опции класса памяти для данной категории. Опции могут включать:

  • Неопределенный класс памяти (Default). Генератор кода помещает код для категории элементов данных в стандартные структуры, такие как B_, ExtY_, ExtU_, DW_, и P_. См. раздел Структуры данных в сгенерированном коде.

  • Соответствующие предопределенные классы памяти, такие как ExportedGlobal.

  • Соответствующие классы памяти в доступном пакете, например ImportFromFile (требует Embedded Coder®) .

  • Класс памяти, заданный в словаре Embedded Coder (требует Embedded Coder).

Определение (спецификация), которое генератор кода использует для определения свойств, таких как внешний вид и местоположение, для кода, который он производит для элементов данных моделей. Допустимые настройки Default, ExportedGlobal, ImportedExtern, и ImportedExternPointer. Смотрите раздел «Выбор класса памяти для управления представлением данных в сгенерированном коде».

Inports

Определяет корневой блок Inport или элемент блока In Bus Element (для примера, InBus1.signal1) в модели. Если элемент разрешается к объекту данных, редактор Отображения отображает значок resolve-to-signal-object справа от имени источника и разрешает строение на основе того, является ли параметр класса памяти для элемента Auto. Если класс памяти Autoэлемент данных принимает строение кода, которую задает объект данных. Редактор меняет текст отображения в столбце Storage Class на From signal object: далее указывается имя класса памяти объекта данных. Если класс памяти не Autoэлемент данных принимает строение, заданную в редакторе Отображения.

Определение, которое генератор кода использует для определения свойств, таких как внешний вид и местоположение, для кода, который он генерирует для корневого входного порта. Допустимые настройки Auto, Model default, ExportedGlobal, ImportedExtern, и ImportedExternPointer. Смотрите раздел «Выбор класса памяти для управления представлением данных в сгенерированном коде».

Вспомогательные порты

Определяет блок Outport корневого уровня или элемент блока Out Bus Element (для примера OutBus1.signal1) в модели. Если элемент разрешается к объекту данных, редактор Отображения отображает значок resolve-to-signal-object справа от имени источника и разрешает строение на основе того, является ли параметр класса памяти для элемента Auto. Если класс памяти Autoэлемент данных принимает строение кода, которую задает объект данных. Редактор меняет текст отображения в столбце Storage Class на From signal object: далее указывается имя класса памяти объекта данных. Если класс памяти не Autoэлемент данных принимает строение, заданную в редакторе Отображения.

Определение, которое генератор кода использует для определения свойств, таких как внешний вид и местоположение, для кода, который он генерирует для корневого выхода. Допустимые настройки Auto, Model default, ExportedGlobal, ImportedExtern, и ImportedExternPointer. Смотрите раздел «Выбор класса памяти для управления представлением данных в сгенерированном коде».

Параметры

Определяет параметр в модели. Если элемент разрешается к объекту данных, редактор Отображения отображает значок resolve-to-parameter-object справа от имени источника и разрешает строение на основе того, является ли параметр класса памяти для элемента Auto. Если класс памяти Autoэлемент данных принимает строение кода, которую задает объект данных. Редактор меняет текст отображения в столбце Storage Class на From parameter object: далее указывается имя класса памяти объекта данных. Если класс памяти не Autoэлемент данных принимает строение, заданную в отображениях кода.

Типы элементов параметра перечислены в этой таблице.

Тип Параметра элементаОписание
Параметр моделиПараметр, который задан в модели, такой как параметр в рабочем пространстве модели. Исключает аргументы модели.
Внешний параметрПараметр, который вы задаете как объект в базовом рабочем пространстве или в словаре данных. Эти параметры могут использоваться несколькими моделями в приложении. Эта группировка параметров появляется в редакторе только в том случае, если модель использует такой элемент. Чтобы просмотреть и сконфигурировать эти параметры в редакторе Отображения, нажмите Refresh ссылка справа от имени категории. При нажатии на эту ссылку обновляется диаграмма модели.

Определение, которое генератор кода использует для определения свойств, таких как внешний вид и местоположение, для кода, который он генерирует для параметра. Для внешних параметров, после клика по Refresh ссылка справа от имени категории, скомпилированный класс памяти (для примера, класс памяти, настроенный для внешнего параметра) появляется в правой части столбца Storage Class. Допустимые настройки Auto, Model default, ExportedGlobal, ImportedExtern, и ImportedExternPointer. Смотрите раздел «Выбор класса памяти для управления представлением данных в сгенерированном коде».

Хранилища данных

Определяет хранилище данных в модели. Если элемент разрешается к объекту данных, редактор Отображения отображает значок resolve-to-signal-object справа от имени источника и разрешает строение на основе того, является ли параметр класса памяти для элемента Auto. Если класс памяти Autoэлемент данных принимает строение кода, которую задает объект данных. Редактор меняет текст отображения в столбце Storage Class на From signal object: далее указывается имя класса памяти объекта данных. Если класс памяти не Autoэлемент данных принимает строение, заданную в отображениях кода.

Типы элементов хранилища данных перечислены в этой таблице.

Тип элемента хранилища данныхОписание
Локальное хранилище данныхХранилище данных, доступное из любого места иерархии модели, которое находится на уровне или ниже уровня, на котором определяется хранилище данных. Можно задать локальное хранилище данных графически в модели путем включения блока Data Store Memory или путем создания объекта сигнала (синтезированного хранилища данных) в рабочем пространстве модели.
Общее локальное хранилище данныхData Store Memory блок, который имеет параметры блоков Share across model instances установленный. Эти хранилища данных доступны только в модели, где они определены. Значение хранилища данных разделяется между образцами модели. Эта группировка хранилищ данных появляется в редакторе только в том случае, если такой элемент существует в модели.
Глобальные данныеХранилище данных, которое определяется сигнальным объектом в базовом рабочем пространстве или в словаре данных. Эти хранилища данных могут использоваться несколькими моделями в приложении. Эти хранилища данных не конфигурируются в отображениях кода. После нажатия кнопки обновления они отображаются в редакторе Отображения в доступном только для чтения состоянии в целях просмотра или учета. Эта группировка хранилищ данных появляется в редакторе только в том случае, если модель использует такой элемент. Чтобы просмотреть и сконфигурировать эти хранилища данных в редакторе Отображения, нажмите Refresh ссылка справа от имени категории. При нажатии на эту ссылку обновляется диаграмма модели.

Имена локальных и общих локальных хранилищ данных появляются в формате block-name: data-store-name.

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

Определение, которое генератор кода использует для определения свойств, таких как внешний вид и местоположение, для кода, который он производит для хранилища данных. Для глобальных хранилищ данных после клика по Refresh ссылка справа от имени категории, скомпилированный класс памяти (для примера, класс памяти, настроенный для глобальных данных хранилища) появляется в правой части столбца Storage Class. Допустимые настройки Auto, Model default, ExportedGlobal, ImportedExtern, и ImportedExternPointer. Смотрите раздел «Выбор класса памяти для управления представлением данных в сгенерированном коде».

Ссылка, которую можно кликнуть, чтобы выделить хранилище данных в диаграмме модели.

Сигналы/состояния

Определяет сигнальную линию или состояние в модели. Если элемент разрешается к объекту данных, редактор Code Mappings отображает значок resolve -to-signal-object справа от имени источника и разрешает строение на основе того, является ли параметр класса памяти для элемента Auto. Если класс памяти Autoэлемент данных принимает строение кода, которую задает объект данных. Редактор меняет текст отображения в столбце Storage Class на From signal object: далее указывается имя класса памяти объекта данных. Если класс памяти не Autoэлемент данных принимает строение, заданную в редакторе Отображения.

В редакторе Отображения перечислены:

  • Именованные сигналы и состояния при помощи имени элемента данных

  • Неназванные сигналы при помощи source-block формата: port-number

  • Состояния, используемые в нескольких блоках при использовании формата block-name: state-name

Чтобы сконфигурировать отдельную сигнальную линию в редакторе Code Mappings для модели, сначала необходимо добавить сигнал к отображениям. См. «Конфигурирование данных сигнала для генерации кода C».

Определение, которое генератор кода использует для определения свойств, таких как внешний вид и местоположение, для кода, который он генерирует для сигнальной линии или состояния. Допустимые настройки Auto, Model default, ExportedGlobal, ImportedExtern, и ImportedExternPointer. Смотрите раздел «Выбор класса памяти для управления представлением данных в сгенерированном коде».

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

Введенный в R2020b
Для просмотра документации необходимо авторизоваться на сайте