[发明专利]TCP/IP协议下Modbus设备网络通信的方法有效
申请号: | 201310553637.9 | 申请日: | 2013-11-08 |
公开(公告)号: | CN103561032A | 公开(公告)日: | 2014-02-05 |
发明(设计)人: | 朱维红;王冬雪;曹彦;丁少威;田晓亮 | 申请(专利权)人: | 山东大学 |
主分类号: | H04L29/06 | 分类号: | H04L29/06 |
代理公司: | 济南金迪知识产权代理有限公司 37219 | 代理人: | 许德山 |
地址: | 250100 山*** | 国省代码: | 山东;37 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | tcp ip 协议 modbus 设备 网络 通信 方法 | ||
技术领域
本发明涉及一种TCP/IP协议下Modbus设备网络通信的方法,属于网络通信技术领域。
背景技术
在工业通信领域,TCP/IP协议是互联网最基本的网络通信协议,Modbus协议是一种工业通信和分布式控制系统协议,已广泛应用到工业控制当中,其中Modbus-RTU最为常用。
Modbus协议存在一定的局限性,设备采用查询-回应的通信机制,协议中常用功能码为01-06号。若不同的功能码之间查询报文发送时间间隔过小,查询报文和回应报文就会阻塞在一个Modbus设备中,甚至产生碰撞,使得通信正确率大幅度下降。系统实测每台Modbus设备的每个功能码查询-回应过程大约用时1-3秒,这种局限性使得含有大量Modbus设备的监控系统的数据实时性下降,通信效率降低。
综上所述,对于含有大量Modbus设备的监控系统来说,采集数据的实时性下降,系统报警产生大量延时,系统的安全性下降。另外,鲍文昕发表的《RS485/MODBUS数据采集网络在自动测报系统的应用研究》一文中指出,为了使主机与设备稳定的通信,485线上可挂载的设备是有限的,一般可以挂在32台,我们的系统利用DTU实现无线通信,避免了RS485传统布线的局限性。
发明内容
为了克服现有技术存在的缺陷和不足,本发明提供了一种TCP/IP协议下Modbus设备网络通信的方法,以达到保证Modbus设备采集数据实时性、增强网络通信效率的效果。
本发明的技术方案如下:
一种TCP/IP协议下Modbus设备网络通信的方法,由以下系统来实现,该系统包括PC平台、多路Modbus设备和多路DTU,其中Modbus设备和相应的DTU通过485线相连接,DTU通过互联网(Internet)和PC平台进行通信,该方法步骤如下:
1)PC平台软件设置固定IP和端口号,准备发送和接收Modbus设备数据:
a、系统在PC平台通过软件同时设置多个PC端口号,每个PC端口与N台Modbus设备进行通信,其中0<N<=100,以满足大量Modbus设备的需求;
b、软件编程平台选择C#+Winform,编写Windows窗体应用程序作为服务器,利用DOTNET框架的网络通信技术完成网络通信,引用System.Net.Socket命名空间,初始化UdpClient类的实例,并将它绑定到所提供的某个PC端口号(假设为8000),再使用UdpClient类下的方法Receive()接收由Modbus设备发送的UDP数据报;
2)PC接收DTU发送的心跳包:
每台DTU设置不同的心跳包,心跳包的内容代表Modbus设备的设备号,由一个字节组成(01H-64H),PC端口(即号为8000的端口)接收与其通信的所有DTU心跳包,并锁定DTU的端口号和IP,计算出Modbus设备的数量N;
3)发送线程发送01号功能码查询报文:
(a)引用System.Threading命名空间,使用new Thread(new ThreadStart(send))实例化一个发送线程,执行send()发送数据方法(send方法为向Modbus设备发送查询报文),以轮询PC端口号(8000)下所有Modbus设备的01号功能码查询报文,使用函数sleep(T*1000/N)来控制所有Modbus设备之间的发送间隔,其中T是Modbus设备的每个功能码查询-回应过程的最大用时,为3S,N是与PC端口(8000)通信的Modbus设备的数量;
(b)接收线程接收N个Modbus设备的回应报文并进行报文的解析;
4)重复步骤3),依次发送02-06号功能码查询报文;
完成6次通信过程后,01-06号功能码查询报文全部发送完毕,接收线程完成N个Modbus设备数据的接收工作;
5)重复步骤3)和步骤4),继续完成下次所有功能码的数据查询和接收工作。
所述的DTU是无线传输模块,实现报文无线传输功能。
本发明中步骤1)的处理,使用发送和接受两个线程,使得查询报文和回应报文得到了几乎同步的处理,提高了的程序的资源利用效率,程序响应更快,缩短了运行时间;步骤3)的处理,用sleep(T*1000/N)函数来处理Modbus协议中查询-回应这个过程中的局限性,提供设备足够的请求回应时间,避免了查询报文和回应报文的阻塞碰撞,既提高了通信的正确率,又保证了设备数据的实时性。
本发明的有益效果是:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于山东大学,未经山东大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310553637.9/2.html,转载请声明来源钻瓜专利网。
- 上一篇:太阳光反射镜柔性镜膜
- 下一篇:地质形态插值的KM方法