exponenta event banner

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

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

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

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

  • Для создания исходного кода используются Simulink Coder™ и Embedded Coder ®.

  • Чтобы проверить числовую эквивалентность между моделью и сгенерированным кодом, необходимо сравнить результаты моделирования модели и сгенерированного кода. Например, результаты моделирования в обычном режиме сравниваются с результатами моделирования в цикле программного обеспечения (SIL).

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

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

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

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

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

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

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

    • Контроллер пропорциональной интегральной производной (PID) для системы с замкнутым контуром. Для переходного поведения можно задать допуск с критериями из стандарта. Для стационарного режима можно задать допуск со ссылкой на характеристики контроллера PID.

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

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

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

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

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

Рассмотрим следующую модель контроллера завода.

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

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

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

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

  1. Запустите модель в обычном режиме и с помощью инспектора расчетных данных запишите выходные данные C.

  2. Укажите режим SIL для C. Повторно запустите моделирование, записав выходные данные C.

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

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

Если выходные сигналы нормального режима и режима SIL не совпадают:

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

  2. Запустите модель в обычном режиме.

  3. Повторно запустите моделирование C в режиме SIL.

  4. С помощью инспектора данных моделирования сравните записанные выходные сигналы с указанным допуском ошибки. См. раздел Сравнение данных моделирования.

  5. Определите блоки, для которых разница на выходе в нормальном режиме и режиме SIL превышает допуск ошибки.

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

Примечание

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

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

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

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

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

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

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

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

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

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

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

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

Ссылки

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

См. также

Связанные темы