Чтобы помочь вам идентифицировать и диагностировать проблемы со своей S-моделью-функции и исходным кодом, проверки S-функции используют S-функцию API анализатора, чтобы помочь вам обнаружить потенциальные проблемы S-функции.
Проверки среды смотрят вашу среду для S-функции API анализатора. Эта проверка включает MEX проверка настройки компилятора.
MEX Проверка SetupЭта проверка указала на присутствие MEX компилятор в текущей машине. Компилятор C по умолчанию включен в вашу установку MATLAB®. Чтобы видеть поддерживаемый список компиляторов, см. Компилятор Значения по умолчанию Изменения (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 файл или определения параметра маски.
ModelCompileErrorS-функция анализатор сталкивается с ошибкой при компиляции входной модели. Можно попытаться перекомпилировать модель и проверять диагностическое средство просмотра для получения дополнительной информации.
Эта проверка смотрит робастность S-функций путем определения несовместимого номера и типа параметров с определенными случайными значениями. Эта проверка могла заставить MATLAB отказывать. Чтобы устранить эту проблему, следуйте за этапами воспроизведения, когда вы будете повторно запускать проверки S-функции и проверять типы данных S-параметра-функции и значения.
Simulink.sfunction.Analyzer | Simulink.sfunction.analyzer.BuildInfo | Simulink.sfunction.analyzer.Options | findSfunctions