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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  3. Повторно выполните симуляцию с C в режиме SIL.

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

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

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

Примечание

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

Причины блочного уровня числовые различия

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

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

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

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

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

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

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

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

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

  • Замкнутый цикл и поведение разомкнутого цикла.

Ссылки

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

Смотрите также

Похожие темы