В рабочем процессе конструирования на основе модели продукты MathWorks ® используются для создания кода для числовых приложений, использующих арифметику с фиксированной и плавающей точками.
Для разработки моделей используются MATLAB ®, Simulink ® и Stateflow ®.
Для создания исходного кода используются Simulink Coder™ и Embedded Coder ®.
Чтобы проверить числовую эквивалентность между моделью и сгенерированным кодом, необходимо сравнить результаты моделирования модели и сгенерированного кода. Например, результаты моделирования в обычном режиме сравниваются с результатами моделирования в цикле программного обеспечения (SIL).
Результаты моделирования модели и сгенерированного кода численно согласуются, если:
В приложениях с фиксированной точкой результаты согласуются в битовом сравнении.
В приложениях с плавающей запятой результаты соответствуют заданному допуску ошибки.
Используйте инспектор данных моделирования для сравнения результатов. Для определения наличия или значимости расхождений можно указать абсолютные и относительные значения допуска:
Для приложений с фиксированной точкой можно задать абсолютный допуск, равный нулю.
Для приложений с плавающей запятой можно задать допуск относительно опорного значения или сигнала. Выбор ссылки зависит от приложения. Рассмотрим следующие примеры:
Алгоритм, который решает линейное алгебраическое уравнение итеративными вычислениями ошибок прямой связи. Можно задать допуск относительно eps.
Контроллер пропорциональной интегральной производной (PID) для системы с замкнутым контуром. Для переходного поведения можно задать допуск с критериями из стандарта. Для стационарного режима можно задать допуск со ссылкой на характеристики контроллера PID.
Программно можно задать абсолютные и относительные значения допуска с помощью absTol и relTol свойства Simulink.sdi.Signal объект.
Для сложных систем численные различия между моделями и моделями сгенерированного кода могут быть результатом различий на уровне блоков, распространяющихся через систему. При наблюдении числовых различий на уровне системы:
Определите блоки, для которых числовые различия на уровне блоков превышают допуск ошибки.
Исследуйте каждый идентифицированный блок.
Рассмотрим следующую модель контроллера завода.

T вырабатывает опорные или тестовые сигналы.
C - компонент контроллера. Выход контроллера - это вход установки. C может быть блоком модели, который содержит несколько блоков модели.
P - компонент установки. Выходной сигнал установки вычитается из опорного сигнала для получения входного сигнала контроллера.
Чтобы проверить числовую эквивалентность между контроллером модели и сгенерированной версией кода:
Запустите модель в обычном режиме и с помощью инспектора расчетных данных запишите выходные данные C.
Укажите режим SIL для C. Повторно запустите моделирование, записав выходные данные C.
С помощью инспектора данных моделирования сравните выходные данные в обычном режиме и режиме SIL со ссылкой на указанный допуск ошибки.
Если сравнение инспектора данных моделирования указывает на совпадение, то модель и сгенерированные результаты кода численно согласуются.
Если выходные сигналы нормального режима и режима SIL не совпадают:
В пределах C включите регистрацию сигналов для блочных выходов.
Запустите модель в обычном режиме.
Повторно запустите моделирование C в режиме SIL.
С помощью инспектора данных моделирования сравните записанные выходные сигналы с указанным допуском ошибки. См. раздел Сравнение данных моделирования.
Определите блоки, для которых разница на выходе в нормальном режиме и режиме SIL превышает допуск ошибки.
Проанализируйте каждый идентифицированный блок и найдите причину. Например, созданный код может использовать другую математическую библиотеку, отличную от MATLAB.
Примечание
Если требуется сравнение большого количества сигналов, можно автоматизировать рабочий процесс с помощью Simulink Test™. См. раздел Проверка SIL для подсистемы (Simulink Test).
При разработке приложений с фиксированной запятой и с плавающей запятой существуют факторы, которые могут повлиять на числовое согласование между результатами на уровне блоков, полученными при моделировании моделей и созданных кодов.
Некоторые факторы могут влиять как на приложения с фиксированной запятой, так и на приложения с плавающей запятой. Например, использование:
Оптимизация генерации кода.
Пользовательский код.
Записи библиотеки замены кода, результаты которых отличаются от результатов MATLAB.
Библиотеки замены кода, реализующие различные алгоритмы.
Другие факторы влияют только на приложения с плавающей запятой. Например:
Численная обоснованность алгоритма.
Чувствительность алгоритма к входу.
Поведение замкнутого контура и разомкнутого контура.
[1] Стандарт IEEE ® на переходы, импульсы и связанные формы сигналов, стандарт IEEE 181, 2003, стр. 15-17.