Протестируйте сгенерированный код

Подтвердите сгенерированный код при помощи S-функций уровня системы или путем выполнения кода во внешней среде.

Узнайте о:

  • Различные методы для тестирования сгенерированного кода

  • Как протестировать сгенерированный код в Simulink®

  • Как протестировать сгенерированный код за пределами Simulink

Для получения информации о модели в качестве примера и других примерах в этом ряду, смотрите, Готовят Модель Алгоритма управления к генерации кода C.

Методы валидации

Simulink® поддерживает несколько методов тестирования системы для проверки поведения сгенерированного кода.

Исполняемый файл времени выполнения Windows®: Сгенерируйте исполняемый файл Microsoft® Windows® и запустите исполняемый файл от командной строки.

  • Преимущество: Легкий создать и позволяет использованию отладчика C оценить код

  • Недостаток: Частичная эмуляция целевого компьютера

Программное обеспечение в цикле (SIL) тестирование: Используйте S-функцию, чтобы включать сгенерированный код в модель Simulink.

  • Преимущество: Легкий создать, включает повторное использование тестовой среды Simulink и позволяет использованию отладчика C оценить код

  • Недостаток: Частичная эмуляция целевого компьютера

Процессор в цикле (PIL) тестирование: Запустите cosimulation нев реальном времени. Simulink выполняет фрагмент модели (обычно модель объекта управления), в то время как целевой процессор запускает различный фрагмент модели (обычно контроллер). После того, как вы загрузите код на целевой процессор, процессор в технологии цикла обрабатывает коммуникацию сигналов между Simulink и целью во время cosimulation.

  • Преимущество: Включает повторное использование тестовой среды Simulink, включает использование отладчика C с симуляцией и включает целевой процессор

  • Недостаток: Требует, чтобы дополнительные шаги настроили тестовую среду, и процессор не запускается в режиме реального времени

Быстрое прототипирование на цели: Запустите сгенерированный код на целевом процессоре как часть полной системы.

  • Преимущество: можно определить фактические аппаратные ограничения и протестировать компонент в полной системе. Процессор запускается в режиме реального времени

  • Недостаток: Требует оборудования и требует, чтобы дополнительные шаги настроили тестовую среду

Режим external mode: Запустите сгенерированный код на целевом процессоре как часть полной системы.

  • Преимущество: можно определить фактические аппаратные ограничения и протестировать компонент в полной системе

  • Недостаток: Требует оборудования и требует, чтобы дополнительные шаги настроили тестовую среду

Тестовые данные повторного использования за пределами Simulink®

В других примерах в этом ряду вы тестируете систему посредством симуляции в Simulink. Данные о тестовом воздействии прибывают из блока Signal Builder в модели тестовой обвязки.

Чтобы протестировать систему за пределами Simulink®, можно снова использовать данные о тестовом воздействии.

  1. Сохраните тестовые данные Simulink в файл.

  2. Отформатируйте данные способом, к которым может получить доступ системный код.

  3. Считайте файл данных как часть процедур системного кода.

Чтобы использовать Simulink, чтобы выполнить верификацию, можно избавить тестовые выходные данные от внешней среды в формате, который может считать MATLAB®.

В этом примере, файл hardwareInputs.c содержит данные из блока Signal Builder в модели тестовой обвязки.

Протестируйте с помощью программного обеспечения в цикле (блок Model SIL)

Создайте и сконфигурируйте блок Model для SIL

Simulink может сгенерировать код от блока Model, перенести код в S-функцию и добавить S-функцию назад в модель для программного обеспечения в тестировании цикла.

Откройте модель в качестве примера, rtwdemo_PCG_Eval_P6.

Откройте модель тестовой обвязки.

Тестовая обвязка использует блок Model, чтобы получить доступ к модели в качестве примера. В этом примере вы запускаете программное обеспечение в тесте цикла на модели в качестве примера.

  1. Щелкните правой кнопкой по блоку Model и выберите Block Parameters (ModelReference).

  2. Определите Имя модели к имени модели, которую вы хотите протестировать.

  3. Установите режим Simulation на Software-in-the-loop (SIL).

Блок Model теперь показывает (SIL) тег.

Сконфигурируйте модели для SIL

Сконфигурируйте модель в качестве примера, rtwdemo_PCG_Eval_P6, и модель тестовой обвязки, rtwdemo_PCGEvalHarnessHTGTSIL, для SIL симуляции путем корректировки параметров аппаратной реализации.

Откройте модель в качестве примера.

Для обеих моделей, в диалоговом окне Configuration Parameters, выбирают Support долго длинный флажок.

Сохраните копию модели в качестве примера, rtwdemo_PCG_Eval_P6, в вашей текущей папке.

Запустите блок Model SIL

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

Откройте тестовую обвязку.

Запустите тестовую обвязку.

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

Сконфигурируйте Систему для Тестирования через Импорт и экспорт Тестового вектора

Этот пример расширяет пример интегрирования в Сборке Интегрированный Код Вне окружения 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

Просмотрите example_main.c.

Две функции, 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™)

Прежде, чем создать исполняемый файл в среде Eclipse™, регенерируйте код без интерфейса S-функции.

Создайте код С для интегрирования.

Чтобы изучить, как установить и использовать Eclipse™ и GCC, смотрите Установку и Использование Cygwin и Eclipse.

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

Автоматически настройте папку сборки.

В качестве альтернативы вручную устанавливать файлы:

  1. Создайте папку сборки (Eclipse_Build_P6).

  2. Разархивируйте файл rtwdemo_PCG_Eval_P6.zip в папку сборки.

  3. Удалите файлы rtwdemo_PCG_Eval_P6.c, ert_main.c, и rt_logging.c, которые заменяются example_main.c.

Запустите код системы управления в Eclipse™. Функция в writeDataForEval.c создает файл eclipseData.m, который содержит выходные тестовые данные. В MATLAB® загрузите эти данные Eclipse™ путем выполнения файла скрипта. Затем сравните эти данные с данными из модели тестовой обвязки Simulink® при помощи plot.

Для следующего примера в этом ряду смотрите, Оценивают Производительность Сгенерированного кода.

Похожие темы