微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于CAN总线的多用户电能表设计

基于CAN总线的多用户电能表设计

时间:10-20 来源:互联网 点击:

地址的数据发生变化时,AT89C52通过TXD向断电控制模块发送字节,断电控制模块根据字节,通过AT89C2051引脚P3.2-P3.4编码输出,由74LS138片选相关74HC377芯片,同时P1口对该锁存器输出一个字节,到达所在BH3023芯片,BH3023芯片对其管理的继电器发送命令,继电器做出通断反应。

  2.5 CAN通信模块设计

  CAN通信模块负责上位机与电能表的通信,当上位机下达指令时,通信模块译码并传给AT89C52;AT89C52根据指令内容,做出上传数据、修改参数或给断电控制模块发指令等。


图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.在硬件和软件方面增加了可透支用电的人性化设计。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top