第35卷第1期 2015年1月 杭州电子科技大学学报(自然科学版) JOURNAL OF HANCZH0U DIANZI UNIVERSITY(Natural Sciences) V01.35 No.1 Jan.2015 DOI:10.13954/j.cnki.Mu.2015.01.008 基于OBD的汽车数据采集及捕获系统设计 潘益斌,张海峰 (杭州电子科技大学电子信息学院,浙江杭州310018) 摘要:通过车载诊断系统(0BD)连接汽车的CAN总线,采集车辆实时数据,同时捕获总线传输的 报文数据。采用MCP2515和TJA1050搭建两路CAN模块电路,一路CAN节点发送汽车状态信息 请求,并通过OBD接口接收汽车返回的信息;另一路CAN节点处于接收模式,识别数据帧格式,接 收所有CAN总线上传输的数据。该系统扩展了车载诊断系统接口的外部应用。应用的汽车协议 为支持OBDII CAN的ISO15765-4。两模块由MCU控制,收发的数据通过外接RS232串口显示。 结果显示,系统实现了汽车数据的采集及捕获。 关键词:车载诊断系统;汽车CAN总线;采集;捕获;ISO15765—4 中图分类号:TP274 文献标识码:A 文章编号:1001—9146(2015)01—0041—04 0 引 言 目前车载诊断系统(On—Board Diagnostics,OBD)发展迅猛,国外基于车辆自生成数据交换协议已经 实现OBD远程检测¨ ,也开发出了OBD检测器,采用回收机制减少车辆能量的损耗 ,同时,OBD大 型数据采集系统可进行大数据处理 J。国内大量的汽车软件开发设计商、车载电子生产商及运营商积 极投入到OBD的应用领域的研发,通过OBD接口获取“瞬时油耗”、“汽车故障”、“行驶里程”等信息, 开发出功能强大、应用方便的新产品 。本系统不仅实现了从OBD获取汽车行车速度、发动机转速、冷 却液温度、进气温度等信息,而且在传输过程中通过捕获以检测传输的数据。 1 汽车oBD 在汽车的自诊断系统中,可分为OBD OBD I和OBD II 3大系统,OBD III也将随之出现 。当 前,广泛应用的是OBD II系统。基于OBD的汽车与外部电路连接如图1所示。 图1 汽车与外部电路连接图 收稿日期:2014—05—04 作者简介:潘益斌(1988一),男,浙江宁波人,在读研究生,电子系统集成.通信作者:张海峰副教授,E-mail:hfzhang0811@ hdu.edu.cr1. 42 杭州电子科技大学学报 2015正 汽车生产厂商采用的是同一标准的16针的OBD诊断接口,故障码的格式是相同的,报文传输标准 也都是以ISO或SAE的协议形式,故使用通用的诊断系统。 OBD II标准使用的通讯协议一般有:ISO 9141—2,ISO 14230—4(KWP2000),SAE—J1850 PWM, SAE—J1850 VPM,ISO15765—4(CAN—BUS) 。本文采用的是支持CAN总线的ISO15765—4协议。 CAN数据OBD中的消息发送格式如图2所示。 ID bits(11 or 29)I PCI l MODE l PID 图2 CAN数据OBD中的消息发送格式 PCI表示协议控制信息字节数量,MODE表示OBD系统的工作模式,PID标记获取的信息。 2 系统设计 本系统主要分为两个模块,模块一为汽车CAN总线数据的发送请求与接收模块,模块二为CAN报 文数据捕获模块。模块一通过OBD接口发送CAN报文到汽车总线,并接收返回的报文。模块二处于 数据捕获状态,捕获总线上所有节点传送的报文数据。实现框图如图3所示。 MA×232 RS232 接口芯片 接口 MCU-1 MCP2515 CAN TJA1050 数据收发控制 控制器 收发器 CAN 汽车 O80 总线 MCU-2 MCP2515 CAN 接口 TJA1050 数据捕获控制 控制器 收发器 MA×232 RS232 接口芯片 接口 图3 系统总体框图 2.1硬件设计 两模块CAN模块硬件设计基本一致。CAN控制器采用Mieroehip公司生产的控制器芯片 MCP2515,它带有符合工业标准的通用SPI串行接口,满足CAN2.0技术规范,与市面上产品相比具有 体积小,成本低,易于使用的特点 j。CAN收发器采用恩智浦半导体公司(NXP)生产的芯片TJA1050。 TJA1050实现的是总线上传输的差动信号与CAN控制器信号之间的转换。MCU采用的是STC89S52。 供电电源采用汽车OBD接口提供的12 V电源。 2.2软件设计 数据采集模块的数据收发格式遵循ISO15765协议,数据格式包括标准帧和扩展帧。在MCP2515 的配置模式中,设置CAN的波特率及数据帧格式,开启控制器报文接收中断,在中断产生后读取接收到 的数据。工作过程处于正常模式。采集模块软件流程图如图4所示。 数据捕获模块中的CAN节点,处于只接收状态。关闭了MCP2515的验收屏蔽寄存器和验收滤波 寄存器,接收总线上所有节点的报文。接收过程先识别数据帧格式,按标准帧或扩展帧格式接收,接收 第1期 潘益斌等:基于0 BD的汽车数据采集及捕获系统设计 43 到的数据两组一次进行处理。一组为发送请求到总线,一组为接收到请求后发回的信息。由于响应的 时间极短,MCP2515需要一次采集两组数据再进行处理,以防止产生接收寄存器溢出错误。MCP2515 具有两个接收缓冲器RXB0和RXB1,通过配置RXBOCTRL采用滚存方式,可实现数据完整接收。捕获 模块软件流程图如图5所示。 图4数据采集软件流程图 图5数据捕获软件流程图 3 系统测试 本系统采用的测试环境为汽车ECU仿真器,支持多种汽车总线协议。系统启动后,将模块电路接 人OBD公头接121插座,插入仿真器的OBD接口即可工作。测试内容如表1所示。 表1汽车数据信息测试内容 标识符ID PCI 0X02 OX7DF (标准帧)0X02 0X02 0X02 MODE OX01 0X01 0X01 0X01 PID 0XOC 0XOD 0X05 0XOF 测试内容 发动机转速 行车速度 冷却液温度 进气温度 0XI8DB33F1 (扩展帧)标识符1D PCI 0X02 0)[02 0X02 OX02 MODE 0X01 0X01 OXO1 0X01 PID 0XOC OXOD 0X05 0XOF 测试内容 发动机转速 行车速度 冷却液温度 进气温度 数据收发控制模块发送请求报文,接收汽车ECU返回的信息,数据捕获模块获取总线上传输的数 据。图6(a)为收发控制模块检测汽车发动机转速连续采集的数据。图6(b)为捕获模块采集到的总线