get
R2026bDescription
Examples
This example shows how to programmatically customize ECU descriptions in an ASAP2 file by adding, modifying, and removing computation methods, characteristics, measurements, and lookup table parameters.
Use functions to create an ECU description object from a built model, find and filter its contents, and export a customized ASAP2 file.
In this example, you:
Build a model and create an ECU description object
Find and filter computation methods by properties
Add and modify a custom computation method
Add and modify a custom characteristic and measurement
Add a lookup table parameter with axis information
Export the customized ASAP2 file
Open and Build the Model
Open the example model ASAP2Demo and generate code from it. Building the model is a prerequisite for creating the ECU description object.
open_system("ASAP2Demo");
slbuild("ASAP2Demo");### Searching for referenced models in model 'ASAP2Demo'. ### Total of 2 models to build. ### Starting serial code generation build. ### Starting model reference code generation target build for: ASAP2DemoModelRef ### Successfully updated the model reference code generation target for: ASAP2DemoModelRef ### Starting top model code generation target build for: ASAP2Demo ### Successful completion of build procedure for: ASAP2Demo Build Summary Model reference code generation targets: Model Build Reason Status Build Duration ============================================================================================================ ASAP2DemoModelRef Target (ASAP2DemoModelRef.c) did not exist. Code generated and compiled. 0h 0m 8.5322s Top model targets: Model Build Reason Status Build Duration ============================================================================================ ASAP2Demo Target (ASAP2Demo.c) did not exist. Code generated and compiled. 0h 0m 16.383s 2 of 2 models built (0 models already up to date) Build duration: 0h 0m 27.316s
Create and Explore ECU Descriptions
Create the ECU description object for the built model. Use the find function to list available computation methods.
descObj = coder.asap2.getEcuDescriptions("ASAP2Demo");Export duration: 0h 0m 0s 227ms
find(descObj, "CompuMethod")ans = 1×9 string
"CM_double" "CM_double_m_per_U0028_s_U005E_2_U0029" "CM_double_rpm" "CM_int16_rpm" "CM_int32" "CM_single" "CM_single_m_per_U0028_s_U005E_2_U0029" "CM_single_rpm" "CM_uint8"
Filter the computation methods to get only those that use rpm as the unit.
find(descObj, "CompuMethod", Units="rpm")
ans = 1×3 string
"CM_double_rpm" "CM_int16_rpm" "CM_single_rpm"
Add a Custom Computation Method
Create a computation method with a linear conversion type and add it to the ECU description object.
CompuMethod_1 = coder.asap2.CompuMethod; CompuMethod_1.Name = 'CompuMethod_1'; CompuMethod_1.ConversionType = "LINEAR"; CompuMethod_1.Coefficients = [2 3]; CompuMethod_1.LongIdentifier = "longIdentifierTest"; CompuMethod_1.Format = "%2.3"; CompuMethod_1.Units = "s"; add(descObj, CompuMethod_1);
Verify the properties of the newly added computation method.
get(descObj, "CompuMethod", "CompuMethod_1")
ans =
CompuMethod with properties:
Name: 'CompuMethod_1'
LongIdentifier: "longIdentifierTest"
Format: "%2.3"
Units: "s"
Coefficients: [2 3]
ConversionType: "LINEAR"
CompuVTabValues: [1×1 struct]
CustomData: ""
Update the conversion type to TAB_VERB and define the corresponding CompuVTabValues. Use the set function to modify properties of an existing description.
set(descObj, "CompuMethod", "CompuMethod_1", ConversionType="TAB_VERB"); set(descObj, "CompuMethod", "CompuMethod_1", CompuVTabValues=struct("Literals", ["false" "true"], "Values", [0 1]));
Verify the modified fields.
modifiedProp = get(descObj, "CompuMethod", "CompuMethod_1")
modifiedProp =
CompuMethod with properties:
Name: 'CompuMethod_1'
LongIdentifier: "longIdentifierTest"
Format: "%2.3"
Units: "s"
Coefficients: [2 3]
ConversionType: "TAB_VERB"
CompuVTabValues: [1×1 struct]
CustomData: ""
modifiedProp.CompuVTabValues
ans = struct with fields:
Literals: ["false" "true"]
Values: [0 1]
Add a Custom Characteristic
Create a characteristic that represents a calibration parameter and add it to the ECU description object. Then update its UpperLimit property.
param1 = coder.asap2.Characteristic; param1.Name = "Custom_parameter1"; param1.LongIdentifier = "longIdentifierParam"; param1.UpperLimit = 255; param1.LowerLimit = 0; add(descObj, param1); get(descObj, "Characteristic", "Custom_parameter1")
ans =
Characteristic with properties:
Name: "Custom_parameter1"
LongIdentifier: "longIdentifierParam"
Type: 'VALUE'
EcuAddress: '0x0000'
CompuMethodName: 'NO_COMPU_METHOD'
LowerLimit: 0
UpperLimit: 255
EcuAddressComment: ""
EcuAddressExtension: []
CalibrationAccess: 'Calibration'
DisplayIdentifier: ""
Format: ""
BitMask: []
AxisInfo: []
RecordLayout: ""
Dimensions: []
Export: 1
MaxRefresh: [1×1 struct]
SymbolLink: [1×1 struct]
CustomData: ""
set(descObj, "Characteristic", "Custom_parameter1", UpperLimit=128)
Add a Custom Measurement
Create a measurement that represents a signal and add it to the ECU description object. Then update its CalibrationAccess property.
signal1 = coder.asap2.Measurement; signal1.Name = "Custom_signal1"; signal1.LongIdentifier = "longIdentifierSignal"; signal1.UpperLimit = 255; signal1.LowerLimit = 0; add(descObj, signal1); get(descObj, "Measurement", "Custom_signal1")
ans =
Measurement with properties:
Name: "Custom_signal1"
LongIdentifier: "longIdentifierSignal"
DataType: 'UBYTE'
EcuAddress: '0x0000'
CompuMethodName: ""
LowerLimit: 0
UpperLimit: 255
Raster: [1×1 struct]
EcuAddressComment: ""
EcuAddressExtension: []
CalibrationAccess: 'NoCalibration'
DisplayIdentifier: ""
Format: ""
BitMask: []
Dimensions: []
Export: 1
MaskData: [1×1 struct]
MaxRefresh: [1×1 struct]
SymbolLink: [1×1 struct]
CustomData: ""
set(descObj, "Measurement", "Custom_signal1", CalibrationAccess="Calibration")
Add a Lookup Table Parameter
Create a lookup table parameter of type MAP with two axes. Each axis requires a name, computation method, maximum number of axis points, and axis type.
lutParam = coder.asap2.Characteristic; lutParam.Name = "custom_lookup_table"; lutParam.Type = "MAP"; axisData = coder.asap2.AxisInfo; axisData(1).Name = "BP3"; axisData(2).Name = "Bp4"; axisData(1).CompuMethodName = "ASAP2Demo_CM_double"; axisData(2).CompuMethodName = "ASAP2Demo_CM_double"; axisData(1).MaxAxisPoints = "3"; axisData(2).MaxAxisPoints = "3"; axisData(1).AxisType = "STD_AXIS"; axisData(2).AxisType = "STD_AXIS"; lutParam.AxisInfo = axisData; add(descObj, lutParam)
Export the Customized ASAP2 File
Export the ASAP2 file using the updated ECU description object. Verify that the generated file contains the custom computation method, characteristic, measurement, and lookup table parameter.
coder.asap2.export("ASAP2Demo", CustomEcuDescriptions=descObj);Remove Custom Descriptions
Remove the custom descriptions from the ECU description object.
delete(descObj, "CompuMethod", "CompuMethod_1"); delete(descObj, "Characteristic", "Custom_parameter1"); delete(descObj, "Measurement", "Custom_signal1");
Input Arguments
Information object created by using the coder.asap2.getEcuDescriptions function containing the
ASAP2 properties of a given model.
Example: descObj =
coder.asap2.getEcuDescriptions(<modelName>)
Specify the category available in the information object to get the ASAP2 element.
Example: Characteristic
Specify the name available in the specified category to fetch the ASAP2 element.
Example: CompuMethod1
Example: Parameter_p1
Version History
Introduced in R2022b
See Also
add | set | find | delete | coder.asap2.getEcuDescriptions
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
웹사이트 선택
번역된 콘텐츠를 보고 지역별 이벤트와 혜택을 살펴보려면 웹사이트를 선택하십시오. 현재 계신 지역에 따라 다음 웹사이트를 권장합니다:
또한 다음 목록에서 웹사이트를 선택하실 수도 있습니다.
사이트 성능 최적화 방법
최고의 사이트 성능을 위해 중국 사이트(중국어 또는 영어)를 선택하십시오. 현재 계신 지역에서는 다른 국가의 MathWorks 사이트 방문이 최적화되지 않았습니다.
미주
- América Latina (Español)
- Canada (English)
- United States (English)
유럽
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)