Чтобы помочь вам идентифицировать и диагностировать проблемы со своей S-моделью-функции и исходным кодом, проверки S-функции используют S-функцию API анализатора, чтобы помочь вам обнаружить потенциальные проблемы S-функции.
Проверки среды смотрят вашу среду для S-функции API анализатора. Эта проверка включает MEX
проверка настройки компилятора.
MEX
Проверка SetupЭта проверка указала на присутствие MEX
компилятор в текущей машине. Компилятор C по умолчанию включен в вашу установку MATLAB®. Чтобы видеть поддерживаемый список компиляторов, см. Компилятор Значения по умолчанию Изменения. Можно изменить компилятор по умолчанию путем ввода mex -setup
в командной строке.
Эти проверки смотрят исходный код для S-функций. Эти проверки включают MEX
скомпилируйте проверка Polyspace® Code Prover™ и проверка.
MEX
Скомпилируйте проверкуMEX
скомпилируйте использование проверки MEX
компиляторы, чтобы идентифицировать предупреждения компилятора и ошибки в исходном коде S-функции.
Если у вас есть лицензия Polyspace, эта проверка использует Polyspace Code Prover, чтобы провести анализ кода. Смотрите Верификацию Polyspace (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
на мелком шаге. Шаг режима 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