非发动机控制器基于Autosar的OBD II诊断开发

目录

文章目录

前言

一、OBD II 与UDS的区别/p>

1.OperationCycle

二、开发步骤

1、制作CDD

2、DaVinci 配置

总结

前言

在整车里,除发动机控制器以外的其他主要控制器需要支持OBD II诊断时,都被称为 PrimaryECU。本文主要介绍PrimaryECU在已经开发完UDS诊断的基础上增加OBD II诊断

一、OBD II 与UDS的区别/h1>

这里主要介绍在诊断开发上面OBD II 与UDS的区别,此外为了方便描述,下文中用OBD 指代OBD II协议。

1.OperationCycle

 Operationcycle是我们在开发诊断时关键的配置项,不同于UDS一般采用的PowerCycle,即上下电为一个周期,OBD有自己专有的Operationcycle—-DrivingCycle简称为DCY。它由法规定义,基于Ignition,开启条件是Ignition ON,但是对于PrimaryEcu来说,还必须接受到来自Master OBD Ecu的DCY qualified信号,PrimaryECU的DCY才真正开启,而且一旦开始无法停止,只能被同样的触发条件restarted。

简而化之,DCY无需我们判断,只需要接受来自BUS上的Master OBD Ecu的DCY qualified信号就行,通过调用API Rte_Call_opCycle_OBDDrivingCycle_SetOperationCycleState()控制本ECU的DrvingCycle。详情参照Vector 文档MICROSAR DEM_OBD。

2.DTC不同

UDS DTC有3个字节,OBD DTC只有UDS DTC的前2个字节,所以1个event可以对于1UDS DTC和1个OBD DTC,例如 B120500(UDS)和 B1205(OBD)对应同一个诊断event;同时可以多个evnet可以对于1个OBD DTC,例如B120500(UDS)和B120568(UDS)的event对应的OBD DTC就都是B1205(OBD)。

3.服务不同

OBD II 服务一共有10个,从$01-$0A。

1) $01

01服务的功能就是读取PID的值,类似UDS的22服务,PID类似DID,区别在于PID在J1979中详细定义其具体含义,数据长度,数据范围等。

2)$02

02服务的功能是读取冻结帧,类似UDS的19 04读取快照。

3)$03

03服务功能是读取确认故障,类似于UDS读取confirmed DTC

4)$04

04服务用于清除排放相关的DTC,类似UDS 的14服务

5)$05

05服务用于请求氧传感器的检测结果

6)$06

06服务用于请求监控系统的测试结果

7)$07

07服务用于请求当前或者上个周期检测到的排放相关故障码,类似UDS19 02 04读取pending DTC

8)$08

08服务请求控制在线系统或者组件

9)$09

09服务用于读取整车信息,比如VIN码,ECU名字,版本号等信息

10)$0A

0A服务用于读取永久故障码(PDTC)。PDTC是OBD专有的DTC,需要单独存储,它的存储条件是MIL等被点亮,但是必须要等到下一个DCY才能被0A服务读取到

二、开发步骤

开发工具对应CANdelaStudio,Vector DaVinci

1、制作CDD

1.将UDS DTC中支持OBD 的DTC的OperationCycle设置为DEM_OBD_DCY,AgingCycle设置为DEM_WARMUP,WarningIndicatorBit at Fault设置为supported。

2.在使用的Variant中勾选所需要的OBD服务,并且在服务下面创建所需要的PID,然后在Fault memory中创建OBD DTC并且关联相应的UDS DTC,然后copy到使用的Variant。

3.将制作好的CDD文件导入DaVinci

2、DaVinci 配置

导入CDD文件后,DCM会自动生成相应的服务,无需做什么修改,同时还会生成DCY,WARMUP和IndicatorLamp以及配置的PID接口,把它们map到用于实现OBD功能的SWC即可。

1.在DemGeneral中设置 OBD freezeFrame number和evnet entry permanent number。然后在DemNvRamBlockIds中创建相应的block,选择对应的NV block type,这时会缺少NvRam BlockId ref需要到NVM模块去创建。

2.DemGeneral中创建DemGeneralOBD子项,按照需求选择合适的PDTC和FreezeFrame Behavior

3.创建子项DemPidConfiguraation选择由代码包实现的PID

总结

由于不方便对软件配置截图,所以配置方面介绍的比较粗略,如果配置过程中有疑问可以私信我。

来源:没脖子的大鹅

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年7月15日
下一篇 2021年7月16日

相关推荐