Чтобы помочь вам идентифицировать и устранить проблемы с моделью 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, эта проверка использует Polyspace Code Prover для проведения анализа кода. Для получения дополнительной информации смотрите Верификация (Polyspace Code Prover).
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-функции.
findSfunctions
| Simulink.sfunction.Analyzer
| Simulink.sfunction.analyzer.BuildInfo
| Simulink.sfunction.analyzer.Options