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

目录

文章目录

前言

一、OBD II 与UDS的区别?

1.OperationCycle

二、开发步骤

1、制作CDD

2、DaVinci 配置

总结

前言

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

一、OBD II 与UDS的区别?

这里主要介绍在诊断开发上面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

总结

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

  • 3
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
基于AUTOSAR(汽车开放系统架构)规范的车用电机控制器软件开发是一种现代化的方法,它包括系统架构设计、软件设计、软件开发和系统测试等过程。 首先,系统架构设计是一个关键步骤,它需要根据车用电机控制系统的整体架构设计开发控制器的软件。这一步骤通常包括软件组件定义、系统接口定义和通信定义等。软件组件定义是指将系统分解为若干个可重用的软件组件,每个组件都能够处理某个特定的功能。系统接口定义则是指各个软件组件之间的接口约定,以保证可重用性和模块化。 其次,软件设计是基于系统架构设计以及功能需求开展的工作。它通常涉及到组件的算法设计、状态机设计和调度设计等。算法设计是指将功能需求转化为软件实现,并将其封装在一个可重用的软件组件中。状态机设计则是对组件的状态机行为建模,以决定执行顺序和过渡条件。调度设计则是为软件组件分配CPU时间和优先级等确定执行顺序。 第三,软件开发是基于设计文档进行的编码工作,编码过程中需要遵循AUTOSAR规范中的编码标准和质量标准。 最后,系统测试是为了验证软件是否符合功能规格要求,具有足够的性能和可靠性等。测试方法范围广泛,包括单元测试、集成测试、功能测试和压力测试等。 综上所述,基于AUTOSAR规范的车用电机控制器软件开发流程是复杂的,但它能够保证软件的高可重用性、模块化和可扩展性,从而大大提高了车用电机控制系统的可靠性和性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值