Main Content

ssSetOperatingPointCompliance

Specify the behavior of a Simulink S-function when saving and restoring the operating point of a model containing the S-function

Syntax

void ssSetOperatingPointCompliance(S, setting)

Arguments

S

SimStruct representing an S-function block.

setting

Define how to treat an S-function simulation state when saving and restoring the model simulation state. Permissible values are:

  • OPERATING_POINT_COMPLIANCE_UNKNOWN (default value)

  • USE_DEFAULT_OPERATING_POINT

  • USE_EMPTY_OPERATING_POINT

  • DISALLOW_OPERATING_POINT

  • USE_CUSTOM_OPERATING_POINT

Description

ssSetOperatingPointCompliance allows you to specify how Simulink® should treat an S-function during a save and restore of the model simulation snapshot (ModelOperatingPoint).

If the S-function does not specify its OperatingPointCompliance, then Simulink assumes the OPERATING_POINT_COMPLIANCE_UNKNOWN setting. This setting instructs Simulink to issue a warning and then switch to USE_DEFAULT_OPERATING_POINT in lieu of the OPERATING_POINT_COMPLIANCE_UNKNOWN.

If the option is set to OP_COMPLIANCE_DEFAULT and if the S-function does not use PWorks, then Simulink treats the S-function like a built-in block. Simulink saves and restores the same data as the operating point (for example continuous states, non-scratch DWork vectors, and zero crossing signal information), as it would for a built-in block. If S-function has Pworks, not setting compliance results in an error on saving operating point. Use custom compliance, USE_CUSTOM_OPERATING_POINT, to save data in Pworks.

Languages

C, C++

Example

Use the ssSetOperatingPointCompliance function to specify the simulation state compliance of an S-function in the mdlInitializeSizes method. The specification is based on the first character vector parameter value.

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);
    }
Introduced in R2019a