Численная согласованность результатов симуляции модели и сгенерированного кода

Численная непротиворечивость

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

  • Для разработки моделей вы используете MATLAB®, Simulink®, и Stateflow®.

  • Чтобы сгенерировать исходный код, вы используете Simulink Coder™ и Embedded Coder®.

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

Результаты моделирования и моделирования сгенерированного кода численно непротиворечивы, если:

  • В приложениях с фиксированной точкой результаты согласуются в битовом сравнении.

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

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

  • Для приложений с фиксированной точкой можно задать абсолютную погрешность нуля.

  • Для приложений с плавающей точкой можно задать допуск относительно ссылки значения или сигнала. Выбор ссылки зависит от вашего приложения. Рассмотрим следующие примеры:

    • Алгоритм, который решает линейное алгебраическое уравнение итеративными вычислениями прямой ошибки. Можно задать допуск относительно eps.

    • Пропорционально-интегрально-производный (ПИД) контроллер для системы с обратной связью. Для переходного поведения можно задать допуск с критериями из стандарта. Для статического поведения можно задать допуск со ссылкой на характеристики ПИД-регулятора.

Программно можно задать абсолютное и относительная погрешность значения через absTol и relTol свойства Simulink.sdi.Signal объект.

Численная согласованность в сложных системах

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

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

  2. Исследуйте каждый идентифицированный блок.

Рассмотрим следующую модель объекта управления.

  • T формирует опорные или тестовые сигналы.

  • C является компонентом контроллера. Выходным контроллер выходом является вход объекта управления. C может быть блоком Model, который содержит несколько блоков Model.

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

Чтобы проверить числовую эквивалентность между контроллером модели и сгенерированной версией сгенерированного кода:

  1. Запустите модель в режим normal mode и, используя Данные моделирования Inspector, запишите выход C.

  2. Задайте режим SIL для C. Перезапустите симуляцию, записав выход C.

  3. Используя Данные моделирования Inspector, сравните выходы normal и SIL mode со ссылкой на ваш заданный допуск ошибки.

Если сравнение Данных моделирования Inspector указывает на соответствие, результаты модели и сгенерированного кода численно согласуются.

Если выходы normal и SIL не совпадают:

  1. В пределах C включите регистрацию сигнала для выходов блоков.

  2. Запустите модель в режим normal mode.

  3. Перезапустите симуляцию с C в режиме SIL.

  4. Используя Данные Моделирования Inspector, сравните записанные выходные сигналы со ссылкой на ваш заданный допуск ошибки. См. Сравнение данных моделирования.

  5. Идентифицируйте блоки, для которых выходные различия в режиме normal и SIL превышают допуск ошибки.

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

Примечание

Если требуется сравнение большого количества сигналов, можно автоматизировать рабочий процесс с помощью Simulink Test™. Смотрите верификацию для подсистемы (Simulink Test).

Причины численных различий на уровне блоков

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

Некоторые факторы могут влиять как на приложения с фиксированной точкой, так и на приложения с плавающей точкой. Для примера использование:

  • Оптимизация генерации кода.

  • Пользовательский код.

  • Записи библиотеки замещения кода, результаты которых отличаются от результатов MATLAB.

  • Библиотеки замещения кода, которые реализуют различные алгоритмы.

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

  • Численная обоснованность алгоритма.

  • Чувствительность алгоритма к входу.

  • Поведение замкнутого цикла и разомкнутого контура.

Ссылки

[1] IEEE® Стандарт на переходы, импульсы и связанные формы волны, стандарт IEEE 181, 2003, стр. 15-17.

См. также

Похожие темы