ODX本身存在的物理形式就是xml文件,但是从逻辑上来说,ODX文件却分为很多种类,不同种类的ODX文件对于诊断仪来说用途是不一样的。理解这些ODX文件的种类及其之间的关联,对于理解这种构造诊断数据的方式来说非常重要。
基于2.0.1版本的ODX文件,共分为5大类:
Diag-Layer-Container
Comparam-Spec
Multiple-ECU-Job-Spec
Vehicle-Info-Spec
Flash
Diag-Layer-Container是诊断文件的核心内容,它定义了所有的诊断服务及其使用的数据类型。
Comparam-Spec定义了诊断仪和ECU通信使用的参数信息,主要包括两类,一类是时间参数,比如接收或发送帧时的timeout,另一类是控制诊断仪行为的参数,比如出错之后诊断仪需要重新发送几次命令。
Multiple-ECU-Job-Spec中定义了同时和多个ECU进行通信的方法。
Vehicle-Info-Spec定义了车型信息以及车型的网络拓扑结构,即这个车中有哪些ECU,如何与这些ECU建立logical link进行诊断通信。
Flash相对独立,它就是ECU的软件或参数文件。
其中的Diag-Layer-Container又分为5小类:
PROTOCOL
FUNCTIONAL-GROUP
BASE-VARIANT
ECU-VARIANT
ECU-SHARED-DATA
它们之前存在着继承引用关系,从而减少数据冗余。下图是规范中举的一个反映这5种文件之间继承关系的例子。
最上层是PROTOCOL,它定义了某种诊断应用层协议,比如UDS或OBD。
下面是FUNCTIONAL-GROUP,定义了某些多个ECU共同支持的诊断服务或数据。
BASE-VARIANT代表了一个具体ECU的位置,在每个车型中,每个ECU只有一个BASE-VARIANT文件,它继承PROTOCOL和FUNCTIONAL-GROUP,可以对上面两层中的诊断服务和数据进行引用,也可以对继承的服务和数据进行更改。
ECU-VARIANT是各个ECU的具体实现。比如,在一个PDX包中,只有一个发动机的BASE-VARIANT文件,但是,发动机可以有1.4,1.6,1.8,2.0等等不同配置,而不同配置的发动机ECU则有不同的诊断数据,体现在ECU-VARIANT中。
ECU-SHARED-DATA是一个数据库,定义了通用的数据类型,由上述4种文件对其进行引用。
诊断仪启动后,与某个ECU建立连接的过程大致如下所述:
诊断仪从Vehicle-Info-Spec文件中获取该车型所支持的ECU列表,当用户从诊断仪界面选择某个ECU时,诊断仪利用Vehicle-Info-Spec中存储的logical link 信息寻找代表该ECU的BASE-VARIANT文件,有了BASE-VARIANT文件,诊断仪就可以和ECU进行通信了,然后诊断仪会询问ECU所使用的EV文件名字和版本,并在PDX包中寻找这个EV文件。
领取专属 10元无门槛券
私享最新 技术干货