coder.asap2.getEcuDescriptions
R2026b描述
您可以使用 ECU 描述对象及其函数在 ASAP2 文件中添加、删除、查找、过滤、更新和获取 ECU 描述。您可以使用函数为模型创建信息对象。
创建对象
为模型 descObj = coder.asap2.getEcuDescriptions(modelName)descObj 创建一个名为 modelName 的 ECU 描述对象。
属性
通过包括或排除注释来生成 A2L 文件。
示例: Comments=true
创建一个用户数据库并自定义 ASAP2 字段,例如:
ASAP2FileName
ByteOrder
HeaderComment
ModParComment
ModCommonComment
示例: CustomizationObject=obj
根据属性对参数和信号进行分组。
示例: CustomizeGroupsBy={'ARRAY','MAP'}
指定一个 32 位整数值,用于指定 ASAP2 文件中的其他地址信息。默认情况下,不需要其他地址信息。
示例: EcuAddressExtension=4
导出的 A2L 文件的名称。
示例: FileName='test_car'
放置导出的 A2L 文件的文件夹的完整路径。
示例: Folder='/home/temp/prjct/'
通过包括或排除 A2ML 和 IF_DATA 部分来生成 A2L 文件。
示例: GenerateXCPInfo=true
根据 A2L 文件的版本,将所有基本数据类型的记录布局导出到名为 RecordLayouts.a2l 的文件中。
示例: IncludeAllRecordLayouts=true
通过包括或排除 AUTOSAR RTE 元素来生成 A2L 文件。
注意
此选项仅适用于 AUTOSAR Classic 模型。
示例: IncludeAutosarRteElements=true
指定 true 以在 A2L 文件中包括默认事件列表。
示例: IncludeDefaultEventList=true
指定 true 可在 ASAP2 文件中包含引用模型元素。指定 false 可将其排除。
示例: IncludeReferencedModels=true
为 Compu 方法和记录布局生成单独的 A2L 文件。
注意
此选项适用于具有基于 ERT 的系统目标文件的模型。
示例: IncludeSharedElements=true
指定 true 可将变体参数导出到 ASAP2 文件。指定 false 可跳过变体参数。
示例: IncludeVariantCoding=true
通过遵从缩进生成 A2L 文件。
示例: IndentFile=true
包含生成代码符号的模型符号文件的名称。例如,在生成代码中使用的变量的地址。
示例: MapFile='model.elf'
A2L 文件中的自定义模型实例名称。此参量仅适用于 AUTOSAR Adaptive 模型。
示例: ModelClassInstanceName='customObj' 或 ModelClassInstanceName='customNameSpace::customObj'
指定 false 以排除生成的 ASAP2 文件中的 64 位整数。
示例: Support64bitIntegers=false
指定 false 以排除生成的 ASAP2 文件中的结构体元素。
示例: SupportStructureElements=false
将数组布局更新为 ROW_DIR 或 COL_DIR 以按行或按列查看数组数据。
示例: ToggleArrayLayout=true
保存所设置的预设项,并使用更新后的预设项生成 ASAP2 文件,例如包括注释、ASAP2 文件的版本。
示例: UseSavedSettings=false
基于 ASAM 定义的 ASAM MCD-2 MC 标准的 A2L 文件格式。ASAM MCD-2 MC 标准有多个版本。指定所需的 A2L 版本。
示例: Version='1.61' 或 Version='1.31'
示例
此示例描述如何通过添加、修改和删除计算方法、特征、测量和查找表参数,以编程方式自定义 ASAP2 文件中的 ECU 描述。
使用函数从已构建的模型创建一个 ECU 描述对象,查找并过滤其内容,然后导出自定义 ASAP2 文件。
在此示例中,您执行下列操作:
构建模型并创建一个 ECU 描述对象
按属性查找和过滤计算方法
添加并修改自定义计算方法
添加并修改自定义特征和测量
添加带轴信息的查找表参数
导出自定义 ASAP2 文件
打开并构建模型
打开示例模型 ASAP2Demo 并从其生成代码。构建模型是创建 ECU 描述对象的一项前提条件。
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
创建并浏览 ECU 描述
为构建的模型创建 ECU 描述对象。使用 find 函数列出可用的计算方法。
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"
过滤计算方法,仅获取使用 rpm 作为单位的计算方法。
find(descObj, "CompuMethod", Units="rpm")
ans = 1×3 string
"CM_double_rpm" "CM_int16_rpm" "CM_single_rpm"
添加自定义计算方法
创建一个具有线性转换类型的计算方法,并将其添加到 ECU 描述对象。
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);
验证新添加的计算方法的属性。
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: ""
将转换类型更新为 TAB_VERB 并定义对应的 CompuVTabValues。使用 set 函数修改现有描述的属性。
set(descObj, "CompuMethod", "CompuMethod_1", ConversionType="TAB_VERB"); set(descObj, "CompuMethod", "CompuMethod_1", CompuVTabValues=struct("Literals", ["false" "true"], "Values", [0 1]));
验证修改后的字段。
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]
添加自定义特征
创建一个表示标定参数的特征,并将其添加到 ECU 描述对象。然后更新其 UpperLimit 属性。
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)
添加自定义测量
创建一个表示信号的测量,并将其添加到 ECU 描述对象。然后更新其 CalibrationAccess 属性。
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")
添加查找表参数
创建一个类型为 MAP 且具有两个坐标轴的查找表参数。每个轴都需要名称、计算方法、最大轴点数以及轴类型。
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)
导出自定义 ASAP2 文件
使用更新后的 ECU 描述对象导出 ASAP2 文件。验证生成的文件包含自定义计算方法、特征、测量和查找表参数。
coder.asap2.export("ASAP2Demo", CustomEcuDescriptions=descObj);删除自定义描述
从 ECU 描述对象中删除自定义描述。
delete(descObj, "CompuMethod", "CompuMethod_1"); delete(descObj, "Characteristic", "Custom_parameter1"); delete(descObj, "Measurement", "Custom_signal1");
版本历史记录
在 R2022b 中推出
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)