一种在广域网传输ModbusRTU协议的方法与流程

文档序号:25991973发布日期:2021-07-23 21:04阅读:348来源:国知局
一种在广域网传输Modbus RTU协议的方法与流程

本发明涉及物联网感知设备通信技术领域,具体为一种在广域网传输modbusrtu协议的方法。



背景技术:

modbus是全球第一个真正用于工业现场的总线协议。modbus协议是应用于控制设备上的一种通用语言,通过modbus协议,可以实现控制器之间、控制器经由网络(例如以太网)和其它设备之间进行通信。目前,modbus协议已经成为一种通用工业标准,不同厂商生产的控制设备通过modbus协议连成工业网络,进行集中监控。modbus网络只有一个主机,所有通信都由主机发起。

modbus协议包括modbustcp协议和modbusrtu协议,一般进行异步串行传输是采用modbusrtu协议。随着物联网的发展,现有工业网络中,主要通过物联网管理平台实现对控制器的远程监控,而控制器(从站)和物联网管理平台(主站)的连接需要通过通信模块(例如网络串口设备)和转换模块(例如通信网关)进行通信。通信模块主要是一边与控制器进行通信,一边与物联网管理平台进行通信,实现串口数据和网络数据报文的双向转换。转换模块,主要是将modbusrtu协议转换为modbustcp协议,从而可在以太网中进行传输,由于modbustcp协议需要主站主动向从站建立tcp链路,而现有的从站一般没有固定的ip,所以modbustcp协议只适合在局域网中进行传输,如果要在广域网中进行传输,即将modbustcp数据包通过广域网传输给物联网管理平台,则需要增加vpn网关设备建立vpn网络,通过vpn网关为从站分配固定的ip地址,从而实现modbustcp协议在广域网中的传输,但是增加vpn网关设备既增加了成本,又增加了处理时间,降低了监控的效率。



技术实现要素:

本发明意在提供一种只采用通信模块的在广域网传输modbusrtu协议的方法,以降低物联网感知设备的监控功能的成本,提高监控效率。

本发明提供如下基础方案:一种在广域网传输modbusrtu协议的方法,应用于从站通过通信模块与主站连接的网络,包括如下内容:

s1、通信模块生成自定义的注册消息发送给主站,所述注册消息包括通信模块的设置信息,以及该通信模块连接管理的从站地址;

s2、主站接收到注册消息后记录通行模块的设置信息,以及该通信模块连接管理的从站地址,建立链路;

s3、主站与从站通过建立的链路,进行modbusrtu协议的传输和交互,其中通信模块会对从站发送给主站的modbusrtu协议的数据包添加tcp传输协议的tcp协议头。

与现有技术相比,本方案的优点在于:通信模块生成自定义的注册消息发送给主站,注册消息包括通信模块的设置信息,以及该通信模块连接管理的从站地址;主站接收到注册消息后记录通信模块的编码,以及该通信模块连接管理的从站地址,建立链路;主站与从站通过建立的链路,进行modbusrtu协议的传输和交互,即主站和从站通过建立的链路传输modbusrtu协议的数据包,通信模块会对从站发送给主站的modbusrtu协议的数据包添加tcp传输协议的tcp协议头,实现将串口数据转换为网络数据报文,然后将网络数据报文通过广域网传输给主站,主站解析tcp协议头获得modbusrtu协议的数据包,并且通信模块会解析主站发送的网络数据报文中的tcp协议头获得modbusrtu协议的数据包,然后传输给从站,从而实现主站对从站的集中监控。

本方法实现了在广域网中传输modbusrtu协议,并且全程不受从站必须具备固定ip地址的限制,取消了协议转换过程及转换模块,降低了物联网感知设备的监控功能成本,提高监控效率。

进一步,所述自定义的注册消息还包括:功能码和crc校验;

所述通信模块连接管理的从站地址包括通信模块管理的从站最小地址和通信模块管理的从站最大地址;

所述自定义的注册消息的命令格式为modbusrtu报文,具体为:通信模块的设置信息、功能码、通信模块管理的从站最小地址、通信模块管理的从站最大地址、crc校验的低八位和crc校验的高八位。

有益效果:自定义的注册消息的命令格式是modbusrtu报文,具体为:通信模块的设置信息、功能码、通信模块管理的从站最小地址、通信模块管理的从站最大地址、crc校验的低八位和crc校验的高八位,modbusrtu报文中比特数有限,自定义的注册消息的命令格式中具体包括通信模块管理的从站最小地址、通信模块管理的从站最大地址,因此通信模块管理的从站地址必须是连续的,以此保证地址的准确。

进一步,所述s3、主站与从站通过建立的链路,进行modbusrtu协议的传输和交互时,包括:

s301、主站向从站发送请求消息;

s302、从站根据请求消息中包含的功能码做出相应的应答,并向主站发送应答消息;

s303、若主站在预设的应答时间内,未接收到应答消息,则再次向从站发送请求消息,直至检测到链路中断,则停止发送请求消息。

有益效果:主站向从站发送请求消息;从站根据请求消息中包含的功能码做出相应的应答,并向主站发送应答消息;若主站在预设的应答时间内,未接收到应答消息,则再次向从站发送请求消息,直至检测到链路中断,则停止发送请求消息。预设的应答时间可以根据用户的具体需求和网络的具体情况进行调整,主站在预设的应答时间内,未接收到应答消息,则再次向从站发送请求消息,以此来防止从站和主站之间停止传输数据造成控制延迟,影响工业设备的控制,直至检测到链路中断,则停止发送请求消息,以此及时的进行错误检测,防止反复重传,造成资源占用和浪费。

进一步,所述请求消息的命令格式为modbusrtu报文,包括:从站地址、功能码、数据域和crc校验的低八位和crc校验的高八位。

有益效果:请求消息由主站下发到从站,其中会经过通信模块,请求消息的命令格式为modbusrtu报文,包括从站地址,通信模块能明确把请求消息转发到管理连接的从站。

进一步,若功能码为0x65,则表示modbusrtu报文为自定义的注册消息;若功能码为0x03、0x06和0x10,则表示modbusrtu报文为请求消息。

有益效果:自定义的注册消息和请求消息的命令格式都是modbusrtu报文,根据功能码的不同,表明该报文是自定义的注册消息还是请求消息。

进一步,所述功能码为0x03,还表示主站对从站连续读取数据,且请求消息的数据域包括起始寄存器地址高八位、起始寄存器地址低八位、读取的寄存器数高八位和读取的寄存器数低八位;

所述功能码为0x06,还表示主站对从站写入数据,且请求消息的数据域包括:写入的寄存器地址高八位、写入的寄存器地址低八位、写入的数据高八位、写入的数据低八位;

所述功能码为0x10,还表示主站对多个从站写入数据,且请求消息的数据域包括:寄存器起始地址高八位、寄存器起始地址低八位、写入的寄存器数量的高八位、写入的寄存器数量的低八位、每个写入数据的高八位和每个写入数据的低八位。

有益效果:功能码为0x03、0x06和0x10,均表示modbusrtu报文为请求消息,但是请求消息的数据域根据功能码不同,包含的内容不同,以实现不同的请求内容。

进一步,所述链路中断为主站在预设的中断时间内,未接收到从站发送应答消息,则认为主站和从站之间的链路中断。

有益效果:预设的终端时间可以根据用户的具体需求和网络的具体情况进行调整,主站在预设的中断时间内,未接收到从站发送应答消息,则认为主站和从站之间链路中断,主站不再向从站发送请求信息,防止反复发送请求信息造成信道堵塞。进一步,所述预设的中断时间大于预设的应答时间。

有益效果:预设的中断时间大于预设的应答时间,以保证主站在预设的应答时间内,未接收到应答消息,能再次向从站发送请求消息,为主站和从站之间的传输提供一定的容错时间。

附图说明

图1为本发明一种在广域网传输modbusrtu协议的方法实施例的流程图;

图2为本发明一种在广域网传输modbusrtu协议的方法实施例中网络结构示意图;

图3为本发明一种在广域网传输modbusrtu协议的方法实施例中modbusrtu协议的帧结构示意图。

具体实施方式

下面通过具体实施方式进一步详细说明:

实施例基本如附图1所示:一种在广域网传输modbusrtu协议的方法,应用于从站通过通信模块与主站连接的网络,本实施例中网络如图2所示,主站包括物联网管理平台和tcp服务器(tcpsever),物联网管理平台为网页端平台(web),用于用户输入命令;通过将命令下发到tcpsever,tcpsever通过广域网,本实施例中为gprs网络,将命令的数据包发送给通信模块,本实施例中通信模块采用串口通信服务器(dtu),dtu将命令下发到采用modbusrtu协议串口连接的从站,本实施例中从站采用控制器(plc)。

本方法包括如下内容:

s1、通信模块生成自定义的注册消息发送给主站,所述注册消息包括通信模块的设置信息,以及该通信模块连接管理的从站地址;本实施中通信模块的设置信息为dtu的编码。

自定义的注册消息为modbusrtu报文,还包括:功能码和crc校验;通信模块连接管理的从站地址包括通信模块管理的从站最小地址和通信模块管理的从站最大地址;自定义的注册消息的命令格式为modbusrtu报文,具体为:通信模块的设置信息、功能码、通信模块管理的从站最小地址、通信模块管理的从站最大地址、crc校验的低八位和crc校验的高八位。

modbusrtu协议的帧结构,如图3所示,包括地址域、功能码、数据域和crc域;地址域只含有子节点地址,即从站plc的地址,合法的子节点地址为十进制0~247。0为广播地址,每个子设备被赋予1~247范围中的地址;功能码指明执行的命令,功能码后面跟有表示含有请求和响应参数的数据域;crc域是错误检验,是对报文内容执行"冗余校验"的计算结果。dtu发送的自定义的注册消息为modbusrtu协议,modbusrtu协议采用16进制,功能码在modbusrtu报文中占8比特,数据域为若干个8比特,本实施例中功能码101是用户自定义功能码,即功能码为0x65,则表示modbusrtu报文为自定义的注册消息,但是自定义的注册消息的功能码不限于0x65,也可以为0x66或其它值,即自定义的注册消息的功能码采用用户扩展段,由主站和通信模块协商决定,即设备端和平台端协商一致决定,以此增加适用范围。

dtu发送的自定义的注册消息命令格式为:[dtu编码][命令号101][dtu管理的从站最小地址][dtu管理的从站最大地址][crc校验的低8位][crc校验的高8位],例如:注册消息报文为:01650101d197(十六进制),其中01:dtu编码为01#;65:dtu注册消息功能码;01:dtu管理的从站最小地址:1;01:dtu管理的从站最大地址:1;d197:为crc校验码,可查表或计算获取。

s2、主站接收到注册消息后记录通信模块的设置信息,以及该通信模块连接管理的从站地址,建立链路。具体为tcpsever接收到dtu发送的注册消息,注册消息包含了dtu的编码,以及该dtu连接管理的plc的从站地址,dtu管理的从站地址必须是连续的。

s3、主站与从站通过建立的链路,进行modbusrtu协议的传输和交互,包括:

s301、主站向从站发送请求消息。具体为tcpsever向plc发送请求消息。其中,请求消息的命令格式为modbusrtu报文,包括:从站地址、功能码、数据域和crc校验的低八位和crc校验的高八位。功能码为0x03、0x06和0x10,表示modbusrtu报文为请求消息。并且功能码为0x03,还表示主站对从站连续读取数据,且请求消息的数据域包括起始寄存器地址高八位、起始寄存器地址低八位、读取的寄存器数高八位和读取的寄存器数低八位,例如:请求消息:01030000000585c9

01从站地址为01#

03连续读取保持寄存器功能码

0000读取的起始地址为:0

0005读取的长度为5个字

a5cb为crc校验码,可查表或计算获取

plc响应数据:01030a0001000c0002000000009ce6

响应格式:[16进制从站地址][03功能码][字节数(=寄存器数*2)][第一个数高8位][第一个数低8位][第二个数高8位][第二个数低8位]…[crc校验的低8位][crc校验的高8位]备注crc采用16位算法

数据含义:

01从站地址为01#

03连续读取保持寄存器功能码

0a读取的字节长度为:10

0001读取的第一个寄存器值为0001

000c读取的第二个寄存器值为000c

0002读取的第三个寄存器值为0002

0000读取的第四个寄存器值为0000

0000读取的第五个寄存器值为0000

9ce6为crc校验码

功能码为0x06,还表示主站对从站写入数据,且请求消息的数据域包括:写入的寄存器地址高八位、写入的寄存器地址低八位、写入的数据高八位、写入的数据低八位,例如:请求报文:010600030001b80a;将保持寄存器03(初始地址为00)的值写为0001;写成功后plc会返回响应:010600030001b80a。

功能码为0x10,还表示主站对多个从站写入数据,且请求消息的数据域包括:寄存器起始地址高八位、寄存器起始地址低八位、写入的寄存器数量的高八位、写入的寄存器数量的低八位、每个写入数据的高八位和每个写入数据的低八位,例如:请求报文:01100258000a14010e00b2010900af010900af1388003213880032c365

01:设备地址

10:功能码

0258:寄存器首地址

000a:寄存器个数

14:字节数

010e:写入寄存器的第一个数据的高8位,低8位

00b2:写入寄存器的第二个数据的高8位,低8位,以此类推

……

c365:校验信息

写成功后plc会返回响应:01100258000ac065

01:设备地址

10:功能码

0258:寄存器首地址

000a:寄存器数

c065:校验信息

以校准plc内部时间为例,即写入时间,请求消息发送如下表所示:

控制字:mw146---mw151;通讯地址:0x92---0x97;控制字功能:读取plc内部时间;

s302、从站根据请求消息中包含的功能码做出相应的应答,并向主站发送应答消息。具体为plc根据请求消息中包含的功能码做出相应的应答,并向tcpsever发送应答消息。

s303、若主站在预设的应答时间内,未接收到应答消息,则再次向从站发送请求消息,直至检测到链路中断,则停止发送请求消息。其中链路中断为主站在预设的中断时间内,未接收到从站发送应答消息,则认为主站和从站之间的链路中断。且预设的中断时间大于预设的应答时间。本实施例中预设的应答时间为10秒,预设的中断时间为120秒。具体为tcpsever在10秒内未收到应答消息,则tcpsever重新向plc发送重试请求,直至102秒后tcpsever一直未收到应答消息,则认为链路中断,停止发送请求。

工作原理:tcpsever和plc通过建立的链路传输modbusrtu协议的数据包,dtu会对plc发送给主站的modbusrtu协议的数据包添加tcp传输协议的tcp协议头,实现将串口数据转换为网络数据报文,然后将网络数据报文通过gprs网络传输给tcpsever,主站解析tcp协议头获得modbusrtu协议的数据包,以此完成数据采集。用户通过物联网管理平台输入命令,物联网管理平台将命令下发到tcpsever,tcpsever将命令通过gprs网络传输给dtu,其中命令是网络数据报文,即添加了tcp传输协议的tcp协议头的modbusrtu协议的数据包,dtu解析主站发送的网络数据报文中的tcp协议头获得modbusrtu协议的数据包,然后传输给对应plc,从而实现主站对从站的集中监控。并且本方法在广域网中传输modbusrtu协议,全程不受从站必须具备固定ip地址的限制,取消了协议转换过程及转换模块,降低了物联网感知设备的监控功能成本,提高监控效率。

以上所述的仅是本发明的实施例,方案中公知的具体结构及特性等常识在此未作过多描述,所属领域普通技术人员知晓申请日或者优先权日之前发明所属技术领域所有的普通技术知识,能够获知该领域中所有的现有技术,并且具有应用该日期之前常规实验手段的能力,所属领域普通技术人员可以在本申请给出的启示下,结合自身能力完善并实施本方案,一些典型的公知结构或者公知方法不应当成为所属领域普通技术人员实施本申请的障碍。应当指出,对于本领域的技术人员来说,在不脱离本发明结构的前提下,还可以作出若干变形和改进,这些也应该视为本发明的保护范围,这些都不会影响本发明实施的效果和专利的实用性。本申请要求的保护范围应当以其权利要求的内容为准,说明书中的具体实施方式等记载可以用于解释权利要求的内容。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1