碧波液压网 欢迎你,游客。 登录 注册

分布式测温系统中多机通信程序与界面设计

版权信息:站内文章仅供学习与参考,如触及到您的版权信息,请与本站联系。

  1引言

  分布式测温系统由上位机管理站与多个监测站组成。数据通信是整个系统实现集中控制和信息集中管理的关键,在分布式测温系统设计中,多机通信及通信协议的制定均是关键问题。RS-232 标准是一种最常用的串行通信标准,由于分布式测温系统对传输距离有较大的要求,而RS-232无法实现远距离传输数据,因此寻找一种可以实现远距离通信、且能够抗干扰的通信标准成为系统实现通信的前提。设计的分布式测温系统中,数据通信采用了RS-485标准,上位机管理站利用VB编程,在基于单片机设计的本地监测站端采用MAX-487芯片将传输电平转换成RS-485标准便于远距离通信,上位机管理站通过RS-485与RS-232转换器将系统通信线与计算机串口RS-232相连,实现了上位机管理站与多个监测站的多机数据通信。

  2多机通信电路与通信协议

  2.1多机通信电路构成

  本地监测站由单总线温度传感器DS18B20,AT89C52单片机、存储器、键盘显示电路和 RS485 数据通信电路组成。分布式测温系统多机通信电路构成图如图1所示。

  2.2多机通信协议

  图2中表明了上位机管理站向各个本地监测站发送的数据格式。各个监测站在接收到命令后,根据功能号的内容及后续字节执行相应程序,完成上位机要求的功能。图2 中第一字节“AA”是一次通信的首字节,通知各个监测站这是一次新通信的开始,使各个监测站准备进行地址判断。随后上位机管理站接着发送本次通信接收方的地址,各监测站将接收到的地址字节与自己的地址进行比较,若地址相符则继续接收并根据第3字节的功能号执行相应子程序;若接收地址与自己监测站地址不符合,则监测站将不对以后的数据进行处理,直到再次接收到“AA”字符,若监测站接收到的功能号属于无效功能号,那么监测站将向上位机管理站返回一个字节“CC”。

  其中,协议中功能号00H实现温度上传,功能号01H实现下传报警上限,功能号02H实现下传系统时间,功能号03H实现上传报警上限。

  3监测站多机通信接收程序设计

  3.1串口中断响应与多机通信接收程序

  基于单片机的监测站接收程序用于判断监测站接收的数据类型,并根据不同功能进行处理,监测站接收程序流程图如图3所示。

  2字节标志,MARK=1表示置位接收通信数据格式中第3字节标志。在图3 的功能跳转表中,根据功能号进行不同标志的置位。如果功能号为 01,则 MARK4=1,表明置位更改报警上限标志;如果功能号为02,则MARK8=1,表明置位时间校正程序标志。系统在正常运行时,主要是对传感器进行操作,而对传感器的所有操作都与时序有关。由于数据通信采用中断方式,中断的产生必然会打断原有时序,引起传感器读取程序混乱。为了防止这种现象的产生,分布式测温系统设计时采用当中断返回时,让中断返回到整个温度采集周期的起始处。程序设计的思路是响应中断后将产生串口中断的断点地址从堆栈中弹出,然后将期望的返回地址即温度采集周期的起始处地址0080H压入堆栈。为了防止此操作引起的堆栈数据不能全部出栈,致使无用数据在堆栈中的堆积,因此在整个温度采集周期的起始处即伪指令ORG 0080H之后,使用了MOVSP,#0FH一条设置堆栈指针语句指令以指向栈底,让程序在每个温度采集周期起始时都放弃旧的堆栈数据。因此当串口中断发生时,将转入中断服务程序。在串口中断服务程序中,首先关闭中断,用两条弹出指令POP ACC将产生串口中断的断点地址从堆栈中弹出。然后设置中断返回地址0080H,清除串口接收中断标志位RI,将接收到的数据从接收缓冲区SBUF中取出。随后就可以将接收到的数据与AAH 进行比较,进行接收数据类型的识别。响应串口中断服务程序如下所示。

你没有登陆,无法阅读全文内容

您需要 登录 才可以查看,没有帐号? 立即注册

标签:
点赞   收藏

相关文章

发表评论

请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。

用户名: 验证码:

最新评论