exponenta event banner

Модель одноядерной однозадачной платформы

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

Настройка периодической многоскоростной модели для однозадачного выполнения

Откройте пример rtwdemo_multirate_singletasking модели. Модель сконфигурирована для отображения времени образца с цветовым кодированием с аннотациями. Чтобы увидеть их, после открытия модели обновите схему, нажав клавиши Ctrl + D. Чтобы отобразить легенду, нажмите клавиши CTRL + J.

  • Примеры времени для блоков ввода In1_1s и In2_2s установлены на 1 и 2 секунды соответственно.

  • Для обеспечения чистого разделения скоростей, времени выборки для подсистем SS1 и SS2 имеют значение 1.

Соответствующие настройки параметров конфигурации модели

  • Тип имеет значение Fixed-step.

  • Решатель имеет значение discrete (no continuous states).

  • Обработка каждой дискретной скорости как отдельной очищенной задачи.

Планирование

Simulink ® моделирует модель на основе конфигурации модели. Код, созданный из модели, реализует ту же семантику выполнения. Simulink распространяет и использует время выборки блоков Inport, чтобы упорядочить выполнение блоков на основе одноядерной однозадачной платформы выполнения .

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

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

Преимущества неявной группировки ставок:

  • Simulink не накладывает архитектурных ограничений на модель.

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

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

Среда выполнения может взаимодействовать с внешними устройствами для чтения и записи входных данных модели. Например, моделируйте внешние устройства с помощью блоков Simulink S-Function. Создайте код для этих блоков с остальной частью алгоритма.

Создание кода и отчета

Откройте приложение Embedded Coder. Затем создайте код и отчет о создании кода. Пример модели создает отчет.

Просмотреть созданный код

Просмотрите созданный код из отчета о создании кода.

  • ert_main.c является примером основной программы (инфраструктуры выполнения) для модели. Этот код управляет выполнением кода модели путем вызова функции точки входа rtwdemo_multirate_singletasking_step. Используйте этот файл в качестве отправной точки для кодирования среды выполнения.

  • rtwdemo_multirate_singletasking.c содержит точки входа для кода, реализующего алгоритм модели. Этот файл содержит код планирования скорости.

  • rtwdemo_multirate_singletasking.h объявляет структуры данных модели и открытый интерфейс с точками входа модели и структурами данных.

  • rtwtypes.h определяет типы данных, структуры и макросы, необходимые для созданного кода.

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

Откройте и просмотрите отчет по кодовому интерфейсу. Используйте информацию в этом отчете для написания кода интерфейса для среды выполнения:

  1. Включить созданный файл заголовка путем добавления директивы #include rtwdemo_multirate_singletasking.h.

  2. Запись входных данных в созданный код для блоков ввода модели.

  3. Вызовите сгенерированные функции точки входа.

  4. Считывание данных из созданного кода для блоков Outport модели.

Входные порты:

  • rtU.In1_1s типа данных real_T с размером 1

  • rtU.In2_2s типа данных real_T с размером 1

Функции точки входа:

  • Инициализация функции начальной точки, void rtwdemo_multirate_singletasking_initialize(void). При запуске вызовите эту функцию один раз.

  • Функция вывода и обновления точки входа (шаг), void rtwdemo_multirate_singletasking_step(void). Периодически вызывайте эту функцию с самой высокой скоростью в модели. Для этой модели вызовите функцию каждую секунду. Чтобы обеспечить выполнение в реальном времени, подключите эту функцию к таймеру.

Выходные порты:

  • rtY.Out1 типа данных real_T с размером 1

  • rtY.Out2 типа данных real_T с размером 1

Подробнее