在CDDT左侧树视图中点击Protocal services,可以看到已经建立的所有服务的请求报文、肯定响应报文、否定响应报文及该服务是否已使用和是否强制要求等信息。
如何创建诊断服务
点击左下角的“New”按钮或“Please click here tocreate a new element”可以新建一个协议服务,出现如下对话框,分别填入服务的名称和ID,勾选上肯定响应和否定响应。
点击Ok后会弹出如下对话框
按照请求报文的字节顺序,依次创建每部分内容。点击“New”按钮或“Please click here to create a new element”后会弹出以下对话框。
下面举例对上图中类型的应用场合进行说明。
- Constant:常量代表在CDD文件中不可更改的值,服务标识符均为常量。也可以用作子功能参数,例如读取诊断信息服务(0x19),选择不同的子功能时报文结构不同,需要针对每个子功能建立一个协议服务。
- Varible value:变量代表需要在在CDD文件中指定的值,与ECU进行通信时是固定的。可以用作子功能参数,例如诊断会话控制服务(0x10),选择不同的子功能时报文结构相同,不同子功能可以使用同一个协议服务,此时子功能参数就使用变量类型;也可以用作数据标识符,例如读取数据服务服务(0x22)中的DID,就是使用变量类型。
- Proxy:代表在ECU和诊断仪之间传递的一系列数据对象。可以用作Data参数,允许选择不同的数据类型;也可以用作DTC、DTC状态或DTC组参数;也可以用作响应码参数,所有的否定响应报文中的否定响应码都使用Proxy类型。
- Fixed data:用于无论用在哪种诊断类中协议服务总是传递相同的数据对象,例如诊断会话控制服务(0x10)的肯定响应报文中的定时参数。
- Multiplexer:用于依赖之前传送过的某一个值(同一报文)的数据对象,例如读取诊断信息服务(0x19)根据DTC码报告快照记录子功能(0x04)肯定响应报文中的快照记录。
- Iteration:用于连续传送若干次的数据对象,例如读取诊断信息服务(0x19)根据状态掩码报告DTC子功能(0x02)、根据DTC码报告快照记录子功能(0x04)、根据DTC码报告扩展数据子功能(0x06)等需要迭代报告的类型。
例如创建一个带子功能的服务,则选择Varible value,并选择相应的子功能data type,如下图所示
点击OK,会弹出如下窗口,在这边可以设置是否支持禁止肯定响应位。
协议服务创建完成后,需要选择加入某个诊断服务类,才可以在通用诊断部分使用。下一章将会介绍如何创建诊断类,及如何将新建的服务加入到诊断类中。
如何修改诊断服务
点击需要修改的服务,右键属性或双击会弹出如下窗口
可根据需求修改服务请求及响应格式。如需修改是否支持禁止肯定响应位,选中子功能右键属性或双击,如下
在弹出的窗口中将Supports "Suppress Positive Response Message Indoation Bit"勾选或去除