基于Delphi的EMS后台维护软件
2012-07-18李育才李立伟隋宗强
李育才,李立伟,隋宗强
(青岛大学自动化工程学院,山东 青岛266071)
0 引 言
Delphi具备了作为最优秀的编程开发软件的一切条件:它与Microsoft公司的VC/C++相比,其优势是具有简单易懂的IDE开发环境;与VB相比,不仅代码更加规范,而且程序可移植性更强。基于Delphi的EMS后台维护系统中,采用由单片机及其外围电路构成的下位机进行数据采集,然后将电池电压、电流数据传送给PC机。Delphi中没有自带的通信控件,实现单片机与PC机串口通信,通过安装Delphi的第三方SPComm控件来实现。
电动汽车中电池自身存在不一致性,充放电过程也不一致,而不断重复的充放电过程更加剧了不一致现象,充电少的电池寿命缩短,从而导致整个电池组的寿命缩短[1]。因此采用基于Delphi的EMS后台维护软件来完成对蓄电池的能量监测,从而提高蓄电池的使用寿命。
1 串行通信电路
单片机和PC机之间串行通信的实现采用RS-485协议,电路连接原理图如图1所示。在PC机侧使用的是RS-232与RS-485的电平转换接口。由于采用RS-485协议,所以单片机采用 MAX485作为RS-485接口芯片。
图1 串行通信电路连接原理图
2 上位机通信设计
目前,利用Delphi实现串口通信的常用方法有3种[2],如表1所示。
表1 Delphi串口通信方法
因SPComm控件提供了丰富的与串口通信密切相关的属性和事件,支持对串口的各种操作,使用起来比较简单,所以系统采用了SPComm控件来实现PC机与单片机的串行通信。
2.1 使用SPComm控件实现串口通信
首先安装SPComm控件[3]:选择下拉菜单Component中的Install Component选项,弹出“Install Component”窗口。在“Unit file name”栏中设定SPComm控件PAS文件的路径,其他各项用默认值,点击OK按钮进行控件的安装。安装完成后,在System控件面板中会出现一个新的组件,红色图标,名称为COM。现在就可以像Delphi自带控件一样使用SPComm控件了。SPComm的属性、方法和事件[4]如表2所示。
表2 SPComm的属性、方法和事件
2.2 CRC校验
在通信系统的数据传输过程中,由于信道中各种复杂因素的影响,往往使传输的信号受到干扰,造成误码的出现,接收方为了检查所接收的数据是否有误码,可采用多种检测方法,差错控制编码[5]是目前数据传输过程中普遍采用的一种提高数据通信可靠性的方法,而CRC是一种在实际通信中应用很广泛的差错控制编码,具有很强的检错能力。
利用CRC进行检错的过程可简单描述为:在发送端根据要传送的k位二进制码序列,以一定的规则产生一个校验用的r位监督码(CRC码),附在原始信息后边,构成一个新的二进制码序列数共k+r位,然后发送出去;在接收端,根据信息码和CRC码之间所遵循的规则进行检验,以确定传送中是否出错。系统采用CRC校验使得PC机与单片机通信更加可靠。
2.3 通信程序关键部分的实现
(1)初始化、配置串口
在FormCreate事件过程中,对串口进行初始化。
3 上位机界面设计
在界面设计上采用Delphi第三方控件RaiseComponents,此控件包含了100多个Delphi的控件组,主要起到美化界面的作用,大到整个界面的美化,小到一个按钮的改变都可以轻松实现,而且安装也十分方便。Raise Components控件使得开发人员只用少量的时间就能设计出美观、多样的用户界面。登录界面如图2所示。
图2 EMS登录界面
蓄电池能量管理系统的检测界面主要负责检测蓄电池的最高电压、电流和温度,并且还负责查询达到最高电压、电流的蓄电池编号。蓄电池在充电或放电过程中存在热效应[6-10],其容量及活性物质利用率会随温度增加而增加,实际中常规定一个温度为额定容量的标准温度如25℃,EMS检测界面如图3所示。
图3 EMS检测界面
图4 单体电压检测界面
蓄电池在使用过程中会产生性能差异[11-15],特别是成组使用后会出现过冲和过放现象,这将对整组电池的使用寿命产生严重影响。上位机软件设计了对每一组每一节蓄电池电压的检测,以便及时发现个别性能落后的电池,对其进行均衡处理从而达到延长整个电池组使用寿命的目的。单体电压检测界面如图4所示。
4 结 语
Delphi的界面设计简单美观、编译和连接速度快、调试功能强大,同时兼备了VC功能强大和VB简单易学的特点,因此越来越成为程序开发人员的选择,并且第三方控件SPComm是一个PAS文件,适用于Delphi的任何版本,程序的通用性和移植性好。实践表明SPComm控件和CRC校验的采用使得该系统通信更加可靠稳定,实际应用于电动汽车蓄电池能量检测,效果良好。
[1] 黄海宏,王海欣,庄 翔,等.电动汽车分布式电池充放电管理的研究[J].电子测量与仪器学报,2009,23(6):68-73.
[2] 王 静,靳引利,汪贵平.基于Delphi的串口通信实践[J].现代电子技术,2006,(19):127-129.
[3] 黄 军.Delphi串口通信教程[M].北京:人民邮电出版社:2001.
[4] 王 静,赵怀林.Delphi环境中的串口通信程序设计方法[J].微机发展,2002,12(4):7-9.
[5] Satran J.Internet Protocol Small Computer System Interface(iSCSI)Cyclic Red undancy Check (CRC)/Checksum Considerations,RFC3385,2002.
[6] 马广伟,景有泉,甘林川.蓄电池内阻测量及其应用[J].通信电源技术,2007,24(2):63-64.
[7] 曹秉刚.中国电动汽车技术新进展[J].西安交通大学学报,2007,41(1):114-118.
[8] 徐曼珍.新型蓄电池原理与应用[M].北京:人民邮电出版社,2005.
[9] John Chiasson,Baskar Vairamohan.Estimating the State of charge of a battery[C].Proceedings of American control conference Denver colorado,2003,(4):28-63.
[10]李立伟,邹积岩.蓄电池在线监测系统的设计与实现[J].电工技术杂志,2002,21(11):7-9.
[11]谭 磊.多单元电池组单元电池电压测量[J].电测与仪表,1999,36(407):17-19.
[12]冉建国,陈胜军.通过电池均衡提高铅酸蓄电池组寿命[J].电源技术,2007,7:576-579.
[13]Philip T Krein,Robert S Balog.Life Extension Through Charge Equlization of lead-Acid Batteries[J].IEEE,2002.
[14]Lam LT,Wilson N C,C G.Charging of Batteries[P].US.Pat.No.6154011,2000.
[15]John Chiasson,Baskar Vairamohan.Estating the State of Charge of a Battery[Z].Transaction on control systems technology,2005.