摘要:针对目前我国电能数据的采集方法不便的这一现状,提出并实现了一种电能装置无线性表系统。介绍电能表无线自动抄表系统的原理、构成、特点,并叙述AT90S2313单片机在电能表自动抄表系统中的应用。 关键词:无线抄表系统 AT90S2313 单片机 电能计量引言电能表自动抄表简称ARM(Automatic Reading Meter),是供电部门将安装在用户处的电能表所记录的用电量等数据通过遥测、传输和计算机系统汇总到营业部门,代替人工抄表及一连串后续工作。随着经济体制改革的深入,电能计量、电费核算及收缴的及时性和准确性已成为用电企业的重要课题;而目前我国电能数据的采集基本上为手工抄表,需要抄表人员走家串户,每月或每两月抄一次,再通过微机或手工制作的电费单催缴用户电缆,存在着错抄、漏抄、估抄等问题。自动抄表系统的研制与应用是解决上述问题的有效途径之一,而无线抄表系统则是自动抄表系统中 种较优的方式。该系统的实现是迈向配电自动化的第一步,并有助于提高电力系统用电管理的水平。
二是PC机通信软件的设计部分。这里要介绍AT90S2313单片机的汇编语言设计问好。其软件设计思想是采用模块化编程,即系统的总体功能由各子程序完成。主要的子程序有定时器中断、数据算是和接收发送中断服务程序等。
1.单片机初始化部分主程序部分首先对单片机进行初始化,其包括堆栈指针设置;端口的工作方式设置;定时器的预分频系数和初值设置;串行通信的控制寄存器和波特率寄存器的设置;看门狗定时器的周期及初值设置;单片机的地址设置;开全局中断等,其流程图如图2所法。初始化子程序如下:start:ldi tmp,$d9 ;设置堆栈指针out spl,tmpclr tmp ;设置B口、D口为输入且不带上拉out ddrb,tmpout ddrd,tmpout portb,tmpldi tmp,2 ;设置定时器分频系数及定时器赋初值out timsk,tmp ;定时周期为6.4ms,开定时器中断ldi tmp,timer Tout tccr0,tmpldi tmp,$d8 ;允许接收中断和发送中断out ucr,tmpldi tmp,baud ;设置波特率为9600baudout ubrr,tmpldi tmp,watchT ;设置看门狗定时器的周期及初值out wdtcr,tmpldi tmp,$0a ;设置模块比较器工作方式out acsr,tmpldi r26,address ;给单片机赋初始地址ldi tmp,$2dst x+,tmpldi tmp,$d0st x+,tmpldi tmp,$77st x+,tmpldi tmp,$07st x+,tmpldi tmp,$02st x,tmpldi r26,figa0 ;清所有标志位clr tmpst x+,tmpst x,tmpsei ;开全局中断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=r22sbic EECR,EEWErimp EEWrite_seqout EEAR,Eewtmpout EEDR,Eedwr_ssbi EECR,EEMWEsbi EECR,EEWEin Eewtmp,EEARinc EewtmpretEERead_seq; ;对EEPROM的读操作.def EErtmp=r24.def EEdrd_s=r0sbic EECR,EEWErjmp EERead_seqout EEAR,Eertmpsbi EECR,EEREin EEdrd_s,EEDRin EErtmp,EEARinc EErtmpret值得注意的是,AT90S2313单片机的片内EEPROM被分隔为一些连续的单元。对EEPROM的读写都必须从每个单元的初始地址开始,否则不能正确完成对EEPROM的读写。因此,在主程序中要进行EEPROM的读写操作时,都是从EEPROM的00地址单元开始。