DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 595|回复: 0
打印 上一主题 下一主题

[接口电路] 基于CAN总线的多用户电能表设计

[复制链接]
跳转到指定楼层
楼主
发表于 2012-1-16 16:47:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

                    ???? 摘要:本文介绍了一种采用CAN总线的多用户电能表设计。首先介绍了CAN总线优点和电能表的特点以及硬件方案设计, 接着详细探讨了电能表主要模块功能。该电能表既可以计量多户家庭的用电情况, 还具有断电控制、实时处理速度快、性价比高的特点;尤其,增加可透支用电的设计,具有人性化的优点。
  0 引言
  在实际应用中, 越来越多像学校、工厂宿舍等用户密集场合,采用了一块表计量多个用户的多用户电能表,这种新型电能表对于降低人力与管理成本是显而易见的。然而,尽管采用通信方式种类繁多,多用户电能表系统的通信不稳定一直是难以解决的问题。在本设计中,采用CAN总线通信的方式设计新表,能满足通信稳定、实时准确的要求;而且该表增加可透支用电的设计,解决了众多多用户电能表欠费即断电,给不能及时缴费的用户带来不便的问题。
  1 CAN 总线与电能表的特点
  1.1 CAN 的优点
  CAN(controller area network)是一种应用在生产现场、在微机化测控设备之间实现双向串行多节点数字通信的现场总线。CAN与其他总线有明显优势:1. CAN总线具有非破坏性仲裁,支持竞争,通信采用“多主对等”方式;2.CAN总线组网非常灵活,通信速度最大可到1Mb/s;3.CAN总线采用CRC检验并有错误处理功能,当节点错误时,能自动关闭输出,使总线上的其它节点及通信不受影响。这些特点为电能表稳定通信提供了条件。
  1.2 多用户电能表的特点
  1、电力部门上位机通过RS232 接口转CAN 总线接入网络采集各电能表。通过上位机软件实时监控电能表,具有分时计费、对表设置缴费管理模式和修改参数等功能。
  2、该电能表有过载保护功能,当用户负载超过允用最大负载时,表自动对该用户断电。
  3、该表还具有透支模式,用户可现场操作,能提供定量的临时供电,为不方便及时缴费的欠费断电用户提供了便利。
  2 多用户电能表硬件设计
  电能表硬件系统结构如图1所示, 整个系统由7大部分组成: 选择及放大电路、A/D转换电路、断电控制模块、CAN通讯模块、LED显示、存储器FM1608,X5045和单片机AT89C52。当用户用电时,对应的CT(电流互感线器)和PT(电压互感线器)产生感应电压小信号,小信号由选择及放大电路选择通道和放大后,至A/D转换电路变为数字信号,由单片机(AT89C52)进行处理,将数据保存至FM1608/X5045中,同时由LED显示电量,当有通信时,单片机将数据经由CAN通信模块,上传至上位机。




图 2 多路选择及放大电路
  2.2 A/D转换电路和存储电路的设计
  A/D转换电路选用AD574A芯片,它是一种快速12位逐次比较式A/D转换芯片,这里直接与8位AT89C52相连。不需要外接时钟和参考电压等电路就可以正常工作。
  在用户用电时,AD574A将感应的模拟信号转换为12位的数字信号,P2.2端口片选,控制AD574A的工作状态的读取数据,P0端口通过两次读取A/D芯片输出的12位数据。当32路中某一电流和电压感应数据读入MCU内部寄存器后,和参数进行乘法运算,得出能量数据,并累加在FM1608芯片相应地址中。
  FM1608芯片可万亿次以上的读写次数,掉电数据大于10年。MCU由RD、WR对其片选,P0通过锁存芯片,对FM1608寻址和读写数据操作,当数据累加达到0.1度时重新归零。
  X5045芯片有看门狗定时器和保存数据功能,当程序陷入死循环时,X5045 Rst引脚发出复位信号,使单片机复位重启,保障了电能表正常工作;X5045内部相应地址中保存了该表的通信地址,32户电量度数、用电模式、功率限制,还有感应线圈的调整参数等。
  开关K1-K3外接P1.2-P1.4,K1-K2设置表参数;K3为用户键,当LED显示某户电量时,长按K3超过5秒,MCU发给该户继电器闭合指令,实现电源供电。这部分的电路图如下图3。




图4 CAN模块电路框图
  通信模块主要由AT89C51、X5045、SJA1000、PCA82C250芯片组成。SJA1000是一个独立的控制器,有BasicCAN和PeliCAN两种不同的模式,SJA1000的内部功能模块主要有:接口
  管理逻辑、接收FIFO 队列、接收滤波器、发送缓冲器和CAN核心模块。CAN核心模块基于
  CAN2. 0B的协议执行对CAN帧的发送和接收。
  CAN通信模块中X5045芯片主要用途为看门狗定时器,当AT89C51陷入死循环时,X5045发出重启电平,使AT89C51复位重启,保障了CAN通信正常工作。模块框图如图4所示。
  3 多用户电能表软件设计
  该表软件采用模块化设计,*立分为计量存储显示、CAN 通信模块、断电控制模块三大主程序。为了实现每个主程序的功能, 又把各主程序划分为若干个相应功能子程序或小模块。主程序的作用是系统的初始化、中断管理以及各功能模块的调用等。
  3.1 计量存储显示程序设计
  计量存储显示模块硬件设计比较复杂,时序要求严格, CPU内程序存储器容量有限,所以软件采用汇编语言编制,以更好地控制时序和代码空间。整个程序采用模块化编程,主要包含初始化模块、电量采集模块、数据存储模块、信息显示模块、串行通信模块、供电控制模块等。
  软件设计过程中,考虑到采集数据不能出现错采、漏采等现象以及高可靠性要求,必须采用必要的软件抗干扰措施,如软件陷阱、指令冗余、程序运行监视、数据校验、数据备份、数据写入存储器判断等措施。其主程序流程设计思想如图5所示。




图5 计量存储显示主程序框图
  3.2 CAN通信模块程序设计
  CAN通信模块主程序包括看门狗的初始化子程序(X5045_Rstdog()); 串行通信初始化子程序(Serial_init()); SJA1000 初始化程序子设计(CAN_Init()); 发送程序子设计(CAN_Send_Trans()); 以及接收程序设计子程序(CAN_Rece_Trans())。
  CAN通信模块上电或复位后,先串行通信初始化程序负责设置波特率,读取电能表表号等;接着CAN初始化程序主要是对SJA1000寄存器的初始化,包括:定义BasicCAN、验收屏蔽码、总线的位速率、位周期内的采样点和采样数量、管脚RX0、TX0的输入输出模式和配置。这些完成后,要清除SJA1000的复位请求标志进入工作模式, SJA1000准备进行报文的发送和接收;最后程序进入循环等待中。当上位机有指令下达,引起中断,调用中断函数和相关的发送接收子程序。
  该主程序设计采用基于Keil C的C语言进行编程,调用基本库函数来实现各种功能。
  3.3 断电模块程序设计
  断电模块上电或复位后,程序先进行串行端口波特率初始化等,接着进入循环等待状态,串行中断发生时,调用串行通信中断函数,由P3.0端口接收数据并解码,对P3.2-P3.4端口赋值,接着等待74LS138反应时间后,对P0端口赋值,再等待外部芯片反应时间后,退出中断函数。
  结束语
  随着科学技术的发展,智能产品设计更注重于人性化的特点。本电能表设计形成产品后市场前景广阔, 对于我国电力市场的规划管理,小区生活品质提升将起到积极的作用。
  本文作者创新点:1.在多用户电能表中采用成熟的CAN总线通信技术;2.在硬件和软件方面增加了可透支用电的人性化设计。
            
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-5-14 01:44 , 耗时 0.090333 秒, 18 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表