CN111294264B - 一种基于Modbus TCP协议的通信方法及装置 - Google Patents
一种基于Modbus TCP协议的通信方法及装置 Download PDFInfo
- Publication number
- CN111294264B CN111294264B CN202010096044.4A CN202010096044A CN111294264B CN 111294264 B CN111294264 B CN 111294264B CN 202010096044 A CN202010096044 A CN 202010096044A CN 111294264 B CN111294264 B CN 111294264B
- Authority
- CN
- China
- Prior art keywords
- message
- request
- combined
- messages
- response
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/40—Bus networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/161—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/40—Bus networks
- H04L2012/40208—Bus networks characterized by the use of a particular bus standard
- H04L2012/40228—Modbus
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Communication Control (AREA)
Abstract
本申请提供了一种基于Modbus TCP协议的通信方法及装置,应用于主站,该方法包括:按照请求报文生成顺序,将多个请求报文拼接为一个报文,作为组合请求报文;发送组合请求报文至从站,以使从站从述组合请求报文中依次拆分出请求报文,并针对拆分得到的各个请求报文生成应答报文,并按照应答报文生成顺序将生成的应答报文拼接为一个报文,作为组合应答报文,并向主站返回组合应答报文;若在设定时间内,接收到从站返回的组合应答报文,则对组合应答报文进行依次拆分。在本申请中,通过以上方式可以缩短网络传输时长,提高传输效率。
Description
技术领域
本申请涉及通信技术领域,特别涉及一种基于Modbus TCP协议的通信方法及装置。
背景技术
基于TCP/IP以太网的Modbus TCP协议是工业自动化领域广泛应用的应答通信协议,已经成为通用工业标准。基于Modbus TCP协议的Modbus 通信使用主(Master,也称主站)—从(Slave,也称从站、设备)技术,只有主站具备发起Query(查询或请求)的权利,从站只有收到Query后,才有权利向主站发送应答报文(Response)。
在基于Modbus TCP协议进行数据传输时,一般通过一问一答的串行同步操作模式,经过n(n>1)轮次的请求/应答来完成某一项通信任务的数据传输。
但是,这种方式在应用于海量数据传输时,存在网络传输时间长的弊端。
发明内容
为解决上述技术问题,本申请实施例提供一种一种基于Modbus TCP协议的通信方法及装置,以达到缩短网络传输时长的目的,技术方案如下:
一种基于ModbusTCP协议的通信方法,应用于主站,该方法包括:
按照请求报文生成顺序,将多个请求报文拼接为一个报文,作为组合请求报文;
发送所述组合请求报文至从站,以使从站从所述组合请求报文中依次拆分出所述请求报文,并针对拆分得到的各个请求报文生成应答报文,并按照应答报文生成顺序将生成的应答报文拼接为一个报文,作为组合应答报文,并向所述主站返回所述组合应答报文;
若在设定时间内,接收到所述从站返回的所述组合应答报文,则对所述组合应答报文进行依次拆分。
优选的,所述发送所述组合请求报文至从站之后,还包括:
按照请求报文生成顺序,依次保存多个所述请求报文至本地最近发送请求列表中;
所述对所述组合应答报文进行依次拆分,包括:
对所述组合应答报文进行依次拆分,得到多个应答报文;
分别解析出各个所述应答报文的事务处理标识符,并通过比较各个所述应答报文的事务处理标识符与所述本地最近发送请求列表中的请求报文的事务处理标识符,从多个所述应答报文中匹配到各个所述请求报文对应的应答报文。
优选的,所述从多个所述应答报文中匹配到各个所述请求报文对应的应答报文之后,还包括:
分别解析出各个所述应答报文中除所述事务处理标识符之外的关键字,将解析出的关键字作为应答关键字;
分别解析出所述本地最近发送请求列表中的请求报文的事务处理标识符之外的关键字,将解析出的关键字作为发送关键字;
通过比较所述应答关键字与所述发送关键字,对各个所述请求报文对应的应答报文进行校验。
优选的,所述方法还包括:
若在设定时间内,未接收到所述从站返回的所述组合应答报文,则判断是否需要重新发送所述组合请求报文;
若是,则重新发送所述组合请求报文至所述从站;
若否,则等待发送下一个组合请求报文。
优选的,所述方法还包括:
在对所述组合应答报文进行依次拆分,得到多个应答报文的情况下,若各个所述请求报文中存在未匹配到应答报文的请求报文,则判断是否需要重新发送所述组合请求报文;
若是,则重新发送所述组合请求报文至所述从站。
优选的,所述重新发送所述组合请求报文至所述从站,包括:
重新发送各个所述请求报文中未匹配到应答报文的请求报文。
优选的,所述重新发送所述组合请求报文至所述从站,包括:
将多个所述请求报文划分为多个组;
按照请求报文生成顺序,将每个组中的请求报文拼接为一个报文,作为请求组合子报文;
重新发送各个所述请求组合子报文至所述从站。
一种基于Modbus TCP协议的通信方法,应用于从站,该方法包括:
接收主站发送的组合请求报文,所述组合请求报文为按照请求报文生成顺序,将多个请求报文拼接得到的一个报文;
从所述组合请求报文中依次拆分出所述请求报文,并针对拆分得到的各个请求报文生成应答报文,并按照应答报文生成顺序将生成的应答报文拼接为一个报文,作为组合应答报文,并向所述主站返回所述组合应答报文,以使所述主站若在设定时间内,接收到所述从站返回的所述组合应答报文,则对所述组合应答报文进行依次拆分。
一种基于Modbus TCP协议的通信装置,应用于主站,该装置包括:
第一拼接模块,用于按照请求报文生成顺序,将多个请求报文拼接为一个报文,作为组合请求报文;
第一发送模块,用于发送所述组合请求报文至从站,以使从站从所述组合请求报文中依次拆分出所述请求报文,并针对拆分得到的各个请求报文生成应答报文,并按照应答报文生成顺序将生成的应答报文拼接为一个报文,作为组合应答报文,并向所述主站返回所述组合应答报文;
第一拆分模块,用于若在设定时间内,接收到所述从站返回的所述组合应答报文,则对所述组合应答报文进行依次拆分。
优选的,所述装置还包括:
保存模块,用于按照请求报文生成顺序,依次保存多个所述请求报文至本地最近发送请求列表中;
所述第一拆分模块,具体用于:
对所述组合应答报文进行依次拆分,得到多个应答报文;
分别解析出各个所述应答报文的事务处理标识符,并通过比较各个所述应答报文的事务处理标识符与所述本地最近发送请求列表中的请求报文的事务处理标识符,从多个所述应答报文中匹配到各个所述请求报文对应的应答报文。
优选的,所述装置还包括:
第一解析模块,用于分别解析出各个所述应答报文中除所述事务处理标识符之外的关键字,将解析出的关键字作为应答关键字;
第二解析模块,用于分别解析出所述本地最近发送请求列表中的请求报文的事务处理标识符之外的关键字,将解析出的关键字作为发送关键字;
比较模块,用于通过比较所述应答关键字与所述发送关键字,对各个所述请求报文对应的应答报文进行校验。
优选的,所述装置还包括:
第一判断模块,用于若在设定时间内,未接收到所述从站返回的所述组合应答报文,则判断是否需要重新发送所述组合请求报文;
第二发送模块,用于若需要重新发送所述组合请求报文,则重新发送所述组合请求报文至所述从站;
等待模块,用于若不需要重新发送所述组合请求报文,则等待发送下一个组合请求报文。
优选的,所述装置还包括:
第二判断模块,用于在对所述组合应答报文进行依次拆分,得到多个应答报文的情况下,若各个所述请求报文中存在未匹配到应答报文的请求报文,则判断是否需要重新发送所述组合请求报文;
第三发送模块,用于若需要重新发送所述组合请求报文,则重新发送所述组合请求报文至所述从站。
优选的,所述第三发送模块,具体用于:
重新发送各个所述请求报文中未匹配到应答报文的请求报文。
优选的,所述第三发送模块,具体用于:
将多个所述请求报文划分为多个组;
按照请求报文生成顺序,将每个组中的请求报文拼接为一个报文,作为请求组合子报文;
重新发送各个所述请求组合子报文至所述从站。
一种基于Modbus TCP协议的通信装置,应用于从站,该装置包括:
接收模块,用于接收主站发送的组合请求报文,所述组合请求报文为按照请求报文生成顺序,将多个请求报文拼接得到的一个报文;
第二拼接模块,用于从所述组合请求报文中依次拆分出所述请求报文,并针对拆分得到的各个请求报文生成应答报文,并按照应答报文生成顺序将生成的应答报文拼接为一个报文,作为组合应答报文,并向所述主站返回所述组合应答报文,以使所述主站若在设定时间内,接收到所述从站返回的所述组合应答报文,则对所述组合应答报文进行依次拆分。
与现有技术相比,本申请的有益效果为:
在本申请中,按照请求报文生成顺序,将多个请求报文拼接为一个报文,作为组合请求报文,并将组合请求报文发送至从站,实现通过一次网络传输的方式将多个请求报文同时发送,并由从站从所述组合请求报文中依次拆分出所述请求报文,并针对拆分得到的各个请求报文生成应答报文,并按照应答报文生成顺序将生成的应答报文拼接为一个报文,作为组合应答报文,并向所述主站返回所述组合应答报文,以此减少请求/应答的次数,缩短网络传输时长,提高传输效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请提供的一种基于Modbus TCP协议的通信方法实施例1的流程图;
图2是本申请提供的一种基于Modbus TCP协议的通信方法实施例2的流程图;
图3是本申请提供的一种基于Modbus TCP协议的通信方法实施例3的流程图;
图4是本申请提供的一种基于Modbus TCP协议的通信方法实施例4的流程图;
图5是本申请提供的一种基于Modbus TCP协议的通信方法实施例5的流程图;
图6是本申请提供的一种基于Modbus TCP协议的通信方法实施例6的流程图;
图7是本申请提供的一种基于Modbus TCP协议的通信装置的逻辑结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例公开了一种页面方法,基于Modbus TCP协议的通信方法,应用于主站,该方法包括:按照请求报文生成顺序,将多个请求报文拼接为一个报文,作为组合请求报文;发送所述组合请求报文至从站,以使从站从所述组合请求报文中依次拆分出所述请求报文,并针对拆分得到的各个请求报文生成应答报文,并按照应答报文生成顺序将生成的应答报文拼接为一个报文,作为组合应答报文,并向所述主站返回所述组合应答报文;若在设定时间内,接收到所述从站返回的所述组合应答报文,则对所述组合应答报文进行依次拆分。在本申请中,可以缩短网络传输时长。
接下来对本申请实施例公开的基于Modbus TCP协议的通信方法进行介绍,应用于主站,如图1所示的,为本申请提供的一种基于Modbus TCP协议的通信方法实施例1的流程图,可以包括以下步骤:
步骤S11、按照请求报文生成顺序,将多个请求报文拼接为一个报文,作为组合请求报文。
请求报文可以理解为查询报文。查询报文用于查询数据。每个请求报文中均包含有事务处理标识符和除事务处理标识符之外的关键字(如,协议标识符、长度、单元标识符、功能码、起始地址或寄存器数量)。
事务处理标识符,可以理解为:包序号,由主站赋值,初始值为0,每新增一个Modbus TCP请求(即,请求报文),包序号加1,超出65535时回卷为0,从站可以复制请求报文中的包序号作为应答报文中的包序号,以便主站识别为相应请求报文的应答报文。
组合请求报文的长度等于多个请求报文的长度之和。
本实施例中,举例对按照请求报文生成顺序,将多个请求报文拼接为一个报文,作为组合请求报文进行说明,例如,多个请求报文分别为Q1, Q2,……,Qn,把Q1,Q2,……,Qn依次首尾相连,其中,Q1在最前, Qn在最后,拼接成一个TCP/IP报文,可以称为Qsum,Qsum的长度为Q1, Q2,……,Qn的长度之和,n为大于1的整数。
步骤S12、发送所述组合请求报文至从站,以使从站从所述组合请求报文中依次拆分出所述请求报文,并针对拆分得到的各个请求报文生成应答报文,并按照应答报文生成顺序将生成的应答报文拼接为一个报文,作为组合应答报文,并向所述主站返回所述组合应答报文。
具体地,从站可以利用滑动窗口技术,从所述组合请求报文中依次拆分出所述请求报文。
本实施例中,对从站从所述组合请求报文中依次拆分出所述请求报文,并针对拆分得到的各个请求报文生成应答报文,并按照应答报文生成顺序将生成的应答报文拼接为一个报文,作为组合应答报文进行举例说明,例如,从站从所述组合请求报文中依次拆分出的请求报文分别为Q1,Q2,……, Qn(即步骤S11中的Q1,Q2,……,Qn),并针对拆分得到的Q1,Q2,……, Qn,分别生成应答报文R1,R2,……,Rn,并将R1,R2,……,Rn依次首尾相连,R1在最前,Rn在最后,与Q1,Q2,……,Qn顺序相呼应,拼接成一个组合应答报文,我们不妨称该报文为Rsum,显然,Rsum的长度为 R1,R2,……,Rn之和。
步骤S13、若在设定时间内,接收到所述从站返回的所述组合应答报文,则对所述组合应答报文进行依次拆分。
本实施例中,主站可以启动超时定期器,超时定期器设置的超时时长为设定时间,该设定时间可以根据需要进行灵活设置,在此不做限制。优选的,设定时间可以设置为1000毫秒。
在超时定期器启动后,由超时定期器计时,在超时定期器计时时间为设定时间时,若接收到所述从站返回的所述组合应答报文,则对所述组合应答报文进行依次拆分。
本实施例中,可以缩减TCP/IP网络会话次数,充分利用一次通信会话的通信带宽,可以打破Modbus TCP协议应用于海量数据传输时的性能瓶颈。
需要说明的是,随着硬件性能提高,CPU的频率已经可以达到千兆级赫兹,即每秒可以运算10的9次方次,折合1毫秒可以运算100万次,主站的生成请求报文、拼接成组合请求报文;从站的拆分组合请求报文、生成应答报文、拼接成组合应答报文等,可以在一次CPU调度内全部完成,所用时长一般为不大于1毫秒,该时长与网络传输时间相比很短,几乎可以忽略。
结合步骤S12和步骤S13中的举例,现通过数学推演的举例方式对步骤 S11-S13介绍的基于Modbus TCP协议的通信方法的网络传输时长进行说明,例如,主站发送组合请求报文和接收到组合应答报文之间的网络传输时长表示为TTb,TTb=Ta’+Tb’+Tc’-------(2)
其中,Ta’表示主站发送组合请求报文到从站收到组合请求报文之间的时间间隔,Tb’表示从站对组合请求报文进行内部处理的时间消耗,Tc’表示从站给主站发送组合应答报文到主站收到组合应答报文之间的时间间隔。
现有技术中,一次请求/应答的时间表示为Ts0,Ts0由三部分组成,其一是从主站发送一个请求起,到从站收到请求的时间间隔,我们记为Ta0;其二是,从站对该请求进行内部处理的时间消耗,我们记为Tb0;其三时,从站给主站发送应答报文,主站收到从站应答的时间间隔,我们记为Tc0。即Ts =Ta0+Tb0+Tc0。
本实施例中,以典型的100兆通信带宽为例,在此通信带宽下,1毫秒可以传输13100字节,对应13100/12=1091个Modbus TCP请求,或对应13100/262=50个典型ModbusTCP应答。
即1毫秒可以传输包含1091个Modbus TCP请求的TCP/IP报文(即,请求报文),1毫秒也可以传输包含50个典型Modbus TCP应答的TCP/IP报文(即,应答报文)。
1091个Modbus TCP请求相当于1091*2000=2182000,即218万个DI点当量的数据量;或相当于1091*125=136375,即13.6万个AI点当量的数据量。
在工业自动化领域,目前可见的最大规模应用不会超过218万个DI点当量。因此,可以推断:
Ta’=Ta0-------(3)
而Tb’是从站对该n个Modbus请求进行内部处理的时间消耗。目前从站内部数据采集广泛采用前端/后端模式,即后端独立实时完成数据更新,前端负责与主站的通信,前端只要在内存中保存本地实时数据的映射,前端通过整块的内存拷贝的方式即可完成主站的数据更新请求,众所周知,内存读取的速度可达30000000字节/毫秒,即可以推断,只要从站内部架构恰当,Tb’对数据点数完全不敏感。此时:
Tb’=Tb0-------(4)
对于Tc’,如前所述,100兆通信带宽下,1毫秒可以传输13100字节,对应50个典型Modbus TCP应答报文之和。即50个典型Modbus TCP应答报文之内,总是有Tc’=Tc0,此后,每增加50个典型Modbus TCP应答,Tc’增加1毫秒。因此,可以用以下公式表示Tc’:
Tc’=Tc0+(n-1)/50-------(5)
其中(n-1)/50的含义为((n-50)+(50-1))/50,(n-50)表示去掉前 50个请求的剩余请求,(50-1)表示包含余数部分的最后一个请求。
我们将(3)、(4)、(5)代入(2):
TTb=Ta0+Tb0+Tc0+(n-1)/50,100Mb网络带宽时-------(6)
或:
TTb=Ts0+(n-1)/50,100Mb网络带宽时-------(7)
由以上推导可知,50为100Mb网络带宽时对应的常数,我们假设实际带宽为yMb,并记:
γ=100/y,γ称为网络带宽比率因子,此时:
Tc’=Tc0+γ·(n-1)/50-------(9)
TTb=Ts0+γ·(n-1)/50-------(10)
而
TTa=(n-1)(Ts0+T0)+Ts0-------(1)
TTa–TTb=(n-1)(Ts0+T0)-γ·(n-1)/50=(n-1)(Ts0+T0-0.02γ)
TTa–TTb=(n-1)(Ts0+T0-0.02γ)-------(11)
由(11)可知:
步骤S11-S13介绍的方法与传统方法相比,主站更新一次全部数据所节省的时间(TTa–TTb)与(n-1)成正比,是(n-1)的(Ts0+T0-0.02γ)倍。
仍以示例1为例:n=210,γ=1,Ts0=14毫秒,代入公式(10),则:
TTb=14毫秒+(210-1)/50毫秒=18毫秒。
而常规方法下,TTa=3985毫秒。TTb/Tta=18/3985=0.45%,TTa/Ttb= 3985/18=221倍。
作为本申请另一可选实施例,参照图2,为本申请提供的一种基于Modbus TCP协议的通信方法实施例2的流程图,本实施例主要是对上述实施例1描述的基于Modbus TCP协议的通信方法的扩展方案,如图2所示,该方法可以包括但并不局限于以下步骤:
步骤S21、按照请求报文生成顺序,将多个请求报文拼接为一个报文,作为组合请求报文;
步骤S22、发送所述组合请求报文至从站,以使从站从所述组合请求报文中依次拆分出所述请求报文,并针对拆分得到的各个请求报文生成应答报文,并按照应答报文生成顺序将生成的应答报文拼接为一个报文,作为组合应答报文,并向所述主站返回所述组合应答报文;
步骤S21-S22的详细过程可以参见实施例1中步骤S11-S12的相关介绍,在此不再赘述。
步骤S23、按照请求报文生成顺序,依次保存多个所述请求报文至本地最近发送请求列表中。
步骤S24、对所述组合应答报文进行依次拆分,得到多个应答报文。
步骤S25、分别解析出各个所述应答报文的事务处理标识符,并通过比较各个所述应答报文的事务处理标识符与所述本地最近发送请求列表中的请求报文的事务处理标识符,从多个所述应答报文中匹配到各个所述请求报文对应的应答报文。
通过比较各个所述应答报文的事务处理标识符与所述本地最近发送请求列表中的请求报文的事务处理标识符,从多个所述应答报文中匹配到各个所述请求报文对应的应答报文,可以保证每个请求报文可以准确的匹配到对应的应答报文。
作为本申请另一可选实施例,参照图3,为本申请提供的一种基于Modbus TCP协议的通信方法实施例3的流程图,本实施例主要是对上述实施例2描述的基于Modbus TCP协议的通信方法的扩展方案,如图3所示,该方法可以包括但并不局限于以下步骤:
步骤S31、按照请求报文生成顺序,将多个请求报文拼接为一个报文,作为组合请求报文;
步骤S32、发送所述组合请求报文至从站,以使从站从所述组合请求报文中依次拆分出所述请求报文,并针对拆分得到的各个请求报文生成应答报文,并按照应答报文生成顺序将生成的应答报文拼接为一个报文,作为组合应答报文,并向所述主站返回所述组合应答报文;
步骤S33、按照请求报文生成顺序,依次保存多个所述请求报文至本地最近发送请求列表中。
步骤S34、对所述组合应答报文进行依次拆分,得到多个应答报文。
步骤S35、分别解析出各个所述应答报文的事务处理标识符,并通过比较各个所述应答报文的事务处理标识符与所述本地最近发送请求列表中的请求报文的事务处理标识符,从多个所述应答报文中匹配到各个所述请求报文对应的应答报文。
步骤S31-S35的详细过程可以参见实施例2中步骤S21-S22的相关介绍,在此不再赘述。
步骤S36、分别解析出各个所述应答报文中除所述事务处理标识符之外的关键字,将解析出的关键字作为应答关键字。
除所述事务处理标识符之外的关键字可以包括但不局限于:协议标识符、长度、单元标识符、功能码、起始地址和寄存器数量中的任意一种或多种。
步骤S37、分别解析出所述本地最近发送请求列表中的请求报文的事务处理标识符之外的关键字,将解析出的关键字作为发送关键字。
所述本地最近发送请求列表中的请求报文的事务处理标识符之外的关键字可以包括但不局限于:协议标识符、长度、单元标识符、功能码、起始地址和寄存器数量中的任意一种或多种。
步骤S38、通过比较所述应答关键字与所述发送关键字,对各个所述请求报文对应的应答报文进行校验。
通过比较所述应答关键字与所述发送关键字,对各个所述请求报文对应的应答报文进行校验,可以提高每个请求报文匹配到的对应的应答报文的可靠性。
作为本申请另一可选实施例,参照图4,为本申请提供的一种基于 Modbus TCP协议的通信方法实施例4的流程图,本实施例主要是对上述实施例1描述的基于Modbus TCP协议的通信方法的扩展方案,如图4所示,该方法可以包括但并不局限于以下步骤:
步骤S41、按照请求报文生成顺序,将多个请求报文拼接为一个报文,作为组合请求报文。
步骤S42、发送所述组合请求报文至从站,以使从站从所述组合请求报文中依次拆分出所述请求报文,并针对拆分得到的各个请求报文生成应答报文,并按照应答报文生成顺序将生成的应答报文拼接为一个报文,作为组合应答报文,并向所述主站返回所述组合应答报文;
步骤S43、若在设定时间内,接收到所述从站返回的所述组合应答报文,则对所述组合应答报文进行依次拆分。
步骤S41-S43的详细过程可以参见实施例1中步骤S11-S13的相关介绍,在此不再赘述。
步骤S44、若在设定时间内,未接收到所述从站返回的所述组合应答报文,则判断是否需要重新发送所述组合请求报文。
若是,则执行步骤S45;若否,则执行步骤S46。
步骤S45、则重新发送所述组合请求报文至所述从站;
步骤S46、等待发送下一个组合请求报文。
若在设定时间内,未接收到所述从站返回的所述组合应答报文,则判断是否需要重新发送所述组合请求报文,提高此次数据请求的有效性。
作为本申请另一可选实施例,参照图5,为本申请提供的一种基于 Modbus TCP协议的通信方法实施例5的流程图,本实施例主要是对上述实施例1描述的基于Modbus TCP协议的通信方法的扩展方案,如图5所示,该方法可以包括但并不局限于以下步骤:
步骤S51、按照请求报文生成顺序,将多个请求报文拼接为一个报文,作为组合请求报文。
步骤S52、发送所述组合请求报文至从站,以使从站从所述组合请求报文中依次拆分出所述请求报文,并针对拆分得到的各个请求报文生成应答报文,并按照应答报文生成顺序将生成的应答报文拼接为一个报文,作为组合应答报文,并向所述主站返回所述组合应答报文;
步骤S53、若在设定时间内,接收到所述从站返回的所述组合应答报文,则对所述组合应答报文进行依次拆分。
步骤S51-S53的详细过程可以参见实施例1中步骤S11-S13的相关介绍,在此不再赘述。
步骤S54、在对所述组合应答报文进行依次拆分,得到多个应答报文的情况下,若各个所述请求报文中存在未匹配到应答报文的请求报文,则判断是否需要重新发送所述组合请求报文;
若是,则执行步骤S55。
步骤S55、重新发送所述组合请求报文至所述从站。
若各个所述请求报文中存在未匹配到应答报文的请求报文,则判断是否需要重新发送所述组合请求报文,提高此次数据请求的有效性。
作为本申请另一可选实施例,参照图6,为本申请提供的一种基于 Modbus TCP协议的通信方法实施例6的流程图,本实施例主要是对上述实施例5描述的基于Modbus TCP协议的通信方法的细化方案,如图6所示,该方法可以包括但并不局限于以下步骤:
步骤S61、按照请求报文生成顺序,将多个请求报文拼接为一个报文,作为组合请求报文。
步骤S62、发送所述组合请求报文至从站,以使从站从所述组合请求报文中依次拆分出所述请求报文,并针对拆分得到的各个请求报文生成应答报文,并按照应答报文生成顺序将生成的应答报文拼接为一个报文,作为组合应答报文,并向所述主站返回所述组合应答报文;
步骤S63、若在设定时间内,接收到所述从站返回的所述组合应答报文,则对所述组合应答报文进行依次拆分。
步骤S64、在对所述组合应答报文进行依次拆分,得到多个应答报文的情况下,若各个所述请求报文中存在未匹配到应答报文的请求报文,则判断是否需要重新发送所述组合请求报文;
若是,则执行步骤S65。
步骤S61-S64的详细过程可以参见实施例5中步骤S51-S54的相关介绍,在此不再赘述。
步骤S65、重新发送各个所述请求报文中未匹配到应答报文的请求报文。
步骤S65为实施例5中步骤S55的一种具体实施方式。
本实施例中,重新发送各个所述请求报文中未匹配到应答报文的请求报文,可以减少对网络带宽的占用及减少从站的内部处理消耗。
作为本申请另一可选实施例,本实施例主要是对上述实施例5描述的基于ModbusTCP协议的通信方法的细化方案,该方法可以包括但并不局限于以下步骤:
S71、按照请求报文生成顺序,将多个请求报文拼接为一个报文,作为组合请求报文。
S72、发送所述组合请求报文至从站,以使从站从所述组合请求报文中依次拆分出所述请求报文,并针对拆分得到的各个请求报文生成应答报文,并按照应答报文生成顺序将生成的应答报文拼接为一个报文,作为组合应答报文,并向所述主站返回所述组合应答报文;
S73、若在设定时间内,接收到所述从站返回的所述组合应答报文,则对所述组合应答报文进行依次拆分。
S74、在对所述组合应答报文进行依次拆分,得到多个应答报文的情况下,若各个所述请求报文中存在未匹配到应答报文的请求报文,则判断是否需要重新发送所述组合请求报文;
若是,则执行步骤S75。
步骤S71-S74的详细过程可以参见实施例5中步骤S51-S54的相关介绍,在此不再赘述。
S75、将多个所述请求报文划分为多个组。
S76、按照请求报文生成顺序,将每个组中的请求报文拼接为一个报文,作为请求组合子报文。
S77、重新发送各个所述请求组合子报文至所述从站。
步骤S75-S77为实施例5中步骤S55的一种具体实施方式。
本实施例中,将多个所述请求报文划分为多个组,按照请求报文生成顺序,将每个组中的请求报文拼接为一个报文,作为请求组合子报文,重新发送各个所述请求组合子报文至所述从站,可以在未收到全部应答报文的情况下,较容易的定位未匹配到应答报文的请求报文的同时,节省网络传输时长。
在本申请的另一个实施例中,提供另外一种基于Modbus TCP协议的通信方法,应用于从站,该方法可以包括以下步骤:
S81、接收主站发送的组合请求报文,所述组合请求报文为按照请求报文生成顺序,将多个请求报文拼接得到的一个报文。
S82、从所述组合请求报文中依次拆分出所述请求报文,并针对拆分得到的各个请求报文生成应答报文,并按照应答报文生成顺序将生成的应答报文拼接为一个报文,作为组合应答报文,并向所述主站返回所述组合应答报文,以使所述主站若在设定时间内,接收到所述从站返回的所述组合应答报文,则对所述组合应答报文进行依次拆分。
接下来对本申请提供的基于Modbus TCP协议的通信装置进行介绍,下文介绍的基于Modbus TCP协议的通信装置与上文介绍的基于Modbus TCP协议的通信装置可相互对应参照。
基于Modbus TCP协议的通信装置应用于主站,请参见图7,基于Modbus TCP协议的通信装置包括:第一拼接模块11、第一发送模块12和第一拆分模块13。
第一拼接模块11,用于按照请求报文生成顺序,将多个请求报文拼接为一个报文,作为组合请求报文;
第一发送模块12,用于发送所述组合请求报文至从站,以使从站从所述组合请求报文中依次拆分出所述请求报文,并针对拆分得到的各个请求报文生成应答报文,并按照应答报文生成顺序将生成的应答报文拼接为一个报文,作为组合应答报文,并向所述主站返回所述组合应答报文;
第一拆分模块13,用于若在设定时间内,接收到所述从站返回的所述组合应答报文,则对所述组合应答报文进行依次拆分。
本实施例中,上述基于Modbus TCP协议的通信装置还可以包括:
保存模块,用于按照请求报文生成顺序,依次保存多个所述请求报文至本地最近发送请求列表中;
相应地,所述第一拆分模块13,具体可以用于:
对所述组合应答报文进行依次拆分,得到多个应答报文;
分别解析出各个所述应答报文的事务处理标识符,并通过比较各个所述应答报文的事务处理标识符与所述本地最近发送请求列表中的请求报文的事务处理标识符,从多个所述应答报文中匹配到各个所述请求报文对应的应答报文。
本实施例中,上述基于Modbus TCP协议的通信装置还可以包括:
第一解析模块,用于分别解析出各个所述应答报文中除所述事务处理标识符之外的关键字,将解析出的关键字作为应答关键字;
第二解析模块,用于分别解析出所述本地最近发送请求列表中的请求报文的事务处理标识符之外的关键字,将解析出的关键字作为发送关键字;
比较模块,用于通过比较所述应答关键字与所述发送关键字,对各个所述请求报文对应的应答报文进行校验。
本实施例中,上述基于Modbus TCP协议的通信装置还可以包括:
第一判断模块,用于若在设定时间内,未接收到所述从站返回的所述组合应答报文,则判断是否需要重新发送所述组合请求报文;
第二发送模块,用于若需要重新发送所述组合请求报文,则重新发送所述组合请求报文至所述从站;
等待模块,用于若不需要重新发送所述组合请求报文,则等待发送下一个组合请求报文。
本实施例中,上述基于Modbus TCP协议的通信装置还可以包括:
第二判断模块,用于在对所述组合应答报文进行依次拆分,得到多个应答报文的情况下,若各个所述请求报文中存在未匹配到应答报文的请求报文,则判断是否需要重新发送所述组合请求报文;
第三发送模块,用于若需要重新发送所述组合请求报文,则重新发送所述组合请求报文至所述从站。
本实施例中,所述第三发送模块,具体可以用于:
重新发送各个所述请求报文中未匹配到应答报文的请求报文。
或,所述第三发送模块,具体可以用于:
将多个所述请求报文划分为多个组;
按照请求报文生成顺序,将每个组中的请求报文拼接为一个报文,作为请求组合子报文;
重新发送各个所述请求组合子报文至所述从站。
在本申请的另一个实施例中,提供另外一种基于Modbus TCP协议的通信装置,应用于从站,该基于Modbus TCP协议的通信装置可以包括:
接收模块,用于接收主站发送的组合请求报文,所述组合请求报文为按照请求报文生成顺序,将多个请求报文拼接得到的一个报文;
第二拼接模块,用于从所述组合请求报文中依次拆分出所述请求报文,并针对拆分得到的各个请求报文生成应答报文,并按照应答报文生成顺序将生成的应答报文拼接为一个报文,作为组合应答报文,并向所述主站返回所述组合应答报文,以使所述主站若在设定时间内,接收到所述从站返回的所述组合应答报文,则对所述组合应答报文进行依次拆分。
需要说明的是,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。
以上对本申请所提供的一种基于Modbus TCP协议的通信及装置进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (10)
1.一种基于Modbus TCP协议的通信方法,其特征在于,应用于主站,该方法包括:
按照请求报文生成顺序,将多个请求报文拼接为一个报文,作为组合请求报文;
发送所述组合请求报文至从站,以使从站从所述组合请求报文中依次拆分出所述请求报文,并针对拆分得到的各个请求报文生成应答报文,并按照应答报文生成顺序将生成的应答报文拼接为一个报文,作为组合应答报文,并向所述主站返回所述组合应答报文;
若在设定时间内,接收到所述从站返回的所述组合应答报文,则对所述组合应答报文进行依次拆分;
所述对所述组合应答报文进行依次拆分,包括:
对所述组合应答报文进行依次拆分,得到多个应答报文;
分别解析出各个所述应答报文的事务处理标识符,并通过比较各个所述应答报文的事务处理标识符与所述本地最近发送请求列表中的请求报文的事务处理标识符,从多个所述应答报文中匹配到各个所述请求报文对应的应答报文。
2.根据权利要求1所述的方法,其特征在于,所述发送所述组合请求报文至从站之后,还包括:
按照请求报文生成顺序,依次保存多个所述请求报文至本地最近发送请求列表中。
3.根据权利要求1所述的方法,其特征在于,所述从多个所述应答报文中匹配到各个所述请求报文对应的应答报文之后,还包括:
分别解析出各个所述应答报文中除所述事务处理标识符之外的关键字,将解析出的关键字作为应答关键字;
分别解析出所述本地最近发送请求列表中的请求报文的事务处理标识符之外的关键字,将解析出的关键字作为发送关键字;
通过比较所述应答关键字与所述发送关键字,对各个所述请求报文对应的应答报文进行校验。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若在设定时间内,未接收到所述从站返回的所述组合应答报文,则判断是否需要重新发送所述组合请求报文;
若是,则重新发送所述组合请求报文至所述从站;
若否,则等待发送下一个组合请求报文。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在对所述组合应答报文进行依次拆分,得到多个应答报文的情况下,若各个所述请求报文中存在未匹配到应答报文的请求报文,则判断是否需要重新发送所述组合请求报文;
若是,则重新发送所述组合请求报文至所述从站。
6.根据权利要求5所述的方法,其特征在于,所述重新发送所述组合请求报文至所述从站,包括:
重新发送各个所述请求报文中未匹配到应答报文的请求报文。
7.根据权利要求5所述的方法,其特征在于,所述重新发送所述组合请求报文至所述从站,包括:
将多个所述请求报文划分为多个组;
按照请求报文生成顺序,将每个组中的请求报文拼接为一个报文,作为请求组合子报文;
重新发送各个所述请求组合子报文至所述从站。
8.一种基于Modbus TCP协议的通信方法,其特征在于,应用于从站,该方法包括:
接收主站发送的组合请求报文,所述组合请求报文为按照请求报文生成顺序,将多个请求报文拼接得到的一个报文;
从所述组合请求报文中依次拆分出所述请求报文,并针对拆分得到的各个请求报文生成应答报文,并按照应答报文生成顺序将生成的应答报文拼接为一个报文,作为组合应答报文,并向所述主站返回所述组合应答报文,以使所述主站若在设定时间内,接收到所述从站返回的所述组合应答报文,则对所述组合应答报文进行依次拆分;
所述对所述组合应答报文进行依次拆分,包括:
对所述组合应答报文进行依次拆分,得到多个应答报文;
分别解析出各个所述应答报文的事务处理标识符,并通过比较各个所述应答报文的事务处理标识符与所述本地最近发送请求列表中的请求报文的事务处理标识符,从多个所述应答报文中匹配到各个所述请求报文对应的应答报文。
9.一种基于Modbus TCP协议的通信装置,其特征在于,应用于主站,该装置包括:
第一拼接模块,用于按照请求报文生成顺序,将多个请求报文拼接为一个报文,作为组合请求报文;
第一发送模块,用于发送所述组合请求报文至从站,以使从站从所述组合请求报文中依次拆分出所述请求报文,并针对拆分得到的各个请求报文生成应答报文,并按照应答报文生成顺序将生成的应答报文拼接为一个报文,作为组合应答报文,并向所述主站返回所述组合应答报文;
第一拆分模块,用于若在设定时间内,接收到所述从站返回的所述组合应答报文,则对所述组合应答报文进行依次拆分;
所述第一拆分模块,具体用于:
对所述组合应答报文进行依次拆分,得到多个应答报文;
分别解析出各个所述应答报文的事务处理标识符,并通过比较各个所述应答报文的事务处理标识符与所述本地最近发送请求列表中的请求报文的事务处理标识符,从多个所述应答报文中匹配到各个所述请求报文对应的应答报文。
10.一种基于Modbus TCP协议的通信装置,其特征在于,应用于从站,该装置包括:
接收模块,用于接收主站发送的组合请求报文,所述组合请求报文为按照请求报文生成顺序,将多个请求报文拼接得到的一个报文;
第二拼接模块,用于从所述组合请求报文中依次拆分出所述请求报文,并针对拆分得到的各个请求报文生成应答报文,并按照应答报文生成顺序将生成的应答报文拼接为一个报文,作为组合应答报文,并向所述主站返回所述组合应答报文,以使所述主站若在设定时间内,接收到所述从站返回的所述组合应答报文,则对所述组合应答报文进行依次拆分;
所述对所述组合应答报文进行依次拆分,包括:
对所述组合应答报文进行依次拆分,得到多个应答报文;
分别解析出各个所述应答报文的事务处理标识符,并通过比较各个所述应答报文的事务处理标识符与所述本地最近发送请求列表中的请求报文的事务处理标识符,从多个所述应答报文中匹配到各个所述请求报文对应的应答报文。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010096044.4A CN111294264B (zh) | 2020-02-17 | 2020-02-17 | 一种基于Modbus TCP协议的通信方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010096044.4A CN111294264B (zh) | 2020-02-17 | 2020-02-17 | 一种基于Modbus TCP协议的通信方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111294264A CN111294264A (zh) | 2020-06-16 |
CN111294264B true CN111294264B (zh) | 2021-12-24 |
Family
ID=71022961
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010096044.4A Active CN111294264B (zh) | 2020-02-17 | 2020-02-17 | 一种基于Modbus TCP协议的通信方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111294264B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112968906B (zh) * | 2021-03-25 | 2022-02-18 | 湖南大学 | 一种基于多元组的Modbus TCP异常通讯检测方法和系统 |
CN113992471B (zh) * | 2021-10-26 | 2023-05-12 | 成都亿佰特电子科技有限公司 | 一种多主机与多从机的通讯系统及方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102820959A (zh) * | 2011-06-10 | 2012-12-12 | 哈尔滨工业大学 | 在Modbus主站与从站之间进行大数据量通信的方法 |
CN110311847A (zh) * | 2019-06-26 | 2019-10-08 | 北京和利时系统工程有限公司 | 一种批量数据传输方法和装置 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1219065B1 (en) * | 1999-11-16 | 2007-02-21 | Koninklijke Philips Electronics N.V. | Multicast transmission method and system |
CN101883036A (zh) * | 2010-06-25 | 2010-11-10 | 上海铁大电信设备有限公司 | 多路rs485总线自适应转can总线通信方法 |
CN102006285B (zh) * | 2010-11-02 | 2016-07-06 | 北京天融信科技股份有限公司 | 一种用于网络安全设备的报文处理方法及装置 |
CN104424105B (zh) * | 2013-08-26 | 2017-08-25 | 华为技术有限公司 | 一种内存数据的读写处理方法和装置 |
CN106452506B (zh) * | 2016-11-27 | 2019-04-26 | 国网福建省电力有限公司 | 一种多个数据项一次性采集的方法 |
CN108268002A (zh) * | 2017-12-14 | 2018-07-10 | 深圳市显控科技股份有限公司 | 一种结合hmi与plc功能的一体机和通信方法 |
CN110445658B (zh) * | 2019-08-16 | 2023-01-24 | 中国银行股份有限公司 | 一种报文处理方法及系统 |
CN110516142A (zh) * | 2019-08-29 | 2019-11-29 | 深圳前海微众银行股份有限公司 | 数据查询方法、装置、设备及介质 |
-
2020
- 2020-02-17 CN CN202010096044.4A patent/CN111294264B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102820959A (zh) * | 2011-06-10 | 2012-12-12 | 哈尔滨工业大学 | 在Modbus主站与从站之间进行大数据量通信的方法 |
CN110311847A (zh) * | 2019-06-26 | 2019-10-08 | 北京和利时系统工程有限公司 | 一种批量数据传输方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN111294264A (zh) | 2020-06-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111294264B (zh) | 一种基于Modbus TCP协议的通信方法及装置 | |
KR100295003B1 (ko) | 데이타캐싱방법및장치 | |
CN106657149B (zh) | 通讯协议转换方法与装置 | |
CN106657216B (zh) | 序列号生成方法和装置 | |
KR980700762A (ko) | 멀티프로세서 환경에서의 데이터 패킷 전송 방법(multi-processor environments) | |
CN105450712B (zh) | 一种数据传输方法及装置 | |
CN101478387A (zh) | 超文本传输协议攻击防御方法、装置和系统 | |
CN105657000A (zh) | 消息传送方法及装置 | |
CN111277483B (zh) | 一种多端消息的同步方法、服务器及可存储介质 | |
CN107124483A (zh) | 域名解析方法及服务器 | |
CN110381051A (zh) | 一种报文解析的方法、系统、设备及计算机可读存储介质 | |
CN110166159A (zh) | 一种基于gprs网络对时、电能表对时方法及系统 | |
CN108809766A (zh) | 一种获取rtt的方法、装置及系统 | |
CN114491656A (zh) | 区块链网络中的方法和设备 | |
CN111831513A (zh) | 日志查询方法、装置、电子设备、及存储介质 | |
CN113055193B (zh) | 一种数据多播传输方法、装置、设备及存储介质 | |
CN112035763A (zh) | 信息处理的方法、装置及系统,电子设备及存储介质 | |
CN102647463B (zh) | 网址导航的生成方法、无线路由终端及系统 | |
CN114157716B (zh) | 基于区块链的数据处理方法、装置和电子设备 | |
CN114221925B (zh) | 消息推送方法、装置、电子设备及存储介质 | |
ATE289735T1 (de) | Informationsübertragungsverfahren, insbesondere werbeinformation zu einem benutzerterminal | |
CN108733598B (zh) | 一种数据传输方法和数据传输装置 | |
CN110838924B (zh) | 区块传输方法及装置 | |
CN114374474A (zh) | 一种数据传输系统及方法 | |
CN111814161A (zh) | 一种数据传输方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20211109 Address after: 100176 room 3412, floor 4, building 3, yard 2, Desheng Middle Road, Beijing Economic and Technological Development Zone, Daxing District, Beijing Applicant after: Beijing Helishi system integration Co.,Ltd. Address before: 100176 No.2 yard, Disheng Middle Road, Beijing Economic and Technological Development Zone Applicant before: BEIJING HOLLYSYS Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |