基于的新能源汽车远程诊断系统的设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
随着国家节能与新能源汽车规模化示范工程和私人购买新能
源汽车试点工作的推广,电动汽车在全国的示范运行数量日益增多,远程诊断可以实现电动汽车的远程监控、状态评估、故障诊断和调度管理。本文所介绍的新能源汽车远程诊断系统通过CAN总线采集整车状态数据和故障数据,通过GPRS/3G等无线通讯上传数据到远方的数据服务器,同时具有GPS卫星定位功能,并能将车辆的实时位置信息上传服务器平台。
1 系统硬件设计
本系统的主要功能框图如(图1)所示:
该系统采用模块化设计,以ST公司的STM32F105RCT6为微处理器,主要功能模块有华为GPRS模块MG323,日本JRC的GPS模块G 595,T I 的C A N 收发器模块S N 65H V D A 541。其中STM32F105RCT6为ARM 32位的CORTEX-M3 CPU 。STM32F105RCT6内部有256KB Flash,64KB的SRAM;内嵌4~16MHz晶体振荡器,支持低功耗模式;51个多功能双向的I/O口;多达10个定时器;14个通信接口,包括2个I2C总线、5个USART、3个SPI、2路CAN接口、1个USB2.0全速接口;工作频率高达72MHz;采用LQFP64封装。
1.1 通信模块单元设计
通信模块目前采用华为GPRS模块MG323,同时预留3G通信模块接口。华为公司MG323模块单元支持四频GSM850/900/1800°/1900。最大发射功率为2W。接收灵敏度<-107dBm。正常工作温度:-20~+70℃。待机平均电流:2.4mA。最大下行传输速率:85.6kbps,最大上行传输速率:42.8kbps。内嵌TCP/IP协议,支持多链接。
正常上电后,GSM模块基本在30秒连上GSM网络,50秒连上服务器,基本在1分钟内就能建立与服务器的正常数据链路。
模块接口方式简单,仅需电源和1个RS232串口,使用方便。单片机串口与模块串口连接,即可通过发送AT指令控制GSM模块,实现GPRS网络的数据发送、GSM的语音通话和EMS短信功能。
1.2 CAN接口单元设计
CAN单元包含两路CAN接口,一路作为标准车身CAN通信接口,波特率500bps,另一路预留。CAN收发器选用TI公司的12V车载级收发器SN65HVDA541-Q1,工作温度-40~125℃。最大传输速度为1Mbps。支持SAE J1939,NMEA 2000标准的CAN数据接口。芯片内部带过压保护,CANH、CANL管脚耐压值范围-27V~40V,抗瞬态脉冲电压范围达到-200V~200V。
为了保证CAN电路的EMC特性,在收发器的CAN总线外围还加入了共模电感和ESD保护,CAN部分具体电路图见图2:
1.3 电源处理单元设计
终端是应用于12V新能源电动汽车,汽车电磁环境比较恶劣,进入系统的电源必须经过严格处理,才能保证系统的稳定工作。
电源处理电路包括防反接保护、浪涌保护、EMI静噪滤波器、π型滤波和DC-DC处理五个部分,处理框图见图3。各部分说明如下:防反接保护使用一个普通二极管就可以实现。浪涌保护包括一个TVS管,可以有效抑制类似于脉冲5的干扰。EMI静噪滤波器是一款小尺寸、引线型结构,实现了良好的高频性能。π型滤波电路进一步滤除噪声,净化进入后端电路的电源。DC-DC处理根据实际应用完成各种类电源转换。
1.4 存储器单元设计
本设备的存储器分为单片机内部Flash和外接存储单元两部
分。STM32F105RCT6内置了256KB Flash,主要用于存放程序代码。
外接存储单元为串行FLASH存储器和miniSD卡。外部FLASH 存储器用于存储系统的配置参数数据,本设计采用ATMEL公司的
基于ARM 的新能源汽车远程诊断系统的设计
汪玮
(中国电子科技集团公司第三十八研究所 安徽合肥 230031)
摘要:本系统采用ARM Cortex-M3内核的微处理器STM32F105RCT6,开发了一种新能源汽车远程诊断系统。该系统可以远程采集整车状态数据并能够对整车故障进行诊断和GPS定位。
关键词:ARM GPS 新能源汽车 远程诊断
中图分类号:TP277
文献标识码:A 文章编号:1007-9416(2014)01-0133-02作者简介:汪玮,男,(1982—),硕士,工程师,研究方向为汽车电子、嵌入式开发。
图1 远程诊断系统基本原理框图
图2 CAN 通讯电路
12V 输入各种类电源输出
图3 电源处理电路框图
······下转第135页
串行FLASH AT25DF161-SH-T,接口形式采用SPI方式,容量为2MB。
由于STM32F105RCT6没有SDIO并行接口,因此采用SPI方式驱动miniSD卡。SPI方式采用4线制,使用CS、CLK、DataIn、DataOut 进行数据通信。SD卡的SPI通信接口使其可以通过SPI通道进行数据读写。从应用的角度来看,采用SPI接口的好处在于,很多单片机内部自带SPI控制器,不光给开发上带来方便,同时也见降低了开发成本。
2 系统软件设计
远程诊断系统软件为典型的前后台式架构,采用模块化的软件设计方法,将系统功能分解为多个子模块,每个模块对应一个状态机。系统在初始化完成之后,即进入主循环,各状态机依据在程序中的前后位置依次获得CPU时间循环运行。根据系统硬件采用的方案,主要模块软件实现方式如下:
(1)电源管理模块:对系统的电源进行管理,包括低功耗的进入和退出。
(2)CAN模块:CAN模块实现CAN总线通讯功能、故障恢复等,同时实现KWP诊断协议。
(3)GPRS模块:GPRS主要实现对 GPRS模块的电源管理功能,登录/断开网络的数据处理过程,以及登录网络后与服务器的数据交互功能。
(4)SD卡模块:实现对数据的写入与读取功能。
(5)GPS模块:GPS模块主要利用串口从GPS模块得到串口数据,分析串口的数据后,得到当前的点位信息、速度信息等。
软件在组成上有两大部分构成,一个是引导程序(Bootloader);一个是主程序。Bootloader负责上电启动,引导主程序;主程序由Bootloader引导成功后启动,实现系统功能。
3 结语
本文介绍了基于ARM Cortex-M3 SoC的新能源汽车远程诊断系统的设计与实现,主要阐述了硬软件实现方法。该系统工作稳定、性能良好,目前已为整车厂批量供货中,客户满意度较高。参考文献
[1]STMicroelectronics.STM32F105 Datasheet,2007
[2]李玲俐,殷隽.车载远程无线监控系统设计与实现[J].工业控制计算机,2007,20(7):5-6.
[3]崔书超,柴智,南金瑞.基于CAN总线的纯电动汽车故障诊断系统[J].车辆与动力技术,2012,(2):44-47
[4]陈红华,王文骇,李洁.基于GSM的GPRS实现方案研究[J].通信技术,2001(1):23-24.
DATA引脚是数据引脚,起到的功能有ARM芯片向传感器下达命令和传感器向ARM芯片传输数据的功能。SCK引脚是时钟引脚,仅供ARM向传感器发送时钟信号,属于单向传输。
5 驱动设计
一个驱动要实现的功能有复位,对传感器的读和写,对测量获得的数据进行补偿计算等,将获得的数据进行传输。以sht11的驱动为例。Sht11的驱动流程如(图2)所示。
要对传感器进行操作,第一步就是复位。在IIC总线驱动的传感器中,复位是依靠复位时序进行操作的,sht11的复位时序如图3。
当DATA保持高电平时,触发SCK时钟9次或更多,接着发送一个“传输启动”时序,在驱动程序的体现就是将DATA置1,SCK的高低电平变换9次,再进行“传输启动”时序的操作,在程序上的体现就是:
for(i=0;i<9;i++)//DATA保持高,SCK时钟触发9次,发送启动传输,通迅即复位
{
Sck_1(); //SCK=1;
Delay(1);
Sck_0(); //SCK=0
Delay(1);
}
s_transstart(); //启动传输
将传感器复位之后,需要给传感器发布测量命令,核心板先给传感器发送一个启动传输的时序,然后可以发送相应的命令时序,启动传输时序如(图4)。
在编写启动传输的程序时,需要根据时序图对DATA线和SCK 线进行细微的控制,所需要的程序为:
void s_transstart(void)
{
Data_out();
Sck_out();
Data_1(); //准备
Sck_0(); //准备
Delay(2);
Sck_1(); //SCK=1;
Delay(2);
Data_0(); //DATA=0;
Delay(2);
Sck_0(); //SCK=0 ;
Delay(5);
Sck_1(); //SCK=1;
Delay(2);
Data_1(); //DATA=1;
Delay(2);
Sck_0(); //SCK=0 ;
}
经历了以上两步后,核心板就可以向传感器发送命令,进行数据的测量。Sht11的命令集如(图5)。再经过对测量获得的数据进行一些补偿及修正的计算,就可以将数据传送到核心板了。将数据从传感器往ARM芯片传输的程序如下
v_pIOPregs->GPPCON &=~(0x3<<(9*2));
//设置gpp9为输入口
for(i=0x80;i>0;i/=2) //右移位
{v_p I O P r e g s->G P P D A T|=(0x1<<(8*2)); //SCK=1;
j=v_pIOPregs->GPPDAT &=(0x3<<(9*2));
if (j) val=(val | i); //读数据线的值
v_pIOPregs->GPPDAT |= (0x0<<(8*2));
//SCK=0 ;
}
相关的计算程序都比较简单,就不一一列举了。
参考文献
[1]徐晓.基于AT89C51的土壤温湿度信息的自动采集与监控[J].自动化技术与应用,2005,24(2):45-47.
[2]曹瑾亮,张有光,周亮.WinCE环境下指纹识别设备驱动的设计和实现[J].电子测量技术,2007,30(8):137-140.
[3]罗健飞,吴仲城,沈春山,申飞.基于ARM和WinCE下的设备接口驱动设计与实现[J].自动化与仪表,2009,3,:1-3.
[4]何宗键.Windows CE嵌入式系统[M].北京:北京航空航天出版社, 2006.
······上接第133页