Задайте поведение S-функции Simulink при сохранении и восстановлении SimState модели, содержащей S-функцию.
void ssSetSimStateCompliance(S, setting)
S
SimStruct, представляющий Блок s-function.
setting
Задайте, как обработать состояние моделирования S-функции при сохранении и восстановлении образцового состояния моделирования. Допустимые значения:
SIM_STATE_COMPLIANCE_UNKNOWN
(значение по умолчанию)
USE_DEFAULT_SIM_STATE
HAS_NO_SIM_STATE
DISALLOW_SIM_STATE
USE_CUSTOM_SIM_STATE
Эта функция позволяет вам задавать, как Simulink® должен обработать S-функцию во время сохранения и восстановления образцового состояния моделирования (SimState). Если S-функции не задают его SimStateCompliance
, то Simulink принимает установку SIM_STATE_COMPLIANCE_UNKNOWN
. Эта установка дает Simulink команду выдавать предупреждение и затем переключаться на USE_DEFAULT_SIM_STATE
вместо SIM_STATE_COMPLIANCE_UNKNOWN
. Если опция установлена в USE_DEFAULT_SIM_STATE
и если S-функция не использует PWorks
, то Simulink обрабатывает S-функцию как встроенный блок. Simulink сохраняет и восстанавливает те же данные как SimState (e. g., непрерывные состояния и работают векторы), как это было бы для встроенного блока.
C, C++
Следующий пример использует эту функцию, чтобы задать соответствие состояния моделирования S-функции в методе mdlInitializeSizes
. Спецификация основана на первом значении параметров вектора символа.
static void mdlInitializeSizes(SimStruct* S) { ssSetNumSFcnParams(S, 2); /* two parameters */ if (ssGetNumSFcnParams(S) != ssGetSFcnParamsCount(S)) return; ssSetSFcnParamTunable(S, 0, false); ssSetSFcnParamTunable(S, 1, false); { boolean_T visibility = 0U; ssSimStateCompliance setting = GetSimSnapParameterSetting(S, &visibility); if (ssGetErrorStatus(S)) return; ssSetSimStateCompliance(S, setting); ssSetSimStateVisibility(S, visibility); }
См. полный исходный код (/toolbox/simulink/simdemos/simfeatures/src sfun_simstate.c
) для примера того, как получить соответствие моделирования S-функции.