欢迎关注《汽车软体技术》公众号,回复关键字获取资料。
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()
推荐阅读: