沈良恒+刘建明
通信机房设备在使用蓄电池应急供电时,针对蓄电池工作状态的各参数进行实时远程监测,并能根据电压阈值手动或自动控制负载的通断,保护蓄电池避免亏电损坏和确保设备正常运行的功能需求,综合运用单片机结合电子测量技术、通信技术和计算机软件技术,从软硬件和协议的设计实现入手开发本系统,为蓄电池远程监测和控制提供了有效的解决方案,并可方便推广应用到其他需要实时监控蓄电池的场合。
【关键词】电池监测器 STC单片机 AT指令 远程监控 欠压保护
近年来,随着通信行业的飞速发展,通信机房和机房设备总量大幅增加,通信运营商出于对其服务质量提升的要求,机房监管趋向无人值守和远程集中管理。通信机房往往给诸如传输设备、服务器及监控摄像头等用电设备配置有蓄电池作为备电,以便在市电停电时能支撑设备运行一段时间,而除了高端的UPS系统之外,普通蓄电池的工作状态缺乏有效的监控手段,比如需要实时远程了解蓄电池的电压、电流、温度和电量等关键参数,并在蓄电池将要亏电的情况下切断负载来保护蓄电池的使用寿命。于是需要设计开发一套可在局域网或广域网中使用的通信机房电池组远程监控系统,以满足尤其是中小型机房蓄电池的监管需求。
1 总体设计
本系统整体架构分为下位机和上位机两部分。其中下位机包括微控制器板、電池监测板、通信适配模块、继电器模块、温度传感探头五个组成部分;上位机软件则部署在一台计算机上,与下位机通过以太网连接。系统总体结构如图1所示。
微控制器板选用工业级抗干扰能力强的高速1T单机器周期指令单片机STC15W204S开发。电池监测板核心组件采用集成度高的电池监测器DS2438芯片。通信适配模块内嵌有TCP/IP协议栈,提供微控制器UART串口转以太网Ethernet功能,实现有线联网,也可以增加无线WIFI模块,实现无线联网。在计算机端则使用易于上位机开发的虚拟串口方式进行通信。继电器模块用于接通和关断负载用电设备和蓄电池之间的连线,采用底成本的机械继电器即可。电池监测器芯片内部已带有直接数字化的温度传感器,可监测芯片内部工作温度,在本系统中用于监测机房环境温度。但要监测蓄电池的温度,且要考虑方便安装则需要另外的温度传感探头,此处优选金属壳贴片式DS18B20便于粘贴蓄电池表面测温。机房环境温度和蓄电池表面温度两者具有相关性,可更精确的融合判断蓄电池工作情况。
上位机软件通过计算机的以太网物理端口(逻辑上则是虚拟串口)向下位机发出自定义好的AT指令。指令数据先通过通信适配模块转换,即IP包数据流转换成串口TTL电平数据流,并被微控制器STC15W204S的UART口接收。再由微控制器响应具体的指令请求来控制电池监测板,如读取DS2438芯片中的电池电压、电流、电量和芯片温度对应的寄存器值,以及读取DS18B20的温度值,随后经过微控制器解析与转换数据格式,再回传至计算机上位机窗体中显示。通过上位机可远程控制继电器模块通断负载,也可预先设置蓄电池欠压保护阈值来自动通断负载,避免蓄电池亏电使用。
2 电池监测器
作为电池监测板的核心部件DS2438,其片内具备唯一的64位硅序列号,自带40字节非易失EEPROM存储器存储电池相关参数,与微控制器之间使用1-Wire接口,除地线外仅需1条连线。在单一芯片内即可完成对电池的电压、电流、温度和电量的数据采集,并内置优化算法,采样数据准确度高。
DS2438的状态配置寄存器内为最经常访问的数据,具体位的数值为0或1。格式如图2所示。
IAD为电流A/D控制位,1表示电流A/D和ICA启用,电流测量将以36.41Hz的频率采样,0表示电流A/D和ICA被禁用。CA 为电流累加器配置位,1表示CCA/DCA启用,数据将被存储并能取回数据,0表示CCA/DCA被禁用。EE为电流累加器映射选择位,1表示每次相应的寄存器递增时CCA/DCA计数器数据能够被映射到EEPROM,0表示CCA/DCA计数器数据将不会映射到EEPROM,随着电池组放电CCA/DCA可能会丢失。AD为电压A/D输入选择位,1表示电池输入VDD被选作DS2438电压A/D转换器的输入,0表示通用A/D输入VAD被选作DS2438电压A/D转换器的输入。对于任一种设置电压转换命令将会初始化电压A/D转换器。以上寄存器位的默认值都是1。
TB为温度忙碌标志,1表示温度转换正在进行, 0表示温度转换完成。NVB为非易失性存储器忙碌标志,1表示从中间结果暂存器复制到EEPROM正在进行,0表示非易失性存储器不忙。复制到EEPROM可能要花费2ms到10ms,在低供电电压下花费时间更长。ADB为A/D转换器忙碌标志,1表示电池电压的A/D转换正在进行,0表示转换完成或没有测量值要被转换,A / D转换大约需要10 ms。X为无用位。
DS2438初始化配置操作程序实现举例:
void ds2438_init(void) //初始化配置寄存器
{
WritePage(page(0)); //写第一页,即page0的地址
WriteByte(0X07); //设置page0配置寄存器Byte0为:IAD =1,电流A/D启用;
//CA=1,启用电流累加器;EE =1,电流值、累计值映射到EEPROM;
//AD =0,电压输入选择为通用电压输入;其它为状态标志
CopyPage(page(0)); //将page0的瞬时电流、电压、温度等易失数据
//复制到片内EEPROM存储
}
void WritePage(unsigned char PageX) //写DS2438中间结果暂存器PageX
{
reset_presence(); //发送复位脉冲
WriteByte(0xCC); //跳过读取64位芯片编号,节省时间
WriteByte(0x4E); //写堆栈指针
WriteByte(PageX); //写寄存器PageX地址
}
3 通信协议设计
上位机和下位机之间通过自定义的通信协议进行双向通信。下位机向上位机发送数据为上行通信,上位机向下位机发送数据为下行通信。协议设计要考虑松耦合、可扩展和便于维护,上下位机之间方便并行开发,而AT指令一般应用于终端设备与PC应用之间的连接与通信,已被大家普遍认同,本设计借鉴并发展了AT指令。有开发能力的用户也可根据本协议自行开发上位机软件。串口通信波特率默认为9600bps-8-N-1,信息帧为ASCII码,可通过串口调试工具进行协议验证调试。
3.1 上行数据通信协议设计
上行数据样本举例解释如下(电流的+-表示电流方向,+表示充电,-表示放电;字段间以“,”作为分隔符):
$000000D3C19A,VOL=13.252V,CUR=-10.170A,BAT=18.226C,CHIP=13.513C,QUA=18934mAh,REL=1,CLO=10.8V,OPE=11.8V
$符号作为起始字,代表上行数据开始。“监测板ID”即DS2438序列号为000000D3C19A。“当前电压”值为13.252V。“当前电流”值为-10.170A。“电池温度”值为18.226摄氏度。“芯片温度”值为13.513摄氏度。“电池电量”剩余值为18934mAh。“负载通(1)断(0)”表示当前负载为接通状态。已预设的“欠压关断负载值”为10.8V。已预设的“恢复接通负载值”为11.8V。数据末尾带回车换行。
“欠压关断负载值”和“恢复接通负载值”之间保留1V电压间隔是为防止蓄电池电压在阈值临界点附近因抖动导致继电器不断在关断和接通之间跳动。
3.2 下行数据通信协议设计
(1)“查询”指令:ATG
即请求一条包含当前所有状态值的上行数据,返回举例:
$000000D3C19B,VOL=10.707V,CUR=0.536A,BAT=+30.080C,CHIP=+27.156C,QUA=1077mAh,REL=0,CLO=10.8V,OPE=11.8V
考虑到下位机采集数据和转换数据需要时间,上位机在操作两次“查询”指令时最小时间间隔为2秒(亦为缺省值,最大间隔为1小时)。
(2)“关断负载”指令:ATC
(3)“接通负载”指令:ATO
(4)“欠压关断负载值”配置指令:ATL。举例:ATL10.8
(5)“恢复接通负载值”配置指令:ATH。举例:ATH11.8
4 上位机软件功能设计
上位机软件基于JAVA语言开发,开发平台为Eclipse Java EE IDE for Web Developers,使用RXTX串口API包mfz-rxtx-2.2-20081207-win-x64。上位机在Windows7及以上64位操作系统上运行需Windows 64-bit版本的JRE支持。软件功能窗体如图3所示。
“通信端口”默认自动选中当前可以使用的端口号,可选择“打开”或“关闭”端口。点击一次“手动查询”获取一次数据,并刷新窗体右侧数据。“恢复缺省值”,用于恢复出厂设置,即还原“欠压关断值”为10.8V和 “恢复接通值”为11.8V,其实是通过发送一次ATL10.8
5 结语
目前本系统已在一些大型商场通信机房中部署使用,表现出蓄电池工作状态数据采集准确,实时性高,控制操作简单,远程联网方便的优点。尤其是根据预置电压值自动欠压保护功能,使得在无人值守环境下蓄电池使用寿命更长。本系统可推广到诸如控制机房、计算机机房、保安监控机房和临时设备供电等其他需要实时远程监控蓄电池工作状态的场合。
参考文献
[1]蒋维.基于STC15系列增强型单片机原理与接口技術[M].北京:清华大学出版社,2014.
[2]陆玲.嵌入式系统软件设计中的数据结构[M].北京:北京航天航空大学出版社,2008.
[3]何立民.单片机应用技术选编[M].北京:北京航天航空大学出版社,2006.
[4]何曙辉.Java面向对象程序设计[M].北京:机械工业出版社,2012.
[5]严加朋,王大志,金有超.基于DS2438的大功率蓄电池状态检测[J].单片机与嵌入式系统应用,2011,11(03):40-42.
[6] 张瀚文,周艳,孟国营.基于DS2438的智能直流不间断电源[J].电子世界,2013(05):72-74.
作者单位
桂林电子科技大学计算机与信息安全学院 广西壮族自治区桂林市 541004