Main Content

systemcomposer.arch.Parameter

Parameter in System Composer

Since R2022b

    Description

    A Parameter object describes a parameter in System Composer™. Set the default properties of a parameter by setting the Type property. To edit and view the instance-specific parameters specified as model arguments on a component, architecture, or reference model, change the Value and Unit properties of each Parameter object.

    Creation

    Create a Parameter object using the addParameter function on a systemcomposer.arch.Component, systemcomposer.arch.VariantComponent, or systemcomposer.arch.Architecture object.

    Properties

    expand all

    Parameter name, specified as a character vector or string. This property must be a valid MATLAB® identifier.

    Example: "advanceSpeed"

    Data Types: char | string

    Parameter value, specified as a character vector or string.

    Example: "120"

    Data Types: char | string

    Parameter unit, specified as a character vector or string.

    Example: "mph"

    Data Types: char | string

    Type of parameter, specified as a systemcomposer.ValueType object.

    Parent architecture or component that owns parameter, specified as a systemcomposer.arch.Component, systemcomposer.arch.VariantComponent, or systemcomposer.arch.Architecture object.

    Object Functions

    getParameterPromotedFromGet source parameter promoted from
    resetToDefaultResets parameter value to default
    destroyRemove model element

    Examples

    collapse all

    This example shows a wheel axle architecture model with instance-specific parameters exposed in System Composer™. These parameters are defined as model arguments on the Simulink® reference model used as a model behavior linked to two System Composer components. You can change the values of these parameters independently on each reference component.

    To add parameters to the architecture model or components, use the Parameter Editor. To remove these parameters, delete them from the Parameter Editor.

    Open the architecture model of the wheel axle mAxleArch to interact with the parameters on the reference components using the Property Inspector.

    model = systemcomposer.openModel("mAxleArch");

    Look up the Component objects for the RightWheel and LeftWheel components.

    rightWheelComp = lookup(model,Path="mAxleArch/RightWheel");
    leftWheelComp = lookup(model,Path="mAxleArch/LeftWheel");

    Get the parameter names for the RightWheel component. Since the LeftWheel component is linked to the same reference model mWheel, the parameters are the same on the LeftWheel component.

    paramNames = rightWheelComp.getParameterNames
    paramNames = 1x3 string
        "Diameter"    "Pressure"    "Wear"
    
    

    Get the Pressure parameter on the RightWheel component architecture.

    paramPressure = rightWheelComp.Architecture.getParameter(paramNames(2));

    Display the value type for the Pressure parameter.

    paramPressure.Type
    ans = 
      ValueType with properties:
    
               Name: 'Pressure'
           DataType: 'double'
         Dimensions: '[1  1]'
              Units: 'psi'
         Complexity: 'real'
            Minimum: ''
            Maximum: ''
        Description: ''
              Owner: [1x1 systemcomposer.arch.Architecture]
              Model: [1x1 systemcomposer.arch.Model]
               UUID: '47c2446a-f6b0-4710-9a73-7ed25d1671c4'
        ExternalUID: ''
    
    

    Get the RightWheel component parameter values.

    for i = 1:length(paramNames)
        paramName = paramNames(i)
        [paramValue,paramUnits,isDefault] = rightWheelComp.getParameterValue(paramNames(i))
    end
    paramName = 
    "Diameter"
    
    paramValue = 
    '16'
    
    paramUnits = 
    'in'
    
    isDefault = logical
       1
    
    
    paramName = 
    "Pressure"
    
    paramValue = 
    '31'
    
    paramUnits = 
    'psi'
    
    isDefault = logical
       0
    
    
    paramName = 
    "Wear"
    
    paramValue = 
    '0.25'
    
    paramUnits = 
    'in'
    
    isDefault = logical
       1
    
    

    Get the LeftWheel component parameter values.

    for i = 1:length(paramNames)
        paramName = paramNames(i)
        [paramValue,paramUnits,isDefault] = leftWheelComp.getParameterValue(paramNames(i))
    end
    paramName = 
    "Diameter"
    
    paramValue = 
    '16'
    
    paramUnits = 
    'in'
    
    isDefault = logical
       1
    
    
    paramName = 
    "Pressure"
    
    paramValue = 
    '32'
    
    paramUnits = 
    'psi'
    
    isDefault = logical
       1
    
    
    paramName = 
    "Wear"
    
    paramValue = 
    '0.25'
    
    paramUnits = 
    'in'
    
    isDefault = logical
       1
    
    

    First, check the evaluated RightWheel parameters.

    for i = 1:length(paramNames)
        paramName = paramNames(i)
        [paramValue,paramUnits] = rightWheelComp.getEvaluatedParameterValue(paramNames(i))
    end
    paramName = 
    "Diameter"
    
    paramValue = 
    16
    
    paramUnits = 
    'in'
    
    paramName = 
    "Pressure"
    
    paramValue = 
    31
    
    paramUnits = 
    'psi'
    
    paramName = 
    "Wear"
    
    paramValue = 
    0.2500
    
    paramUnits = 
    'in'
    

    Check the evaluated LeftWheel parameters.

    for i = 1:length(paramNames)
        paramName = paramNames(i)
        [paramValue,paramUnits] = leftWheelComp.getEvaluatedParameterValue(paramNames(i))
    end
    paramName = 
    "Diameter"
    
    paramValue = 
    16
    
    paramUnits = 
    'in'
    
    paramName = 
    "Pressure"
    
    paramValue = 
    32
    
    paramUnits = 
    'psi'
    
    paramName = 
    "Wear"
    
    paramValue = 
    0.2500
    
    paramUnits = 
    'in'
    

    Set the parameter value and unit for the PSI parameter on the LeftWheel component.

    First, check the current values for the pressure on LeftWheel.

    [paramValue,paramUnits,isDefault] = leftWheelComp.getParameterValue("Pressure")
    paramValue = 
    '32'
    
    paramUnits = 
    'psi'
    
    isDefault = logical
       1
    
    

    Update the values for the pressure on LeftWheel.

    leftWheelComp.setParameterValue("Pressure","34")
    [paramValue,paramUnits,isDefault] = leftWheelComp.getParameterValue("Pressure")
    paramValue = 
    '34'
    
    paramUnits = 
    'psi'
    
    isDefault = logical
       0
    
    

    Revert the Pressure parameter on LeftWheel to its default value.

    leftWheelComp.resetParameterToDefault("Pressure")

    Check the reverted values for the pressure on LeftWheel.

    [paramValue,paramUnits,isDefault] = leftWheelComp.getParameterValue("Pressure")
    paramValue = 
    '32'
    
    paramUnits = 
    'psi'
    
    isDefault = logical
       1
    
    

    Promote the Pressure parameter on the LeftWheel component.

    addParameter(model.Architecture,Path="mAxleArch/LeftWheel",Parameters="Pressure");

    Get the promoted Pressure parameter from the root architecture of the mAxleArch model.

    pressureParam = model.Architecture.getParameter("LeftWheel.Pressure");

    Adjust the value of the promoted Pressure parameter.

    pressureParam.Value = "30";
    pressureParam
    pressureParam = 
      Parameter with properties:
    
          Name: "LeftWheel.Pressure"
         Value: '30'
          Type: [1x1 systemcomposer.ValueType]
        Parent: [1x1 systemcomposer.arch.Architecture]
          Unit: 'psi'
    
    

    Get the source parameter from which the Pressure parameter is promoted.

    sourceParam = getParameterPromotedFrom(pressureParam)
    sourceParam = 
      Parameter with properties:
    
          Name: 'Pressure'
         Value: '30'
          Type: [1x1 systemcomposer.ValueType]
        Parent: [1x1 systemcomposer.arch.Component]
          Unit: 'psi'
    
    

    Reset the value of the promoted Pressure parameter to the default value in the source parameter.

    resetToDefault(pressureParam);
    pressureParam
    pressureParam = 
      Parameter with properties:
    
          Name: "LeftWheel.Pressure"
         Value: '32'
          Type: [1x1 systemcomposer.ValueType]
        Parent: [1x1 systemcomposer.arch.Architecture]
          Unit: 'psi'
    
    

    Delete the promoted parameter.

    destroy(pressureParam)

    Add a new Muffler component to the mAxleArch architecture model.

    topModel = systemcomposer.loadModel("mAxleArch");
    mufflerComp = addComponent(topModel.Architecture,"Muffler");

    Add the parameter noiseReduction to the Muffler component.

    noiseReduce = addParameter(mufflerComp.Architecture,"noiseReduction");

    Set the default Unit value for the NoiseReduction parameter.

    valueTypeNoise = noiseReduce.Type;
    valueTypeNoise.Units = "dB";

    Set the Value property for the noiseReduction parameter.

    noiseReduce.Value = "30";

    View the properties of the noiseReduction parameter.

    noiseReduce
    noiseReduce = 
      Parameter with properties:
    
          Name: "noiseReduction"
         Value: '30'
          Type: [1x1 systemcomposer.ValueType]
        Parent: [1x1 systemcomposer.arch.Architecture]
          Unit: 'dB'
    
    

    Rearrange the mAxleArch architecture model to view all components.

    Simulink.BlockDiagram.arrangeSystem("mAxleArch");

    Delete the Muffler component.

    destroy(mufflerComp)

    Save the updated models.

    model = systemcomposer.loadModel("mWheelArch");
    save(model)
    save(topModel)

    More About

    expand all

    Version History

    Introduced in R2022b