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