setUnit - Set units on parameter value - MATLAB (original) (raw)
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 = 1×3 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.
ans = ValueType with properties:
Name: 'Pressure'
DataType: 'double'
Dimensions: '[1 1]'
Units: 'psi'
Complexity: 'real'
Minimum: ''
Maximum: ''
Description: ''
Owner: [1×1 systemcomposer.arch.Architecture]
Model: [1×1 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
Get the LeftWheel
component parameter values.
for i = 1:length(paramNames) paramName = paramNames(i) [paramValue,paramUnits,isDefault] = leftWheelComp.getParameterValue(paramNames(i)) end
First, check the evaluated RightWheel
parameters.
for i = 1:length(paramNames) paramName = paramNames(i) [paramValue,paramUnits] = rightWheelComp.getEvaluatedParameterValue(paramNames(i)) end
Check the evaluated LeftWheel
parameters.
for i = 1:length(paramNames) paramName = paramNames(i) [paramValue,paramUnits] = leftWheelComp.getEvaluatedParameterValue(paramNames(i)) end
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")
Update the values for the pressure on LeftWheel
.
leftWheelComp.setParameterValue("Pressure","34") [paramValue,paramUnits,isDefault] = leftWheelComp.getParameterValue("Pressure")
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")
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: [1×1 systemcomposer.ValueType]
Parent: [1×1 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: [1×1 systemcomposer.ValueType]
Parent: [1×1 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: [1×1 systemcomposer.ValueType]
Parent: [1×1 systemcomposer.arch.Architecture]
Unit: 'psi'
Delete the promoted parameter.
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 = Parameter with properties:
Name: "noiseReduction"
Value: '30'
Type: [1×1 systemcomposer.ValueType]
Parent: [1×1 systemcomposer.arch.Architecture]
Unit: 'dB'
Rearrange the mAxleArch
architecture model to view all components.
Simulink.BlockDiagram.arrangeSystem("mAxleArch");
Delete the Muffler
component.
Save the updated models.
model = systemcomposer.loadModel("mWheelArch"); save(model) save(topModel)