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