При создании кода из модели код включает проектные данные, такие как сигналы, состояния и параметры, которые код приложения может считывать и записывать. При выборе способа представления этих данных в сгенерированном коде необходимо учитывать следующее:
Какие типы элементов данных необходимо использовать в модели?
Где следует хранить данные?
Каковы мои цели создания кода?
Как настроить данные в соответствии с задачами создания кода?
Ответы на эти вопросы зависят от архитектуры модели (автономная модель, автономная иерархия ссылочных моделей или система компонентов), типа приложения (входящее или одинарное), а также от того, интегрируется ли код с существующим внешним кодом.
Возможные элементы данных в модели относятся к типам элементов данных, перечисленным в этой таблице.
| Тип элемента данных | Описание |
|---|---|
| Inports | Входные порты корневого уровня модели, такие как блоки Inport и Bus Element In. |
| Вспомогательные порты | Выходные порты корневого уровня модели, такие как блоки Outport и Bus Element Out. |
| Параметры в области модели |
|
| Внешние параметры | Параметры, определяемые как объекты в базовой рабочей области или в словаре данных. Эти параметры могут использоваться несколькими моделями в приложении. |
| Хранилища данных |
|
| Внутренние данные | Локальные данные, такие как внутренние сигналы и состояния блоков. Включает локальные хранилища данных. |
| Константы | Параметры константы и вывод блока константы-значения в модели. |
Параметры конфигурации кода, доступные для данных, зависят от категории настраиваемых данных. Место хранения данных определяет, следует ли настраивать их с помощью объекта данных или с помощью сопоставления кода, сохраненного вместе с моделью.
Место хранения данных для модели может зависеть от типа используемой архитектуры модели и целей моделирования:
Базовое рабочее пространство MATLAB ® - используется для временного хранения данных во время экспериментов с методами моделирования.
Рабочее пространство модели - используется для постоянного хранения данных, локальных для одной модели. Поскольку данные хранятся вместе с моделью, использование этой рабочей области может улучшить переносимость модели. Рабочая область модели преимущественно используется для хранения параметров, аргументов и числовых переменных. Эти элементы обычно не хранятся в рабочей области модели:
Сигнальные объекты - невозможно настроить сигнальный объект в рабочей области модели для создания кода. Нет необходимости определять объект сигнала для конфигурирования сигнала для генерации кода.
Объекты типа данных.
Словарь данных Simulink ® - используется для постоянного хранения глобальных данных, типов данных и данных, совместно используемых моделями.
Дополнительные сведения см. в разделе Определение места хранения переменных и объектов для моделей Simulink.
Настройка создания данных для создания кода зависит от целей создания кода. Если настройки не настроены, генератор кода определяет необходимость исключения или изменения представления данных в сгенерированном коде в целях оптимизации.
Существует множество причин, по которым можно настроить элемент данных. Настройка данных предотвращает оптимизацию, которая может исключить элемент данных из созданного кода, и позволяет настроить, как созданный код хранит и определяет элемент данных. Например, при настройке элемента данных можно:
Настройка параметров.
Контроль сигналов и состояний во время выполнения.
Настройте размещение данных в памяти.
Обмен данными с внешним кодом.
Улучшение читаемости и прослеживаемости генерируемого кода.
Чтобы настроить данные для создания кода, примените класс хранения. Класс хранения - это параметр создания кода, который позволяет управлять внешним видом и расположением элемента данных в сгенерированном коде и предотвращает оптимизацию, которая может исключить хранение этого элемента данных. Можно использовать классы хранения данных, доступные в Simulink Coder™ и Embedded Coder ®. Если существуют особые требования, которые не удовлетворяются этими классами хранения, и создается код для целевого объекта на основе ERT, можно определить и использовать новый класс хранения. Дополнительные сведения о классах хранения и свойствах классов хранения см. в разделе Выбор класса хранения для управления представлением данных в сгенерированном коде.
Для большинства данных, принадлежащих модели, класс хранения можно сопоставить непосредственно с элементом данных с помощью редактора сопоставления кодов или API сопоставления кодов. Необходимо настроить некоторые данные, используемые моделью для создания кода с помощью объекта данных, включая:
Параметры (Parameters) - включает параметры в базовое рабочее пространство, рабочее пространство модели или словарь данных. Настройка параметров с помощью Simulink.Parameter объект.
Глобальные хранилища данных - настройка с использованием сигнального объекта.
Перед настройкой числовых переменных для создания кода их необходимо преобразовать в Simulink.Parameter объекты.
Данные, принадлежащие модели, состоят из блоков вывода, сигнальных линий, состояний блоков, хранилищ данных и объектов параметров в рабочем пространстве модели. Для этих данных можно сопоставить класс хранения с элементом данных в приложении кодера с помощью редактора сопоставлений кода или API сопоставлений кода. Для удобства можно также настроить внешние объекты данных в редакторе сопоставлений кодов, хотя для внешних объектов данных класс хранения сохраняется в объекте данных, а не в модели. Для просмотра этих объектов в редакторе щелкните ссылку «Обновить» справа от имени категории.
Для настройки данных, принадлежащих модели, сначала необходимо настроить параметры генерации кода по умолчанию для категорий элементов данных. Использование сопоставления по умолчанию экономит время и снижает риск появления ошибок в коде, особенно если модель содержит значительное количество элементов в определенной категории.
На вкладке Код C выберите Интерфейс кода > Сопоставления кодов по умолчанию.
На вкладке Значения по умолчанию выберите категорию данных, затем выберите класс хранения по умолчанию для этой категории. Если класс хранения для категории не указан, Default применяется класс хранения. В этом случае генератор кода помещает код для категории элементов данных в стандартные структуры. Другие параметры класса хранения включают в себя:
Соответствующие встроенные классы хранения, такие как ExportedGlobal.
Релевантные классы хранения в доступном пакете, например, ImportFromFile (требуется встроенный кодер).
Классы хранения, определенные в словаре Embedded Coder (требуется Embedded Coder). Дополнительные сведения о доступных классах хранения см. в разделе Выбор класса хранения для представления управляющих данных в сгенерированном коде.
В инспекторе свойств настройте свойства для этого класса хранения. (Например, файлы заголовков и определений).
Дополнительные сведения см. в разделе Конфигурация генерации кода C для элементов интерфейса модели.
Для определенных категорий данных, включая входы, выходы, хранилища данных и состояния блоков, сопоставление по умолчанию, вероятно, является единственной конфигурацией, которую необходимо выполнить. Но для элементов данных, таких как параметры и внутренние сигналы, может потребоваться указать индивидуальное отображение, чтобы предотвратить оптимизацию данных. Чтобы применить класс хранения к отдельному элементу данных:
В редакторе сопоставлений кодов найдите элемент данных на соответствующей вкладке категории (например, для настройки отдельного параметра выберите вкладку Параметры).
Выберите класс хранения для элемента данных. Чтобы применить конфигурацию по умолчанию, выберите класс хранения Model default.
В инспекторе свойств настройте свойства для этого класса хранения. (Например, файлы заголовков и определений).
Дополнительные сведения см. в разделе Конфигурация генерации кода C для элементов интерфейса модели.
Настройте внешние объекты данных для создания кода с помощью редактора Сопоставления кодов (Code Mappings) или Проводника моделей (Model Explorer). Выберите объект данных на панели «Содержимое». Затем в диалоговом окне на вкладке Создание кода выберите класс хранения и задайте свойства для этого класса хранения. Для удобства можно также настроить внешние объекты данных в редакторе сопоставлений кода. Чтобы просмотреть и настроить эти объекты, в редакторе щелкните ссылку Обновить справа от имени категории.
Внешние объекты данных можно конфигурировать программно. Например, для настройки Simulink.Parameter объект для создания кода путем применения класса хранения ExportedGlobal, можно использовать код, подобный:
P = Simulink.Parameter; P.Value = 5; P.DataType = 'int32'; P.CoderInfo.StorageClass = 'ExportedGlobal';
Чтобы применить класс хранения из пакета класса хранения, отличного от Simulink (например, создаваемого пакета), выполните следующие действия.
Откройте приложение Embedded Coder.
Откройте словарь встроенного кодера. На вкладке C Code выберите Code Interface > Embedded Coder Dictionary.
В словаре встроенного кодера нажмите кнопку Управление пакетами.
В диалоговом окне «Управление пакетами» выберите пакет. Если интересующий пакет отсутствует в списке, нажмите кнопку Обновить. Затем выберите пакет.
Закройте словарь встроенного кодера.
Щелкните Загрузить (Load).
Для настройки элементов интерфейса модели используйте редактор сопоставлений кода или API сопоставлений кода.
Дополнительные сведения см. в разделах Embedded Coder Dictionary, Code Mappings editor и coder.mapping.api.CodeMapping.
Применение класса хранения с помощью объекта данных (обязательные параметры) вместо создания Simulink.Signal или Simulink.Parameter объект, создайте myPackage.Signal или myPackage.Parameter объект. Сведения о создании объектов данных из пакета см. в разделе Создание объектов данных из другого пакета классов данных. Пример создания и применения собственного класса хранения см. в разделе Создание и применение класса хранения.
Редактор сопоставлений кода | coder.mapping.api.CodeMapping