您的当前位置:首页正文

基于单片机的三相电能表的设计

2024-01-14 来源:意榕旅游网
山东科技大学课程设计

摘要

本文以智能计量总表为研究对象,采用计量芯片ADE7758和AT89$52设计三相电能表,介绍了计量电路原理、系统结构特点以及分段计量的软件设计与实现。针对10—35kV输配电网正常负荷和超低负荷两种情况下的精确计量,提出按功率额度实时分段计量的电能表设计方案;为了调整电力负荷曲线,针对用电量的时间不均衡问题,提出复费率分时段计量方案。

采用双变比电流传感器进行信号的检测采样,当负荷电流低于额定电流的20%时,单片机通过检测功率,自动切换到低负荷计量回路,即小电流比计量回路,最大限度降低了电流传感器低负荷运行时造成的信号检测误差,提高电能计量精度。单片机通过对瞬时有功功率的检测,实现了计量回路的实时选通切换和功率分段计量:通过对时间参数的检测,实现了定时存储和分时段计量。

根据电能表参数配置进行ADE7758初始化参数计算。为了评估电能表计量数据的真实性和有效性,对模拟信号输入电路进行试验设计,应用ME300B单片机开发系统进行在线仿真调试。以功率参数为性能指标,通过仿真试验,对功率参数的理论值和电能表的显示值两组数据进行分析比较,得出电能表计量数据是真实有效的结论。

采用双变比电流传感器进行电能表设计,扩大了负荷计量范围,提高了电能计量精度,且计量回路切换无需进行人工干预。该方案有望实现全量程的精度均衡和精确计量,为具有实时分段计量功能的三相电能表设计提供一种可行的方案。目前,已完成样表的设计与测试工作。基于精确的试验平台,完成对电能表的增益和偏差校准,即可进行现场试验和数据采集,具有良好的市场应用前景。 关键词:三相电能表,实时分段, 精确计量,仿真试验,ME300B,ADE7758,AT89S52

山东科技大学课程设计

符号约定及其说明

一、变量定义及显示代码(斜体时表示变量,正体时表示显示代码)

RO 总的无功电量 ED 总的有功电量

EJ 分时段有功电量(00:00~12:00) E2 分时段有功电量(12:00~00:00) E3 按负荷功率分段小负荷计量时有功电量 E4 按负荷功率分段正常负荷计量有功电量 P 瞬时有功功率 V 瞬时无功功率 H1 断相事件次数 H2 单相过流事件次数 H3 单相过压事件次数 二、按键功能说明

K1 手工复位

K2 分时段电量参数查询显示 K3 按功率分段电量参数查询显示 K4 瞬时有功、无功功率参数查询显示 三、电能表参数

MC 电能表脉冲常数 PO 有功功率分段参考

Imax 满足计量精度的负荷额定最大电流 Vn 负荷额定电压值

Vf ADE7758电流、电压通道信号输入

Ifullscal ADE775 8电流通道满刻度输入对应的负荷电流 Vfullscale ADE7758电压通道满刻度输入对应的负荷电压 Wh/LSB ADE7758有功能量寄存器最低有效值 VARh/LSB ADE7758无功能量寄存器最低有效值

山东科技大学课程设计

第一章 绪论

电能表技术正向着复费率、多功能、网络化的方向发展。电能计量芯片ADE7758、 ATT7022B等在电能表设计中的应用,提高了电能计量精度,简化了电能表设计结构。随着电能计量芯片的推陈出新,复费率电能表、防窃电电能表、配置RS-485通信及红外通信接口的电能表以及三相多功能电能表发展迅速。电能表的计量精度、功能扩展、抄表方式等发生了深刻变化,电能的科学管理和合理利用进入实施和操作阶段。在这种背景下,电能表的功能、性能、以及可靠性设计等都有了显著提高与改进,电能表技术面临难得的发展机遇。

1.1电能表技术现状与发展趋势

早在本世纪初,电子式电能表就已经取代感应式表,成为工商业用表的主流。随着电力系统在不断扩展三相多功能表的应用领域,三相多功能表的需求呈明显上升趋势。功能的扩展提升了供电部门对居民用电的现代化管理,为将来实现大规模自动抄表提供了基础。其中复费率表得到了很多经济发达而电力紧张的地区供电部门的青睐,复费率表的技术因此也得以迅速提高和发展。

预付费表技术趋于完善。一方面由于供电部门加大对欠费用户的管理力度,使市场需求升温,另一方面由于技术改进,特别是使用了CPU卡和非接触式卡等最新技术,使预付费表的性能尤其是安全性和可靠性方面已逐步趋于完善。文献【1】进行了基于RFID的预付费电能表的研制,文献[2]给出预付费电能表的设计方案,文献【3】进一步给出磁卡式预付费电能表的应用及其效益分析。上述文献为预付费电能表的研制提供了设计经验。自动抄表技术发展颇具前景。近几年来,随着通信技术的不断进步以及电力市场应用的需要,国内自动抄表技术水平取得了长足的进步。低压电力线载波技术逐步被越来越多的电力部门所采纳,短距离红外抄表技术得到应用和推广。文献【4】基于单片机红外通信实现了无线抄表系统设计,文献【5】阐述了智能抄表系统的研究现状和发展,文献【6】基于低压电力载波技术实现了单相电子式电能表的设计,文献【7】把电力载波技术和GPRS技术相结合,阐述了远程抄表系统的设计实现方案。在无线抄表方式中,红外方式用于短距离通信,而GPRS技术可以实现远程长距离通信。随着社会需求的发展和科学技术的进步,无线通信技术和远程管理系统得到了广泛应用。文献[8]给出基于无线网络通信技术的电力资源远程智能管理系统的设计和应用。文献[9]基于GPRS技术进行了无线抄表系统的设计与实现;文献[10]基于ADE7758计

山东科技大学课程设计

量芯片进行了GPRS网络电能表的设计。电子式电能表在可靠性、准确度、功能扩展、性价比等方面显著优于感应表,全面取代感应表的趋势。防窃电要求进一步加强。随着窃电方式的更加多样化和隐蔽化,对电能表防窃电的要求也越来越高,电子式电能表表现出强大的优势。文献【11】-【12】阐述了三相电能表的错接线对电能计量的影响。增强电能表的谐波计量能力,是提高电能计量准确度的有效手段。文献【13】对非正弦条件下的感应式电能表的计量精度问题进行分析;文献[141对非正弦条件下电力系统的特性进行分析,并研究了在线计量问题。

具有通信接口尤其是RS一485接口成为趋势。随着抄表到户的逐步实施以及电力部门的体制改革,自动抄表成为用户强烈的需求,因此越来越多地要求电能表配备通信接口。目前的通信方式在一个或几个方面或多或少存在一些问题,无法全面满足用户的要求。而电能表配备RS一485接口具有成熟和性价比的优势,适合未来采用更新、更好的通信技术,因此成为用户目前较为理想的选择而逐渐成为标准配置。文献[15]进行了RS-485电路的匹配和保护性研究,文献[16]实现了PC机与RS一485总线多机串行通信的软硬件设计。

模块化设计成为趋势。随着电力市场改造力度加大,对电能表的技术更新速度也提出了更高的要求。电能表的硬件和软件可以采用模块化设计,将技术相对成熟和标准的部分进行封装入库,如计量模块、电源模块、RS.485模块、RTC模块、显示模块、继电器控制模块、IC卡模块、数据存储模块等。当设计一个新的产品时,开发人员只需要将精力集中于产品的新模块、新功能的开发,以及模块的集成上,进而有效缩短产品的开发周期,提高产品设计的可靠性。

测量电路的集成化、模块化是计量芯片的发展趋势。当前,各大型器件公司纷纷推出自己的计量芯片,并不断的进行产品更新换代。比较典型的有美国ADI公司推出ADE7758计量芯片,珠海炬力公司推出的ATT7026A和北京福星晓程电子公司推出PL3223。上述三种芯片都集成了DSP数字信号处理技术,支持硬件和软件两种校表方式,计量精度高,且外围电路设计简单。文献[17]介绍了三种计量芯片的工作原理,比较了各自的性能指标,为合理选择芯片提供参考。以ADE7758计量芯片【18】为例说明。ADE7758是一款高精度的三相电量计量芯片,可以同时处理有功、无功等多个电量参数,符合IEC61036标准。在250C条件下,有功能量计量在1000:l动态范围内误差小于O.1%。文献[19]-[21]阐述了ADE7758计量芯片在电能表设计中的具体应用。

山东科技大学课程设计

目前,我国感应式电能表仍占据相当的市场。峰谷分时电价和避峰电价政策的出台,将推动多费率表市场需求。尤其是大工业用户,对三相多费率表的需求,会较快增长。此外,三相高精度多功能表也将得到重点发展。该电能表目前主要用于发电厂、变电站和各大用户,并不断扩大到普通三相表用户中。电子式电能表有多功能、高精度、多费率、自动抄表等优势,逐步成为电能表发展的主流。

1.2拟解决的问题和本文的创新性工作

课题研究主要解决分段计量问题,包括按时间参数分段和按负荷功率实时分段两种方式。基于ADE7758和单片机AT89S52进行电能表设计,根据负荷的功率额度实时分段计量,是本文的创新点。为了实现正常负荷和超低负荷两种情况下的精确计量,提出按负荷功率实时分段计量方案;为了缓解电力供需矛盾,调整电力负荷曲线,提出复费率分时段计量方案。两种计量方案分别针对提高电能计量精度和调整电力负荷曲线提出。

复费率分时段计量拟解决的问题。随着经济的发展,各行各业对电力的需求越来越大,用电量时间不均衡的现象日益突出。为了合理利用电量,调节电网负荷曲线.采用分时计费是一个有效的解决方案。复费率电能表以时间参数为峰谷费率划分依据,通过设置多个费率和时段,通过“削峰平谷”的方法消减峰期的用电量,增加谷期的用电量。文献[22]-[23]针对复费率计量问题,提出具体的设计实现方案。复费率分时段计量有利于缓解用电量的时间不均衡现象。 按功率分段计量拟解决的问题。在进行电量总表设计时,一般采用电流传感器进行电流信号的检测。当电流传感器工作在一次端额定电讲L值附近时,电流信号的检测误差最小。在配电系统中,电网电压一般是稳定的,电网电流则根据挂接的负荷大小发生变化。为了扩大负荷计量范围,减小电流传感器的检测误差对计量精度的影响,采用双变比电流传感器进行电流信号的检测,根据负荷的功率额度实时进行变比切换,使电流传感器始终工作在检测误差最小状态。这种计量方案有望实现全量程的糟度均街和精确计量。在这方面,相关的参考文献及研究成果为数不多。

ADE7758、ATTT022B等计量芯片的应用,提高了电量计量精度,减少了电能计量误差。针对电能计量精度问题,文献[10]进一步给出ADE7758软件校准流程和校准算法,对ADE7758应用手册中的一步校准算法进行改进,采用邂步逼近算法以减小电表校准误差;文献[25]从AD转换角度研究了提高电能计量精度的方法;

山东科技大学课程设计

文献[26]、[27]从谐波计量和辨识的角度进行分析;文献[28]从提高电能谐波功率的计量能力角度,提出一种基于高速单片机内核的高精度三相电能表设计方案;文献[29]提出基于ARM技术的三相电能表设计方案。上述文献从不同角度阐述了提高电能计量精度的策略问题。

目前,还没有一种电能表产品具有按负荷功率额度实时分段检测计量功能。对于高压,尤其是lO~35kV输配电网的高糟度计量问题,至今还没有涉及实时分段计量。复费率分时段计量以时间参数为峰谷分段依据,但这种分段不具有实时性,且无法满足精确计量的要求.本文为了解决精确计量问题,从电流传感器的检涮误差角度进行分析.提出一种高精度10kv~35kv的输配电网电力负荷计量方案。

1.3电能表参数配王和论文组织结构

电能表参数配置如表1-1和表1-2所示。

高压比 低压比 高压比 低压比 电能表规格 150(250)A 30(50)A Imax 250A 50A 脉冲常数 200 200 表1-2 额定电压Vn 10KV 10KV Ifullscal 442.0A 88.4A Vfullscale 17.68KV 17.68KV 分流电流 0.012 0.012 CT规格 150/5A 30(5)A PT规格 10000/100V 10000/100V 电能表配置两个量程,30A(50A)和150A(250A),分别对应高变比计量和低变 比计量两种模式;按负荷的功率额度实时进行不同量程的计量切换,以实现正常负荷和超低负荷两种情况下的精确计量。有功、无功脉冲常数设计分

200impulsos/kWh和200impulses/kVAR;匹配电阻为电流传感器二次端的两个串联分流电阻,其作用是把电流信号转换为电压信号;Vn、Imax对应额定电压值和负荷最大额定电流值,IfulbcaI、Vful居cale为ADE7758满刻度输入时对应的负荷电流、电压值。根据电能表参数设置和ADE7758计量芯片特点,计算公式如下: 小变比时 Ifullscale=(0.5V×6)/( 0.024Q×√2)=88.4A (1.1) 高变比时 Ifullscale=(0.5V×30)/( 0.024Q×√2)=88.4A (1.2) 式中O.5V为ADE7758电流通道满刻度输入信号,30和6为电流传感器高低变比,0.024 Q为电流传感器二次端分流电阻大小,电路结构设计参考计量原理图3-2。根据国家标准GB/T15283--94和国际标准IEC521-1988,电能表标有两个电流值,

山东科技大学课程设计

如30(50)A。这里30A为基本电流(basic current),符号易,是确定仪表有关特性的电流值,也称此电流值为标定电流。括号内所标(50)A为额定最大电流(rated maximum current),符号Imax,为满足标准规定的准确度的最大电流值。设计时在外加额定电压Vn=10kV时,ADE7758电压通道信号输入为0.2V。高变比计量在负荷电流Imax=250A时,ADE7758电流通道信号输入为0.2V;小变比计量在Imax=50A时信号输入为0.2V。

针对具有实时分段和分时段计量功能的三相电能表进行了软硬件设计和仿真试验,阐述了电路功能模块划分以及电能计量原理,分为七个章节进行论述。第一章阐述了电能表技术现状和发展趋势,提出本文拟解决的问题及创新点,说明了电能表参数配置;第二章介绍了系统结构框图,提出具体的设计要求;第三章分析了硬件电路结构,介绍了芯片具体应用特点,阐述了以ADE7758为核心的计量电路设计和以单片机AT89S52为核心的外围电路设计;第四章应用ME300B单片机开发板进行系统功能模块调试,进行功能函数的定义与测试,介绍了显示函数和存储函数;第五章进行系统软件流程设计以及电量参数的算法设计,阐述了功率分段计量以及按时间分段计量的软件设计与实现,进行按键中断处理设计和时钟初值输入调整设计;第六章进行仿真试验,以功率参数为性能指标,说明电能表计量数据是真实有效的;第七章进行论文总结工作,阐述了设计中的重点和难点及其解决。

山东科技大学课程设计

第二章 系统结构框图与设计要求

2.1系统结构框图

系统结构框图是系统产品化的基础,它包含了系统的硬件选择及软件开发,是在对系统功能、技术指标、性价比、元器件的可购性等因素进行可行性分析的基础上,对多个方案比较权衡后确定。系统结构框图参考图2-1所示。

应用Protel.99SE软件进行系统原理图设计和PCB电路板设计,参考附录A和附录B所示。系统结构框图有以下几个模块组成,计量模块、主控模块、显示模块、存储模块、看门狗复位模块、时钟模块、RS一485通信模块、计量回路选通模块、后备电源和主电源切换电路等。

采用ADE7758计量芯片和AT89S52设计三相电能表,单片机的TO、T1对ADE7758的APCF、VARCF端子发出的脉冲计数,实现有功、无功等多个电量参数的计量。单片机通过12C总线进行电量参数的定时存储,通过按键进行电量参数的查询,通过液晶HCl602进行电量参数的显示,通过RS.485总线进行电量参数的远程数据传送,采用AT24C02芯片进行电量参数的存储。考虑到存储芯片擦写次数的有限性,电量参数的计量累加在单片机内部完成。DSl302为分时段计量和定时存储提供时间参数;通过三个功能键实现DSl302芯片时钟的初值输入调整。后备电源LIR2032为可充电的3.6V锂电池,充电时电流最大不超过20mA。单片机复位采用

山东科技大学课程设计

MAX813L芯片。单片机的RXD、TXD串口预留作为RS.485通信接口,文献[30]具体阐述了RS.485总线通信过程的设计与实现。课题研究采用MAX485芯片进行RS.485总线与单片机的接口电路设计,其中RS.485通信软件设计留待后续进行。

2.2内客显示与设计要求

课题内容围绕三相电能表多个电量参数的计量、存储、显示、按键查询展开。显示分两行显示,每行16个字符。在参数显示的同时进行代码的显示。若系统无中断发生-渡晶显示当前总的有功电量和无功电量,有功电量和无功电量代码已为E0、R0,数据显示格式如图2-2,由8个整数位和1个小数位组成,显示范围O-99999999.9。

EO:00000000.1 RO:00000000.1

图2-2计量数据显示格式

系统配置三个功能按键,记为K2、K3、K4.功能描述参考表2-l所示- 按键类型 K2 K3 K4 K2、K3组合 K2、K4组合 K3、K4组合 显示界面示例 E1:00000000.0 E2:00000000.0 E3:00000000.0 E4:00000000.0 P:00000000.0 V:00000000.0 0805/04/00:00:00 H1:0002 0805/04/00:00:00 E0:00000000.1 R0:00000000.1 退出时钟初值调整并返回主显示 进入时钟初值调整,光标指示调整对象 异常事件记录查询 显示瞬时有功功率P、无功功率V 显示实时分段计量的有功电量 功能描述 显示分时段计量的有功功率 其中R0、E0、E1、E2、E3、E4、P、V、H1、H2、H3参考符号约定部分说明。显 示码在进行LCD显示时表示显示参数的物理意义,在源程序设计时,对应全局变量名电能计量结果通过三个功能按键进行查询显示,系统具体设计要求如下。 (1) 实现总的有功、无功等电能计量与显示z通过按链查询显示分时段电量、

功率分段电量和瞬时有功、无功功率。

(2) 通过对负荷瞬时功率的检测,实现功率分段和有功电量的实时分段计量. (3) 通过对时问参数的检测,实现电量参数的定时存储和有功电量的分时段计

山东科技大学课程设计

量。

(4) 通过按键进行时钟初值输入调整。

(5) 实现异常事件的中断记录,其中异常事件包括断相、过流、过压等三种情

况。

山东科技大学课程设计

第三章系统硬件电路设计与实现

本章节进行系统硬件电路设计、功能模块划分和元器件选型。围绕ADE7758外围电路设计,阐述了电能计量原理.并进行有关电路参数计算;围绕AT89S52外围电路设计,阐述了各功能模块与单片机的接口电路设计;最后介绍了电源模块设计及其特点。

3.1计量芯片ADE7758 3.I.1引脚配置及功能描述

计量芯片ADE7758引脚配置如图3-1所示。该芯片采用SOIC封装,有24个引脚,76个寄存嚣:电压通道采用16位Σ-△型ADC,动态范围20:1;电流通道采用24位Σ-△型ADC,动态范围500:1。在10MHz晶振驱动下,最大采样速率25ksps。 引脚功能描述参考表3-1所示。

表3-1 ADE7758 引脚功能描述

山东科技大学课程设计

3.1.2计量电路原理

计量电路采用ADE7758专用电能计量芯片,由信号衰减网络和滤波网络两部分组成。衰减网络用来实现负荷电流、电压信号的衰减,由电流传感器、电压互感器组成;滤波网络用来实现抗混叠滤波,由电阻、电容元器件组成。文献[31]提出不对称的三相四线系统的滤波设计方案。频率混叠是A/D信号采样处理中的特有现象,混叠会产生假频率假信号,影响测量结果。在进行电流、电压信号衰减后,要进行抗混叠滤波设计。

计量电路原理参考图3—2所示。电流回路由电流传感器进行信号取样,电压回路由电压互感器进行信号取样。计量芯片ADE7758对取样信号进行处理,计算出瞬时有功、无功功率。平均有功、无功功率通过瞬时功率的直流分量获得。在电量累加寄存器中对平均功率进行累加得到分相电量;分相电量可以通过SPI端口读出,也可以转换为计量脉冲输出。ADE7758有两路脉冲输出,对应端子为APCF和VARCF。脉冲输出频率与能量寄存器中累加的能量成正比,通过对脉冲计数实

山东科技大学课程设计

现电量参数的累加。

以ADE7758的A相电流、电压通道为例分析。参考图3—2所示,电流通道采用差动方式输入,信号电压小于0.5V;设计最大负荷电流时为O.2V。IAP为差动信号的正极性输入端子,IAN为负极性输入端子:各端子的抗混叠滤波网络由lkQ的电阻和10nF的电容组成。电压通道采用单端方式输入,设计额定电压输入时为0.2V。发光二极管LEDl指示功率分段和变比切换情况。P1.0为高电平时,CD4053的ay端子与a选通,A相小变比电流检测信号选通,对应低负荷计量模式:P1.0为低电平时,ay端子与a选通,高变比电流检测信号选通,对应正常负荷计量模式,此时LEDl导通发光。

电流传感器在工作时二次端不允许断路,在设计时采用Rbl、Rb2,Rb3、Rb4作为

山东科技大学课程设计

二次端高低变比计量回路的分流电阻,阻值大小为0.012 Q。在进行电流信号检测时,两组计量回路彼此独立,通过CD4053芯片进行选通。对于B、C两相电路结构,设计与A相同。虚线框内电路已完成PCB电路设计,框外衰减网络在仿真试验时通过分压电阻网络进行等效替代。

分流电阻选取要考虑阻值大小和额定功率两个因素,阻值选取与负荷额定最大电流Icax、传感器变比CTRN有关。设计额定最大电流输入时ADE7758电流通道为忙0.20V。根据电能表参数配置,高变比时Imax=250A,CTRN=30。分流电阻肋计算如下:

(3.1)

高变比最大额定电流输入时,分流电阻肋消耗功率助计算为:

(3.2)

根据上述计算参数进行分流电阻的选择。上述参数确定之后,以小变比计量为例,说明ADE7758前端模拟电路的电流、电压信号衰减问题。如图3—2所示,在小变比额定电流输入I=30A时,ADE7758电流通道信号输入为O.12V,计算公式如下:

(3.3)

其中6为电流传感器低变比系数。电流信号在进入ADE7758计量芯片前,其衰减倍率记为f1=30/0.12=250。10kV的电压信号在经过电压互感器后转换为100V,再由500M Q和lkQ的电阻网络分压后,其衰减倍率记为fv =100×500。

3.1.3接口电路设计

接口电路用来实现ADE7758与单片机的数据通信,一方面可以通过SPI口进行计量芯片ADE7758的初始化,另一方面ADE7758把数据处理的结果以脉冲形式或SPI口送出,供单片机进行计量处理。ADE7758与单片机接口电路设计如图3-3所示。与接口电路有关的全局变量说明如下:长整型变量,RO,EO、E1、E2、E3、E4、P、V,字符型变量,H1、H2、H3。去耦电容C4、C6的作用是滤除芯片电源输

山东科技大学课程设计

入中的尖峰脉冲成分,旁路电容C29的作用是使ADE7758电源电压输入保持基本稳定。在进行PCB电路设计时,在每一芯片的电源输入端子外接0.1心的去耦电容,以提高电路的抗干扰性能。R3、R9为限流电阻,对单片机的I/O口起到限流保护作用。ADE7758每产生一个有功或无功脉冲,对应的LED3或LED2会闪亮一次。IRQ为ADE7758中断输出端子,低电平有效,漏极开路,外接lOkQ的上拉电阻。当ADE7758检测到中断发生时,IRQ向低电平跳变,发出INTl中断申请;单片机通过读取ADE7758状态复位寄存器内容,判断中断事件的类型。

3.2单片机外围电路设计与器件选择 3.2.1单片机及外围电路设计

AT89C52是一款单片封装的微控制器,具有8k的程序存储和256个字节的数据存储,可以满足中小规模软件编程需要。复位采用MAX813L看门狗芯片。为了避免因外界干扰而导致应用程序“跑飞”或出现死循环,MAX813L的WDI电平在1。6s内应跳变一次,实现对MAX813L内部时钟寄存器清零,防止因“看门狗\"溢出而导致单片机复位。单片机外围电路设计参考图3-4所示。

山东科技大学课程设计

K2、K3、K4为三个功能按键,按键扫描采用中断方式进行。功能按键有两个作用,一是电量参数及事件记录的查询,二是时钟参数的初值输入调整。图中“与\"门逻辑采用74LS08芯片实现。主电源与后备电源之间的电路切换通过两个二极管D1和D2实现。后备电源采用可充电的3.6V锂电池LIR2032。主电源上电后,二极管Dl导通,D2截止;主电源通过10kQ的电阻对后备电源充电。主电源掉电后,二极管Dl截止,D2导通;后备电源开始对单片机进行供电,使单片机的R枷中累加的电量参数不丢失。掉电后LIR2032只对单片机和DSl302时钟芯片供电,以减小能量消耗。这通过二极管D1的单相导通作用实现。

3.2.2显示模块 HC1602

显示采用]6x2字符型液晶HC1602,与单片机的接口电路如图3-5所示。 图中c4,c5为单片机和液晶模块HCl602的去耦电容。DB0-DB7为HCl602的数 据线,与单片机的P0.0~P0.7端子相接。R15为阻值可调的电位器,用来调整液晶显示的对比度;当VO端子对地电压为OV时藏晶显示最为清晰。A、K为HCl602背光灯的电源端子和接地端子,其中电源端子K通过跳缝JP2与主电源相接。正常情况下JP2断开以减小电能表能耗;在电量查询时闭合JP2,接通背光灯电源。

山东科技大学课程设计

显示与按键相结合,用来实现电量参数的查询显示、异常事件记录查询显示以及时钟参数韧值输入调整结果显示。当没有中断发生时,进行总的有功、无功电量显示;显示数据格式参考附录图D-l所示。字符显示是通过P0口读入该字符的ASCII码实现,举例如下.字符‘1’的ASCII为Ox31。在完成LCD初始化设置后,把该字荷对应的ASCH码“Ox31”通过P0口写入LCD的内部寄存器DDRAM中。通过控制端子Rs、R/W的状态组合实现指令的写入以及数据的读、写操作,操作说明参考表3-2所示。

表3-2 HC1602操作说明

RS 0 0 1 R/W 0 1 0 操作说明 把指令写入寄存器初始化LCD 读LCD“忙”状态标志 把数据写入寄存器,显示 3.2.3数据存储AT24C02 存储芯片采用AT24C02。该芯片具有1℃总线接口,具有掉电后数据不丢失特点。与单片机的接口电路参考图3-4所示。存储主要包括电量参数的存储和异常事件的记录存储。考虑到AT24C02芯片擦写次数的有限性.能量的累加在单片机

山东科技大学课程设计

的洲存储空间中完成。采用定时方式进行电量参数的存储。单片机不断检测时间参数,当存储时间到,则启动12c总线把电量参数存储到AT24C02中分配的地址单元。异常事件采用中断方式进行存储。当ADE7758检测到过流、过压、断相等事件时,向单片机发出中断申请。单片机执行中断服务程序,把处理的结果,包括事件的代码、发生次数以及发生的时间,存储到AT24C02中分配的地址单元。AT24C02存储单元配置参考表3-3所示。

表3-3 AT24C02 存储器单元地址配置

变量名称 E0 R0 E1 E2 E3 E4 H1 H2 H3 变量类型 Long int Long int Long int Long int Long int Long int Char Char Char 存储单元地址分配 0x00-x07 0x08-0x0f 0x10-0x17 0x18-0x1f 0x20-0x27 0x28-0x2f 0x30-0x36 0x40-0x46 0x50-0x56 物理意义 总的有功电量 总的无功电量 00:00-12:00时段内有功电量 12:00-00:00时段内有功电量 低负荷时的有功电量 正常负荷时的有功电量 电能表断相次数及时间记录 单相过流次数及时间记录 单相过压次数及时间记录 为了保证电量参数存储的可靠性.在软件设计上要有充分的冗余和纠错。比如考虑到这种情况.在进行电量存储时突然发生掉电事故,新的数据存储尚未完成,而原有数据已经被覆盖,造成数据的丢失。为了避免这种情况,对每一个电量参数分配两组存储单元;以朋为例,OxOO-Ox03为一组存储单元。Ox04-Ox07为另一组存储单元。即使一组数据在存储时被损坏,另一组数据则不受影响。

3.2.4时钟芯片DSl302

时钟芯片采用DSl302。该芯片具有SPI总线接口,与单片机接口电路设计参考图3-4所示。时钟芯片有两个作用。一是为定时存储提供时间参数;二是为断相、过流、过压等异常事件记录提供时同参数。SPI总线时序结构如图3-6所示。

山东科技大学课程设计

DS1302采用双电源供电模式,Vccl为主电源输入.Vcc2为备份电源输入。当Vcc2< Vccl时,由Vccl向DSl302供电;Vcc2>Vccl+O.2V时,由Vcc2向DSl302供电,工作电压范围2.5~5.5V。DSl302寄存器数据以BCD码格式存放。秒寄存器的cH位控制时钟的运行和停止.当CH=I时,时钟停止;CH=0时.时钟运行。小时寄存器的位7用于定义DSl302的时钟运行模式,为0时采用24小时时钟模式。在对DSl302写操作时,WP位首先应设置为0,写操作允许使能。DSl302时钟寄存器配置参考表3-4所示.

表3-4 DS1302 时钟寄存器配置

山东科技大学课程设计

3.2.5串行接口芯片MAX485

电能表配备通信RS-485接口具有成熟性和性价比高的优势,硬件设计时预留出RS-485通信接口,采用MAX485接口芯片。硬件电路设计参考圈3-7所示。

圈中由DE端子控制MAX485芯片的发送/接收使能。DE端子与单片机的P1.2口连接。当DE为高电平时,单片机向RS-485总线发送数据;DE为低电平时单片机从RS-485总线接收数据。连接至A脚的下拉电阻R31、连接至B脚的上拉电阻R30用于提高该RS-485网络节点的工作可靠性。钳位于6.8V的稳压管D3、D4、D5用来保护RS-485总线,避免在受到外界雷击、浪涌等干扰时产生高压损坏RS-485收发器。C13、C14用于提高电路的EMI性能。

3.2.6选通开关CD4053

采用CD4053芯片实现电流传感器高、低变比检测信号的选通。CD4053有三个控制端子A、B、C。当ABC=000时,ax、bx、cx三个信道选通;当ABC=111时,ay、by、cy三个信道选通。A、B、C三个端子同时与单片机的P1.O口连接。单片机根据瞬时功率检测结果,通过对P1.0端口状态设置,进行高低变比电流检测信号的选通控制。CD4053外围电路设计如图3-8所示。

山东科技大学课程设计

二极管LEDl指示功率分段情况,C2为O.1心的去耦电容,R2为限流电阻。当P1.O为高电平时,CD4053的ay端子与a选通,ADE7758的电流通道小变比检测信号选通,对应小负荷计量模式,此时LEDl不导通;P1.O为低电平时,ax端子与a选通,电流通道高变比检测信号选通,对应正常负荷计量模式,LEDl导通发光。CONl为PCB设计时对应的插接端子,作为ADE7758电流、电压信号的输入连接部分,其第一个引脚记为CONl-1。CD4053在电路设计中的应用参考图3-2设计,真值关系参考表3-5所示。

表 3-5 CD4053 真值表

控制端子 INH 0 0 C 0 1 B 0 1 A 0 1 信道选择 -------- cx,bx,ax cy,by,ay 3.2.7 电源模块控制

系统电源模块由主电源和后备电源两部分组成。主电源模块由变压器、整流电路、滤波电路和稳压电路四部分组成硎,其中整流电路采用DBl07集成模块,稳压电路采用7805、LM7905集成电路模块;后备电源采用可充电的LIR2032锂电池,主电源和后备电源的电路切换参考图3-4单片机外围电路。电源模块设计如图3-9所示。

7805的+5V输出通过JP5跳线与系统的+5V网络连接。当JP5闭合时,系统处于上电工作状态,此时二极管LED4导通发光。CON3为两路9V正弦交流信号输入接口,中间为接地端子。C37、C38、C39、C40为有极性的旁路电容.作用是使7805、LM7905

山东科技大学课程设计

的输入、输出电压保持基本稳定;C15、C16、C17、C18为0.1uF的去耦电容,作用是滤除7805、LM7905输入、输出信号中的尖峰脉冲成分。

山东科技大学课程设计

第四章系统硬件调试与功能函数定义

应用ME300B对模块电路进行在线仿真调试。硬件调试基于PCB电路板进行,首先进行模块电路的分级调试,使组成系统的各个模块电路正常工作;然后进行系统总体调试,使其达到预定的技术要求。在调试过程中发现设计中存在的问题,判断问题的原因、位置并提出改进措施。在对硬件电路调试的同时进行功能函数的设计与测试。功能函数主要围绕长整型以及字符型数据的显示与存储展开,最后对功能函数仿真调试中遇到的问题进行分析说明。

4.1电路板规格与焊接操作

电路板设计为普通双面板,尺寸大小168mmx91.4mm。在板的两面采用大面积覆铜接地,不区分数字地和模拟地。在布线时,电源线、接地线等走线宽度设置为40~60mil,推荐线宽60mil;信号线设置为10mil~20mil,推荐线宽15mil,其中40mil≈lmm。不同网络之间的安全间距设置为12mil;采用自动布线方式,覆铜放在最后进行。电路板设计规则一般包括电路板的布线规则、制作规则、有关高频的设计规则以及其他设计规则等几个方面。可以按照文献[26]的有关制版介绍,在电脑上运行Protel软件,从绘制简单的PCB电路开始,逐步熟悉设计过程。在进行PCB电路设计时,在每一芯片的电源端子和地之间接入0.1 p F的去耦电容;电源线、地线和芯片的接地线应尽可能加宽。进行电路板设计时,在芯片的电源引脚和接地引脚之间接入一个O.1uf的去耦电容。该电容去耦了来自电源的噪声,保证芯片有持续、稳定的电压源。在对时钟芯片DSl302进行仿真调试时,并没有认识到去耦电容的重要性,芯片电源引脚没有外接0.1uF的去耦电容,没有达到预期的仿真结果,原因就出在去耦电容上。在进行印制电路板设计时,为了利用ME300B的仿真头对PCB电路板进行在线仿真调试,单片机AT89S52没有采用PCB库元件中的封装形式,而是自制一个40针的插接座封装,单片机通过插接座接入PCB电路。载入封装后的PCB电路板参考附录B-2所示。其他DIP封装的芯片也是通过插座接入电路板。这样,当芯片损坏时,可以方便进行芯片的替换。

贴片式封装ADE7758焊接特点。ADE7758为贴片式封装,引脚排列较密。焊接前应在电路板的焊接区域均匀涂上一层焊锡膏,然后用带有焊锡的烙铁头轻轻触及焊接区域上的金属焊接点,则焊接点上均匀的结晶一层焊锡。然后把ADE7758芯片引脚对准焊接位置,用烧热的烙铁头(不带焊锡)在ADE7758的引脚和焊接点连接处预热片刻,可以观察到一股细小的锡流沿着焊接线展开。结束后擦去多余

山东科技大学课程设计

的焊锡膏。这种焊接方式不容易损坏芯片,焊接成功率高,且没有毛刺。载入元器件封装前后PCB电路板设计参考附录B所示。

4.2系统硬件电路测试 4.2.1电源模块测试

首先进行系统短路测试。短路测试用来分析PCB电路各芯片电源端子与接地端子之间有无短路问题。由于载入元器件封装时通过手工焊接,引线和元器件较多,会由于经验不足而可能导致电源端于和接地端子接成短路。短路会造成芯片的烧坏,导致PCB系统不可用。因此,应避免短路,在确保系统安全的前提下进行功能模块的仿真测试。采用ME300B单片机开发系统进行功能模块的短路测试。ME300B是由深圳伟纳公司推出的单片机学习开发系统,可以对片内资源和片外资源进行在线仿真调试。当仿真对象有短路故障刊,开发板上红色的LED灯会不停的闪烁。可以利用这特点判断仿真对象是否存在短路故障。把ME300B的仿真头连接到PCB板对应的单片机插座上,打开ME300B主机电源,观察到开发板上的LED灯没有闪烁,表明系统没有短路故障。同时用万用表测得DSl302、MAX485、AT24C02等芯片的电源端子对地电压4.5V。

电源模块电压输出测试。参考图3-9主电源模块设计,闭合跳线JP5;在两路50Hz正弦交流9v信号输入下,用万用表测量7805、7905输出电压分别为+5V和-5V;在单路50Hz交流输入时,实际测得7805输出在4v左右,而7905输出保持为-5V。这就表明,7805驱动负载过多会导致电源输出电压下降。为使系统正常工作,电源模块需采用两路交流信号输入。

4.2.2 RS-485 通信模块测试

R8-485通信接口采用MAX485芯片,与单片机的接口定义为:RO=P3.0;DE=PI.2;DI=P3.1。利用ME300B的在线仿真功能,编写测试源程序;参考RS-485接口电路设计图3-7,结合Keil-C51的断点调试命令,用万用衷测试相应端子电压,检测单片机能否向RS。485总线发送和从R8 485总线接收数据。测试针对PCB硬件电路设计进行,不涉及通信协议及软件编程。测试结果如表4-1所示。

RS-485总线数据收发原理及羽4试结果分析。结合RS-485接rl电路图3-7说明。单片机在进行数据发送时,MAX485的A、B端子电压在+2-+6时为逻辑1;端子电压在-2~-6时为逻辑0。单片机在接收数据时,收、发端子通过平衡双绞线将A-A、B-B对应连接。当A、B端子之间电压大于+200mV时,输入为逻辑1;小于-200mV时

山东科技大学课程设计

输入为逻辑0。测试结果表明,单片机能够向RS-485总线投送数据以及从RS-485总线正确接收数据。表4-1 RS-485 通信测试结果 条件 设置 DE=1;DI=1 DE=1;DI=1 DE=0 测试A、B端子电压判断单片机是否向RS-485总线发送出数据1 测试A、B端子电压判断单片机是否向RS-485总线发送出数据0 A、B端子接入1.5V电压,测试R0端子对地电压,判断单片机是否从RS-485总线接收数据1 DE=0 A、B端子接入-1.5V电压,测试R0端子对地电压,判断单片机是否从RS-485总线接收数据1 ------ 0 ------ 4.5 -3.58V ------ 操作说明 测试结果 A、B端子电压 RO对地电压 3.58V ------ 4.2.3显示模块与显示函数 显示采用HCl602液晶模块.与单片机的接口定义如下:RS=P2.7,R/W=P2.6, E=P2.5;数据端子与单片机的P0口连接。用万用表检测HCl602与单片机的连接线焊接有无短路、断路。定义三个显示函数,分别实现电量参数的查询显示、异常事件记录的查询显示、时钟初值输入调整的显示。

显示函数的调用与按键状态有关,以函数display_()为例说明。当单片机检铡到K2键按下时。则调用函数display_1()进行分时段电量参数的显示,调用形式为display_1(2,E1,E2)。问题转换为如何进行显示函数的设计与仿真调试。

4.2.4存储模嵌与存储函数

存储芯片采用AT24C02.存储模块与单片机的接口定义如下:SDA=P2.1;SCL=P2.0。这一部分主要完成四个功能函数的设计、仿真与调试。四个功能函数分别实现长整型数据的读、写操作以及字符型数据的读写操作,定义如下。 Void write2402_char(char add,char dat);//单片机通过I2C总线存储一个宇节的数据

char read2d02_char(char add); //单片机通过I2C总线读取一个字节的数据 void write2402_long(char add,1ong int a1),//单片机向AT24C02存储一个长

山东科技大学课程设计

整型数据

long int read2402_long(char add); //单片机从AT24C02读取一个长整型数据

4.2.5时钟模块晶振测试

时钟采用DSl302芯片,外接32.768kHz晶振,通过SPI总线与单片机进行通信。 接口定义如下:SCLK=P1.5;DIO=P1.6;CE=P1.3。其中数据总线DIO和时钟总线SCLK分别与ADE7758的DIN总线和SCLK总线复用,因使能端子不同,不会造成数据冲突。测试晶振是否工作。通过读取秒寄存器的时间参数进行判断。DSl302秒寄存器的读操作地址为0x81。如果晶振工作,则每次读取的秒寄存器数据应不同。定义两个功能函数,分别实现对DSl302寄存器的读、写操作访问。

void writel302(char add,char dat);//单片机向DSl302写入一个字节数据 char readl302(char add);//单片机从DSl302读取一个字节的数据 利用ME300B的在线仿真功能,对PCB电路板时钟模块进行在线仿真调试。对上 述测试程序执行断点调试命令,打开“View\"菜单下的“Watch&Call Stack Window”变量观察窗口。程序运行时,发现变量b的三次赋值分别为0x00、0x09、0x21,这说明秒寄存器中的数据在变化,晶振正常工作。时间参数的存储与显示总是与异常事件的发生相联系。当断相、过流、过压等事件发生时,需要记录下事件发生的时间;此时通过调用函数readl3020读取时问参数,并调用写函数write2402 char()存储到AT24C02中分配的存储单元。

4.2.6 ADE7758串口通信特点

这一部分阐述ADE7758的SPI串口通信特点以及功能函数的定义。ADE7758通过 内置的SPI接口与单片机进行数据通信。通过对ADE7758片内寄存器的写访问,实现芯片的初始化功能设置。ADE7758与单片机的接口定义如下:DOUT=P1.4;SCLK=P1.5;DIN=P1.6;CS=P1.7;其中DIN端子与DSl302的I/O端子复用P1.6接口;单片机的P1.6端口如下:DIO=P1.6。

ADE7758寄存器有8位、12位和24位区别,对于12位的寄存器访问,仍以字节为单位进行数据传送,举例如下。对12位增益寄存器AIGAIN(地址0x27)赋值“011 111111100”,需发送两个字节的数据实现,格式为:“××××0111 1111 1100”,其中“××××”为任意代码组合。这部分代码ADE7758在进行数据接收时被屏蔽掉。单片机读取该寄存器读数据时,数据接收格式为“0111111111001111”,其中后四位代码“1111”为ADE7758发送的无意义数据。

山东科技大学课程设计

第五章系统软件设计与实现

系统功能主要由主程序和各类功能函数具体实现。采取模块化的程序设计方法,进行系统总体流程设计以及电量参数的算法流程设计,分析了功率分段计量的软件设计与实现;进行按键中断处理以及时钟初值输入调整设计,阐述了基于ADE7758的断相、过流、过压检测原理。

5.1软件总体设计

主程序设计流程如图5-1所示,主要围绕电量参数的计量展开。电能计量采用中断方式进行,保证了电能计量的及时性。系统在进入主循环之前,要进行与中断TO、T1、INTO、INTl有关的AT89S52寄存器初始化、ADE7758初始化、DSl302初始化等操作。为了保证电量参数存储的可靠性,在软件设计上要有充分的冗余和纠错。对每一个电量参数分配两组存储单元。在系统上电后,读取AT24C02中上次存储的两组电量参数,若两组参数相同,则表明上次存储结果正确;否则把当前单片机RAM中的电量参数存储到AT24C02中。在主程序的一次循环过程中,分别进行瞬时有功功率的检测和时间参数的检测,根据检测结果进行功率分段计量和复费率分时段计量。

定时存储问题。电量参数采用定时方式存储。在一天中进行两次存储,分别发生在00:00和12:00两个时刻。主程序每循环一次,就进行一次时间参数的检测。定义两个位变量flag1和flag2,当时问在00:00—12:00内时flag1=l,否则flag1=0。在主程序连续的两次循环中,若flagl两次赋值结果不同,就认为存储时间到。通过调用函数write2402_long()进行电量参数的存储;其中flag2用来存储上次循环中flag1的取值。

功率分段问题。主程序每循环一次,就进行一次瞬时有功功率的计算,并与切换功率朋比较。定义两个位变量flag3和flag4。当负荷功率小于90%P0时flag3=l;当负荷功率大于朋时flag3=O;在P0~90%P0之间时,flag3保持上次赋值结果不变。在主程序连续的两次循环中,若flag3两次赋值结果不同,就认为功率分段条件满足。flag4用来存储上次循环中flag3的赋值。通过设置两个切换阈值P0和90%1D0,避免CD4053选通开关过于频繁的切换。

电流传感器变比切换过程中的计量误差问题。采用脉冲计数方式进行电量参数的累加,脉冲输出频率与ADE7758能量寄存器中累加的能量成正比。ADE7758内部有一个数频转换DFC,只有当ADE7758内部能量累加到一定程度时,这部分能量

山东科技大学课程设计

以脉冲的方式输出。单片机对脉冲输出进行计数,实现对这部分能量的有效计量。也就是说,ADE7758寄存器内部能量的累加与单片机对能量的有效计量不是同步的。

山东科技大学课程设计

5.2分段计量的设计与实现

电能计量有两种方式,一是脉冲方式,利用ADE7758的两路脉冲输出,用单片机的T0、T1计数器对脉冲计数;二是通过SPI口读取ADE7758能量寄存器累加数据, 乘上能量最低有效值获得实际电量参数。本方案采用脉冲计数方式实现有功、无功电量累加,其中有功电量脉冲常数200impulses/kWh,无功电量常数200impulses/kVARh。接下来分析时间分段计量以及功率分段计量的软件具体实现问题。

5.2.1时间参数检测与分时段计量

时间参数检测通过调用函数readl302()读取DSl302芯片的时钟寄存器数据实现。通过两个位变量flag1和flag2保存时间参数处理结果。主程序每循环一次,就进行一次时间参数的检测。当时间在OO:00-12:OO内时flag1=1,否则flag1=O。在主程序连续的两次循环中,若fiag1赋值结果不同,就认为存储时间到,通过调用write2402_long()进行电量参数的存储;其中flag2用来存储上次循环中flag1的取值。定义功能函数bittime_check ()完成时间参数的检测处理,其流程图设计参考图5-2所示。

函数time_check()实现两个位变量flag1、flag2的数据刷新,为定时存储和分

山东科技大学课程设计

时段计量提供时间参考。在读取DSl302时间参数时,只需读取小时对应的寄存器数据,对小时数据进行判断即可。主程序每循环一次,就进行一次time_check()函数的调用,不断对时间参数进行检测。当条件(flag1!=flag2)满足时,则通过调用函数void deposit()进行电量参数的定时存储,函数deposit ()设计在附录主函数设计部分说明。采用T0中断方式进行有功电量参数的累加计量。在进行分时段计量条件判断时,若检测到flagl=l,表示当前时段处于00:00-12:00之间,EI对应的脉冲变量累加1;分时段计量程序流程设计参考图5-3所示,其中CTI、CT2为分时段累加对应的有功脉冲计数变量。

5.2.2功率参数检测与实时分段计量

功率参数检测处理。朋为系统设定的切换功率。主程序每循环一次,就进行一次瞬时有功功率的检测,并与切换功率肋比较。定义两个位变量flag3和flag4。在主程序的一次循坏过程中,当负荷功率小于90%朋时flag3=1;当负荷功率大于尸秒时flag3=O;在PO-90%PO之间时,flag3保持上次赋值结果不变;其中flag4用来存储上次循环中flag3的墩值。功率参数检测通过调用函数bit power_check0实现。该函数实现对flag3和flag4两个位变量的数据刷新,为功率分段计量提供参考,其流程图设计参考图5-4。

山东科技大学课程设计

主程序每循环一次,就进行函数bitpower-check()的调用,不断对功率参数进 行检测。当条件(flag3!=flag4)满足时,则重新进行功率分段和电流传感器变比切换,通过调用函数init_77580进行计量芯片的再次初始化。在进行功率分段计量条件判断时,若检测到flag3=l,表示小负荷计量模式,F3对应的脉冲变量累加l。

以功率分段计量为例,软件流程设计如图5-5所示。其中E3、E4为小负荷计量以及正常负荷计量下的有功电量参数;CT3、CT4为相应的脉冲计数变量。计数脉冲CT3或CT4累加满20,即或尉对应的电量累加0.1kWh。

5.3瞬时功率计算

5.3.1能量寄存器最低有效值计算

本章节分析两个问题,一是脉冲常数设置;二是ADE7758能量寄存器最低有效值的计算。在以脉冲方式进行电量的累加过程中,每一脉冲代表多大的电量,如何确定这一比例系数,需要对ADE7758寄存器进行初始化设置。在进行瞬时功率的计算时,用单片机的T2定时,通过SPI口读取ADE7758能量寄存器中数据,计算出这段时间内累加的电量;用两者的比值描述瞬时功率。这里,需要首先计算出

山东科技大学课程设计

ADE7758能量寄存器的最低有效值。ADE7758有两个分频寄存器APCFNUM、APCFDEN,其比值用来对APCF脉冲输出进行分频处理,以实现电能表设计的脉冲常数MC。本方案中MC=200 impulses/kWh。其中APCFNUM初始化赋值默认为0,APCFDEN赋值结果计算如下:

(5.1)

其中INTO为取整运算。式5.1推导的依据是:ADE7758电流、电压通道满刻度输入且APCFNUM=0、APCFDEN=0时,APCF最大脉冲输出为1600Hz;根据电流、电压 互感器的变比衰减关系和要实现的电能表设计脉冲常数,实现APCFDEN的初始化赋值计算。经过上述初始化赋值后,每200个脉冲就表示电量1kWh;由于采用了取整运算以及其他因素影响,实际电能表常数可能为198 impulses/kWh,这部分偏差通过电能表校准进行补偿。对于VARCFDEN计算,有:

(5.2)

其中VARCFDEN为无功脉冲分频寄存器。APCFDEN、VARCFDEN为12位的无符号寄存器,取值范围0一(212_1),ADE7758芯片资料中,有功、无功能量最低有效值计算式为:

(5.3)

(5.4)

由式5.3式5.4知,有功、无功能量最低有效值分别与四个寄存器的设置有关,其中APCFDEN、VARCFDEN的初始化赋值可由式5.1式5.2计算;APCFNUM、VARCFNUM、WDIV、VARDIV四个寄存器初始化赋值为1;其中APCFDEN、APCFNUM为ADE7758的12位寄存器。满刻度电流Ifullscalce、满刻度电压VfullscaI是对应于ADE7758的电压、电流通道输入为0.5V时的负荷电流、电压值,其中Vfullscal=17.68kV。根据表1-1、表l-2电能表参数配置以及式5.1~5.4,计算出ADE7758部分初始化参数以及有功、无功能量寄存器的计算结果参考表5-1所示。

山东科技大学课程设计

表5-1 电能表参数设计与ADE7758部分寄存器初始化值

变比选择 电表量程 满刻度电流 APCFDEN VARCFDEN WH/LSB VARH/LSB 高变比 150(250) 低变比 30(50) 442.0A 88.4A 37 184 37 184 0.034 0.0068 0.034 0.0068 5.3.2瞬时功率计算 用单片机的12定时65ms,通过ADE7758的SPI口读出这段时间内累加的有功电量和无功电量,用两者的比值计算当前的瞬时有功、无功功率。ADE7758与能量有关的寄存嚣配置参考表5-2所示。

表 5-2 ADE7758与有功、无功能量的寄存配置

地址 寄存器名称 数据长度 数据类型 初始化取值 01h 02h 03h 04h 05h 06h AWATTHR BWATTHR CWATTHR AVARHR BVARHR CVARHR 16 16 16 16 16 16 int Int Int Int Int int 0 0 0 0 0 0 功能描述 A相有功能量累加 B相有功能量累加 C相有功能量累加 A相无功能量累加 B相无功能量累加 C相无功能量累加 5.4按键中断处理与时钟初值输入调整 5.4.1按键处理与按键状态检测

系统配置了三个功能按键,与单片机的接口定义如下:K2=P2.4,

K3=P2.3K4=P2.2;分别用来实现电量参数查询,进行时钟初值输入调整等功能。按键扫描采用中断方式进行,通过74LS08“与”门逻辑与单片机的INT0口连接。键盘扫描有三种方式,编程扫描,定时扫描和按键中断扫描。本方案采用中断扫描,以提高单片机的执行效率。键盘扫描子程序流程参考图5.7所示。 INTO、INTl中断采用边沿触发方式,中断标志位由硬件清除;通过调用两条语句“IT0=I:ITI=I;”进行外部中断边沿触发设置。如图5-4所示,在进入INT0中断后,通过调用语句“EX0=O;”关闭INTO中断使能,避免键盘扫描时引起再次中断。用C语言编写的源程序,定时没有汇编语言精确;在关闭INTO中断后,延时1秒左右;这段时间一方面用来进行按键消抖处理,一方面为组合键输入预留一定的时间。在延时之后,进行按键的扫描,根据扫描结果进行功能按键处理。若没有检测到按键按下,不予处理并返回。

山东科技大学课程设计

按键扫描处理。通过P2端口的状卷判断键盘的状态。由于K2、日、K4分别接入 单片机的P2.4、P2.3、P2.2口,当没有键按下时,P2 4、P2 3、F2 2为高电平t此时条件((P2&0xlc)= 0xlc)判断为真。按键状态检测参考表5-3所示。 在按键中断处理中,对按键状态的检测主要依据表5-3中的条件进行。当有键按下时,进行按键状态扫描并根据扫描结果,进行功能函数的调用,实现具体的按键功能。表 5-3 key scanning and function configuration 按键状态 下述判断条件为真 无键按下 ((P2&0xlc)= 0xlc) K2按下 K3按下 K4按下 ((P2&0xl0)= 0)& ((P2&0x0c)= 0x0c) ((P2&0x08)= 0)&((P2&0x14)= 0x14) ((P2&0x04)= 0)&((P2&0x18)= 0x18) 功能说明 不处理 分时段电量显示 功率分段电量显示 瞬时有功、无功功率显示 进入时钟初值输入调整 退出时钟初值输入调整 异常事件记录查询 K2、K3按下 ((P2&0x18)= 0)&((P2&0x04)= 0x04) K3、K4按下 ((P2&0x0c)= 0)&((P2&0x10)= 0x10) K2、K4按下 ((P2&0x14)= 0)&((P2&0x08)= 0x08) 山东科技大学课程设计

5.4.2时钟初值输入调整

这一部分主要进行时钟初值输入调整设计,软件流程圈设计如图5-8所示。当组合键K2、K3按下时,进入时钟初值输入调整界面,时钟初值输入调整界面参考附录D-3所示。进入初值输入调整界面后,K2、K3、K4键功能重新设置如下:K2用来实现年月日、时分秒等时间参数调整对象的选择,K3用来实现增向调整,K4用来实现减量调整。在进行时钟初值输入调整时,若无键按下.单片机执行空循环等待键按下;这通过执行语句”while(P2&0x1c)=ox1c);”实现。当有链按下。进行按键状态扫描.判断是否为退出键按下.

5.5基于ADB7758的断相、过流、过压检测

与断相、过流、过压等事件有关的ADE7758中断屏蔽寄存器位设置如表5-4所示。

山东科技大学课程设计

表 5-4 中断屏蔽寄存器位描述

位地址 3 4 5 14 15 位标志 SAGA SAGB SAGC PKV PKI 默认值 0 0 0 0 0 功能描述 A相电压掉电中断使能 B相电压掉电中断使能 C相电压掉电中断使能 单相过压中断使能 单相过流中断使能 ADE7758计量芯片具有对外部负荷电路的断相、过流、过压检测功能。ADE7758 的中断屏蔽寄存器为24位,地址0x18。通过对该寄存器的设置可以实现断相、过流、过压等中断事件输出使能。在ADE7758初始化过程中,对中断屏蔽寄存器相应的标志位置l,进行中断使能设置。当有中断事件发生时,中断复位寄存器(地址:0xla)中对应的标志位置l,同时ADE7758的IRQ输出低电平,向单片机发出中断请求。单片机接受请求后,读取中断复位寄存器(地址1A)数据,通过对中断标志位的状态检测进行中断事件查询,确定中断源。举例分析如下。在中断屏蔽寄存器中,把SAGA、SAGB、SAGC标志位置1,进行中断使能设置;单片机检测到中断复位寄存器中SAGA标志位为l,则可以初步判断A相电压掉电。

与断相事件有关的ADE7758寄存器初始化参数计算。SAGLVL(add:0x1E)寄存器用来设置电压掉电检测阈值。系统上电后初值默认设置为0。当ADE7758检测到三相中的一路电压通道信号输入小于该寄存器设置的阈值时,中断复位寄存器中对应的SAGA、SAGB或SAGC标志位置l。在60Hz满刻度输入时,该寄存器对应的掉电检测阈值为0x92。也即,当把0x92写入该寄存器时,当ADE7758的电压输入小于满刻度O.5V时,中断复位寄存器中相应的标志位置1。当ADE7758电压通道峰值输入在峰值0.1V以下时,这种情况下认为系统断相,此时对应于O.1V时SAGLVL对应的检测阈值计算如下,其中INTO为取整运算。

SAGLVL=INT(0x92×0.1/0.5)=29 (5.7)

山东科技大学课程设计

第六章仿真试验

本章节根据电能表参数配置进行ADE7758初始化参数计算。为了评估电能表计量数据的真实性和有效性,对模拟信号输入电路进行仿真设计,应用ME300B单片机开发系统进行在线调试。以功率参数为性能指标,通过仿真试验,对功率参数的理论值和电能表的显示值两组数据进行分析比较,得出电能表计量数据是真实有效的结论。

6.1试验电路设计与功率理论值计算

模拟信号仿真电路设计参考图6—1所示。

Rfl、Rf2、Rf3、Rf4组成分压网络;Rf5、Cfl,Rf6、Cf2,Rf7、Cf3组成抗混叠滤波网络。分压网络由电阻元器件组成,保证了ADE7758电流、电压通道功率因数为l。ADE7758电流通道信号输入有两种选择方案,Rfl-Rf4为误差在5%之间的色环电阻。在进行理论值计算时电压互感器二次端取值9.OV。

参考图3-2计量电路原理,在小变比计量下,电流、电压信号衰减倍率分别为250和100×500。根据上述衰减倍率,在图6-1中,电阻Rf4分压信号转换为图3-2中电流传感器一次端电流信号I和电压互感器一次端电压信号Vn,计算公式分别如下:

(6.1) (6.2)

山东科技大学课程设计

电阻Rf3、Rf4串联分压信号转换为图3-2中电流传感器一次端电流信号L,计算公式分别如下:

(6.3)

根据式6.1、式6.2、式6.3计算出转换后的负荷电流、电压参数,瞬时有功功率理论值计算结果如下: 当A与A2端子连接时:

(6.4)

当A与A1端子连接时:

(6.5)

另一方面,lkWh电量等效为200个有功能量脉冲,若负荷电流为30A,额定电压为10kV,功率因数为1,则有功脉冲输出频率f计算如下:

(6.6)

6.2系统测试评估

在正弦电流电路中,有功功率P计算如下:P=UIcosɑ,其中U、I为负荷电路电 流、电压的有效值,cosɑ为功率因数。当保持电压U不变时,有功功率P与电流成一定的比例关系。系统线性度评估信号输入电路仿真设计如图6.3所示。

Rf5、Cfl,Rf6、Cf2,Rf7、Cf3组成ADE7758对应输入端子的抗混叠滤波网络。图1中电压信号衰减倍率设计为100X500,小变比计量下电流信号衰减倍率为

山东科技大学课程设计

250V/A。ADE7758电压信号输入取自Rf8、Rf9、RflO、Rfl 1、Rfl2串联分压信号,转换为电压互感器一次端信号为:

(6.7)

保持电压通道信号输入不变,通过端子Q与QI-Q5之闻的不同连接,改变ADE7758电流通道信号输入。以Q和Q1端子连接为例。转换为电流互感器一次端信号为:

(6.8)

测试结果表明,在ADE7758电压通道信号输入保持基本不变条件下,改变ADE7758电流通道信号大小,理论值与显示值偏差较小。当电流信号为2倍的关系变化时,功率测试结果也基本是2倍的关系变化。这可以从电流通道20Q与40Q分压信号输入功率测试结果比较、以及电流通遒40Q与80Q分压信号输入功率测试结果比较分析中得出。从整个试验过程看.功率参数的理论值和显示值在总体上保持一致,但仍存在偏差。在图6-l中,当ADE7758电流通道端子连接为A-A2时,有功功率理论值计算为248143W;在图6-3中.当电流通道端子连接为Q-Q1时,有功功率理论值计算为25061.IW。上述理论值计算结果上的差异与电路的具体结构有关:其中根据图5-3计算出的理论值要大干根据图6-1计算出的理论值.这一具体关系可以通过试验测试结果反映。测试结果为24835.3W;在表6-I、表6-3、表6-5中测试结果在24460-237074W之间。此外,有功功率的理论值计算只是对实际功率的一种近似反映。在这种情况下,用理论值对测试结果的有效性进行评估,具有一定的局限性。通过端子的不同连接以调整ADE7758电流通道输入信号大小,不同的电阻阻值误差对实验测试结果又会产生不同程度的影响。综合上述因素,通过定性分析,可以得出设计样表计量数据具有良好的线性度这一初步结论。

山东科技大学课程设计

结论

论文针对lOkV-35kV输配电网不同负荷条件下的精确计量问题,提出按功率额度实时分段计量及复费率分时段计量的电能表设计方案,选题具有良好的实用价值。

采用ADI公司电能计量芯片ADE7758和单片机AT89S52为核心器件,设计了电能表的总体方案,详细介绍了硬件电路的设计和实现。围绕ADE7758外围电路设计,介绍了计量电路原理以及接口电路设计;然后介绍了单片机外围显示、数据存储、时钟、串行接口等电路的设计,并对相关硬件在PCB图完成后进行了调试。 论文完成了电能表的相关软件设计和调试,进行了功率分段计量的软件设计,有功、无功瞬时功率的计算,按键和显示的处理等工作。通过选用单片机仿真器,对所设计的软件进行了功能调试和仿真试验,结果表明较好地达到了设计要求。 本文设计创新点是,采用双变比电流传感器进行电流信号的检测采样,根据负荷功率额度实时进行变比切换,以减小电流传感器的检测误差对计量精度的影响。该方案有望实现全量程的精确计量和精度均衡。

采用双变比电流传感器进行电能表设计,目前己完成样表的设计仿真测试工作。在电流传感器变比切换前后,会引入一定程度的计量误差,如何减小变比切换前后的计量误差,这里作为一个课题提出。

变比切换前后的计量误差分析。采用脉冲计数方式进行电量参数的累加,脉冲输出频率与ADE7758能量寄存器中累加的能量成正比。ADE7758内部有一个数频转换电路DFC,只有当ADE7758内部能量累加到一定程度时,这部分能量以脉冲的方式输出。单片机对脉冲输出进行计数,实现对这部分能量的有效计量。也就是说,ADE7758寄存器内部能量的累加与单片机对能量的有效计量不是同步的。在ADE7758内部能量累加过程中,由于负荷的变化而导致电流传感器变比切换,重新进行功率分段;而此时ADE7758内部尚未完成一个脉冲的能量累加输出,单片机无法对变比切换前的这部分能量进行有效计量。重新进行功率分段将导致一定程度的计量误差,误差最大不超过一个脉冲对应的实际能量。

当前,电子式电能表的显著特点是各厂家使用的硬件越来越接近,而越来越多的功能通过软件来实现,因此软件设计的可靠性很大程度上决定了电能表设计的可靠性及其功能的扩展。在不改变电路具体结构前提下,提高软件设计的针对性和可靠性,有望减小变比切换前后的计量误差,进一步提高电能计量精度。

山东科技大学课程设计

参考文献

1.罗恂,丁庆生。基于RFID的预付费电能表的研制。单片机与嵌入式系统应用。 2.温如春,吴银风。预付费复费率智能电能表设计。

3.李建斌,张顺。全电子式预付费磁卡电能表的应用及其效益分析。 4.周文举。基于单片机红外无限通信的抄表系统。

5.程妮,胡汉梅。基于低压电力载波单相电子式电能表的设计。 6.李楠,屈百达。基于电力线载波与GPRS相结合的远程抄表系统。 7.杨瑞霞。基于GPRS电力无线抄表系统的设计与实现。

8.黄聚永,袁慧梅等。基于ADE7758芯片的GPRS网络电量表的设计。 9.韩松林,王学斌。三相电能表的错接线及其对电能计量的影响。 10.张欣,李爱军,单鹏。RS一485电路的匹配和保护性设计研究。 11.陈铁军,谢春萍。PC机与RS-485总线多机串行通信的软硬件设计。 12.杜佳,贺少华,陈砚圃。高精度三相电量计量芯片的比较。 13.蔡泽彬,邓磊。基于ADE7758三相多功能电能表的设计。 14.叶宁,陈伟华等。基于ADE7758专用芯片的多功能电量测量表。 15. 王威。基于ADE7758和MCU的多相多功能电量测量表。

16.潘亮,钟建强,李海斌。智能型复费率电量计量系统的设计与实现。 17.李大鹏,王祁。三相复费率网络化智能电能表的研制。 18.黄焱,李定柏。电流传感器变比的合理选择。

19.李恒文,王京生等。提高智能工频多功能电能表精度的方法。

20.魏柠柠,金向东,吴红莲。基于高速单片机内核的高精度数字电能表设计。 21.黎洪生,张虎。基于ARM技术的三相数字电能表设计。 22.陈树广,武俊胜。RS485总线在智能抄表系统中的应用研究。 23.应怀樵,沈松,刘进明。频率混叠在时域和频域现象中的研究。 24.陈冬,彭德迟,胡荣强。DSl302实时钟在嵌入式系统中的应用。 25.能昌会。时钟芯片DSl302在单片机系统中的应用。 26.李西平。电工电子技术。

27.赵晶。电路设计与制版Protel 99高级应用。 28.Jobn Catsoulis著,徐君明等译。嵌入式硬件设计。 29.顾海洲,马双武。电磁兼容技术。

山东科技大学课程设计

附录

软件设计程序: A1通信模块测试程序

#include

sbit R0=PI^0;sbit DE=P1^1:sbit DI=PI^2; main()

{DE=1; //单片机向RS一485总线发送数据1 DI=1;

DI=0; //单片机向Rs-485总线发送敷据0 DE=0; //单片机从RS-485总线接收数据0 DI=I; //M片机从RS-485总线接收数据1 while(1); }

A2 存储模块程序设计

void write2402_char(char add,char dat);//单片机通过I℃总线存储一个宇节的数据

char read2d02_char(char add); //单片机通过I℃总线读取一个字节的数据 void write2402_long(char add,10ng int a1);//单片机向AT24C02存储一个长整型数据

long int read2402_long(char add); //单片机从AT24C02读取一个长整型数据

A3 时钟模块晶振测试程序

main() {char a,b;

write 1302(0x8e.0x00);//DSl302允许写操作 write 1302(0x80.0x00);//时钟起振

a=read 1302(0x81); //读DSl302秒寄存器中的数据 b=a; //断点设置

a=read1302(0x81); //读DSl302秒寄存器中的数据

山东科技大学课程设计

b=a; //断点设置

a=read1302(0x81); //读DSl302秒寄存器中的数据 b=a; //断点设置 while(1); }

A4 寄存器初始化程序

{

T2CON=0x00;//16位重装定时模式 TH2=0x02; //写入亿计数初值 TL2=0X18;

RCAF2H=0x02;//写入T2重装寄存嚣 RCAP2L=0x18; } {

write7758_char(0x9e,29); //设置电压断相检测中断阈值 write7758_char(0xa0,124); //设置过流检测中断闽值 write7758_char(0x9f,124); //设置过压检测中断阂值

write7758_24(0x98,0x00,0x0xc0,0x38);//ADE7758过流、过压中断使能 }

A5功率参数测试程序

main()

{int sum_p,sum_v;

float p,v,c;//T2寄存器初始化赋值 T2CON=0X00;TH2=0x02; TL2=0x18; RCAP2H=Ox02; RCAP2L=0X18;

write7758_char(0x93,0x00);//启动ADE7758脉冲输出使能 sum_p=read7758_int(0x01); sum_v=read7758_int(0x04); TR2=I; //启动T2定时

山东科技大学课程设计

while(TF2==O); TF2=0;TR2=0;

sum_p=read7758_int(0x0I); sum_v=read7758_int(0x04); sum__p=abs(sum_p); sum_v=abs(sum_v); p=24.46*sum_p/0.065; V=24.46*sumv/0.065;

c=1; //设置断点,查询程序执行结果 while(1); }

主程序

//预处理命令 #include #include #include

typedef unsigned char BYTE; typedef unsigned int WORD; typedef bit BOOL;//全局变量说明

long int idata E0,R0,El,E2,E3,E4,P,V;//电量参数 long int idata p0=1000; //功率参考 char idata a[13],c[l6]; //LCD显示处理

char CTO,CTI,CT2,CT3,CT4,CT5,H I,H2,H3;//脉冲计数变量和事件发生次数变量

bit flagl,flag2,flag3,flag4,flag5; //分段计量检测条件 //显示函数及接口变量说明

void display_l(char c0,long int al,long int a2);//电量参数显示 void display_2(char c1,char c2,char bl,char b2,char b3,char b4,char b5,char b6);//事件记录显示

void disptay_3(char bl,char b2,char b3,char b4,char b5,char b6);

山东科技大学课程设计

//时钟初值输入调整

bit lcd_bz();//测试LCD忙碌状态

void lcd_wcmd(BYTE cmd);//写入指令到LCD void lcd_pos(BYTE pos);//设定显示位置 void lcd_wdat(BYTE dat) ;//写入数据到LCD void lcd_init();//LCD初始化 sbit rs =P2^7; sbit rw=p2^6;

sbit ep=P2^5;//存储函数及接口变量说明

void write2402_char(cbar add,chat dat); //通过12C总线向AT24C02写入一个字符数据

void write2402_long(char add,long int a1);//向AT24C02写入一个长整型数据

char read2402_char(char add): //从AT24C02读字符数据 tong int read2402_long(char add);//从AT24C02读长整型数据 sbit SDA=P2^1;

sbit SCL=p2^0;//ADE7758及接口变量说明

int read7758_int(char add);//通过SPI总线读取ADE7758的16位能量寄存器数据

void write7758_int(char add,int dat);//对ADE7758的12位寄存器赋值 void write7758_char(char add,char dat);//对ADE7758的8位寄存器赋值 void write7758_24(char add,char ch l,char ch2,char ch3);//对24位寄存器赋值

sbit DOUT=P1^4;//DlO=P1.6;SCLK=PI.5分别与DSl1302复用 sbit CS=Pl^7: sbit APCF=P3^4: sbit VARCF=P3^5:

sbit IRQ=P3^3://时钟函数及接口说明

void write l302(char addr,char dat);//向DS1302写入字符数据 char read 1302(char addr);//从DS 1302读取字符数据

山东科技大学课程设计

sbit DIO=Pl^6: sbit SCLK=p1^5;

sbit CE=P1^3://其他函数说明及接口变量定义

void delay(int ms);//延时子程序,ms=300时延时约1秒 void init_7758(void);//ADE7758初始化 void init_at89s52();//AT89S52初始化 void init_2402();/AT24C0初始化2 void init_1302();//DS 1302初始化 bit time_check();//时间检测与定时存储 bit power_check();//功率检测与变比切换 long int power_cal(char add);//瞬时功率计算 void deposit();//电量参数存储

void deposit_check();//电量存储结果检测 void reset();//看门狗复位 sbit K2=P2^4: sbit K3=P2^3: sbit K4=P2^2;

sbit P32=p3^2;//按键中断 sbit RO=P3^o://RS485接口定义 sbit DE=Pl^2; sbit DI=P3^1;

sbit P10=P1^O;//变比选通控制

sbit P11=p1^1://看门狗清零,P11为大写 sbit ACC_7=ACC^7; main0 {

flag1=0;flag2=0;flag3=0;flag4=O; deposit_check();//电量存储结果检测 init_7758(); init_at89s52();

山东科技大学课程设计

init_2402(); init_1 302();

IE=0x8f; //开放T0/T1/INTO/INT1中断 TR0=1; //开始计数 TRl=1: while(1) {

display_1(1,E0,RO);

power_check0; //功率检测与变比切换 if(flag3 l=flag4) P10=~P10;//变比切换 init_77580; }

time_check(); //时间检测与定时存储 if(flag l!=flag2)deposit(); } }

void init_1302()//设置24小时模式,启动时钟 {

char dat1,dat2; dat1=readl302(0x81); dat1=datl&0x7f; dat2=read 1302(0x85); dat2=dat2&0x3f;

write 1302(0x8e,OxOO);//写允许使能 write 1302(0x80,dat1);//启动时钟品振 write 1302(0x84,dat2);//设置24小时模式 }

void init_at89s52();//T0/T1/INT0/INT1等有关寄存器初值化 TMOD=0x66;//T0/T1为8位重装计数模式

山东科技大学课程设计

THO=0xfe;// TL0=0xfe; TH1=0xfe;// TL1=0xfe;

IT0=1; //INT0/INT1边沿触发,中断标志位由硬件清除 IT1=1; }

void init_7758()//ADE7758部分初始化参数设置 {

write7758_char(0x9e,29);//设置电压断相检测阈值 write7758_char(0xa0,0x70);//设置过流检测阈值 write7758_char(0x9f,Ox92);//设置过压检测闽值 wfite7758_24(0x98,0x00,0xc0,0x38);//中断使能设置 if(p0&0x0 1=0x00) {

write7758_int(0xc6,392);//高变比时APCF赋值 _nop_();

write7758_int(0xc8,392);//高变比时VARCF赋值 _nop_(); } else {

write7758_int(0xc6,1958);//低变比时APCF赋值 _nop_0;

write7758_int(0xc8,1958);//低变比时VARCF赋值 _nop_0; }

write7758_char(0x93,0x00);//ADE7758脉冲输出使能;//校表参数设计预留 void init_2402()//flag5作为判断条件,对AT24C02异常事件存储单元初始化 {

山东科技大学课程设计

char add=0x30,i; if(flag5 !=1) {

for(i=O;i<24;i++) {

write2402_char(add,0x00); add++; } flag5=1; } }

bit time_check()//时间参数检测与比较 { char ch,dat1,dat2; flag2=flag 1; ch=read l302(0x85);

ch=ch&0x3f;//BCD码转换为十进制码 dat1=ch&0xof; dat2=ch&0xf0; _cror_(dat2,4); ch=10*dat2+datl:

if((ch>=O)&(ch<=12))flag1=0; else flag1=1; return flag1; }

bit power_check()//功率参数检测与比较 {

long int dat1,dat2; flag4=flag3; datl=power_cal;

dat2=(1ong int)(0.9*p0);

山东科技大学课程设计

if(datl>pO)flag3=0; else flag3=l; return flag3;

long int power_cal(char add)//功率计算处理,T2定时65ms,溢出采用查询方式 {

int sum_p; float p; long int p_cal; T2CON=0X00; TH2=0x02; TL2=0xl8: RCAP2H=0x02: RCAP2L=0xl8:

Sum_p=read7758_int(add); TR2=1//查询,while(TF2=0); { TF2=0; TR2=0;

Sum-p=read7758_int(add); Sum_p=abs(sum_p); p=2.296*sum_p/O.065; p_cal=(1ong int)p; }

return p_cal; }

void deposit();//电量参数存储 {

write2402_long(0x00,EO); write2402_long(Ox04,E0);

无须设置 IE山东科技大学课程设计

write2402_long(0x08,RO); write2402_long(OxOC,R0);

write2402_long(0xl0,E1); write2402_long(0x14,E1); write2402_long(0x18,E2); write2402_long(OxlC,E2);

write2402_long(0x20,write2402_long(0x24,write2402_long(0x28,write2402_long(Ox2C,}

void resetO {

P1l=~p11; }

E3); E3); E4); E4);

因篇幅问题不能全部显示,请点此查看更多更全内容