基于RS485通信的远程数据采集与控制系统设计

发表时间:2020/5/22   来源:《电力设备》2020年第3期   作者:张明龙
[导读] 摘要:近年来,随着科学技术的进步和发展,数据采集和控制技术正在向全新的阶段发展,信息的采集与传输更加智能化、数字化和远距离化;在一些环境条件恶劣、异常危险的工业生产现场,如深井、对人体危害极大的强辐射空间,远程数据采集与控制系统能很好地取代人到现场进行数据采集的工作。
        (天津市航天安通电子科技有限公司  天津  300000)
        摘要:近年来,随着科学技术的进步和发展,数据采集和控制技术正在向全新的阶段发展,信息的采集与传输更加智能化、数字化和远距离化;在一些环境条件恶劣、异常危险的工业生产现场,如深井、对人体危害极大的强辐射空间,远程数据采集与控制系统能很好地取代人到现场进行数据采集的工作。
        关键词:RS485通信;远程数据采集;控制系统设计;
        设计的基于RS485通信的远程数据采集与控制系统克服了传统Rs232通信距离短、传输速率低的缺陷,系统终端设备可以完成温度、湿度、压力等模拟信号的采集。主从式的控制结构很好地解决了系统扩展问题,数据采集量大,实时性强。
        1 通信原理
        在PC与多个单片机应用系统构成的多机系统中,一般采用主从式通信,主机处于主导和支配地位,下位机一般以中断方式来接收和发送。在这种通信机制下,各下位机没有主动通信权,这样就限制了下位机主动从主控机下传其需要的数据或主动上传相关数据给主控机。在本实际应用系统中,主控机主动读取或发送数据给下位机时,一般数据量较大,而下位机主动上传或下传数据时,往往数据量较小(约几十至几百个字节/次)。根据系统的实际需要,在下位机中采用中断和查询两种方式与主控机通信:当主控机需要发送或读取下位机数据时,下位机以中断方式来接收和发送;而当某下位机根据工作状态需要上传数据或从主控机下传相关数据时,进入查询方式通信模块,将通信请求标志置位,等待主控机响应其请求。主控机没有主动通信任务时,定时巡检各下位机,查看是否有通信请求。若有则响应其请求完成数据传输。为了保证通畅有序的双向数据通信,避免通信混乱,在主控机主动与某一下位机通信时,暂停定时巡检,不响应下位机的通信请求,待通信任务结束后再恢复定时巡检。
        2 基于RS485通信的远程数据采集与控制系统设计
        2.1 下位机通信软件。下位机通信软件采用单片机C语言来编写,以功能强大、产生代码效率高的Keil C51编译器来编译、调试工具。使用C语言开发单片机应用系统,程序可读性强,可移植性好,极大缩短了嵌入式系统开发和维护时间。
        在完成所有初始化工作后,开始查询键盘输入状态,由输入来决定进入相关处理模块(如与主机通信或其他功能等)以及是否结束主程序。各模块功能完成后又返回查键,循环直至程序结束。在循环过程中,若有串行中断产生,则进入串行中断接收发送程序;若查键得到“与主机通信”的命令,则进入查询方式通信模块。在主程序流程图中串行口初始化部分完成波特率的设定、使本机处于侦听地址状态等功能。定时/计数器用作波特率发生器,定时/计数器用作超时处理的定时器。初始化后,打开串行口中断等待中断产生。主控机主动与下位机通信时或定时巡检下位机是否有通信请求时,需要发送被呼叫下位机的地址码或巡检地址码(巡检地址码与地址码一一对应且数据帧第9位都为1),引入与实际地址码相对应的巡检码能很好地解决下位机中由于查询和中断两种通信方式并存极易造成通信混乱等问题。主控机要与某一下位机进行通信时,首先发送该下位机的地址码(此时巡检已被停止)。所有的下位机均产生接收中断,但只有地址相符的下位机置SM2为0,对地址匹配标志addmatch置位且发回应答信号,准备接收主控机发送的命令,根据通信命令来完成数据的接收与发送;其他地址不相符的下位机继续保持侦听地址状态,这样就保证了多机环境中的一对一通信。
        2.2 主控机通信软件设计。

主控机通信程序的开发环境采用内置了近200个完全封装了windows 9爻公用特性且具有扩展性的可重用控件,这就使得利用C++Builder开发应用程序(特别是数据库和网络应用)非常方便、快捷。一在环境中,编写串行通信应用程序,一般采用如下两种方法:(1)通过调用Win32 API提供的串行通信函数,这种方法实现起来相当繁琐;(2)利用专门处理串行通信的控件来编程,用户只需在自已的应用程序中嵌入这一类控件,编写少量代码便可轻松高效地完成任务。在本系统中,我们选择了~个名为Comm的第三方控件来实现串行端口的选择、波特率的设定以及数据格式的定义等都可通过设置相应的属性来完成。在由计算机和多个单片机应用系统构成的多机环境中,一般把通信数据分为地址帧和数据帧来传递,PC的串行通信本身并不具备多机通信功能,也不能产生TB8或者RB8,但可以通过灵活设置Comm控件中的Parity属性值为paMark/paSpace来形成正确的地址/数据标志位,从而使PC与8051单片机之间实现多机通信。主控机主动与某一下位机通信,在对话框中选择下位机的地址号、设定通信命令,在连接按钮的事件处理函数中编写代码实现与下位机的数据通信。主控机没有主动通信任务的时候,通过一个Timer控件来定时,定时时间到激活事件,在该事件函数中完成对各下位机的巡检。
        2.3 可靠性、抗干扰措施及容错设计。在分布式应用系统、工业测控系统中,应用场合的环境一般比较恶劣,稳定可靠的数据通信是实现系统功能的关键。因此,采取必要的提高可靠性和抗干扰能力的措施及合理的容错设计是十分必要的。在本项目工程中,从硬件线路和软件设计两方面作了如下的考虑。在硬件线路上,主要是从隔离、接口标准及布线等方面加以考虑:(1)硬件电路上,对下位机主控板上的通信部分进行光电隔离。这样的话,使得即便是有超越MAXl487的ESD保护范围的静电或雷电感应在信号线上,也只会毁坏驱动器或光耦,不至于破坏整个后级系统。(2)由于RS485接口标准采用平衡发送和差分接收,因此具有较强抑制共模干扰的能力且灵敏度高,能检测出低至200mV的电压,所以能很好地防止因传输距离增加和速率提高而导致的传输信号衰减及共地噪声等干扰的影响。(3)通信总线采用屏蔽线,各段线路屏蔽层相联接,集中到某一处,采用了必要的接地措施。布置总线时尽量避免了与高压电或动力电线路平行,无法避免时,尽量让两者之间距离足够大。主要是从提高软件的可靠性、健壮性和容错能力的角度做了一些考虑:(1)主控机和下位机之间的通信协调:主控机串行口与下位机串行口的设置保持一致,即数据格式一致、通信波特率相同。主控机定时巡检时,为了不致引起通信混乱,采用了独立于下位机实际地址码且与之相对应的巡检地址码。当硬件调试和软件调试都完成以后,就可以对整个系统进行调试,把主从设备通过总线连接,并且把各个模块所对应的单片机程序烧录进去,对整机进行系统测试。通过软硬件的微调,系统工作正常。在涉及数据收、发状态转换时,考虑了必要的时间延迟。(2)超时、差错以及通信中断等处理:比如在下位机中,将定时/计数器0用作接收数据超时定时器。在查询方式通信模块中,查看查询响应标志cxflag是否置位时,如果循环三次后仍然没有被置位,则显示主系统忙等信息后退出查询方式通信模块。另外,在主控机和下位机做了差错和通信中断处理。采用了数据累加和校验、关键字重发等措施。
        利用RS485总线在环境下构建的远程数据传输系统解决了主控计算机与下位机之间的分布式双向数据传输问题,该系统易于实现、操控界面友好、可靠性高、抗干扰能力强,具有较好的容错能力,在实际应用中取得了较好的效果,达到了预期的设计目的。同时本文介绍的基于RS485总线的数据通信系统在其他应用场合,如数控机床自动化系统、分布式监控系统以及商业自动化收银系统等都具有较好的应用推广价值。
        参考文献:
        [1]马忠梅等.单片机的c语言应用程序设计.北京:北京航空航天大学出版社,2018
        [2]李朝青.PC机及单片机数据通信技术.北京:北京航空航天大学出版社,2017
        [3]朱正茂等.Borland C++Builder5实用编程技术.北京:中国水利水电出版社。2018
投稿 打印文章 转寄朋友 留言编辑 收藏文章
  期刊推荐
1/1
转寄给朋友
朋友的昵称:
朋友的邮件地址:
您的昵称:
您的邮件地址:
邮件主题:
推荐理由:

写信给编辑
标题:
内容:
您的昵称:
您的邮件地址: