В рабочем процессе Модельно-ориентированного проектирования вы используете продукты MathWorks®, чтобы сгенерировать код для числовых приложений, которые используют фиксированную точку и арифметику с плавающей точкой.
Чтобы разработать модели, вы используете MATLAB®, Simulink® и Stateflow®.
Чтобы сгенерировать исходный код, вы используете Simulink Coder™ и Embedded Coder®.
Чтобы протестировать числовую эквивалентность между вашим типовым кодексом и сгенерированным кодом, вы сравниваете результаты симуляции сгенерированного кода и типовой кодекс. Например, результаты симуляции режима normal mode по сравнению с программным обеспечением в цикле (SIL) результаты симуляции.
Результаты типового кодекса и симуляций сгенерированного кода численно сопоставимы если:
В приложениях фиксированной точки результаты соглашаются в поразрядном сравнении.
В приложениях с плавающей точкой результаты соглашаются с ошибочным допуском, что вы задаете.
Используйте Инспектора Данных моделирования, чтобы сравнить результаты. Чтобы определить, существуют ли несоответствия или являются значительными, можно задать абсолютные и относительные значения допуска:
Для приложений фиксированной точки можно задать абсолютный допуск нуля.
Для приложений с плавающей точкой можно задать допуск относительно ссылочного значения или сигнала. Выбор ссылки зависит от вашего приложения. Рассмотрите эти примеры:
Алгоритм, который решает линейное алгебраическое уравнение итеративными, прямыми каналом ошибочными вычислениями. Можно задать допуск относительно eps
.
Контроллер Пропорциональной Интегральной Производной (PID) для системы с обратной связью. Для переходного поведения можно задать допуск с критериями из стандарта. Для установившегося поведения можно задать допуск со ссылкой на характеристики ПИД-регулятора.
Программно, можно задать абсолютные и относительные значения допуска через свойства absTol
и relTol
объекта Simulink.sdi.Signal
.
Для сложных систем числовыми различиями между типовым кодексом и симуляциями сгенерированного кода может быть результат распространения различий блочного уровня через систему. Если вы наблюдаете числовые различия в уровне системы:
Идентифицируйте блоки, к которому блочному уровню числовые различия превышают ошибочный допуск.
Исследуйте каждый идентифицированный блок.
Рассмотрите следующие модели контроллеров объекта.
T производит ссылочные или тестовые сигналы.
C является компонентом контроллера. Контроллер вывел, вход объекта. C может быть блоком Model, который включает блоки многоуровневой модели.
P является компонентом объекта. Объект вывод вычтен из ссылочного сигнала произвести контроллер, ввел.
Протестировать числовую эквивалентность между образцовым контроллером и версией сгенерированного кода:
Запустите модель в режиме normal mode, и, с помощью Инспектора Данных моделирования, запишите вывод C.
Задайте режим SIL для C. Повторно выполните симуляцию, записав вывод C.
Используя Инспектора Данных моделирования, сравните нормальный и режим SIL выходные параметры со ссылкой на ваш заданный ошибочный допуск.
Если Инспектор Данных моделирования, сравнение указывает на соответствие, типовой кодекс и результаты сгенерированного кода, численно сопоставим.
Если нормальное и режим SIL выходные параметры не соответствуют:
В C включите журналирование сигнала для блока выходные параметры.
Запустите модель в режиме normal mode.
Повторно выполните симуляцию с C в режиме SIL.
Используя Инспектора Данных моделирования, сравните регистрируемые выходные сигналы со ссылкой на свой заданный ошибочный допуск. Смотрите Сравнивают Данные моделирования (Simulink).
Идентифицируйте блоки, к которым нормальный и режим SIL выходные различия превышают ошибочный допуск.
Анализируйте каждый идентифицированный блок и ищите причину. Например, сгенерированный код может пользоваться различной математической библиотекой, чем MATLAB.
Если сравнение большого количества сигналов требуется, можно автоматизировать рабочий процесс с Simulink Test™. Смотрите Рабочий процесс Верификации Генерации кода (Simulink Test).
В фиксированной точке и разработке приложений с плавающей точкой, существуют факторы, которые могут влиять на числовое соглашение между блочным уровнем, следует из типового кодекса и симуляций сгенерированного кода.
Некоторые факторы могут влиять и на фиксированную точку и на приложения с плавающей точкой. Например, использование:
Оптимизация генерации кода.
Пользовательский код.
Заменяющие записи библиотеки кода, результаты которых отличаются от результатов MATLAB.
Заменяющие библиотеки кода, которые реализуют различные алгоритмы.
Другие факторы влияют только на приложения с плавающей точкой. Например:
Числовая разумность алгоритма.
Чувствительность алгоритма к входному.
Замкнутый цикл и поведение разомкнутого цикла.
[1] Стандарт IEEE® на Переходах, Импульсах и Связанных Формах волны, Стандарт IEEE 181, 2003, стр 15–17.