Поиск и устранение проблем с проверками S-функций

Чтобы помочь вам идентифицировать и устранить проблемы с моделью S-функции и исходным кодом, S-функции проверяют с помощью API анализатора S-функции, чтобы помочь вам обнаружить потенциальные проблемы S-функции.

Проверки окружения

Проверки окружения проверяют ваше окружение на наличие API анализатора S-функций. Эта проверка включает в себя MEX проверка настройки компилятора.

MEX Setup

Эта проверка указала на наличие MEX компилятор на текущей машине. Компилятор C по умолчанию включен в ваш MATLAB® монтаж. Список поддерживаемых компиляторов см. в разделе Изменение компилятора по умолчанию. Можно изменить компилятор по умолчанию, набрав mex -setup в командной строке.

Проверки исходного кода

Эти проверки проверяют исходный код для S-функций. Эти проверки включают в себя MEX скомпилировать проверку и Polyspace® Code Prover™ проверки.

MEX Проверка компиляции

The MEX для проверки компиляции используются MEX компиляторы для идентификации предупреждений и ошибок компилятора в исходном коде S-функции.

Проверка Polyspace Code Prover

Если у вас есть лицензия Polyspace, эта проверка использует Polyspace Code Prover для проведения анализа кода. Для получения дополнительной информации смотрите Верификация (Polyspace Code Prover).

S-функциональные MEX Проверки файлов

Этот набор проверок проверяет семантику S-функции MEX-файл.

MdlOutputsModifyContinuousStates

Эта проверка указывает, что непрерывные состояния S-функции изменены в mdlOutputs способ. Непрерывные состояния могут быть изменены только на основном временном шаге и требуют ssSetSolverNeedsReset макрос для сброса решателя S-функции. Изменение состояний S-функции без сброса решателя может привести к неожиданным результатам.

MdlUpdateModifyContinuousStates

Эта проверка указывает, изменяются ли непрерывные состояния S-функции в mdlUpdate способ. Непрерывные состояния могут быть изменены только на основном временном шаге и требуют ssSetSolverNeedsReset макрос для сброса решателя S-функции. Изменение состояний S-функции без сброса решателя может привести к неожиданным результатам.

MinorStepModifyDiscreteStates

Эта проверка указывает, изменяются ли дискретные состояния S-функции в ее mdlOutputs метод за мелкий шаг. Дискретные состояния S-функции могут быть изменены только на основном шаге, охраняемом sslsMajorTimeStep.

MinorStepModifyModes

Эта проверка исследует, изменен ли вектор режима S-функции в mdlOutputs за мелкий шаг. Шаг Mode S-функции может быть изменен только в основной временной шаг, охраняемый ssIsMajorTimeStep функция.

GlobalStaticAsInvisibleState

Эта проверка указывает, использует ли S-функция статические или глобальные переменные для представления внутренних состояний. Чтобы избежать неожиданного поведения, которое является результатом наличия S-функции в нескольких блоках s-function, объявите состояния S-функции явным образом, используя ssSetNumDiscreteStates или использование API функций памяти хранилища данных.

ContinuousStateWithoutContinuousSampleTime

Эта проверка проверяет, является ли непрерывный шаг расчета S-функции явным образом объявленной, когда она имеет непрерывные состояния. Можно использовать ssSetSampleTime задавать непрерывный шаг расчета, когда S-функция имеет непрерывные состояния.

CombinedMdlOutputsMdlUpdateWithDiscreteState

Эта проверка проверяет, является ли S-функция mdlUpdate и mdlOutputs методы объединяются, когда S-функция имеет дискретные состояния. Когда S-функция имеет дискретные состояния, задайте mdlUpdate и mdlOutputs методы отдельно и изменяют дискретные состояния только в mdlUpdate способ.

DeclareCanBeConditionalExecWithState

Эта проверка проверяет, устанавливает ли S-функция SS_OPTION_CAN_BE_CALLED_CONDITIONALLY опция, когда она имеет данные, подобные состоянию или несколько шагов расчета. Эта опция может вызвать Simulink® двигатель для перемещения S-функций в условно выполненный режим, такой как условно выполненная подсистема. Удалите эту опцию, когда у вас будет подобный состоянию или несколько шаги расчета.

TestHarnessCreationError

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

ModelCompileError

Анализатор S-функций сталкивается с ошибкой при компиляции модели входа. Можно попробовать перекомпилировать модель и проверить средство просмотра диагностики для получения дополнительной информации.

Проверка робастности входного параметра

Эта проверка проверяет робастность S-функций путем определения несовместимого числа и типа параметров с определенными случайными значениями. Эта проверка может привести к сбою MATLAB. Чтобы исправить эту проблему, следуйте шагам воспроизведения, когда вы перезапускаете проверки S-функции и проверяете типы данных и значения параметров S-функции.

См. также

| | |

Похожие темы

Похожие темы