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