您当前的位置:五五电子网电子知识电子知识资料抄表系统-计费技术自动售电抄表系统PC与多单片机通信的实现 正文
自动售电抄表系统PC与多单片机通信的实现

自动售电抄表系统PC与多单片机通信的实现

点击数:7134 次   录入时间:03-04 12:00:56   整理:http://www.55dianzi.com   抄表系统-计费技术

  PC机与单片机的数据通信的场合有很多,如工业现场的监控系统、有数据管理的考勤系统、越来越多的各种自动抄表系统,因此研究PC机与单片机间的通信技术有比较重要的意义。
  
  下面以一个典型的自动售电抄表系统来说明PC与多单片机通信的基本原理。整个系统中PC机是上位管理机,各从机是分布在宿舍各楼层上的集中式电子式电能表。PC机与各集中式电子式电能表之间采用的总线方式为RS-485。PC机作为主控机,通过串口向单片机发送命令。
  
  单片机收到数据后,对其进行校验,并根据命令类型向PC机返回数据。
  
  由于接口电平的不一致,一般是不能直接连接的,常用的总线方式根据通信距离、速度以及网络的结构等指标的要求,有RS-232C、RS485、RS422等接口标准。
  
  PC机上大多数都有RS-232C接口,采用DB-9连接器。RS-232C标准是美国EIA(电子工业联合会)与BELL公司等共同开发的通信协议,适合与数据速率在0Kbit/s~20Kbit/s范围内的通信。RS-232C标准对电气特性、逻辑电平和各种信号线功能都做了规定。逻辑“1”的电平为-15V~-3V,逻辑“0”的电平-15V~-3V。也就是当传输电平的绝对值大于3V时,电路可以有效的检查出来。介于-3V~+3V的电压无意义,低于-15V或高于+15V的电压也认为无意义。因此,在实际工作时,应保证电平在有效范围内。
  
  与RS-232C相匹配的连接器有DB-25、DB-15和DB-93种,其引脚的定义各不相同。简化的9芯DB-9连接器其引脚分布如下图所示。

  DB-9连接器的引脚定义与功能说明如下表所示。

插针序号 信号名称 功能  1 DCD 载波检测 2 RXD 接收数据(串行输入) 3 TXD 发送数据(串行输出) 4 DTR  DTE就绪(数据终端准备就绪) 5 SGND 信号接地 6 DSR  DCE就绪(数据建立就绪) 7 RTS 请求发送 8 CTS 允许发送 9 RI 振铃指示

  实际应用时,一般使用DB-9连接器的2、3和5脚即可满足需要。TTL电平和RS-232C接口电平互不兼容,所以两者接口时,必须进行电平转换。
  
  当应用系统的通信距离比较远或干扰比较严重的场合,RS-485通信协议具有比RS-232C更优良的性能。目前有多种RS-485收发器,常用的有SN75176、MAX485、SN75LBC184等,实现RS-485通信接口较为方便。RS-485接口标准采用平衡式发送、差分式接收的数据收发器来驱动总线,具体技术参数如下:
  
  ·接收器的输入电阻RIN>12Ω;
  
  ·驱动器能输出±7V的共模电压;
  
  ·在节点数为32个,配置120Ω终端电阻的情况下,驱动器至少还能输出1.5V电压;
  
  ·接收器的输入灵敏度为±200mV。
  
  如下图所示是采用RS-485接口标准的通信接口电路框图。在RS-485总线末端接入120Ω的电阻是为了对通信线路进行阻抗匹配,实际应用时总线上可挂接多个RS-485驱动器。

RS-485接口标准的通信接口电路框图

  SN75LBC184是用于RS-485通信的低功耗收发器,器件中有一个驱动器和接收器,用SN75LBC184组成的RS-485网络中可连接64个收发器。与普通的RS-485收发器相比最大的特点是芯片内有高能量瞬变干扰保护装置,可承受峰值为十几kV的过压,因此可显著降低防止雷电等损坏器件的可能性。在一些环境比较恶劣的场合,可直接与传输线相连而无需其他保护元件。另外当芯片的输入端开路时,其输出为高电平,这样可保证接收器输入端有开路故障时,不影响系统的正常工作。
  
  PC机与各集中式电子式电能表之间采用的总线方式为RS-485,而且在从机通信的出口处采用光电隔离技术,为保证通信时波特率能达到9600bit/s,隔离器件采用高速光耦6N137。
  
  如下图所示是采用SN75LBC184芯片实现的单片机端RS-485接口电路。图中单片机采用89C51,选择频率为11.0592MHz的晶振。

采用SN75LBC184芯片实现的单片机端RS-485接口电路

  信号在传输线上传输时,若遇到阻抗不连续的情况,就会出现反射现象,从而影响信号的远距离传输。常用双绞线的特性阻抗在110~130,因此在RS-485总线末端接入120Ω的电阻。
  
  与单片机端的接口电路类似,将PC机连接到RS485总线上也需要转换电路,PC机处采用的RS-232/RS-485转换器也有采用光电隔离型的,如波士电子的RS-232/RS-485接口转换器。



www.55dianzi.com

  利用RS-485接口标准组成的多机通信网络和直接利用TTL接口组成多机通信网络最大的不同是RS-485多机通信网采用半双工工作方式,数据在发送和接收时,必须对RE(的反)/DE引脚进行设置。SN75LBC184工作状态只有两种:发送和接收。当Pl.0为高电平时,SN75LBC184只允许接收,反之只允许发送。
  
  售电抄表系统中通信协议如下表所示。

  PC机向各从单片机发送时的协议

  各从单片机向PC机发送时的协议

  说明1:按年、月、日、时、分、秒各1字节顺序排列,数据格式采用压缩的BCD码,如2008年6月16日13点25分,则该数据为200806161325。
  
  说明2:校验和计算方法为从起始符开始到最后一个数据(不包括校验和本身)的十六进制相加和,计算过程中进位丢弃。
  
  说明3:只保留整数部分,购电时最多允许999度,压缩的BCD码。
  
  说明4:地址的前两字节是集中式表号,后两字节是各房间的代号,共4字节。
  
  由于PC机为上位管理微机,为便于管理员操作,采用的是具有人性化的操作界面,语言使用VisualC++6.0,数据库使用SQLServer,这里我们不再专门介绍,我们主要介绍从机集中式电子式电能表的接收程序编制情况。
  
  由于采用的RS-485总线方式,为半双工通信方式,而且作为自动抄表系统,从机的工作是被动的,因此从机是不会主动向管理主机发送信息的,只有在管理主机有请求时,才会有应答信息。各从机在正常情况下一直处于接收状态,只有在收到管理主机对本机的呼叫后,主动将状态切换为发送状态,然后根据命令向管理主机发送应答信息,发送完毕后,又马上返回接收状态。通信采用的波特率为9600bit/s,8位数据位,1位结束位,无奇偶校验,单片机接收采用中断方式。以下程序为发送和接收数据帧的程序,不包括具体功能的实现。

  接收流程如下图所示。

接收流程


  
  1.串行接收中断服务程序void seri_isr()
  
  串行接收中断服务程序的功能是接收指定格式的数据帧。程序首先判断已经接收开始字符后,再接收数据,最后接收到结束字符后,对整个数据帧进行校验,若校验正确则置接收数据完成标志等,主程序中不断查询接受完成标志位,若标志位有效,则可对接收缓冲中的数据操作。串行口接收程序代码如下:



www.55dianzi.com

  2.计算缓冲中的数据的校验值子程序unsignedcharcalc_chksum()
  
  函数calc_chksum()计算指定缓冲中的数据的校验值,缓冲区的首地址为buf,要校验的数据的个数由counter指定,返回值为校验值。校验方法为将buf缓冲区中counter个字节的数据逐次相加,丢弃进位,最后得到的数据作为校验值,程序代码如下:

[1] [2]  下一页


本文关键字:单片机  通信  抄表系统-计费技术电子知识资料 - 抄表系统-计费技术

《自动售电抄表系统PC与多单片机通信的实现》相关文章>>>