Main Content

Create and Add Custom Data Elements

Generate an ASAP2 file by adding custom characteristics, measurements, axis-points, functions, groups, record layouts, and CompuMethods. By default, an ASAP2 file contains the data elements present in model that were configured to export.

Using the Simulink® Coder™ you can:

  • Create and add custom data elements such as characteristics, measurements, axis-points, functions, groups, record layouts, and CompuMethods.

  • Remove data elements from the ASAP2 file.

  • Filter and filter data elements based on their properties.

  • Get or update the properties of data elements.

Video - Customization of ASAP2 File

This video walks you through how to build a model and add, update, find, delete custom data elements in an ASAP2 file.

Video Player is loading.
Current Time 0:00
Duration 4:21
Loaded: 3.77%
Stream Type LIVE
Remaining Time 4:21
 
1x
  • Chapters
  • descriptions off, selected
  • en (Main), selected

    Customize an ASAP2 File

    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.

    slbuild("ASAP2Demo");
    ### Searching for referenced models in model 'ASAP2Demo'.
    ### Found 1 model reference targets to update.
    ### Starting serial model reference 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 8.8933s 
    
    Top model targets:
    
    Model      Build Reason                                         Status                        Build Duration
    ============================================================================================================
    ASAP2Demo  Information cache folder or artifacts were missing.  Code generated and compiled.  0h 0m 15.574s 
    
    2 of 2 models built (0 models already up to date)
    Build duration: 0h 0m 26.309s
    

    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 = 1x10 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 = 1x3 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: [1x1 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: [1x1 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: [1x1 struct]
                 SymbolLink: [1x1 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.

    add(descObj,Signal_1);

    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: [1x1 struct]
          EcuAddressComment: ""
        EcuAddressExtension: []
          CalibrationAccess: 'NoCalibration'
          DisplayIdentifier: ""
                     Format: ""
                    BitMask: []
                 Dimensions: []
                     Export: 1
                   MaskData: [1x1 struct]
                 MaxRefresh: [1x1 struct]
                 SymbolLink: [1x1 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"
    

    Create and Add Custom Group

    Add, update, filter, find, and remove ECU descriptions for groups in an ASAP2 file.

    Open and Build Example Model

    Open the example model ASAP2Demo

    open_system("ASAP2Demo");

    Build the model.

    slbuild("ASAP2Demo");
    ### Searching for referenced models in model 'ASAP2Demo'.
    ### Found 1 model reference targets to update.
    ### Starting serial model reference 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 8.6752s 
    
    Top model targets:
    
    Model      Build Reason                                         Status                        Build Duration
    ============================================================================================================
    ASAP2Demo  Information cache folder or artifacts were missing.  Code generated and compiled.  0h 0m 16.385s 
    
    2 of 2 models built (0 models already up to date)
    Build duration: 0h 0m 27.141s
    

    Create the ECU description object for the model.

    descObj = coder.asap2.getEcuDescriptions("ASAP2Demo");

    Get the list of available groups in the description object.

    find(descObj,"Group")
    ans = 1x2 string
        "ASAP2Demo"    "ASAP2Demo_ASAP2DemoModelRef_ASAP2DemoModelRef"
    
    

    Filter the groups and get a list of groups that has Root set to true.

    find(descObj,"Group",Root=true)
    ans = 
    "ASAP2Demo"
    

    Create and Add Custom Group

    To add a new group to the ASAP2 file, create a custom group.

    GroupObj_GR1 = coder.asap2.Group;
    GroupObj_GR1.Name = 'CustomGroup_1';
    GroupObj_GR1.LongIdentifier = 'New test group';
    GroupObj_GR1.RefCharacteristic = ["ydata3", "ydata4"];
    GroupObj_GR1.RefMeasurement = ["ASAP2Demo_Y.Out3", "ASAP2Demo_Y.Out3"];
    GroupObj_GR1.Root = true;

    Add the custom group to the ECU description object.

    add(descObj,GroupObj_GR1);

    Get Group Properties

    Get the properties of newly added group by using this command.

    get(descObj,"Group","CustomGroup_1")
    ans = 
      Group with properties:
    
                     Name: 'CustomGroup_1'
           LongIdentifier: 'New test group'
        RefCharacteristic: ["ydata3"    "ydata4"]
           RefMeasurement: ["ASAP2Demo_Y.Out3"    "ASAP2Demo_Y.Out3"]
                     Root: 1
                 SubGroup: [1x0 string]
               CustomData: [1x0 string]
    
    

    Update Group Properties

    To modify a property of the group, use set function. Update the LongIdentifier field of the group.

    set(descObj,"Group","CustomGroup_1",LongIdentifier="Group 1 new long identifier")

    Generate the ASAP2 file using the updated ECU description object and verify that the ASAP2 file contains the group CustomGroup_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 Group

    Remove the newly added group from the description object.

    delete(descObj,"Group","CustomGroup_1");

    See Also

    | | | | | | | |

    Related Topics

    Go to top of page