Проверьте сгенерированный код с помощью S-функций уровня системы или путем запуска кода во внешнем окружении.
Узнайте о:
Различные методы для проверки сгенерированного кода
Как протестировать сгенерированный код в Simulink ®
Как протестировать сгенерированный код за пределами Simulink
Для получения информации о модели примера и других примерах в этой серии, смотрите Подготовьте модель алгоритма управления для генерации кода C.
Simulink ® поддерживает несколько методов системного тестирования для проверки поведения сгенерированного кода .
Исполняемый файл Windows ®: Сгенерируйте исполняемый файл Microsoft ® Windows ® и запустите исполняемый файл из командной строки.
Преимущество: Легко создать и позволяет использовать отладчик C для оценки кода
Недостаток: Частичная эмуляция целевого компьютера
Цикл (SIL) проверки: Используйте S-функцию, чтобы включить сгенерированный код в модель Simulink.
Преимущество: Легко создать, позволяет повторно использовать тестовое окружение Simulink и позволяет использовать отладчик C для оценки кода
Недостаток: Частичная эмуляция целевого компьютера
Процессор в цикле (PIL) проверки: Запуск косимуляции не в реальном времени. Simulink выполняет фрагмент модели (обычно модель объекта управления), в то время как целевой процессор запускает другой фрагмент модели (обычно контроллер). После загрузки кода на целевой процессор технология «цикл» обрабатывает передачу сигналов между Simulink и целью во время косимуляции.
Преимущество: Включает повторное использование тестового окружения Simulink, позволяет использовать отладчик C с симуляцией и включает целевой процессор
Недостаток: Требуются дополнительные шаги для настройки тестового окружения, и процессор не запускается в режиме реального времени
Быстрое прототипирование на целевой системе: Запуск сгенерированного кода на целевом процессоре как часть полной системы.
Преимущество: Вы можете определить фактические аппаратные ограничения и протестировать компонент в полной системе. Процессор работает в режиме реального времени
Недостаток: Требует оборудования и требует дополнительных шагов для настройки тестового окружения
Режим external mode: Запустите сгенерированный код на целевом процессоре как часть полной системы.
Преимущество: Вы можете определить фактические аппаратные ограничения и протестировать компонент в полной системе
Недостаток: Требует оборудования и требует дополнительных шагов для настройки тестового окружения
В других примерах этой серии вы тестируете систему посредством симуляции в Simulink. Данные о тестовом воздействии поступают из блока Signal Builder в модели тестовой обвязки.
Чтобы протестировать систему за пределами Simulink ®, можно повторно использовать тестовые входные данные.
Сохраните тестовые данные Simulink в файл.
Форматируйте данные так, чтобы системный код мог получить доступ.
Считайте файл данных как часть процедур системного кода.
Чтобы использовать Simulink для выполнения верификации, можно сохранить выходные данные теста из внешнего окружения в формате, который может считываться MATLAB ® .
В этом примере файл hardwareInputs.c
содержит данные из блока Signal Builder в модели тестовой обвязки.
Создайте и сконфигурируйте блок Model для SIL
Simulink может сгенерировать код из блока Model, перенести код в S-функцию и добавить S-функцию обратно в модель для проверки ПО в цикле.
Откройте модель примера, rtwdemo_PCG_Eval_P6
.
Откройте модель тестовой обвязки.
Тестовый кабель использует блок Model для доступа к модели-примеру. В этом примере вы запускаете тест ПО в цикле на модели примера.
Щелкните правой кнопкой мыши блок Model и выберите Параметры Блоков (ModelReference).
Установите имя модели в имя модели, которую вы хотите протестировать.
Установите режим симуляции на Software-in-the-loop (SIL)
.
Блок Model теперь показывает (SIL)
тег.
Сконфигурируйте модели для SIL
Сконфигурируйте модель примера, rtwdemo_PCG_Eval_P6
, и модель тестовой обвязки, rtwdemo_PCGEvalHarnessHTGTSIL
для SIL симуляции путем настройки параметров аппаратной реализации.
Для обеих моделей в диалоговом окне Параметры конфигурации установите длинный флажок Поддержка.
Сохраните копию модели примера, rtwdemo_PCG_Eval_P6
, в текущей папке.
Запуск Блока Model SIL
В этом примере модель тестовой обвязки содержит блок Model, который сконфигурирован для SIL симуляции.
Сгенерированный код и симуляция дают одинаковые результаты.
Этот пример расширяет пример интегрированию в Build Integrated Code Outside the Окружение Simulink. В этом случае example_main.c
использует моделируемый аппаратный ввод-вывод.
Дополненный example_main.c
Теперь файл использует этот порядок выполнения:
1. Инициализация данных (один раз)
while < endTime
2. Считайте моделируемые аппаратные входы
3. PI_cnrl_1
4. PI_ctrl_2
5. Pos_Command_Arbitration
6. Запишите имитированные аппаратные выходы
end while
Две функции, plant
и hardwareInputs
, передайте входные тестовые данные.
Plant.c
: Эта функция, которая была сгенерирована из заводского фрагмента тестовой обвязки, моделирует реакцию тела дросселя на команды дросселя.
void Plant(void)
HardwareInputs.c
: Эта функция обеспечивает pos_req
сигнал и добавляет шум от Input_Signal_Scaling
подсистемы в сигнал обратной связи объекта.
void hardwareInputs(void)
Рукописная функция в WriteDataForEval.c
регистрирует выходные данные теста. После завершения теста функция выполняет и записывает данные в файл PCG_Eval_ExternSimData.m
. Вы можете запустить этот файл скрипта в MATLAB, чтобы получить доступ к данным. Затем можно сравнить данные с моделируемыми данными из Simulink ®.
Чтобы включить эти дополнительные файлы, идентифицируйте их с помощью параметров конфигурации > Генерация кода > Пользовательский код > Дополнительная информация о сборке.
Прежде чем создавать исполняемый файл в Eclipse™ окружению, перегенерируйте код без интерфейса S-функции.
Создайте код С для интегрирования.
Чтобы узнать, как установить и использовать Eclipse™ и GCC, смотрите Install and Use Cygwin и Eclipse.
Чтобы установить файлы для этого примера автоматически, щелкните гиперссылку.
Автоматическая настройка папки сборки.
Кроме того, чтобы вручную установить файлы:
Создайте папку сборки (Eclipse_Build_P6
).
Разархивируйте файл rtwdemo_PCG_Eval_P6.zip
в папку сборки.
Удалите файлы rtwdemo_PCG_Eval_P6.c
, ert_main.c
, и rt_logging.c
, которые заменяются example_main.c.
Запустите код системы управления в Eclipse™. Функция в writeDataForEval.c
создает файл eclipseData.m
, который содержит выходные тестовые данные. В MATLAB ® загрузите эти Eclipse™ данные путем запуска файла скрипта. Затем сравните эти данные с данными модели тестовой обвязки Simulink ® при помощи plot
.
Следующий пример этой серии см. в разделе Оценка эффективности сгенерированного кода.