欢迎关注《汽车软件技术》公众号,回复关键字获取资料。
DCM(Data Conservation Format)是一种标定数据文件格式,文件后缀是“.dcm”。
DCM在INCA等标定软件中都有包含,比如INCA CDM中:
DCM有标准的文档说明(公众号回复“DCM文档“获取)。因为DCM使用了德语关键字,加上稍微复杂的格式,所以可读性不如CVX,但数据完整性更好。DCM是我最常用的格式。
下面分别介绍其中的几种数据类型:
注意:同类型标定数据可能有多个不同的关键字,具体看文档。
VALUE占据5行,常用关键字“FESTWERT”。如下所示,标定量=DEMO_CONSTANT_1,描述=“This is a standard constant value (fixed value).”,单位=“dec”,值=1.57。
FESTWERT DEMO_CONSTANT_1
LANGNAME "This is a standard constant value (fixed value)."
EINHEIT_W "dec"
WERT 70.0000000000000000
END
CURVE占据多行,常用关键字“KENNLINIE”。如下所示,标定量=DEMO_CURVE,维度=7,描述=“This is a standard curve: one input and one output.”,x轴单位=“revs”,数值轴单位=“”。后面分别跟随x轴值和数值。
KENNLINIE DEMO_CURVE 7
LANGNAME "This is a standard curve: one input and one output."
EINHEIT_X "revs"
EINHEIT_W ""
ST/X ...
WERT ...
END
MAP占据多行,常用关键字“KENNFELD”。如下所示,标定量=DEMO_MAP_1,维度=16x6。
KENNFELD DEMO_MAP_1 16 6
LANGNAME "This is a standard map - to be displayed in tabular, 3D, XW, WX, ... representation."
EINHEIT_X "revs"
EINHEIT_Y "ms/rev."
EINHEIT_W "degrees"
ST/X ...
ST/Y ...
WERT ...
END
在DCM中坐标轴已包含在标定量中。
使用python开发了pydcm库(公众号回复“DCM代码”获取),用于标定数据分析。大部分代码沿用了pycvx。如果读者有兴趣,可以把两个库合并为一个更通用的。
from pydcm import dcminfo
dcm = dcminfo()
dcm.read("../data/DEMO.DCM")
# find functions:0, calibrations:5, axises:0
DEMO_CURVE = dcm.calibrations["DEMO_CURVE"]
print(DEMO_CURVE)
# name=DEMO_CURVE, description=This is a standard curve: one input and one output.
# line_start=35, line_end=43
# type=CURVE, unit=
# value=
# [0.30078125, 0.3984375, 0.5, 0.59765625, 0.69921875, 0.80078125, 0.8984375]
# axis x
# name=, description=
# line_start=0, line_end=0
# type=, unit=revs
# value=
# [120.0, 200.0, 320.0, 400.0, 520.0, 600.0, 720.0]
DEMO_MAP_2 = dcm.getcalobject("calibration", "DEMO_MAP_2")
DEMO_MAP_2.show()