Укажите поведение S-функции Simulink при сохранении и восстановлении рабочей точки модели, содержащей S-функцию
void ssSetOperatingPointCompliance(S, setting)
SSimStruct представляет S-функциональный блок.
settingОпределите, как обрабатывать состояние моделирования S-функции при сохранении и восстановлении состояния моделирования модели. Допустимые значения:
OPERATING_POINT_COMPLIANCE_UNKNOWN (значение по умолчанию)
USE_DEFAULT_OPERATING_POINT
USE_EMPTY_OPERATING_POINT
DISALLOW_OPERATING_POINT
USE_CUSTOM_OPERATING_POINT
ssSetOperatingPointCompliance позволяет указать, как Simulink ® должен обрабатывать S-функцию во время сохранения и восстановления имитационного снимка модели (ModelOperatingPoint).
Если S-функция не указывает свою OperatingPointCompliance, то Simulink предполагает OPERATING_POINT_COMPLIANCE_UNKNOWN установка. Этот параметр предписывает Simulink выдать предупреждение и затем переключиться на USE_DEFAULT_OPERATING_POINT вместо OPERATING_POINT_COMPLIANCE_UNKNOWN.
Если для параметра установлено значение OP_COMPLIANCE_DEFAULT и если S-функция не использует PWorks, то Simulink рассматривает S-функцию как встроенный блок. Simulink сохраняет и восстанавливает те же данные, что и рабочая точка (например, непрерывные состояния, нескретные векторы DWork и информацию о сигнале пересечения нулей), что и для встроенного блока. Если S-функция имеет Pworks, то отсутствие настройки соответствия приводит к ошибке при сохранении операционной точки. Использовать настраиваемое соответствие, USE_CUSTOM_OPERATING_POINT, для сохранения данных в Pworks.
C, C++
Используйте ssSetOperatingPointCompliance для определения соответствия состояния моделирования 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;
ssSetOperatingPointCompliance(S, setting);
ssSetOperatingPointVisibility(S, visibility);
}
Пользовательский код и кодированные вручную блоки с помощью S-function API| ssSetOperatingPointVisibility