Модели проекта для быстрого развертывания прототипирований

При использовании Simulink® Coder™ сгенерировать код для быстрого прототипирования, важно проектировать ваши модели Simulink с учетом генерации кода с самого начала процесса проекта.

Алгоритмы приложения и окружений выполнения

Используйте Simulink для моделей проекта, которые представляют алгоритмы приложения и окружений выполнения, из которых вы намерены сгенерировать развертываемый код. В зависимости от вашего приложения, можно развернуть код в среде выполнения, которая состоит из комбинации:

Компоненты окружения выполненияВыбор
Оборудование
  • Компьютер разработчика

  • Плата быстрого прототипирования

  • Микропроцессор

  • Микроконтроллер

  • FPGA

  • ASIC

Ядра
  • Одинок

  • Несколько

Операционная система
  • Общее назначение

  • В реальном времени

  • Нет (голый металл)

Планирование
  • Однозадачность

  • Многозадачность

  • Прерывание управляемое

  • Параллелизм

  • Предоставляется операционной системой

  • Сгенерирован из модели

Код алгоритма приложения
  • Сгенерирован из модели

  • Внешний код

Когда вы проектируете модели, чтобы сгенерировать код C or C++ для быстрого прототипирования или производственного развертывания, имейте в виду окружение выполнения. Сгенерируйте код, который удовлетворяет требования реализации и избегает возможного переделывания проекта. Как отражено в предыдущей таблице, окружение выполнения для кода, который вы генерируете, может варьироваться от относительно простой до сложной. Например, простой случай является кодом, который вы генерируете из одной, однозадачной модели, которая работает на одноядерном микропроцессоре. Комплексный случай является кодом, который генерируется из модели, разделенной для работы в качестве распределенной системы на многоядерном микропроцессоре и FPGA.

Среда выполнения программного обеспечения для сгенерированного кода

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

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

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

Единая верхняя часть

Для одной верхней части среда выполнения программного обеспечения отвечает за выполнение сгенерированного кода так же, как Simulink имитирует модель. Функции в сгенерированном коде высоко скоординированы и оптимизированы, потому что Simulink знает о зависимостях. Среда взаимодействует с кодом, сгенерированным только для верхней модели. Код, сгенерированный для верхней модели, обрабатывает взаимодействие с кодом для ссылочных блоков Model.

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

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

Несколько моделей верхнего уровня

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

При этом сценарии Simulink не знает о зависимостях модели. Функции в коде, сгенерированные из различных моделей, минимально скоординированы и оптимизированы. Для примера модели могут совместно использовать сгенерированные служебные функции. Потенциальные оптимизации, которые пересекают контуры модели, невозможны. Вы должны спроектировать среду выполнения программного обеспечения с учетом зависимостей между модулями кода, включая порядок выполнения. Для приложения, которое требует параллельного выполнения через несколько ядер, необходимо учитывать эффекты задержки данных через ядра.

Генератор кода помогает вам решить проблемы среды выполнения программного обеспечения, такие как совместные использования глобальными данными и предотвращение конфликтов идентификаторов. Код, сгенерированный для каждой модели, обрабатывает интерфейсы для ссылочных блоков Model.

Сопоставьте архитектуру встраиваемых систем с окружением моделирования Simulink

При разработке моделей для быстрого развертывания прототипов, подумайте об этих проектах.

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

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

Алгоритмы моделирования

Архитектура ФакторовФакторы о моделированииСвязанная информация
Что такое системная область?Необходимые условия продукта (основанные на областях компонентов)
Включает ли система физические области, такие как механические, электрические или гидравлические области?Физические системы
Какие аспекты вашего алгоритма вы можете представлять с блоками, предоставленными продуктами MathWorks? Какие блоки вам нужно создать?Использование, создание и индивидуальная настройка блоков
Включает ли архитектура компоненты конечного автомата?Событийно-управляемая система

Моделируйте реактивные системы в Stateflow (Stateflow)

Интерфейсы моделирования

Архитектура ФакторовФакторы о моделированииСвязанная информация
  • Какие данные вы должны представлять в сгенерированном коде?

  • Как вам нужно представлять вход и выход - тип данных, размерность, сложность?

  • Как изменятся данные?

Представление данных
Где и как данные втягиваются в систему и втягиваются в систему?Вход

Сравнение методов загрузки

  • Где и как данные выталкиваются в системе и из системы?

  • Какие внешние триггеры необходимы?

Выход
  • Какие функции необходимо задать для каждого компонента?

  • Какой прототип для каждой функции точки входа?

Функции и вызовы функций

Сконфигурируйте генерацию кода C для функций точки входа модели

Вам нужно экспортировать функции, которые вызываются логикой управления, которая находится вне модели?Экспорт функции
Контролирует ли система сигналы или данные журнала (для примера, для калибровки)?Интерфейсы C API и ASAP2 обмена данными
Вам нужно заменить код, сгенерированный для функций или операторов, например, чтобы оптимизировать код для конкретного оборудования?Замена кода
Существует ли требование в отношении разработки и будущих факторов?Разработка и будущие факторы

Задайте интерфейсы компонентов модели

Системы моделирования

Архитектура ФакторовФакторы о моделированииСвязанная информация
  • Каковы возможности системы? Контроллер? Внешнее окружение или объект? Тестовая обвязка?

  • Как система разделяется на компоненты алгоритма (фрагменты логики)?

  • Какие компоненты можно представлять в Simulink?

  • Можете ли вы проектировать компоненты для повторного использования? Какова мотивация для повторного использования (для примера, деление труда или plug-n-play)?

Компонентизация
  • Требуют ли аспекты системы модульного тестирования?

  • Команда людей сотрудничает с проектом?

  • Вам нужно защищать интеллектуальное свойство?

Модели-ссылки
Вы моделируете архитектуру клиент-сервер?Функциональные блоки Simulink и блоки вызывающего абонента
Доступен ли соответствующий устаревший или пользовательский код?Интегрирование с внешним кодомЧто такое интегрирование с внешним кодом? (Embedded Coder)
Можно ли применить ссылку архитектуру или ссылку компоненты?Шаблоны модели и проекта
Можете ли вы повторно использовать функции?Повторное использование функции
  • Нужно ли компонентам совместно использовать доступ к глобальным данным?

  • В системе происходят ли изменения состояния? В каждом случае как сообщается результат?

  • Существуют ли проблемы с идентификатором (именованием)?

Разделяемые данные

Моделирование во время выполнения Окружений

Архитектура ФакторовФакторы о моделированииСвязанная информация
  • Какой уровень контроля за интерфейсами во время выполнения требуется вашему приложению?

  • Какую часть вашей системы вы можете представлять в модели?

Интерфейсы во время выполнения
Разбита ли система на параллельные компоненты для максимизации параллелизма? Какие компоненты?Параллелизм

Многоядерные процессорные целевые системы

  • Управляются ли компоненты внешним синхроимпульсом?

  • Какие тактовые частоты используют системные компоненты?

  • Используют ли компоненты одну или несколько скоростей?

Тактовые и тактовые частоты

Задайте интерфейсы компонентов модели

  • Являются ли компоненты в системе управляемыми синхроимпульсами?

  • Какие тактовые частоты используют системные компоненты?

  • Используют ли компоненты одну или несколько скоростей?

  • Каковы приоритеты системных задач и функций?

Составление расписаний на основе времени
  • Управляются ли компоненты в системе событиями (прерываниями)?

  • Каковы приоритеты системных задач и функций?

Основанное на событиях планирование
Должна ли система обрабатывать события инициализации, сброса или завершения?Инициализация, сброс, завершение
  • Является ли система однозадачной или многозадачной системой?

  • Требуются ли компоненты для выполнения в режиме реального времени?

  • Каковы зависимости порядка выполнения (секвенирование) между компонентами?

  • Каковы временные ограничения для выполнения задачи и функции?

Выполнение задачи
  • Если вы знаете обрабатывающую платформу, что это такое?

  • Будет ли система работать на одноядерном или многоядерном процессоре?

  • Является ли система распределенной системой?

  • Является ли платформа обработки гибридной или неоднородной?

  • Использует ли архитектура симметричную или асимметричную мультипроцессорную обработку? Если это асимметрично, как программное обеспечение платформы разделяется между центральными процессорами?

Платформы обработкиМногоядерные процессорные целевые системы

Шаблоны модели для генерации кода

Embedded Coder® предоставляет набор встроенных шаблонов для использования в качестве начальной точки для создания моделей для типичных проектов приложений. Используйте шаблоны для создания моделей, которые предварительно сконфигурированы для генерации кода для встраиваемых системных приложений.

ШаблонОписание
Система генерации кодаБазовая модель, состоящая из блока Inport и блока Output.
Экспортированные функцииМодель для генерации кода из подсистем вызова функций. Можно экспортировать каждую подсистему вызова функций отдельно, щелкнув правой кнопкой мыши подсистему, выбрав C/C++ Code > Export Functions и выбрав Build.
Fixed-step, multirateМодель с фиксированным шагом, которая использует несколько скоростей и состоит из блоков Inport, блока Outport и блока Sum. Модель сконфигурирована, чтобы использовать дискретный решатель с фиксированным шагом и использовать две скорости с параметром конфигурации модели, Periodic sample time constraint установлено на Unconstrained и Treat each discrete rate as a separate task параметра выбран. Simulink вставляет блок Rate Transition, чтобы обработать две частоты дискретизации.
Фиксированная, одинарная скоростьМодель с фиксированным шагом, которая использует одну скорость и состоит из блоков Inport, блока Outport и блока Sum. Модель сконфигурирована, чтобы использовать дискретный решатель с фиксированным шагом.

Чтобы создать модель из шаблона:

  1. На MATLAB® home tab, нажмите Simulink.

  2. На начальной странице Simulink разверните Embedded Coder.

  3. Наведите указатель мыши на шаблон и щелкните Create Model. Новая модель, которая использует содержимое шаблона и настройки, появится в окне Редактор.

Для получения дополнительной информации, например, о создании и использовании шаблона в качестве исходного проекта, см. раздел «Создание шаблона из модели».

Похожие темы