基于CAN总线的分布式电动汽车充电站控制系统.doc_第1页
基于CAN总线的分布式电动汽车充电站控制系统.doc_第2页
基于CAN总线的分布式电动汽车充电站控制系统.doc_第3页
基于CAN总线的分布式电动汽车充电站控制系统.doc_第4页
基于CAN总线的分布式电动汽车充电站控制系统.doc_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Graduation Thesis广州致远电子有限公司毕业设计论文基于CAN总线的分布式电动汽车充电站控制系统设计作 者XXX学 校大学专 业自动化所在部门嵌入式事业部产品二部当前版本V1.00当前日期2011年4月25日修改记录版 本日 期修改人修改内容V1.002011-4-25创建文档毕业设计论文 广州致远电子有限公司嵌入式系统事业部工程技术笔记 2008 Guangzhou ZHIYUAN Electronics CO., LTD. i目 录1. 课题背景12. 系统设计22.1硬件设计22.2软件设计33. 系统实现43.1硬件实现43.1.1充电桩电源实现43.1.2充电桩充电控制实现43.1.3充电桩CAN通讯电路的实现73.1.4充电桩控制器电路实现83.1.5充电显示控制台硬件93.2软件实现93.2.1充电桩软件实现93.2.2充电站CAN模块软件实现153.2.3充电控制显示台界面软件设计194. 系统测试264.1硬件测试264.2软件测试265. 总结27毕业设计论文 2011 Guangzhou ZHIYUAN Electronics CO., LTD. 11. 课题背景汽车是现代社会的重要交通工具,为人们提供了便捷、舒适的出行服务,在人民的生产生活中扮演着重要角色。传统燃油汽车在快速发展的过程中也加剧了对不可再生石油资源的依赖。据国际能源署(IEA)2008年的报告预测,到2030年,全球石油消耗的57% 将发生在交通领域。作为能源消费大国,我国形势更为严峻,2007年中国原油消费总量约为3.5亿吨,其中净进口原油1.6亿吨,占原油消费总量的45.7。目前我国交通运输领域约占石油总消耗量的60%,能源大量进口危及到国民经济正常运行和国家能源安全。在环境方面,交通能源消耗也是造成局部环境污染和全球温室气体排放的主要原因之一。国家电网能源研究院副总经济师白建华发表的一篇关于电动汽车的文章,他提出了电动汽车的优势和发展的必要,并大力提倡发展电动汽车。综上所述,发展电动汽车是当今的必然趋势,随着电动汽车产业化的发展,越来越多的消费者将会选择电动汽车,而电动汽车的大规模使用需要相应的能源供给与之匹配,充电站作为电动汽车电能补给的基础设施直接影响到电动汽车产业化的发展。电动汽车充电站将为大大改善燃油汽车的污染问题,改善周围环境,并且可以解决当今世界燃油紧缺的问题。然而电动汽车的最大瓶颈就是电池,因此提高电池性能增加电池的功能能力,并且使电池达到一个快速充电的效果是当今的研究主题,而发展电动汽车充电站也是以后的必然趋势。本文就是基于CAN总线的分布式电动汽车充电站控制系统研究,用于设计电动汽车的快速充电站,以解决当前的电动汽车的发展受电池瓶颈的束缚问题。单个充电站由许多充电设备和充电电池构成,对这些充电电池进行充电,使其构成一个充电系统。对于单个电池的充电多少,充电时间需要进行协调管理。基于CAN总线的分布式电动汽车充电站控制系统研究的主要目的就是设计多个为电动车电池充电的系统,并运用CAN总线统一管理,为电动车提供可更换式的充电电池,以解决当今世界制约电动汽车发展的核心问题电池难题。图 1.1为一个电动汽车充电站,该充电站是基于CAN总线的分布式电动汽车充电站,通过电池控制系统采集充电电池的充电电压,充电电流,然后通过CAN总线把数据传给控制显示台,显示控制台显示相应的信息,如充电单价,电量,费用,充电进度,输出电压和输出电流;显示控制台也可以通过其上面的按钮发送相应的控制指令给电池控制系统进行相应的控制,控制指令如停止和启动按钮。该充电站设计了电源、运行、充满和故障四个LED指示灯用来指示充电站的相应状态。图 1.1 电动汽车充电站2. 系统设计2.1 硬件设计本系统下位机的充电桩采用Cortex-M0作为核心控制器,研究快速充电器电路,故障保护电路、采样电路等,CAN总线连接EAC-1000和Cortex-M0进行通讯。Cortex-M0通过CAN总线把电池的充电电压、充电电流和充电电源状等充电状态数据发给EAC-1000进行实时显示并监控。EAC-1000把控制指令发给Cortex-M0对电池进行相应的控制操作。本系统主要是分两部分组成,一部分是Cortex-M0控制的电池充电桩,另一部分是EAC-1000控制的控制显示台。对于第一部分主要包含电源模块,控制器模块,充电模块,采样模块和CAN通讯模块。电源模块主要包含控制器工作的电源和充电电路输入的电源;控制器模块是Cortex-M0最小系统模块;充电模块主要用来对电池充电;采样模块主要负责检测当前的充电电流、充电电压、充电电源状态以及充电状态;CAN通讯模块主要是负责电池充电器和控制显示台的通讯。对于控制器显示台主要包含控制器模块,显示模块和CAN通讯模块。控制器模块是PXA270的最小系统模块;显示模块是通过VGA接口接到显示器;CAN通讯模块主要负责其与电池充电桩的通讯。本系统硬件设计总体框图如下图2.1所示:图2.1 硬件设计框图2.2 软件设计本系统的软件方案主要分为两部分,一部分是EAC-1000平台上的以WinCE为操作系统的LCD显示控制程序,另一部分是M0平台上的前后台充电控制程序。对于LCD显示控制程序主要是主函数调用CAN收发函数实现数据的双向传递,然后调用LCD显示函数把充电的相关信息显示出来,如单价,电量,费用,进度,输出电压和输出电流;主函数也可以调用LCD控制函数获取控制指令,然后再调用CAN收发函数把控制指令发送给充电控制程序,如停止,启动等。显示控制程序的软件结构框图如下图2.2所示:图2.2 LCD显示控制程序软件结构图充电控制程序是主函数调用AD采样函数获取电池的充电电压、电流信息,然后调用CAN收发函数把信息传给LCD显示控制程序;主函数也可以接收CAN收发函数传递来的控制指令,然后调用电池控制函数进行相应的控制。充电控制程序的软件结构框图如下图2.3所示:图2.3 充电控制程序软件结构图3. 系统实现3.1 硬件实现3.1.1 充电桩电源实现充电桩的电源主要供给控制器使用和充电桩的充电电源。其电源实现电路图如下图3.1所示:图3.1 充电桩电源原理图该电路采用的是SPX117M3-3.3芯片,其主要参数如下:l 最大输入电压:+20.0Vl 最大输入端到输出端压降:+18.8Vl 稳定输出电流:0.8Al 稳定峰值电流:1Al 控制精度:0.1%线性调整率和0.2%负载调整率l 保护措施:过流及温度保护l 存储温度:-65 +150l ESD额定值:最小2kV根据其参数满足该系统的电流要求,其输入为+5.0V的直流电压,经过C1 C4可得到一个纹波较少的+5.0V电压,其可以很好的供给充电桩的充电电源;再经过稳压芯片和C5 C8方可输出一个很好的+3.3V电压供给M0使用。3.1.2 充电桩充电控制实现1. 充电桩控制电路原理图充电桩控制电路实现利用市电对电池充电。其实现电路原理图如下图3.2所示:图3.2 充电桩控制电路原理图2. 充电桩控制电路芯片功能参数分析该电路采用的是BQ24085芯片,其主要参数如下:l 最大输入电压:+20.0Vl 最大输出电流:2Al 安全时间的预充电控制l 保护措施:输入过电压保护l 存储温度:-65 +150l 自动睡眠模式以及低功耗模式l 芯片的输入过电压:+6.5V芯片引脚功能如下表表3.1所示:引脚名称输入/输出功能描述IN输入充电电压输入和芯片内部工作电压,连接一个1F的电容到地TMR输入安全时间编程输入,接一电阻到地设定定时器定时时间STAT1输出充电状态STAT2输出充电状态VSS输入连接GNDOUT输出充电电流输出,连接到电池的正极,连接一个11F的电容到地BAT输出电池电压输出,连接到电池的正极,连接一个390的电阻到OUT(如果充电电流小于200mA)/CE输入充电使能引脚输入,低电平使能充电,高电平禁止/PG输出电源状态输出,正常为低电平,否则为高电平ISET输出充电电流设定,连接一个电阻到地,连接一个1F的电容到BAT(如果充电电流小于200mA)芯片衬底芯片衬底,连接到GND,有助于芯片散热表3.1 BQ24085引脚功能描述芯片的主要参数如下所示:充电电压调整主要参数如下表3.2所示,充电电压需满足V(IN)VO(REG)+V(DOmax),根据下表可知V(IN)(4.2+0.6)=4.8V,这里取了+5.0V,满足电源电压要求。参数名称测试条件最小值典型值最大值参数含义VO(REG)+4.20V输出电压VO(TOL)TA = 25C1%+1%电压调整的准确度V(DO)I(OUT) = 750 mA600mV表3.2 充电电压调整主要参数充电阶段中主要的几个参数如下表3.3所示:参数名称最小值典型值最大值参数含义VO(REG)+4.20V输出电压,最大可充电电压V(RCH)75mV100mV135mV充电进入预充电的门栏的电压V(PRECHG)225mV250mV280mV预充电设定电压V(LOWV)+2.8V+2.95V+3.15V充电进入快速充电阶段的门栏电压表3.3 几个重要门栏参数充电电流调整主要参数如下表3.4所示,V(IN)V(OUT)V(DO-MAX),充电使能相应的进行充电电流的调整。充电电流的计算方式如下:当充电电压大于V(lowv)时,I(OUT)=IO(OUT)=V(SET)K(SET)R(ISET),此时的K(SET)是快速充电电流设定参数,这里取的是182,V(SET)是ISET引脚电压,这里取的是典型值+2.5V,R(ISET)引脚ISET的设定电流的电阻,设计时设定的输出电流为400mA,所以利用上述公式可知R(ISET)=V(SET)K(SET)IO(OUT)=(2500182)/400=1137.5,这里用了R8 R10 3个精度较高的电阻串联实现充电电流的设定。当充电电压小于V(lowv)时,I(OUT)=I(PRECHG)=V(PRECHG)K(SET)R(ISET),此时的K(SET)是预充充电电流设定参数,这里取的是215,V(PRECHG)是快速充电设定电压,这里取的是典型值250mV,R(ISET)为1137,I(OUT)IO(OUT)10。参数名称测试条件最小值典型值最大值参数含义IO(OUT)V(BAT)V(LOWV)50mA750mA输出电流V(SET)V(LOWV)V(BAT)VO(REG)+2.45V+2.50V+2.55V快速充电设定电压K(SET)100mAIO(OUT)750mA175182190设定快速充电电流参数K(SET)10mAIO(OUT) 100mA180215250设定预充充电电流参数R(ISET)0.6K10K设定ISET引脚电阻表3.4 充电电流调整主要参数安全时间编程参数设定如下表3.5所示,由安全时间设定公式:R(TMR)=T(CHG)K(CHG), T(CHG)为充电安全时间,这里的是5h,而充电安全时间常数K(CHG)取的是0.1hr/K,所以R(TMR)为50 K,这里取的是51K。参数名称最小值典型值最大值参数含义K(CHG)0.08hr/K0.1hr/K0.12hr/K充电安全时间设定常数T(CHG)3h10h充电安全时间表3.5 安全时间参数当进入充电状态时,SATA1和STAT2组合表示充电状态,ON和OFF表示LED亮和灭,如下表3.6所示:STAT1STAT2充电状态ONON预充电状态ONOFF快速充电状态OFFON充电完成OFFOFF充电中止,安全时间结束OFFOFF输入过电压,没有电池,电池短路等表3.6 电池充电状态*注:两个LED闪烁表示充电在快速充电状态和充满状态之间。芯片功能描述如下图3.3所示:图3.3 BQ24085功能图充电电流可以通过电阻RISET设定,当外部电源接入芯片,引脚设置为低电平时并且V(BAT)pCANAPI-isr(); /* 调用CAN中断函数 */CAN API支持和使用具有32个报文对象的完整CAN模块。任意报文对象都可以用于11位或29位报文的接收或发送。它还支持RT位(远程发送)置位的CAN报文。对于报收对象,报文标识符的屏蔽模式可以允许接收的报文范围,可高至接收单个报文对象里总线上的所有CAN报文。CAN配置如程序清单3.5所示。程序清单3.5 CAN初始化/* Function name: CANInit* Descriptions: CAN初始化* input parameters: 无* output parameters: 无* Returned value: 无*/void CANInit(void)PRESETCTRL |= (1 3); SYSAHBCLKCTRL|= (1 pCANAPI - init_can(&CanApiClkInitTable0); zyIsrSet(NVIC_CAN, (unsigned long)canIsr, PRIO_ONE); (*rom)-pCANAPI - config_calb(CAN_CALLBACKS *)&callbacks); msg_obj.mask = 0x00L; /* 不屏蔽任何ID */ msg_obj.dlc = 8; msg_obj.msgobj = 4; (*rom)-pCANAPI- config_rxmsgobj(&msg_obj);CAN接收函数允许读取Rx报文对象接收到的报文。指向报文对象结构的指针会被传递到接收函数中。在调用之前,必须要在结构体中设置要被读取的报文对象的编号。为了CAN设置的方便每次接受八个字节,这里需要读取第一个字节和第八个字节,分别为充电命令和充电设备号。代码如下程序清单3.6所示。程序清单3.6 CAN数据接收/* Function name: CAN_rx* Descriptions: 数据接收处理,将接收到的报文再发送出去* input parameters: msg_obj_num 待读取报文编号* output parameters: 无* Returned value: 无*/void CAN_rx(INT8U msg_obj_num) CAN_MSG_OBJ msg_obj; /* 定义报文编号 */ msg_obj.msgobj = msg_obj_num; /* 获取报文编号 */ (*rom)-pCANAPI-can_receive(&msg_obj); /* 接收报文编号数据 */ ChagerMsg.uiChargerCMD = msg_obj.data0; /* 接收报文编号数据0为充电命令 */ ChagerMsg.uiDeviceNum = msg_obj.data7; /* 接收报文编号数据7为充电桩号 */ (*rom)-pCANAPI-init_can(&CanApiClkInitTable0) /* 初始化CANAPI */* *设置CANAPI的回调函数*/(*rom)-pCANAPI-config_calb(CAN_CALLBACKS *)&callbacks); (*rom)-pCANAPI- config_rxmsgobj(&msg_obj); /* CAN收发配置 */CAN发送函数允许设置报文对象,并可在总线上触发CAN报文的传送。11位标准和29 位扩展报文对象被看作为标准数据和远程发送(RTR)报文。充电桩的发送数据流格式如下程序清单3.7所示,代码如下所示。字节12、34、5678内容充电桩号充电电流充电电压充电状态充电使能电源状态表3.7 充电桩CAN发送数据流格式程序清单3.7 CAN充电桩发送数据/* Function name: SendChargerData* Descriptions: 发送充电站信息* input parameters: 无* output parameters: 无* Returned value: 无*/void SendChargerData(void) msg_obj.data0 = CHARGERNUM;/* 获取充电桩号 */ msg_obj.data1 = (ChagerMsg.uiCurrentData / 100);/* 获取充电桩电流值 */ msg_obj.data2 = (ChagerMsg.uiCurrentData % 100); msg_obj.data3 = (ChagerMsg.uiVoltageData / 100);/* 获取充电桩电压值 */ msg_obj.data4 = (ChagerMsg.uiVoltageData % 100); msg_obj.data5 = ChagerMsg.uiStatOne; /* 获取充电桩状态1 */ msg_obj.data6 = ChagerMsg.uiStatCE; /* 获取充电桩CE状态值 */ msg_obj.data7 = ChagerMsg.uiStatPG;/* 获取充电桩PG状态值 */ (*rom)-pCANAPI-can_transmit(&msg_obj);/* 发送充电桩报文 */3. AD模块实现为了获取充电桩的充电电流和充电电压,使用了两路AD,初始化代码如下Error! Reference source not found.所示,获取AD数据并转化为电流电压值。代码如程序清单3.8和程序清单3.9所示。程序清单3.8 AD初始化/* Function name: ADCInit* Descriptions: ADC初始化* input parameters: 无* output parameters:无* Returned value: 无*/void ADCInit( void ) PDRUNCFG&= (0x01 4); /* ADC模块上电 */ SYSAHBCLKCTRL|= (0x01 13);/* 使能ADC模块时钟 */ IOCON_PIO1_4&= 0xBF; /* 配置PIO1_4为模拟输入模式 */ IOCON_PIO1_4|= 0x01; /* PIO1_4模拟输入通道5 */ IOCON_PIO1_10&= 0xBF;/* 配置PIO1_10为模拟输入模式 */ IOCON_PIO1_10|= 0x01;/* PIO1_10模拟输入通道6 */ AD0CR= ( 0x03 5 ) |/* SEL=1,选择ADC5和ADC6 */ (FAHBCLK / 1000000 - 1) 8 ) |/* 转换时钟1MHz */ ( 1 16 ) | /* 软件控制转换操作 */ ( 0 17 ) | /* 使用11 clocks转换 */ ( 0 24 ) | /* ADC转换停止 */ ( 0 6) & 0x3ff; uiADCData = (uiADCBuf * 3300) / 1024;ChagerMsg.uiVoltageData = (uiADCData * 2);/* 充电电压值 */ if(ChagerMsg.uiVoltageData 2950)/* 充电处于预充电状态*/ ChagerMsg.uiCurrentData = 400; else ChagerMsg.uiCurrentData = 47;/* 充电处于快速充电状态 */ 3.2.2 充电站CAN模块软件实现充电显示控制台软件是EAC-1000平台上的以WinCE为操作系统的LCD显示控制程序。该程序主要是WinMain函数调用CAN收发函数实现数据的双向传递,然后调用显示函数把充电的相关信息显示出来,如单价,电量,费用,进度,输出电压和输出电流;主函数也可以调用LCD控制函数获取控制指令,然后再调用CAN收发函数把控制指令发送给充电控制程序,如停止,启动等。该软件的流程图如下图3.10所示。图3.10 充电控制显示台软件设计流程图1. CAN连接CAN模块软件主要包括CAN连接,CAN启动,CAN复位,CAN发送数据,CAN接收线程。流程图如下图3.11所示。CAN连接主要实现打开工控板上的CAN1设备,配置CAN_DCB长度、发送帧格式、屏蔽字、波特率、滤波方式和超时时间参数等CAN相关参数,主要实现代码如下程序清单3.10所示。图3.11 CAN软件模块流程图程序清单3.10 控制台CAN连接/*打开CAN1设备*/CreateFile(strtmp,GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ | FILE_SHARE_WRITE,NULL, OPEN_EXISTING, 0, 0);/*配置CAN设备参数,CAN滤波方式,CAN超时时间*/DeviceIoControl(m_hDevice, IOCTL_CAN_SET_DCB, &m_DCB, sizeof(CAN_DCB), NULL, 0, NULL, NULL);DeviceIoControl(m_hDevice, IOCTL_CAN_SET_FILTER,&fi, sizeof(CAN_FILTER), NULL, 0, NULL, NULL);DeviceIoControl(m_hDevice,IOCTL_CAN_SET_TIMEOUTS,&cto, sizeof(COMMTIMEOUTS),NULL, 0, NULL, NULL);2. CAN启动CAN启动主要实现启动CAN总线,并且根据充电桩号的充电信息状态启动CAN接收线程。实现代码如下程序清单3.11所示。程序清单3.11 控制台CAN启动/* * 启动CAN总线 */DeviceIoControl(m_hDevice, IOCTL_CAN_SET_BUS_ON,NULL, 0, NULL, 0, NULL, NULL);if(ChargerMsgm_SelectNum.StartRecieveFlag = false) /* 启动接收线程 */ AfxBeginThread(ReceiveThread, this);3. CAN发送CAN发送主要实现设置CAN发送模式,初始化帧信息,然后把发送数据到CAN总线上,主要的实现代码如程序清单3.12所示。程序清单3.12 控制台CAN发送数据DeviceIoControl(m_hDevice, IOCTL_CAN_SET_DCB, /* 设置发送模式 */&m_DCB,sizeof(CAN_DCB), NULL, 0, NULL, NULL);WriteFile(m_hDevice, &CanMsg, sizeof(CAN_MESSAGE), /* 发送数据 */&dwWritten, NULL);4. CAN复位CAN接收、复位线程主要流程图如下图3.12所示。图3.12 控制台CAN复位和接收线程CAN复位主要是关闭CAN总线设备,主要的实现代码如下程序清单3.13所示。程序清单3.13 控制台CAN复位DeviceIoControl(m_hDevice,IOCTL_CAN_SET_BUS_OFF, NULL,0,NULL, 0, NULL, NULL);5. CAN接收线程CAN接收线程主要是接收CAN总线上的数据,然后对数据进行相应的处理。主要的实现代码如程序清单3.14所示。程序清单3.14 控制台CAN接收线程ReadFile(dlg-m_hDevice, Msg, sizeof(CAN_MESSAGE) * 8, /* 接收数据 */ &dwRead, NULL);6. CAN组网为了分布式控制电动汽车充电桩,需建立CAN组网,制定简单的应用层协议。协议主要规定如下:(1) 控制台作为CAN主机,充电桩为从机。(2) 主机通过发送命令启动哪一个充电桩进行充电。发送的命令具体格式为第一个字节为充电桩号,第二个字节为启动或者停止充电。充电桩号为1号到8号用0x01到0x08表示,启动用0x00而停止用0x01表示。主机发送命令格式如下表3.8所示。字节数01数据信息充电桩

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论