Чтобы помочь вам идентифицировать и диагностировать проблемы со своей 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 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
на мелком шаге. Шаг режима 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-параметра-функции и значения.
Simulink.sfunction.Analyzer
| Simulink.sfunction.analyzer.BuildInfo
| Simulink.sfunction.analyzer.Options
| findSfunctions