您现在的位置: 华玉生活网 >> 技术文库 >> 电源 >> 正文>> 繁体中文

智能电池管理系统的设计与实现

Design and Implementation of A Intelligence Battery Management System
Abstract: It carries out design and development of intelligence battery management system to improve cell management efficiency.We utilize client computer to collect data ,communicate  with host computer by applying Mscomm Control,adopt ODBC to realize access of database.
Key words: intelligence cell;host computer;serial communication ; database
摘要:设计与开发智能电池管理系统,提高电池的管理效率。利用下位机采集数据,与上位机通过MSComm控件通信,采用ODBC方式访问数据库。
关键词:智能电池; 上位机; 串口通信; 数据库

1 引言
智能电池管理系统是一个能够对电池信息进行收集、传递、储存、分析的系统。随着计算机在智能电池中的普及应用,以及计算机技术的不断发展,智能电池管理系统也在不断发展。其作用主要表现在:1)提高电池的管理效益及经济效益;2)提高服务质量;3)提高电池的安全性。
2 系统设计
    智能电池管理系统的目标是能够及时、准确地反映智能电池的工作情况,提高电池的工作寿命,为用户提供迅速、高效的服务。系统采用C/S方式,分为两个部分:1) 数据的采集与控制,由下位机完成,可以采用单片机或PLC;2)后台处理,由上位机完成,一般采用PC机,通常还会涉及数据库的设计和管理。
经过需求分析,得出系统应该主要完成以下功能:1)电池信息采集;2)电池信息管理;3)电池信息显示;4)电池信息监测;5)系统参数设置。需要说明的是,信息显示是指以电压-时间等曲线形式显示电池信息,信息监测包括运行监测和容量检测及故障记录查询等部分,系统参数设置包括确定采集卡工作范围、运行参数设置以及充电器时间设置等内容。
根据实际情况分析并经过优化得到了系统的各个数据库表,有实时数据表、参数范围数据表、电池参数表等。举例如下:

 

表1电池参数表

系统实现时后台数据库采用了ACCESS 2000。
3 系统解决的技术关键
3.1下位机控制
下位机采用ATMEL公司的AT89C51单片机,它是一款低功耗高性能的CMOS8-bit微处理器,具有4K字节的EPROM。连接单片机的是RS485接口,连接PC的是RS232接口。
上位机与下位机采用多机通信方式,数据校验是系统通信中重要的部分。由于系统主要负责电池信息管理,不做控制,上位机下传的数据较少且为已知,因此直接检查传送数据的正确性。单片机传至PC机的数据较多,所以将发送数据块中所有数据的累加和作为数据块的校验和,PC机如果发现数据传输出错,则立即通知单片机重发。始终是下位机等待上位机呼叫,然后作出相应处理,只要上位机定时发送命令,就不会出现两边都等待的现象[1]。
下位机向上位机发送数据的过程是,下位机先发送请求字0x05,上位机收到后发送响应字0x06,然后下位机发送启动字0x02,接着发送数据包,上位机收到数据后,再发送响应字,下位机收到响应字后,发送结束传送字0x04,本次通信正常结束。需要指出的是,在实际应用中有可能出现过长时间未响应的现象,可以设置一个阀值,当失败次数超过阀值,则退出通信,转入错误处理。
    编程环境是德国KEIL公司的μVision2,采用C51语言编程。主要内容是单片机初始化,等待PC发送命令,然后上传数据。代码举例如下:
void initial()//初始化函数
{ IP=0x10;//定义串口为高优先级中断
  IE=0x97;
 ………
  PCON|=0x80;//数据传输率设置
  TR1=1;//启动定时器1
SelectComm1=0;//设置通信从机
………}
void send(unsigned char *p,int i)//发送数据    
{ int j=0;
  for(j=0;j<=i-1;j++)
  { ACC=*(p+j);
    TB8=P;
SBUF=ACC;//发送数据
………
TI=0;}}

3.2串口通信
    上位机读取上传数据以及发送下行命令都是通过串口进行的,利用MSComm ActiveX控件完成。采用事件驱动方式,即利用MSComm控件的OnComm消息捕获并处理通信事件,通过MSComm对象的GetCommEvent函数获得通信事件编号,根据CommEvent属性值来执行不同的操作,对串口的读写则调用GetInput和SetOutput成员函数来完成[2]。需要指出的是,单片机处理速度比PC机慢,所以需要延迟一定时间再接收,才能保证所有信息接收完毕并存入缓冲区。代码举例如下:
void CBatteryDlg::OnCommMscomm()
{VARIANT vRsp;
 int nEvent,k;
 char *str;
 nEvent=m_Com.GetCommEvent();//得到事件编号
 switch(nEvent)
{case 2://表明接收缓冲区有数据
 k=m_Com.GetInBufferCount();//接收到的字符数目
   if(k>0)
{ ::sleep(3);//延迟
    vRsp=m_Com.GetInput();//读数据
    str=(char*)vRsp.parray->pvData;
}
………}}
3.3数据库访问
系统需要保存各种实时接收的电池信息,并实现以后的数据分析,利用数据库可以较好地解决这个问题。采用了MFC ODBC方式, CDatabase类提供对数据源的连接,CRecordSet类提供从数据源中提取出的记录集。通过DBGrid Control和Microsoft RemoteData Control这两个ActiveX控件协同工作,完成大量电池信息的网格化显示。
访问数据库的步骤是,首先建立ODBC连接,然后调用CRecordSet对象的Open成员函数建立记录集,与数据库的表对应,对表的增加、删除等操作由AddNew、Delete等成员函数实现,访问完成后调用Close成员函数关闭记录集[3]。部分代码如下:
if(!m_database.IsOpen())//确保数据库打开
m_database.Open(_T(“battery”));
CBatSet m_pSet(&m_database);//创建记录集
m_pSet.Open();
m_pSet.AddNew();//添加新记录
………
m_pSet.Update();//存入数据库
m_pSet.Requery();//重建记录集
if(!m_pSet.IsEOF())
  m_pSet.MoveLast();//移动到最后一条记录
m_dbGrid.Refresh();//刷新DataGrid网格控件
m_pSet.Close();
m_database.Close();
3.4数据曲线绘制
电池信息显示模块主要是以图形化方式实时显示各类电池参数,例如电压-时间曲线、容量-时间曲线以及电池状态等,使操作员对电池的主要参数有一个直观的印象,跟踪其运行趋势。数据图形是不断更新的,需要动态绘制,把数据从实时数据表中读出,先存入缓冲区,由定时器控制曲线的更新频率,图形绘制需要最近不同时间段的多组数据,因此缓冲区要随着新的数据接收而更新。坐标应针对不同类型的参数做相应变换,才能保证曲线图形的精确显示,这主要依靠坐标映射来完成[4]。画图是通过重新定义OnPaint函数实现的,以下是部分代码:
void CdrawDlg::OnPaint( )
{ CWnd *pWnd=GetDlgItem(IDC_STATIC1);//获取窗口指针
  CDC *pDC=pWnd->GetDC( );//申请设备环境指针
  CRect r; 
  GetClientRect(r);//获取窗口客户尺寸
………
pDC->SetMapMode(MM_ISOTROPIC);//映射模式
pDC->SetWindowOrg(CPoint(50,50));
pDC->SetWindowExt(1000,1000);
pDC->SetViewportExt(r.right,-r.bottom);
pDC->SetViewportOrg(r.left,r.bottom);
CPen p1;
p1.CreatePen(PS_SOLID,1,RGB(0,0,255));//创建蓝色画笔
………}
4 结语
论文对智能电池信息管理系统的设计与实现作了详细的介绍,采用单片机控制、MSComm串口通信、MFC ODBC等技术,实现了电池信息的实时采集、显示、储存以及报警等功能,达到电池的智能化管理目标。经过测试运行,情况表明此系统操作方便,基本达到预期目的,为开发类似的监控管理软件提供了借鉴。
参考文献:
[1] 胡林会,莫志军,朱新坚.燃料电池实时监测系统的研究与实现[J].计算机工程与应用,2005,40(17):222~226
[2] 谭思亮,邹超群.Visual C++串口通信工程开发实例导航[M].北京:人民邮电出版社, 2003.
[3] 沈炜,徐慧. Visual C++ 数据库编程技术与实例[M].北京:人民邮电出版社,2005.
[4] 王永辉,胡守印.用Visual C++.NET实现实时在线监督系统设计与开发-在高温气冷堆上的应用及技术特点分析[J].计算机工程与应用,2005,40(17):208~211

作者简介:王晓东(1971-),男(汉族),湖北人,硕士,讲师。从事计算机应用与开发研究。
通信地址:湖北汽车工业学院电气工程系 ,湖北十堰 442002
Email:wangxd_qy@163.com


  • 扩展阅读
  • 上一个文章:
  • 【返回网站首页】 【返回电源】
  • 下一个文章:
  • 【字体: 】【】【发表评论】【加入收藏】【告诉好友】【打印此文
    文章 软件 电影 商品

    相关文章

    网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    | 服务声明 | 充值中心| 华安五金电器 | 收费标准| 论坛| 留言| 实用查询| 会员中心| 下载帮助| 设为首页|

    技术支持:瑞达科技 即时交谈QQ:237013889 QQ群:13810759 E-Mail:237013889@qq.com
    非盈利网站,如有侵权,请来信来电告知,第一时间处理,谢谢!
    桂ICP备17008104号 华玉生活网网站统计
    tj