接口总线驱动 > 总线 > 详情

基于CAN总线数据采集的远程抄表系统设计

发布时间:2020-05-25 发布时间:
|
  引言

  随着计算机技术、现代通信技术和自动控制技术的迅速发展,智能化建筑在许多国家应运而生。自动抄表系统是大力发展中的智能建筑、楼宇自动化的重要组成部分,是家庭自动化的必然,因而日益受到关注。与传统抄表方式相比,智能抄表系统具有方便快捷、节省人力物力、提高工作效率、精确度高等优点。本文主要提出一种小区电能表自动抄表的系统设计方案。

  系统构成

  如图1所示,自动抄表系统主要由电能表、数据采集器、集中器、数据传输通道和后台管理服务器等组成;其中电能表主要是在传统机械式电表基础上将转盘适当改造,以便能将其转动圈数被数据采集器采集转化为电脉冲数,以达到数据采样的目的;采集器主要完成将电表用电量转换成电脉冲信号以完成数据的采集,同时还具备将采集的数据保存、通过CAN总线传输给集中器转发给后台管理系统、显示用户剩余电度数以及根据情况切断用户电路等功能。数据集中器则是通过CAN总线收集各用户电表上传数据,并通过无线GSM网络传送给后台管理服务器系统,同时数据集中器亦可将后台管理服务器各项命令转发给对应电表数据收集器,并完成相应控制。通过以上功能基本可以实现抄表管理收费一体化等工作。


  图1 系统集成示意图

  数据采集器硬件组成

  数据采集器硬件原理如图2所示,数据采集器主要包括数据采集电路、数据保存电路以及数据传输CAN总线节点电路,同时根据其他功能扩展(如预付费功能)增加了剩余电度数显示以及通过继电器对用户电路切断和接通电路。


  图2 远程抄表数据采集器硬件原理图

  采集器采用单片机89C51,其内部有4KB的ROM,128字节的RAM以及32个I/O口。P1口与串行器件24C02和显示、继电器电路连接。其中的显示模块采用串行方式进行通信,分别采用P1.0、P1.1、P1.2模拟时钟信号线和数据信号线。24C02用来存储用户电度表不同时段消费电度数和用户电度表采集器编号(CAN节点标号)。P0口主要用来与CAN总线控制器SJA1000相连,用作数据线。监控电路采用DS1232芯片,它是看门狗定时器,功能是上电和掉电时给89C51、CAN控制器SJA1000产生复位信号;看门狗对系统进行监控,防止死机不能恢复。日历时钟电路采用时钟芯片PCF8583完成,由于系统中需要对用电实行分时按峰、谷、平不同时段进行节计费,因此系统中必须建立不间断供电(电池供电),以便提供实时钟。

  数据采集电路采用开关型霍尔传感器A44L对加装过小磁铁的电表转盘进行将所转的圈数转化为数字信号,传感器A44L工作原理如图3a所示,集成霍尔开关是由稳压器A、霍尔电势发生器(即硅霍尔片)B、差分放大器C、施密特触发器D和OC门输出E五个基本部分组成。(1),(2),(3)代表集成霍尔开关的三个引出端点。在输入端(1)输入电压Vcc,经稳压器稳压后加在霍尔发生器的两端。根据霍尔效应原理,当霍尔片处于磁场中时,在垂直于磁场的方向通以电流,则与这二者相垂直的方向上将会有一个霍尔电势差VH输出,该VH信号经放大器放大以后送至施密特触发器,使触发器整形,成为方波输送到OC门输出。当施加的磁场达到“工作点(即Bop)”时,触发器输出高电压(相对于地电位),使三极管导通,此时,OC门输出端输出低电压,通常称这种状态为“开”。当施加的磁场达到“释放点(即Brp)”时,触发器输出低电压,三极管截止,使OC门输出高电压,这时称其为“关”态,这样两次高电压变换,使霍尔开关完成了一次开关动作。Bop与Brp的差值一定,此差值Bh=Bop-Brp称为磁滞,在此差值内,Vo保持不变,因而使开关输出稳定可靠。其输出特性如图3b和图3c所示。


  图3 霍尔传感器工作原理及输出特性图

  CAN总线采用一种串行数据通信协议,它是一种多主总线,数据长度为8个字节,不会占用总线时间过长,从而保证了通信的实时性。CAN协议采用CRC检验并可提供相应的错误处理功能,保证了数据通信的可靠性。CAN协议的一个最大特点是废除了传统的站地址编码,而代之以对通信数据块进行编码。采用这种方法可使网络内的节点个数在理论上不受限制,因此非常适合远程抄表控制系统。CAN总线控制电路如图2所示,主要由控制器89C51、CAN通信控制器SJA1000、CAN总线驱动收发器82C250组成,单片机89C51对CA控制器接收到的数据进行读取和数据发送等程序处理,为了增强CAN总线节点的抗干扰能力,SJA1000的TX0和RX0并不直接与82C250的TXD和RXD相连,而是通过高速光耦6N137后与82C250相连,很好地实现了总线上各节点间的电器隔离。82C250的CANH和CANL引脚各自通过一个5欧姆的电阻与CAN总线相连,起到一定的限流作用,保护82C250免受过流冲击。CANH、CANL与地之间并联了两个30pF的电容,可以滤除总线上的高频干扰并起到一定的防电磁辐射的能力。另外,两根CAN总线输入端与地之间分别接防雷击管,起到一定的保护作用。

  数据采集器软件设计

  主程序流程

  数据采集器在整个系统中有喂狗、计表、时钟校时、用户通断电、CAN总线数据发送和接收、数据存储与读取以及显示等功能,其中喂狗、计表和数据存储及CAN总线数据接收分别采用定时终端、计数中断和外部中断实现,显示功能则为预付费功能而备(本文不作要求),CAN总线数据发送采用查询方式和其他程序功能在主程序中实现。主程序流程如图4所示。


  图4 主流程序图

  数据采集程序说明

  数据采集是将电表转盘每转一圈转化为一个周期电脉冲,单片机将此脉冲累加,从而测得电表消费度数。为了避免停电时造成计数丢失,造成电力公司损失,每计0.1度电时便将累计数据保存于24C02中;根据电度表量程,保存电表计数数据占用3个字节,前2个字节保存整数部分,后1个保存小数部分。同时考虑到24C02擦写寿命,在24C02中开辟240字节专门用于存储电表技术以轮回写入,防止将数据频繁写入固定地址而造成损坏。单片机采用定时计数器中断进行数据采集,以3000r/KWH为例,每转300圈(0.1度)采样一次并保存,程序如下:

  void count0() interrupt 1 using 2

  {

  //工作在16位计数定模式,每计数300个脉冲中断一次,晶振使用12Mhz

  tl0=0xD4;

  th0=0xFE;

  DOTCOUNT++;// 记录小数点后的数据,无符号字符型

  if(DOTCOUNT>=10){

  COUNT++; //记录整数部分,无符号整型

  DOTCOUNT=0;

  }

  Write24C02(COUNT, DOTCOUNT,2);//2-表示保存数据为电表度数(1-用电高峰时间段设置)

  //在此自程序中完成不同时间段(不同计价)分类存储。

  }

  CAN总线数据收发程序说明

  数据采集器数据传输内容较为简单,发送出去的数据主要包括电表度数(占5个字节),接收到的数据多为命令(1-4个字节),而CAN总线每次数据可传输8个字节,因此每数据传输采用1帧即可完成。本设计采用PeliCAN工作模式(29位表示码),利用查询方式发送数据,利用外部中断0接收数据。

  数据的发送由CAN控制器根据CAN协议规范自动完成。首先CPU必须将要发送的数据报文传送到CAN控制器发送缓冲器中,并置位命令寄存器中的发送请求标志,程序流程如图5所示。


  图5 数据发送流程图

  数据接收采用外部中断0接收,CAN控制器接收到一帧数据后,产生中断触发信号,CPU立即响应,将收到的报文接收到字节的接收缓冲器,并置位命令寄存器的释放缓冲区标志RRB。单片机根据接收数据进行命令解析,并做出相应执行。部分程序代码如下:

  void INT0( ) interrupt 0 using 1

  {

  BYTE Length; // CAN 数据长度代码

  BYTE i; //下标

  bit FF //0 :标准 CAN帧 1:扩展帧

  CANDR=RBF; //地址指向SJA1000接收缓冲区

  ReceiveMessage[0]=CANDAT; // 读取并保存你帧报文字节

  FF=ReceiveMessage[0]&0x80;

  //取出帧格式

  Length=ReceiveMessage[0]&0x0F;

  //取出报文长度

  if(Length>0x08) Length=0x08;

  ReceiveMessage[1]= CANDAT; //保存报文标识码1

  ReceiveMessage[2]= CANDAT; //保存报文标识码2

  if(FF){

  ReceiveMessage[1]= CANDAT; //保存报文标识码3

  ReceiveMessage[2]= CANDAT; //保存报文标识码4

  }

  For(i=0;i< Length;i++) ReceiveMessage[i+3]= CANDAT; //保存帧数据

  CANCON=0x04 // 释放接收缓冲区

  }

  数据集中器设计方案

  数据收集器主要起到转发后台管理服务器和各节点间的数据传输功能,如图6所示。CAN总线控制器模块主要用来向各节点发送或接收相关数据,各节点地址通过程序设置均已被包括在对应报文29位表示码中,数据集中器可以通过广播或点对点向各用户节点发送命令数据。由于用户节点比较多,数据集中上传比较多,因此需要较多的数据接收缓冲区保存,然后通过GSM转发给后台管理服务器完成远程数据交流,因此采用有512字节内存的单片机STC89C51对CAN控制器和GSM模块进行控制。单片机控制GSM模块在Text模式下接收手机短信,短信的收发是通过向串口以文本模式发送AT指令来实现的,其编码转换格式简单,并有较高的转换速率。


  图6 数据集中器示意图

  结束语

  本文主要以电能表为例介绍了远程抄表系统数据采集和转发的设计方案,在此基础上只要稍加修改就可开发出不同抄表系统,如预付费电表系统、远程燃气抄表系统、远程水表抄表系统等。 


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
汽车行驶记录仪的多种数据传输方式设计