coder.asap2.AxisInfo - Set values for axis to describe lookup table - MATLAB (original) (raw)
Main Content
Set values for axis to describe lookup table
Since R2022b
Description
Create an axis info object to define axis for a lookup table element and export it to an ASAP2 file.
Creation
`axis` = coder.asap2.AxisInfo
creates an axis object. You can use the object to define axis for a lookup table element and export it to an ASAP2 file.
Properties
Specify a name for the custom axis object.
Example: "CustomLUT_1"
Specify comments and description of the custom axis object.
Example: "Description of the LUT"
Address of the element in memory.
Example: 0x0000
Name of the record layout.
Example: "Record_DATATYPE"
Type of the axis.
Example: "FIX_AXIS"
Name of the measurement to be used as input quantity for the corresponding axis.
Example: 'NO_INPUT_QUANTITY'
Name of the conversion method.
Example: "COMPU_METHOD_1"
Maximum number of axis points.
Example: [4]
Possible minimum value.
Example: [1.5]
Possible maximum value.
Example: [11.5]
Reference to the AXIS_PTS record for description of the axis points distribution.
Example: "AXIS_PTS_REF_1"
Type of the fix axis.
Example: "FIX_AXIS_PAR"
Distance attribute for FIX_AXIS_PAR
andFIX_AXIS_PAR_DIST
.
Example: 2.3
Offset attribute for FIX_AXIS_PAR
,FIX_AXIS_PAR_DIST
, and list of values forFIX_AXIS_PAR_LIST
.
Example: 0.3
Display format of the object in calibration tool.
Example: "%4.2"
Display name of the object in calibration tool.
Example: "Custom name"
Specify the calibration access type for the custom axis info object.
Example: "Calibration"
Specify symbols for address replacement.
Example: "/* @ECU_Address@AXIS_1@ */"
Additional address information to distinguish different address spaces of an ECU (multi-micro controller devices).
Example: 1
Reference to symbol name within a linker map file.
Example: struct('SymbolName','p1_SymbolName','Offset',1)
Maximum refresh rate.
Example: struct('ScalingUnit',ScalingUnits.ONE_MILLI_SEC,'Rate',100)
Specify any additional description that needs to be populated in the axis.
Example: "additional information"
Examples
Add, update, filter, find, and remove ECU descriptions in an ASAP2 file.
Open and Build Example Model
Open the example model ASAP2Demo
open_system("ASAP2Demo");
Build the model.
Searching for referenced models in model 'ASAP2Demo'.
Total of 2 models to build.
Starting serial code generation build.
Successfully updated the model reference code generation target for: ASAP2DemoModelRef
Starting build procedure 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 5.8839s
Top model targets:
Model Build Reason Status Build Duration
ASAP2Demo Information cache folder or artifacts were missing. Code generated and compiled. 0h 0m 12.037s
2 of 2 models built (0 models already up to date) Build duration: 0h 0m 18.852s
Create the ECU description object for the model.
descObj = coder.asap2.getEcuDescriptions("ASAP2Demo");
Get the list of available computation methods in the description object.
find(descObj,"CompuMethod")
ans = 1×10 string "ASAP2DemoModelRef_CM_double" "ASAP2DemoModelRef_CM_int16_rpm" "ASAP2Demo_CM_double" "ASAP2Demo_CM_double_m_per__s_2_" "ASAP2Demo_CM_double_rpm" "ASAP2Demo_CM_int32" "ASAP2Demo_CM_single" "ASAP2Demo_CM_single_m_per__s_2_" "ASAP2Demo_CM_single_rpm" "ASAP2Demo_CM_uint8"
Filter the computation methods and get a list of computation methods that use rpm as the unit.
find(descObj,"CompuMethod",Units='rpm')
ans = 1×3 string "ASAP2DemoModelRef_CM_int16_rpm" "ASAP2Demo_CM_double_rpm" "ASAP2Demo_CM_single_rpm"
Create and Add Custom Computation Method
To add a new computation method to the ASAP2 file, create a custom computation method.
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 the custom computation method to the ECU description object.
add(descObj,CompuMethod_1);
Get 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: ""
To modify a property of the computation method, use set function. Update the ConversionType field of the computation method to TAB_VERB and define the CompuVTabValues.
set(descObj,"CompuMethod","CompuMethod_1",ConversionType="TAB_VERB"); set(descObj,"CompuMethod","CompuMethod_1",CompuVTabValues = struct('Literals',["false" "true"],'Values',[0 1]));
Get the properties to see 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]
Generate the ASAP2 file using the updated ECU description object and verify that the ASAP2 file contains the computation method CompuMethod_1.
coder.asap2.export("ASAP2Demo",CustomEcuDescriptions=descObj);
Following Characteristics or Measurements with unsupported data types are not exported in ASAP2 file. "ASAP2Demo_DW.ASAP2DemoModelRef_InstanceData"
Delete Computation Method
Remove the newly added computation method from the description object.
delete(descObj,"CompuMethod","CompuMethod_1");
Create and Add Custom Characteristic
To add a new characteristic to the ASAP2 file, create a custom characteristic.
Parameter_1 = coder.asap2.Characteristic; Parameter_1.Name = 'Custom_parameter1'; Parameter_1.LongIdentifier = 'longIdentifierParam'; Parameter_1.UpperLimit = 255; Parameter_1.LowerLimit = 0;
Add the custom characteristic to the ECU description object.
add(descObj,Parameter_1);
Get the properties of the newly added characteristic.
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: ""
To modify a property of the characteristic, use set function. Update the UpperLimit field of the characteristic.
set(descObj,"Characteristic","Custom_parameter1",UpperLimit=128)
Generate the ASAP2 file using the updated ECU description object and verify that the ASAP2 file contains the characteristic Custom_parameter1.
coder.asap2.export("ASAP2Demo",CustomEcuDescriptions=descObj);
Following Characteristics or Measurements with unsupported data types are not exported in ASAP2 file. "ASAP2Demo_DW.ASAP2DemoModelRef_InstanceData"
Remove the newly added characteristic from the description object.
delete(descObj,"Characteristic","Custom_parameter1");
Create and Add Custom Measurement
To add a new measurement to the ASAP2 file, create a custom measurement.
Signal_1 = coder.asap2.Measurement; Signal_1.Name = 'Custom_signal1'; Signal_1.LongIdentifier = 'longIdentifierSignal'; Signal_1.UpperLimit = 255; Signal_1.LowerLimit = 0;
Add the custom measurement to the ECU description object.
Get the properties of the newly added measurement.
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: ""
To modify a property of the measurement, use set function. Update the CalibrationAccess field of the measurement.
set(descObj,"Measurement","Custom_signal1",CalibrationAccess='Calibration')
Generate the ASAP2 file using the updated ECU description object and verify that the ASAP2 file contains the measurement with name Custom_signal1.
coder.asap2.export("ASAP2Demo",CustomEcuDescriptions=descObj);
Following Characteristics or Measurements with unsupported data types are not exported in ASAP2 file. "ASAP2Demo_DW.ASAP2DemoModelRef_InstanceData"
Remove the newly added measurement from the description object.
delete(descObj,"Measurement","Custom_signal1");
Create and Add Lookup Table Parameter
Add a lookup table parameter.
LUT_Parameter = coder.asap2.Characteristic; LUT_Parameter.Name = "custom_lookup_table"; LUT_Parameter.Type = "MAP";
Create and add axis information to the parameter.
axis_data = coder.asap2.AxisInfo; axis_data(1).Name = 'BP3'; axis_data(2).Name = 'Bp4'; axis_data(1).CompuMethodName = 'ASAP2Demo_CM_double'; axis_data(2).CompuMethodName = 'ASAP2Demo_CM_double'; axis_data(1).MaxAxisPoints = '3'; axis_data(2).MaxAxisPoints = '3'; axis_data(1).AxisType = 'STD_AXIS'; axis_data(2).AxisType = 'STD_AXIS'; LUT_Parameter.AxisInfo = axis_data;
Add the lookup table parameter to the description object.
add(descObj,LUT_Parameter)
Generate the ASAP2 file using the updated ECU description object and verify that the ASAP2 file contains the lookup table parameter custom_lookup_table.
coder.asap2.export("ASAP2Demo",CustomEcuDescriptions=descObj);
Following Characteristics or Measurements with unsupported data types are not exported in ASAP2 file. "ASAP2Demo_DW.ASAP2DemoModelRef_InstanceData"
Version History
Introduced in R2022b