[发明专利]在TCP/IP网络上传输Modbus RTU协议的方法有效
| 申请号: | 201310500238.6 | 申请日: | 2013-10-23 |
| 公开(公告)号: | CN103546467A | 公开(公告)日: | 2014-01-29 |
| 发明(设计)人: | 杨新宇;邓刚;蔡志康;赵瑞;胡献 | 申请(专利权)人: | 上海爱控自动化设备有限公司 |
| 主分类号: | H04L29/06 | 分类号: | H04L29/06;H04L12/40 |
| 代理公司: | 上海汉声知识产权代理有限公司 31236 | 代理人: | 胡晶 |
| 地址: | 200433 上海市杨浦*** | 国省代码: | 上海;31 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | tcp ip 网络 传输 modbus rtu 协议 方法 | ||
技术领域
本发明属于通信技术领域,具体涉及一种在TCP/IP网络上传输Modbus RTU协议的方法。
背景技术
工业标准Modbus协议在工业现场的通信方式上被广泛使用,Modbus协议有两种格式,即:Modbus RTU和Modbus TCP/IP。其中前者使用在485串口总线之类的场景下,后者使用在TCP/IP网络环境下。但由于特殊的需求,有些情况下需要在TCP/IP网络下传输Modbus RTU格式的协议数据,然而由于Modbus RTU格式和TCP/IP网络分别具有各自的特点,不能相互兼容,目前没有实现Modbus RTU协议在TCP/IP网络下传输的有效方法。
Modbus是以帧为单位的通信协议,其中每一帧的格式具有明确定义。其在串行线路上的实现Modbus RTU则充分利用485等串行总线的特点,使用时间缝隙来进行帧的区分,即如果在规定的时间内没有收到更多信号,则认为一帧接收完毕,如果继续收到信号,则认为是新一帧的开始。而由于TCP/IP网络的本身特点,无法利用时间缝隙来区分两帧,而Modbus RTU并非为TCP/IP网络设计,在协议本身的字段中,没有足够的显式信息可在TCP/IP网络中鉴别出一帧的结束。因此,目前难以实现Modbus RTU协议在TCP/IP网络上的传输。
发明内容
为了克服现有技术中存在的缺陷,本发明一种在TCP/IP网络上传输Modbus RTU协议的方法,本发明具体的技术方案如下:
在TCP/IP网络上传输Modbus RTU协议的方法,该TCP/IP网络中包括客户端和服务器端,包括如下步骤:
步骤S1,客户端向服务器端发送请求,请求中包括若干请求帧,等待服务器端回应;
步骤S2,服务器端依次接收请求帧,对于每一请求帧:
服务器端读取当前请求帧的第一个字节,获取从站地址;
服务器端读取当前请求帧的下一个字节,获取功能码;
根据功能码判断当前请求帧的数据区的字节长度;设请求帧数据区的字节长度为N,服务器端读取当前请求帧的下N个字节,获取数据区的内容;
服务器端读取当前请求帧的下两个字节,获取CRC校验码,当前请求帧接收完毕;
步骤S3,服务器端向客户端发送应答,应答中包括若干应答帧;
步骤S4,客户端依次接收应答帧,对于每一应答帧:
客户端读取当前应答帧的第一个字节,获取从站地址;
客户端读取当前应答帧的下一个字节,获取功能码;
根据功能码判断当前应答帧的数据区的字节长度;设应答帧数据区的字节长度为M,客户端读取当前应答帧的下M个字节,获取数据区的内容;
客户端读取当前应答帧的下两个字节,获取CRC校验码,当前应答帧接收完毕。
作为优化方案,步骤S2中根据功能码判断当前请求帧的数据区的字节长度的方法具体为:判断功能码是否为0x03,若是则认为请求帧数据区的字节长度为4个字节;
步骤S4中根据功能码判断当前应答帧的数据区的字节长度的方法具体为:判断功能码是否为0x03,若是则读取下一个字节,获取字节数,设字节数为P;应答帧数据区的字节长度为1+P个字节。
作为优化方案,步骤S2中根据功能码判断当前请求帧的数据区的字节长度的方法具体为:判断功能码是否为0x06,若是则认为请求帧数据区的字节长度为4个字节;
步骤S4中根据功能码判断当前应答帧的数据区的字节长度的方法具体为:判断功能码是否为0x06,若是则认为应答帧数据区的字节长度为4个字节。
作为优化方案,步骤S2中根据功能码判断当前请求帧的数据区的字节长度的方法具体为:判断功能码是否为0x10,若是则
读取下两个字节,获取写入地址;
读取下一个字节,获取写入长度的高位,设写入长度的高位为H;读取下一个字节,获取写入长度的低位,设写入长度的低位为L;
请求帧数据区的字节长度为4+H×256+L个字节;
步骤S4中根据功能码判断当前应答帧的数据区的字节长度的方法具体为:判断功能码是否为0x10,若是则认为应答帧数据区的字节长度为4个字节。
作为优化方案,步骤S4中根据功能码判断当前应答帧的数据区的字节长度的方法进一步包括:判断功能码的最高位是否为1,若是则认为应答帧数据区的字节长度为1个字节。
作为优化方案,步骤S1之前还包括:步骤S0,服务器端在一socket端口开启监听,客户端向此socket端口建立连接,开始通信。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海爱控自动化设备有限公司,未经上海爱控自动化设备有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310500238.6/2.html,转载请声明来源钻瓜专利网。





