引言
电能表自动抄表简称ARM(Automatic Reading Meter),是供电部门将安装在用户处的电能表所记录的用电量等数据通过遥测、传输和计算机系统汇总到营业部门,代替人工抄表及一连串后续工作。
随着经济体制改革的深入,电能计量、电费核算及收缴的及时性和准确性已成为用电企业的重要课题;而目前我国电能数据的采集基本上为手工抄表,需要抄表人员走家串户,每月或每两月抄一次,再通过微机或手工制作的电费单催缴用户电缆,存在着错抄、漏抄、估抄等问题。自动抄表系统的研制与应用是解决上述问题的有效途径之一,而无线抄表系统则是自动抄表系统中 种较优的方式。该系统的实现是迈向配电自动化的第一步,并有助于提高电力系统用电管理的水平。
一、系统硬件构成
这套电能计量装置无线抄表系统包括2块SA68D11无线数传模块和1片ATMEL公司生产的AVR系列AT90S2313单片机。模块有来实现无线数据传递;单片机用来进行数据采集作一些相应的处理。系统硬件框图如图1所示。
图1中,8路脉冲输入信号来自8个单相脉冲电能表。工作时,单片机只需定时测量输入的脉冲,再根据脉冲数与用电量之间的比例关系即可得到用户的用电量。
图1中虚线框内的单片机数据采集部分是整个系统的核心部分,通过软件的编辑可实现数据采集、数据保存、数据发送和控制命令的接收以及其他数据掉电保护等重要功能。本系统采用的AT90S2313单片机构成图1中虚线框内所有功能模块。它内含2KB的FLASH存储器;128字节片内EEPROM、128字节片内RAM和片内模拟比较器;8位和16位可预分频定时器各一个;中断源11个(中断优先级已定);全双工的UART以及可编程的WatchDog定时器等。在本系统中,单片机的资源分配为:T1作为时器,实现单片机对脉冲量的定时采集。模拟比较器检测系统交换电源工作是否正常。一旦发生掉电情况,模拟比较器中断标志位就被置1,在主程序中不断检测这一位;一旦检测到该位为1,则立即将数据写入EEPROM中保存。从掉电到保存时间很短,在这段时间内靠滤波大电容储能供电。在储能放完之前,将保存数据工作完成即可。EEPROM存储器用来保存单片机所测的脉冲数和单片机的地址等一些重要装饰。Watch Dog定时器防止单片机“死机”或“跑飞”。串行口UART实现单片机发射/接收模块之间的数据交换。
在本系统中,数据的无线传递是通过无线数传模块实现的。为了使模块与单片机、计算机之间的数据传送正确,必须严格按照计算机(单片机)与模块间的传输格式进行数据传送。模块的输出电平为TTL电平,它可与AT90S2313单片机直接连接。与计算机连接时间需接一个RS-232C电闰转换芯片。模块与单片机、计算机之间的通信速率为9600b/s,采用1个起始位、8个数据位、1个停止位的格式,与AT90S2313单片机的通信接口方式完全相同。计算机和模块之间的数据传输格式为:
标志字节D7H 控制字节M 数据或参数字节
第一个字节为标志字节,其值为十六进制数D7,作用是标志数据传送的开始。第二字节为控制字节,当第二字节小于等于48(30H)时,其值代表传送数据长度。后面字节为数据,当第二字节大于48(30H)时为控制字,后面不再跟数据和参数。模块传给计算机时带CRC校验字节防误措施。
二、系统软件设计
本系统的软件主要包括二大部分:一是数据采集部分,是以AT90S2313单片机与核心的汇编语言的设计;二是PC机通信软件的设计部分。这里要介绍AT90S2313单片机的汇编语言设计问好。其软件设计思想是采用模块化编程,即系统的总体功能由各子程序完成。主要的子程序有定时器中断、数据算是和接收发送中断服务程序等。
1.单片机初始化部分
主程序部分首先对单片机进行初始化,其包括堆栈指针设置;端口的工作方式设置;定时器的预分频系数和初值设置;串行通信的控制寄存器和波特率寄存器的设置;看门狗定时器的周期及初值设置;单片机的地址设置;开全局中断等,其流程图如图2所法。初始化子程序如下:
start:
ldi tmp,$d9 ;设置堆栈指针
out spl,tmp
clr tmp ;设置B口、D口为输入且不带上拉
out ddrb,tmp
out ddrd,tmp
out portb,tmp
ldi tmp,2 ;设置定时器分频系数及定时器赋初值
out timsk,tmp ;定时周期为6.4ms,开定时器中断
ldi tmp,timer T
out tccr0,tmp
ldi tmp,$d8 ;允许接收中断和发送中断
out ucr,tmp
ldi tmp,baud ;设置波特率为9600baud
out ubrr,tmp
ldi tmp,watchT ;设置看门狗定时器的周期及初值
out wdtcr,tmp
ldi tmp,$0a ;设置模块比较器工作方式
out acsr,tmp
ldi r26,address ;给单片机赋初始地址
ldi tmp,$2d
st x+,tmp
ldi tmp,$d0
st x+,tmp
ldi tmp,$77
st x+,tmp
ldi tmp,$07
st x+,tmp
ldi tmp,$02
st x,tmp
ldi r26,figa0 ;清所有标志位
clr tmp
st x+,tmp
st x,tmp
sei ;开全局中断
2.定时器中断服务程序
定时器中断服务程序主要是测量各电表的脉冲数。由于电表输出脉冲宽度为80ms,其误差为±20%,即最窄脉冲宽度约为64ms,最宽脉冲宽度约为96ms。因而本系统设计的定时时间为6.4ms,为了抗以免发生脉冲误计,采用了数字滤波的方法,要求脉冲输入的引脚电平连续保持10次为高电平时才计1次脉冲,避免了窄脉冲的干扰引起的误计。
3.串行通信接收和发送中断服务程序
串行通信的接收中断和发送中断服务程序主要完成单片机和上位机之间的数据交换。其中接收中断服务程序主要是接收从上位机传来的各种命令,发送中断服务程序是单片机对上位机的各种命令的响应,如上位机叫单片机发送地址等。接收和发送中断服务程序流程图如图3和图4所示。
4.数据处理子程序
数据处理子程序是软件设计中的重要部分。它通过对串行通信接收到的数据进行分析、比较、判断并转入相应的子程序。由于要实现上位机对单片机的控制,自行规定了一些控制命令。为了不与模块和计算机(单片机)之间的控制命令传输格式相冲突,自行规定的一些控制命令都采用数据传送的方式传送,有别于命令传送方式,因此开始字符小于30H。
5.片内EEPROM操作子程序
片内EEPROM操作子程序包括对EEPROM的读操作和写操作。其中读操作是在主程序初始化后进行的,写操作是在掉电时由模拟比较器产生的标志被主程序查询到而进入的。这一部分内容虽然不多,但对于数据的保存和恢复非常重要,因为系统一旦开始工作后,它所记录的数据是绝对不能丢失的。
EEWrite_seq: ;对EEPROM的写操作
.def EEwtmp =r24
.def EEdwr_s=r18
.def counter=r22
sbic EECR,EEWE
rimp EEWrite_seq
out EEAR,Eewtmp
out EEDR,Eedwr_s
sbi EECR,EEMWE
sbi EECR,EEWE
in Eewtmp,EEAR
inc Eewtmp
ret
EERead_seq; ;对EEPROM的读操作
.def EErtmp=r24
.def EEdrd_s=r0
sbic EECR,EEWE
rjmp EERead_seq
out EEAR,Eertmp
sbi EECR,EERE
in EEdrd_s,EEDR
in EErtmp,EEAR
inc EErtmp
ret
值得注意的是,AT90S2313单片机的片内EEPROM被分隔为一些连续的单元。对EEPROM的读写都必须从每个单元的初始地址开始,否则不能正确完成对EEPROM的读写。因此,在主程序中要进行EEPROM的读写操作时,都是从EEPROM的00地址单元开始。
三、系统可靠性设计
无线抄表系统必须在电力系统中准确、可靠地长期运行。可靠性是系统成功的关键,因此本系统设计时着重考虑了以下方面的可靠性设计:
(1)数据传输采用CRC校验,可验出传输中的绝大部分错误;
(2)数传模块采用金属封装,抗干扰能力强;
(3)AT90S2313单片机片内带EEPROM,掉电时可以保护数据;
(4)AT90S2313单片机片内带看门狗电路,防止系统锁死。
(5)单片机所有功能模块均在芯片内,其总线不出芯片,不需外扩任何器件,提高了系统可靠性。
结论
本系统最大特点是充分应用了单片机的硬件资源,成本低、体积小、携带方便,能方便、快捷、准确、可靠地进行自动抄表。目前,本系统的设计和样机调试已经完成,可以预计它的运算将为合理用电提供高效、科学的管理手段,为电力部分的电能表管理网络化、抄表自动化提供一种可选择的有效方法。