电子式多功能电能表的设计与实现 本文阐述了电子式多功能电能表的设计方法、硬件设计的技术关键和软件设计流程。并以NEC的uPD78F0338单片机为例,实现了一款具有四种费率、六条负荷曲线和两套费率结构的三相四线电子式多功能电能表 电子式多功能电能表主要针对国内市场三相用电的工业用户。随着电力行业改革深入,工业三相用电对多功能电能表的需求大量增加。目前国内多功能表种类少、价格较高、功能不完善,往往仅是针对某些地区的特定要求开发,缺乏通用性,某些产品未能完全达到国标的要求。本文介绍的电子式多功能电能表正是为了适应这种市场需求而设计的。 这是一款智能型高科技电能计量产品,该表可以同时计量正/反向有功电能、正/反向无功电能、四象限无功电能,还具有多费率控制,负荷曲线记录,各相失压、过压、频率超限记录,数据LCD显示等多种功能。主站可以通过RS-485总线或手持红外抄表器对该电表进行查表、设表、抄表等操作。 软件代码全部采用C/C++语言编写,编码效率高,可维护性好,便于实现模块化设计,可根据用户的需求方便地对功能模块进行裁剪。而且代码经过优化,其生成的目标代码大小和执行效率已与汇编代码相差无几。该产品的技术指标全面符合GB/T 17215-1998《1级和2级静止式交流有功电度表》、DL/T614-1997《多功能电能表》和DL/T645—1997《多功能电能表通信规约》的要求。 多功能电能表的总体结构和硬件设计 多功能表总体结构 电子式多功能电能表硬件的核心MCU主控制器,它负责按键输入扫描、工作状态检测,计量数据的读入、计算和存储、电表参数的现场配置以及与外界的通信控制等。其主要功能单元包括MCU主控制器单元、电量计量模块、红外和RS—485通信模块、校表模块、EEPROM存储阵列等;其他辅助模块主要有:时钟日历电路、工作异常报警电路、按键输入电路、复位和看门狗电路、开关电源模块和后备电池电路、大屏幕液晶显示模块和LED显示模块。多功能表总体结构框图如图1所示。 高性能主控制器单元 主控制器采用NEC公司8位单片机中的高档产品uPD78P0338。该款单片机为120脚QFP封装,单片集成有60KBFlash、一个异步通信串行口、40x4段LCD驱动器、高达10MHz的总线时钟和10路10位精度的ADC,并可通过简单的接口进行在系统编程,极大地方便在线调试和软件升级。并且支持高级语言,较好地满足了多功能表任务繁多、数据量庞大、算法较复杂的功能要求。 串口复用通信单元 通信电路模块主要包括TSOPl838红外接收头、红外发射二极管、载波电路、MAX487专用485收发电路、驱动/开关二极管和其他元件。 本电能表为便于用户抄表,设计有红外本地抄表和RS-485集中抄表两种串行抄表方式,因为uPD78F0338仅有一个串口,故通信电路设计时采用串口复用技术。由9012、9014和若干电阻等器件组成互补开关,由MCU的一个I/O口来控制红外和RS-485通信方式的切换,如图2所示。 高精度电量计量模块 计量模块由高精度专用电能计量芯片SA9904,电流互感器和其他外围电路元件组成。SA9904是Sames公司生产的一款三相双向功率/电能计量芯片,可以计量有功/无功功率、电压、频率、相序异常等,可以单独计量每一相的用电信息,符合IEC521/1036标准,可达到1级交流电能表的精度要求,各数据寄存器具有24位精度,可通过三线SPI接口与CPU交换数据。从而可以较好地适应多功能表需要计量多种电量数据的要求。SA9904引脚及其外围电路图如图3所示。 其中,CLK、DO、DI构成与MCU控制器的接口,用于传输控制命令和测得的电量数据,IIps、IIPt、IIPr用来对电流取样,IVPl、IVP2、IVP3用来对电压取样。 时钟日历模块 时钟电路采用EPSON生产的RTC-4553实时时钟芯片。内部集成了的石英晶体振荡器,简化外围电路,并可以根据需要进行自由设置以得到较高的频率;同时集成有时钟和日历计数器,可选择24或12小时显示模式,时钟可通过软件方式进行间隔30秒的调整,并提供或1024Hz的定时脉冲输出,以便于在电能表的外部对时钟精度进行定期检查。RTC-4553引脚及其外围电路图如图4所示。其中,SCK、Sin、Sout与主处理器接口,用于发送控制指令或者传输日期时间数据,本系统日历时钟模块采用电池作后备电源,以确保在停电状态下,日期时间的准确无误。 多功能电能表的软件设计 数据结构设计 多功能电能表涉及的数据类型种类繁多。按字节分包括单字节、双字节、三字节、四字节和六字节等,按表征的意义分有时间、时刻、电压、电流、有功功率、无功功率、有功电能、无功电能、次数、功率因数、门限、状态字、系数、表号等。复杂的数据类型对数据结构的设计提出了较高的要求,本实现方案通过采用多种数据寻址方式和多种类型存储器较好地解决了这一问题。 数据结构设计要点 系统的数据存放方式有:内部ROM、RAM和外挂EEPROM。 内部ROM用来存放大量的常数表格,RAM用于存放临时变量和堆栈,本方案需要左右的RAM,串行EEPROM则存储各种用户电量数据和设表参数,通过12C总线与CPU交换数据,电能表按设计需求的最大要求大约需要250KB的EEPROM,本方案采用8片256位EEPROM通过级联来实现。 数据寻址方式 EEPROM数据访问采用两种方式;直接地址访问,通过数据的EEPROM地址直接读写数据;数据ID寻址,通过数据的编码读写数据。 通信口复用功能设计 红外通信和RS-485共用一个串行口(RxD/TxD)通信,由于串行口通信开始都有一低电平位(0),因此将红外接收端(与485接收端用一三极管隔开)引到一中断引脚INTP1,通过其引发的中断可判断串行口数据是否来自红外。发送时按时应方式发送,使其不互相干扰。由于红外通信和遥控接收用同一接收管,因此在判断红外来源的中断中启动定时器INTTM4检测红外接收端,如果检测到脉冲宽度为9ms或,则判断为红外遥控,并根据定时检测遥控编码;否则判断为红外产生的串行口接收中断,并将定时检测关闭。 红外调制信号由CPU内部分频输出(P05/PCL)。f=fx/27=。 因红外发送字节之间可选有15~20ms的延时,而485通信则不需要延时。数据发送在发送中断中进行,红外通信在发送操作后立即关闭发送中断允许,待延时时间到后再允许发送中断。 多功能表程序流程图 多功能表主程序流程主要包括初始化、数据校验、负荷曲线修补和事务处理等,其流程图如图5所示。 日常事务处理流程集中体现了多功能表的大部分主要功能,包括费率处理、计量数据采集及处理、自动抄表、电能脉冲输出、校表模块和掉电检测及处理模块等,其流程图如图6所示。