ODX目的:
Open Diagnostic data eXchange,由ASAM定义的一种诊断和刷写数据的数据格式,方便不同供应商之间,供应商与车厂之间,开发与售后诊断之间交 换数据,即诊断数据库。
ODX文件分类:ODX-CATEGORY
以ODX 2.2.0版本为基础介绍。
A DIAG-LAYER-CONTAINER
ODX-D (diagnostic data) 描述诊断命令和参数
COMPARAM-SPE
*ODX-C (communication parameter)*诊断协议栈的预定义参数,超时时间等,
MULTIPLE-ECU-JOBS
ODX-M(Multiple ECU Job Sep)
VEHICLE-INFO-SPEC
ODX-V (vehicle topology) 标识车辆信息,车辆网络的拓扑结构,描述ECU和tester的访问链路等
FLASH
ODX-F (flash data container) 用于刷写,可以将HEX和S19文件加载
ECU-CONFIG
ODX-E (ECU coding data) 用于EOL下线配置
FUNCTION-DICTIONARY
ODX-FD (mapping to functions)
ODX2.0.1与ODX2.2.0比较
ODX2.2.0增加新的文件格式。如ODX-CS,2.0.1中ODX-C包含有通信的相关参数,在2.2.0版本中 ODX-CS为通信参数的文件。而物理层的参数放在ODX-C中。
ODX数据模型
借鉴UML种class概念(类名,类属性,没用到类方法),涉及对象(object)之间的继承,组合,聚合,关联等关系。
普通元素 ( Common Members)
SHORT-NAME
标识一个 ODX 对象。长度限制在 128 个字符,由数字,字母,下划线组成。正则表达式为: [a-zA-Z0-9_]+
LONG-NAME
ODX 对象的功能的一个简短描述。长度限制在 255 个字符。 LONG-NAME 应该代替 SHORT-NAME 在应用程序的用户界面显示出来。(一般来说 SHORT-NAME 比较抽象,作为 ODX 对象的 identifier, LONG-NAME 是描述性的。)
DESC
描述 ODX 对象的功能的细节,没有长度限制。此元素是可选的,可以包含段落,支持一些 html 的标签。
LONG-NAME 和 DESC 可以包含可选的成员 TI ( Text Identifier )以支持多国语言。 TI 属性支持外部和内部描述文档的映射,映射机制是特定于应用工具和制造商的。( Porsche 的 PTTD 数据库)
ELEMENT-ID 用来在整个 ODX 数据模型中代表上面所列的各个成员
ID 作为标志符供 odx-link (后面再介绍)使用。 ID 的值守 XML 规范约束。任何可处理 ODX 的工具都不能在数据的生命周期内改变 ID 的值,每个 ID 值在 ODX 数据池中必须是唯一的。
OID 用来标志对象而不是 linking (相对 ID )。同样 OID 也不能在数据生命周期内被修改。
普通对象( Common Objects )
特殊数据组 - Special Data Group ( SDG )
SDG 是 ODX 的标准的扩展机制。以一种结构化的方式存贮所有那些没有被数据模型的标准化部分覆盖的数据。 ODX 中使用 SDG 的一个例子比如 COMPANY-DOC-INFO :企业特定的文档。 ODX 只定义 SDG 的结构而不是内容,所以一个 ODX 处理工具不要求处理 SDG
用户和附加用户( audience and additional-audience)
Audience为下面元素定义组群:
⎯ DIAG-COMM;
⎯ MULTIPLE-ECU-JOB;
⎯ CONFIG-ITEM, CONFIG-RECORD and DATA-RECORD of ECU-CONFIG;
⎯ BASE-FUNCTION-NODE of FUNCTION-DICTIONARY;
⎯ SESSION-DESC of ECU-MEM-CONNECTOR;
⎯ DATABLOCK of ECU-MEM;
⎯ TABLE-ROW.
ODX中预定义了 5个组,值为 true或者 false
a) IS-SUPPLIER;
b) IS-DEVELOPMENT;
c) IS-MANUFACTURING;
d) IS-AFTERSALES;
e) IS-AFTERMARKET.
如果 Audience元素为空或不存在,则默认对所有组可用。
ODX实现格式
UML 映射(mapping)为XML语言,规则如下:
1.UML中的类映射为XML中的元素
2.如果UML中的类的属性有《attr》标识,则映射为XML元素的属性;如果UML中的类的属性无《attr》标识,则映射为XML元素的子元素。如果UML属性有《content》标识,映射为XML元素的内容。
3.通过Aggregation和composition联系的UML类映射为XML元素的子元素。
4.存在association关系的两个UML类,在XML中以odxlink,snref,或snpathref的方式体现。这种关系本质上是一个元素对另外一个元素的引用关系。
5.UML类图中的继承关系,在XML中以ID-REF的形式来表征。因为XML本身只是文本文件,它并不知道什么继承不继承,所以XML元素的继承关系就是在子元素中加一个元素来标识这个子元素继承自谁。而继承关系则由XML解析器去分析了。
<EXAMPLE>
<PERSON ID="ID_64711" AGE="33" xsi:type="PERSON">
<NAME>Jack O. Trades</NAME>
<PROFESSION> All Duty Service Technician </PROFESSION>
<COAT>Gucci</COAT>
<FOOT SIZE="8"></FOOT>
<FOOT SIZE ="9"></FOOT>
</PERSON>
<PERSON ID="ID_60815" AGE = "8" xsi:type="SCHOOLKID" GRADE="3">
<NAME>Kevin</NAME>
<FOOT SIZE="5"></FOOT>
<FOOT SIZE="5"></FOOT>
<FATHER-REF ID-REF="ID_64711"></FATHER-REF>
</PERSON>
</EXAMPLE>
注:xsi,命名空间前缀,以后SCHOOLKID 和PERSON在一个命名空间中,防止不同文件同名的冲突。具体参考XML相关文档。