CN114745221B - Modbus通信系统及通信方法 - Google Patents
Modbus通信系统及通信方法 Download PDFInfo
- Publication number
- CN114745221B CN114745221B CN202210286612.6A CN202210286612A CN114745221B CN 114745221 B CN114745221 B CN 114745221B CN 202210286612 A CN202210286612 A CN 202210286612A CN 114745221 B CN114745221 B CN 114745221B
- Authority
- CN
- China
- Prior art keywords
- modbus
- client
- server
- message
- paths
- 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
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
- 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
- H04L12/40006—Architecture of a communication node
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/24—Multipath
-
- 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/163—In-band adaptation of TCP data exchange; In-band control procedures
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02P—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
- Y02P90/00—Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
- Y02P90/02—Total factory control, e.g. smart factories, flexible manufacturing systems [FMS] or integrated manufacturing systems [IMS]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明提供一种Modbus通信系统及通信方法,第一Modbus客户端与Modbus服务端之间通过握手建立至少两条Modbus SCTP路径进行数据交互,可很好的避免SYN F l ood i ng攻击,提升系统的可靠性;第一Modbus客户端与Modbus服务端之间通过建立的至少两条Modbus SCTP路径进行信息交互,这样即使其中的某一条Modbus SCTP路径故障或中断,第一Modbus客户端与Modbus服务端之间仍可通过其他的Modbus SCTP路径正常的进行信息交互,从而可进一步提升Modbus通信的可靠性,能更好的智能工厂的对生产设备的实时控制要求和可靠性要求。
Description
技术领域
本发明涉及通信领域,尤其涉及一种Modbus通信系统及通信方法。
背景技术
Modbus是一种串行通信协议,是Modicon公司(现在的施耐德电气SchneiderElectric)于1979年为使用PLC(Programmable Logic Controller,可编程逻辑控制器)通信而发表。Modbus已经成为工业领域通信协议的业界标准,并且现在是工业电子设备之间常用的连接方式。目前业界采用Modbus,主要采用Modbus RTU,Modbus ASCII和Modbus TCP(Transmission Control Protocol,传输控制协议)这些传输协议,但是这些传输都只支持单条通信路径,当这条通信路径故障或中断时,就无法进行数据的上传和下行控制。而目前为了满足智能工厂的对生产设备的实时控制要求,业界对通信可靠性提出了5个9((1-99.999%)*365*24*60=5.26分钟,表示该系统在连续运行1年时间里最多可能的业务中断时间是5.26分钟)的要求,而由于现有Modbus通信协议无法支持多路径通信,导致其可靠性差,更无法满足业界提出的5个9的可靠性要求。
另外,现有Modbus协议采用TCP传输协议,存在安全隐患,在SYN Flood泛洪攻击下,Modbus服务端的主机资源很容易耗尽而无法对外提供服务,进一步降低了Modbus通信的可靠性。
因此,如何提升Modbus通信的可靠性是目前亟需解决的技术问题。
发明内容
本发明提供了一种Modbus通信系统及通信方法,解决现有Modbus通信的可靠性差的问题。
为了解决上述问题,本发明实施例提供了一种Modbus通信系统,包括Modbus服务端和至少一个第一Modbus客户端;
所述第一Modbus客户端与所述Modbus服务端之间通过以下握手过程建立至少两条Modbus SCTP(Stream Control Transmission Protocol,流控制传输协议)路径:
所述第一Modbus客户端向所述Modbus服务端发送INIT消息;
所述Modbus服务端根据所述INIT消息向所述第一Modbus客户端发送INIT_ACK的消息后,释放本次建链的资源,所述INIT_ACK的消息中包括本次建链所需信息;
所述第一Modbus客户端向所述Modbus服务端发送COOKIE_ECHO消息,所述COOKIE_ECHO消息中包括本次建链所需信息;
所述Modbus服务端从所述COOKIE_ECHO消息中获取本次建链所需信息进行建链;
所述第一Modbus客户端与所述Modbus服务端之间利用所述至少两条Modbus SCTP路径进行信息交互。
在一些实施例中,所述Modbus通信系统还包括至少一个第二Modbus客户端;
所述第二Modbus客户端与所述Modbus服务端之间建立至少一条Modbus TCP路径;
所述第二Modbus客户端与所述Modbus服务端之间利用所述至少一条Modbus TCP路径进行信息交互。
在一些实施例中,所述Modbus通信系统还包括至少一个生产设备,所述第一Modbus客户端和所述第二Modbus客户端与至少一个所述生产设备通信连接,所述生产设备与所述第一Modbus客户端和/或所述第二Modbus客户端之间通过所述通信连接进行信息交互。
在一些实施例中,所述第一Modbus客户端的可靠性优先级大于所述第二Modbus客户端的可靠性优先级。
在一些实施例中,所述第一Modbus客户端利用所述至少两条Modbus SCTP路径向所述Modbus服务端发送的信息包括从所述生产设备采集的设备信息;
所述Modbus服务端利用所述至少两条Modbus SCTP路径向所述第一Modbus客户端发送的信息包括用于控制所述生产设备的设备控制信息。
在一些实施例中,所述第一Modbus客户端向所述Modbus服务端发送INIT消息之前,还包括:
所述第一Modbus客户端向所述Modbus服务端发送UDP组播报文以请求获取所述Modbus服务端的IP地址和端口;
所述第一Modbus客户端根据获取的所述Modbus服务端的IP地址和端口向所述Modbus服务端发送INIT消息。
在一些实施例中,所述Modbus SCTP路径支持AP组网、蜂窝网组网、有线交换机组网中的至少一种。
基于同样的发明构思,本发明实施例还提供了一种Modbus通信方法,包括:
第一Modbus客户端与Modbus服务端之间通过以下握手过程建立至少两条ModbusSCTP路径:
所述第一Modbus客户端向所述Modbus服务端发送INIT消息;
所述Modbus服务端根据所述INIT消息向所述第一Modbus客户端发送INIT_ACK的消息后,释放本次建链的资源,所述INIT_ACK的消息中包括本次建链所需信息;
所述第一Modbus客户端向所述Modbus服务端发送COOKIE_ECHO消息,所述COOKIE_ECHO消息中包括本次建链所需信息;
所述Modbus服务端从所述COOKIE_ECHO消息中获取本次建链所需信息进行建链;
所述第一Modbus客户端与所述Modbus服务端之间利用所述至少两条Modbus SCTP路径进行信息交互。
在一些实施例中,所述Modbus通信方法还包括:
第二Modbus客户端与所述Modbus服务端之间建立至少一条Modbus TCP路径;
所述第二Modbus客户端与所述Modbus服务端之间利用所述至少一条Modbus TCP路径进行信息交互。
在一些实施例中,所述第二Modbus客户端与所述Modbus服务端之间建立至少一条Modbus TCP路径包括:
所述第二Modbus客户端与所述Modbus服务端之间建立至少两条Modbus TCP路径;
所述第二Modbus客户端与所述Modbus服务端之间利用所述至少两条Modbus TCP路径进行信息交互。
有益效果:
本发明实施例提供的Modbus通信系统及通信方法,第一Modbus客户端与Modbus服务端之间通过握手建立至少两条Modbus SCTP路径,其中在握手建立Modbus SCTP路径过程中,Modbus服务端根据INIT消息向第一Modbus客户端发送INIT_ACK的消息(包括本次建链所需信息,也可称之为半链接信息)后,释放本次建链的资源,也即Modbus服务端不会维半链接信息,而是把半链接信息发给第一Modbus客户端,如果第一Modbus客户端确实需要建立这个链接,第一Modbus客户端后续就会再将半链接信息回送给Modbus服务端,因此即使受到了SYNFlooding攻击,Modbus服务端也不会因为需要维护大量的半连接列表而消耗非常多的资源,可很好的避免SYNFlooding攻击,提升系统的可靠性;
另外,第一Modbus客户端与Modbus服务端之间通过建立的至少两条Modbus SCTP路径进行信息交互,这样即使其中的某一条Modbus SCTP路径故障或中断,第一Modbus客户端与Modbus服务端之间仍可通过其他的Modbus SCTP路径正常的进行信息交互,从而可进一步提升Modbus通信的可靠性,能更好的智能工厂的对生产设备的实时控制要求和可靠性要求。
附图说明
图1为Modbus TCP三次握手过程示意图;
图2本发明实施例提供的Modbus通信系统结构示意图一;
图3本发明实施例提供的Modbus SCTP四次握手过程示意图;
图4为本发明实施例提供的Modbus通信系统结构示意图二;
图5为本发明实施例提供的Modbus通信系统结构示意图三;
图6为本发明实施例提供的第一Modbus客户端获取IP地址和端口的过程示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,下面通过具体实施方式结合附图对本发明实施例作进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
针对目前业界采用Modbus RTU,Modbus ASCII和Modbus TCP这些传输协议只支持单条通信路径,当这条通信路径故障或中断时,就无法进行数据的上传和下行控制,导致其可靠性差,更无法满足智能工厂的对生产设备的实时控制要求和可靠性要求的问题。另外,现有Modbus协议采用TCP传输协议,存在安全隐患,在SYN Flood泛洪攻击下,Modbus服务端的主机资源很容易耗尽而无法对外提供服务。其主要原因是TCP基于连接的,为了在Modbus服务端和Modbus客户端之间传送TCP数据,必须先建立一个虚拟连接,也就是TCP连接,建立TCP连接的过程参见图1所示的以下“三次握手”过程:
首先,Modbus客户端发送一个包含SYN标志的TCP报文给Modbus服务端,表示客户端欲发起通信连接;
第二步,Modbus服务段在收到Modbus客户端的SYN报文后,将返回一个SYN+ACK的报文,表示Modbus客户端的请求被接受;
第三步,Modbus客户端也返回一个确认报文ACK给Modbus服务端,到此一个TCP连接完成。
而SYN Flood泛洪攻击就出在TCP连接的三次握手中,假设一个Modbus客户端向Modbus服务端发送了SYN报文后突然死机或掉线,那么Modbus服务端在发出SYN+ACK应答报文后是无法收到Modbus客户端的ACK报文的,这种情况下Modbus服务端一般会重试(再次发送SYN+ACK给客户端)并等待一段时间后丢弃这个未完成的连接,这段时间的长度可称为SYN Timeout,一般来说这个时间是分钟的数量级(大约为30秒-2分钟);如果有一个恶意的攻击者大量模拟这种情况,Modbus服务端将为了维护一个非常大的半连接列表而消耗非常多的资源,最终导致Modbus服务端忙于处理攻击者伪造的TCP连接请求而无暇理睬Modbus客户端的正常请求,也即Modbus服务端的主机资源很容易耗尽而无法对外提供服务。
本实施例提供了一种可靠性更好的Modbus通信系统,参见图2所示,其包括至少一个第一Modbus客户端,还包括Modbus服务端。其中,Modbus服务端包括负载均衡器和与负载均衡器连接的至少一个Modbus处理模块。第一Modbus客户端也包括Modbus处理模块。应当理解的是,本实施例中的第一Modbus客户端和Modbus服务端的具体实现形式可根据具体的应用场景灵活设置。且Modbus通信系统中所包括的第一Modbus客户端的数量和类型也可根据具体应用场景设置,本实施例对其不做限制。例如在一些示例中,参见图5所示,第一Modbus客户端可为但不限于第一工业控制适配器ICA,Modbus服务端可采用但不限于工业集中控制装置,例如DCS(Distributed Control System,分布式控制系统)平台或IoT(Internet of things,物联网)平台。
在本实施例中,第一Modbus客户端与Modbus服务端之间通过图3所示的握手过程建立至少两条Modbus SCTP路径:
第一次握手:第一Modbus客户端向Modbus服务端发送INIT消息;本实施例中的INIT消息为初始化消息,该INIT消息告诉Modbus服务端第一Modbus客户端的IP地址清单、初始序列号、用于标识本关联中所有分组的起始标记、第一Modbus客户端请求的外出流的数目以及第一Modbus客户端能够支持的外来流的数目。
第二次握手:Modbus服务端根据INIT消息向第一Modbus客户端发送INIT_ACK的消息后,释放本次建链的资源,INIT_ACK的消息中包括本次建链所需信息。本实施例中,Modbus服务端收到这个INIT消息后,准备好建立本次连接所需要的相关信息(例如可包括但不限于Modbus服务端的IP地址清单、初始序列号、起始标记、Modbus服务端请求的外出流的数目、Modbus服务端能够支持的外来流的数目以及一个状态State Cookie。状态StateCookie包含服务器用于确信本关联有效所需的所有状态,它是数字化签名过的,以确保其有效性),并将这些信息放在一个叫“State Cookie”的数据块中,接下来Modbus服务端给Modbus客户端发送一个INIT_ACK的消息,INIT_ACK中包含了这个“State Cookie”,同时服务端会把和本次链接相关的所有资源释放掉,不维护任何资源和状态。
第三次握手:第一Modbus客户端向Modbus服务端发送COOKIE_ECHO消息,COOKIE_ECHO消息中包括本次建链所需信息。在本实施例中,第一Modbus客户端收到INIT_ACK后会把里面的“StateCookie”信息取出来重新封装一个COOKIE_ECHO发往Modbus服务端。
第四次握手:Modbus服务端从COOKIE_ECHO消息中获取本次建链所需信息进行建链。本实施例中,服务端收到COOKIE_ECHO消息后再次取出其中的“State Cookie”,依据“State Cookie”中存储的信息建立本次链接,并向请求端发送COOKIE_ACK消息。
本实施例中为了避免SYN Flooding攻击,Modbus服务端根据INIT消息向第一Modbus客户端发送INIT_ACK的消息后,释放本次建链的资源,也即Modbus服务端不会维半链接信息,而是把半链接信息发给第一Modbus客户端,如果第一Modbus客户端确实需要建立这个链接,第一Modbus客户端后续就会再将半链接信息回送给Modbus服务端,因此即使受到了SYN Flooding攻击,Modbus服务端也不会因为需要维护大量的半连接列表而消耗非常多的资源,可很好的避免SYN Flooding攻击,提升系统的可靠性。
本实施例中,第一Modbus客户端与Modbus服务端之间通过建立的至少两条ModbusSCTP路径进行信息交互,这样即使其中的某一条Modbus SCTP路径故障或中断,第一Modbus客户端与Modbus服务端之间仍可通过其他的Modbus SCTP路径正常的进行信息交互,从而可进一步提升Modbus通信的可靠性,能更好的智能工厂的对生产设备的实时控制要求和可靠性要求。应当理解的是,本实施例中第一Modbus客户端与Modbus服务端之间建立的Modbus SCTP路径的数量可灵活设置,例如可以建立两条Modbus SCTP路径,四条ModbusSCTP路径等。且在本实施例中,不同第一Modbus客户端与Modbus服务端之间建立的ModbusSCTP路径数量可以相同,也可不同,具体也可根据应用需求灵活设置。例如参见图4所示,其中一个第一Modbus客户端与Modbus服务端之间建立两条Modbus SCTP路径,另一个第一Modbus客户端与Modbus服务端之间建立四条Modbus SCTP路径。本实施例中,一个第一Modbus客户端与Modbus服务端之间所建立的多条Modbus SCTP路径在后续使用时,可以将其中一部分Modbus SCTP路径作为主路径,剩余的Modbus SCTP路径作为备路径,当主路径中断或故障时,切换到备路径使用。当然,在另一些示例中,也可直接在多条Modbus SCTP上直接进行数据交互而设置主备关系。
在本实施例的一些示例中,为了提升通信系统的智能性和便利性,可采用ModbusSCTP服务端的IP地址的自动发现,从而省略IP地址的手动配置。在本示例中,第一Modbus客户端向Modbus服务端发送INIT消息之前,还可包括:第一Modbus客户端向Modbus服务端发送UDP组播报文以请求获取Modbus服务端的IP地址和端口,然后第一Modbus客户端根据获取的Modbus服务端的IP地址和端口向Modbus服务端发送INIT消息。一种示例的IP地址的自动发现过程参见图6所示,其包括:
第一Modbus客户端主动发起UDP组播报文,请求Modbus服务端的IP地址信息,Modbus服务端相关服务响应该UDP组播报文,回应Modbus服务端的IP地址、端口。第一Modbus客户端获取到Modbus服务端的IP地址、端口后,主动发起SCTP建链请求,通过四次握手完成SCTP建链,实现Modbus SCTP的地址自动发现、免配置。当然,在一些示例中,ModbusSCTP服务端的IP地址也可替换为手动配置,并不限于自动发现。
在本实施例中,Modbus通信系统还可包括至少一个第二Modbus客户端;第二Modbus客户端与Modbus服务端之间建立至少一条Modbus TCP路径;第二Modbus客户端与Modbus服务端之间利用至少一条Modbus TCP路径进行信息交互。也即本实施例中的Modbus通信系统可以兼容现有Modbus通信系统,兼容性和通用性好。
在本实施例中,Modbus通信系统中包括的Modbus客户端的具体数量可灵活设置,且哪些Modbus客户端作为第一Modbus客户端,哪些Modbus客户端作为第二Modbus客户端也可灵活设置。例如在一些应用场景中,可以设置对于可靠性要求高的Modbus客户端作为第一Modbus客户端,对于可靠性要求一般或较低的Modbus客户端作为第二Modbus客户端。也即,在本实施例中,可以设置第一Modbus客户端的可靠性优先级大于第二Modbus客户端的可靠性优先级。
参见图2至图5所示,在本实施例中的Modbus通信系统还包括至少一个生产设备,第一Modbus客户端和第二Modbus客户端与至少一个生产设备通信连接,生产设备与第一Modbus客户端和/或第二Modbus客户端之间通过通信连接进行信息交互。其中第一Modbus客户端利用至少两条Modbus SCTP路径向Modbus服务端发送的信息包括从生产设备采集的设备信息;第一Modbus客户端可以通过但不限于定期采集或动态采集或其他方式主动的从生产设备采集设备信息,生产设备也可主动向第一Modbus客户端发送设备信息。本实施例中的Modbus服务端利用至少两条Modbus SCTP路径向第一Modbus客户端发送的信息包括用于控制生产设备的设备控制信息。相应的,本实施例中第二Modbus客户端和Modbus服务端之间交互的信息也可包括但不限于上述示例的信息,在此不再一一赘述。
在本实施例中,第一Modbus客户端和第二Modbus客户端与生产设备之间的通信连接,可以采用但不限于Modbus tcp、Modbus rtu、Modbus ascii、西门子S7、串口协议RS232/RS422/RS485等传输协议。且生产设备与第一Modbus客户端和第二Modbus客户端之间的物理接口可承载但不限于以太网(有线)、串口(例如232/422/485)。
本实施例中,第一Modbus客户端与Modbus服务端之间建立的Modbus SCTP路径可支持AP组网、蜂窝网(例如4G\5G等)组网、有线交换机组网中的至少一种;且可根据具体应用场景灵活设置。例如参见图5中左边的第一工业控制适配器A(即第一Modbus客户端)与Modbus服务端之间建立的两条Modbus SCTP路径,就可至少支持以下6种组网方式:组网方式1:路径1,路径2都是无线AP组网;组网方式2:路径1,路径2都是有线组网;组网方式3:两条路径都是5G;组网方式4:一条路径为无线组网、一条路径为有线组网;组网方式5:一条路径为无线组网、一条路径为5G组网;组网方式6:一条路径为有线组网、一条路径为5G组网。具体可根据客户要求灵活组网,可更好的满足各种组网场景需求。
在本实施例中,第二Modbus客户端与Modbus服务端建立至少一条Modbus TCP路径进行数据交互时,为了进一步提升通信的可靠性,在一些示例中,也可设置第二Modbus客户端向Modbus服务端发送至少两个Modbus TCP建链帧,以与Modbus服务端建立至少两条Modbus TCP路径;第二Modbus客户端将待发送的消息通过建立的至少两条Modbus TCP路径同时向Modbus服务端发送,且可并通过这至少两条Modbus TCP路径接收Modbus服务端发送的消息,这样即使其中的某一条Modbus TCP路径故障或中断,第二Modbus客户端与Modbus服务端之间仍可通过其他的Modbus TCP路径正常的进行信息交互,从而可提升第二Modbus客户端与Modbus服务端之间通信的可靠性,能更好的智能工厂的对生产设备的实时控制要求和可靠性要求。
另外,本实施例中,第二Modbus客户端可将通过至少两条Modbus TCP路径从Modbus服务端接收的消息进行去重处理,并仅对重复的消息中的一个进行处理;Modbus服务端将通过至少两条Modbus TCP路径从第二Modbus客户端接收的消息进行去重处理,并仅对重复的消息中的一个进行处理,从而避免第二Modbus客户端和Modbus服务端对重复消息进行重复处理,可在提升通信的可靠性的同时,保证资源利用率以及消息处理的及时性。
在本实施例的一些示例中,第二Modbus客户端发送的Modbus TCP建链帧可包括第二Modbus客户端的唯一识别标识,该第二Modbus客户端的唯一识别标识可以包括各种能唯一识别第二Modbus客户端各种标识信息中的至少之一,例如可以包括但不限于设备ID。这样Modbus服务端在收到第二Modbus客户端发送的Modbus TCP建链帧后,即可根据ModbusTCP建立帧中的唯一识别标识识别出所接收到的Modbus TCP建链帧是哪个第二Modbus客户端发送的,以及哪些Modbus TCP建链帧是同一个Modbus客户端发送的,从而便于后续控制建立Modbus TCP路径。
本实施例中第二Modbus客户端判断两条消息是否重复,可以判断两条消息的内容是否相同,或两条消息中是否包含有相同的消息识别信息,本实施例中设不同的消息所包括的消息识别信息不同,例如消息通过Modbus消息帧的发送时,可以在Modbus消息帧中设置帧序号,且不同的Modbus消息帧中的帧序号不同。其中不同Modbus消息帧中的帧序号可以采用递增或递减或其他规则或算法进行确认,只要能保证不同Modbus消息帧的帧序号不同即可。
本实施例中,Modbus服务端的负载均衡器用于接收第二Modbus客户端发送的至少两个Modbus TCP建链帧,根据唯一识别标识,将来自同一第二Modbus客户端的Modbus TCP建链帧在Modbus服务端的同一Modbus处理模块和第二Modbus客户端之间建立至少两条Modbus TCP路径,例如负载均衡器将包含同一ID的Modbus TCP建链帧进行一致性hash分布,保证同一个第二Modbus客户端发送的至少两个Modbus TCP建链帧在负载均衡器重新发起这两条Modbus TCP建链时,向Modbus服务端内的同一个Modbus处理模块发起建链请求;从而在Modbus服务端的一个Modbus处理模块与第二Modbus客户端之间建立至少两条Modbus TCP路径。本实施例中对于每一条Modbus TCP路径的建立过程不做限制,可以采用但不限于现有的各种Modbus TCP路径建立方式。
本实施例中,Modbus服务端的Modbus处理模块与第二Modbus客户端建立好至少两条Modbus TCP路径后,Modbus服务端的Modbus处理模块用于通过至少两条Modbus TCP路径向第二Modbus客户端发送消息,这样即使其中的一条或一部分Modbus TCP路径故障或中断时,Modbus服务端的Modbus处理模块还可采用其他Modbus TCP路径向第二Modbus客户端发送消息,从而提升系统下行数据传输的可靠性。Modbus服务端的Modbus处理模块还通过至少两条Modbus TCP路径接收第二Modbus客户端发送的消息,这样即使某一条Modbus TCP路径出现故障或中断,Modbus服务端也可通过其他Modbus TCP路径接收到第二Modbus客户端发送的消息,从而提升上行数据发送的可靠性以及系统的容灾性,能更好的智能工厂的对生产设备的实时控制要求和可靠性要求。
在本实施例的一些示例中,Modbus服务端可以对从第二Modbus客户端接收到的消息进行一一处理。但为了提升Modbus服务端的资源利用率以及消息处理的及时性,Modbus服务端可以对通过至少两条Modbus TCP路径接收的消息进行去重处理,并仅对重复的消息中的一个进行处理。应当理解的是,本实施例中Modbus服务端对消息进行去重的方式可以采用但不限于与上述消息去重的类似做法,在此不再赘述。
应当理解的是,本实施例中在第二Modbus客户端和Modbus服务端之间的建立的Modbus TCP路径的数量可以为2,也可以为3、4、8等,具体可根据具体应用需求灵活设置。且应当理解的是,在本实施例中,当Modbus通信系统包括多个第二Modbus客户端时,每一个第二Modbus客户端与Modbus服务端之间可以都建立两条以上的Modbus TCP路径,也可根据需求设置为:其中一部分第二Modbus客户端与Modbus服务端之间建立两条以上的Modbus TCP路径,另一部分第二Modbus客户端与Modbus服务端之间建立一条Modbus TCP路径。
为了便于理解,本实施例下面分别对第二Modbus客户端和Modbus服务侧在ModbusTCP协议通信方法中的过程进行示例说明。其中,第二Modbus客户端的Modbus TCP协议通信方法包括但不限于:
第二Modbus客户端向Modbus服务端发送至少两个Modbus TCP建链帧,以与Modbus服务端建立至少两条Modbus TCP路径。如上所述,本实施例中Modbus TCP建链帧包括第二Modbus客户端的唯一识别标识,以供Modbus服务端根据唯一识别标识识别发送Modbus TCP建链帧的第二Modbus客户端,并根据识别结果控制建立至少两条Modbus TCP路径。
在本实施例的一些示例中,为了提升通信系统的智能性和便利性,可采用ModbusTCP协议的IP地址的自动发现,从而省略IP地址的手动配置。在本示例中,第二Modbus客户端向Modbus服务端发送至少两个Modbus TCP建链帧的过程包括但不限于:
第二Modbus客户端向Modbus服务端发送UDP组播报文以请求获取Modbus服务端的IP地址和端口。其中获取Modbus服务端的IP地址和端口的过程参见图5-2所示:第二Modbus客户端主动发起UDP组播报文,请求Modbus服务端的IP地址信息,Modbus服务端相关服务响应该UDP组播报文,回应Modbus服务端的IP地址、端口。第二Modbus客户端获取到Modbus服务端的IP地址、端口后,主动发起TCP建链请求,通过三次交互完成TCP建链请求,实现Modbus TCP的地址自动发现、免配置。
第二Modbus客户端根据获取的Modbus服务端的IP地址和端口生成至少两个Modbus TCP建链帧,并将生成的至少两个Modbus TCP建链帧(都包含第二Modbus客户端的唯一识别标识)发送至Modbus服务端。
第二Modbus客户端将待发送的消息通过至少两条Modbus TCP路径同时向Modbus服务端发送,并通过至少两条Modbus TCP路径接收Modbus服务端发送的消息。例如第二Modbus客户端构建包含消息的Modbus消息帧,Modbus消息帧中包含帧序号,不同的Modbus消息帧中的帧序号不同,例如可帧序号可采用按发送消息序列采用递增或递减或采用其他的算法进行设置。
第二Modbus客户端将Modbus消息帧分别通过至少两条Modbus TCP路径同时向Modbus服务端发送。
第二Modbus客户端将通过至少两条Modbus TCP路径接收的消息进行去重处理,并仅对重复的消息中的一个进行处理。
例如,一种示例中,第二Modbus客户端通过至少两条Modbus TCP路径接收Modbus服务端发送的消息可包括:第二Modbus客户端通过至少两条Modbus TCP路径接收Modbus服务端发送的携带消息的Modbus消息帧,Modbus消息帧包括帧序号;第二Modbus客户端将通过至少两条Modbus TCP路径接收的消息进行去重处理,并仅对重复的消息中的一个进行处理包括:
第二Modbus客户端筛选出帧序号相同的各Modbus消息帧作为重复的Modbus消息帧,并仅对重复的Modbus消息帧中的一个Modbus消息帧进行处理。在本实施例的一些示例中,第二Modbus客户端筛选出帧序号相同的各Modbus消息帧作为重复的Modbus消息帧后,还包括按预警比对规则判断重复的Modbus消息帧的个数与Modbus TCP路径的条数是否相同,如否,则发送通信链路异常预警信息;该通信链路异常预警信息可以向Modbus服务端发送,也可向后台发送,从而便于对异常链路进行及时的修复或重新建立新的链路等,进一步提升系统的可靠性。在本实施例中,预警比对规则可以设置为连续N次比对结果为不一致(N取大于等于1的整数)或连续的T时间段内的比对结果不一致等,具体可根据应用需求灵活设置,从而可避免乒乓效应。
可见,本实施例通过Modbus支持Modbus TCP多路径实时传输,可提高Modbus通信的高可靠性、实时性,满足工业5个9以上的高可靠控制、10ms级时延控制要求。且通过实现Modbus协议的服务端IP地址自动发现,实现通信协议的IP地址自动发现、免配置,提升系统的智能性。且可应用到所有工业的工厂级、工业过程控制对通信高可靠性、实时性的场景。
本实施例还提供了一种通信设备,该通信设备可以为Modbu客户端或Modbu服务端,其包括处理器、存储器及通信总线,其中:通信总线用于实现处理器和存储器之间的连接通信;处理器用于执行存储器中存储的一个或者多个计算机程序,以执行上述的Modbus通信方法中的至少一个步骤。
本实施例还提供了一种计算机可读存储介质,该计算机可读存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、计算机程序模块或其他数据)的任何方法或技术中实施的易失性或非易失性、可移除或不可移除的介质。计算机可读存储介质包括但不限于RAM(Random Access Memory,随机存取存储器),ROM(Read-Only Memory,只读存储器),EEPROM(Electrically Erasable Programmable read only memory,带电可擦可编程只读存储器)、闪存或其他存储器技术、CD-ROM(Compact Disc Read-Only Memory,光盘只读存储器),数字多功能盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。
本实施例中的计算机可读存储介质可用于存储一个或者多个计算机程序,其存储的一个或者多个计算机程序可被处理器执行,以执行上述的Modbus通信方法中的至少一个步骤。
可见,本领域的技术人员应该明白,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件(可以用计算装置可执行的计算机程序代码来实现)、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些物理组件或所有物理组件可以被实施为由处理器,如中央处理器、数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。
此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、计算机程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。所以,本发明不限制于任何特定的硬件和软件结合。
以上内容是结合具体的实施方式对本发明实施例所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。
Claims (9)
1.一种Modbus通信系统,其特征在于,包括Modbus服务端和至少一个第一Modbus客户端;
所述第一Modbus客户端与所述Modbus服务端之间通过以下握手过程建立至少两条Modbus SCTP路径,所述Modbus SCTP路径支持AP组网、蜂窝网组网、有线交换机组网中的至少一种:
所述第一Modbus客户端向所述Modbus服务端发送INIT消息;
所述Modbus服务端根据所述INIT消息向所述第一Modbus客户端发送INIT_ACK的消息后,释放本次建链的资源,所述INIT_ACK的消息中包括本次建链所需信息;
所述第一Modbus客户端向所述Modbus服务端发送COOKIE_ECHO消息,所述COOKIE_ECHO消息中包括本次建链所需信息;
所述Modbus服务端从所述COOKIE_ECHO消息中获取本次建链所需信息进行建链;
所述第一Modbus客户端与所述Modbus服务端之间利用所述至少两条Modbus SCTP路径进行信息交互。
2.如权利要求1所述的Modbus通信系统,其特征在于,所述Modbus通信系统还包括至少一个第二Modbus客户端;
所述第二Modbus客户端与所述Modbus服务端之间建立至少一条Modbus TCP路径;
所述第二Modbus客户端与所述Modbus服务端之间利用所述至少一条Modbus TCP路径进行信息交互。
3.如权利要求2所述的Modbus通信系统,其特征在于,所述Modbus通信系统还包括至少一个生产设备,所述第一Modbus客户端和所述第二Modbus客户端与至少一个所述生产设备通信连接,所述生产设备与所述第一Modbus客户端和/或所述第二Modbus客户端之间通过所述通信连接进行信息交互。
4.如权利要求2所述的Modbus通信系统,其特征在于,所述第一Modbus客户端的可靠性优先级大于所述第二Modbus客户端的可靠性优先级。
5.如权利要求3所述的Modbus通信系统,其特征在于,所述第一Modbus客户端利用所述至少两条Modbus SCTP路径向所述Modbus服务端发送的信息包括从所述生产设备采集的设备信息;
所述Modbus服务端利用所述至少两条Modbus SCTP路径向所述第一Modbus客户端发送的信息包括用于控制所述生产设备的设备控制信息。
6.如权利要求1-5任一项所述的Modbus通信系统,其特征在于,所述第一Modbus客户端向所述Modbus服务端发送INIT消息之前,还包括:
所述第一Modbus客户端向所述Modbus服务端发送UDP组播报文以请求获取所述Modbus服务端的IP地址和端口;
所述第一Modbus客户端根据获取的所述Modbus服务端的IP地址和端口向所述Modbus服务端发送INIT消息。
7.一种Modbus通信方法,其特征在于,包括:
第一Modbus客户端与Modbus服务端之间通过以下握手过程建立至少两条Modbus SCTP路径,所述Modbus SCTP路径支持AP组网、蜂窝网组网、有线交换机组网中的至少一种:
所述第一Modbus客户端向所述Modbus服务端发送INIT消息;
所述Modbus服务端根据所述INIT消息向所述第一Modbus客户端发送INIT_ACK的消息后,释放本次建链的资源,所述INIT_ACK的消息中包括本次建链所需信息;
所述第一Modbus客户端向所述Modbus服务端发送COOKIE_ECHO消息,所述COOKIE_ECHO消息中包括本次建链所需信息;
所述Modbus服务端从所述COOKIE_ECHO消息中获取本次建链所需信息进行建链;
所述第一Modbus客户端与所述Modbus服务端之间利用所述至少两条Modbus SCTP路径进行信息交互。
8.如权利要求7所述的Modbus通信方法,其特征在于,所述Modbus通信方法还包括:
第二Modbus客户端与所述Modbus服务端之间建立至少一条Modbus TCP路径;
所述第二Modbus客户端与所述Modbus服务端之间利用所述至少一条Modbus TCP路径进行信息交互。
9.如权利要求8所述的Modbus通信方法,其特征在于,所述第二Modbus客户端与所述Modbus服务端之间建立至少一条Modbus TCP路径包括:
所述第二Modbus客户端与所述Modbus服务端之间建立至少两条Modbus TCP路径;
所述第二Modbus客户端与所述Modbus服务端之间利用所述至少两条Modbus TCP路径进行信息交互。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210286612.6A CN114745221B (zh) | 2022-03-22 | 2022-03-22 | Modbus通信系统及通信方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210286612.6A CN114745221B (zh) | 2022-03-22 | 2022-03-22 | Modbus通信系统及通信方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114745221A CN114745221A (zh) | 2022-07-12 |
CN114745221B true CN114745221B (zh) | 2023-09-26 |
Family
ID=82278111
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210286612.6A Active CN114745221B (zh) | 2022-03-22 | 2022-03-22 | Modbus通信系统及通信方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114745221B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101841463A (zh) * | 2010-03-05 | 2010-09-22 | 清华大学 | 基于sctp的多路径并发传输方法 |
CN102315918A (zh) * | 2010-07-06 | 2012-01-11 | 大唐移动通信设备有限公司 | 一种tcp连接与sctp连接互通的方法及装置 |
CN110912921A (zh) * | 2019-11-29 | 2020-03-24 | 广东工业大学 | 一种工业控制系统安全数据校验系统及方法 |
CN210380890U (zh) * | 2019-08-28 | 2020-04-21 | 杭州和利时自动化有限公司 | 一种Modbus设备的通讯系统及SIS系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7447762B2 (en) * | 2001-04-02 | 2008-11-04 | Curray Timothy G | Ethernet communications for power monitoring system |
-
2022
- 2022-03-22 CN CN202210286612.6A patent/CN114745221B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101841463A (zh) * | 2010-03-05 | 2010-09-22 | 清华大学 | 基于sctp的多路径并发传输方法 |
CN102315918A (zh) * | 2010-07-06 | 2012-01-11 | 大唐移动通信设备有限公司 | 一种tcp连接与sctp连接互通的方法及装置 |
CN210380890U (zh) * | 2019-08-28 | 2020-04-21 | 杭州和利时自动化有限公司 | 一种Modbus设备的通讯系统及SIS系统 |
CN110912921A (zh) * | 2019-11-29 | 2020-03-24 | 广东工业大学 | 一种工业控制系统安全数据校验系统及方法 |
Non-Patent Citations (1)
Title |
---|
"SCTP在工业以太网通信技术中的应用研究";李爱国;《现代电子技术》;160-162页 * |
Also Published As
Publication number | Publication date |
---|---|
CN114745221A (zh) | 2022-07-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108512885B (zh) | 用于网络包处理的方法、系统和存储介质 | |
US7532577B2 (en) | Managing transmission control protocol (TCP) connections | |
EP3435627A1 (en) | Method of controlling service traffic between data centers, device, and system | |
CN110855792B (zh) | 一种消息推送方法、装置、设备及介质 | |
US9391864B2 (en) | Internet service control method, and relevant device and system | |
CN107645517B (zh) | 数据推送方法及装置 | |
EP3873067A1 (en) | Data transmission method and apparatus | |
CN112398689B (zh) | 网络恢复方法、装置、存储介质及电子设备 | |
WO2020199686A1 (zh) | 一种提供边缘服务的方法、系统及计算设备 | |
CN110798329A (zh) | 物联网网关接入方法、设备以及存储介质 | |
CN111885644B (zh) | 一种有线网络和无线网络自动切换的方法 | |
WO2018103665A1 (zh) | 基于l2tp的设备管理方法、设备及系统 | |
CN116048538B (zh) | 用于dpu的服务网格部署方法及装置 | |
CN111010319B (zh) | 基于vsf的链路检测方法及装置 | |
CN106817267B (zh) | 一种故障检测方法和设备 | |
CN114745221B (zh) | Modbus通信系统及通信方法 | |
CN110661836B (zh) | 消息路由方法、装置及系统、存储介质 | |
KR20200072941A (ko) | 실시간 오류 감지를 통한 vrrp 기반의 네트워크 장애 대응 방법 및 장치 | |
CN114726673B (zh) | Modbus TCP协议通信方法及通信系统 | |
CN112866133B (zh) | 用于获取共用最大分段大小mss的方法及装置 | |
CN113411228A (zh) | 一种网络状况的确定方法及服务器 | |
US20150200813A1 (en) | Server connection apparatus and server connection method | |
CN111786840A (zh) | 基于网络接入平台的网关切换方法及装置 | |
CN114338479B (zh) | 通讯方法、装置和系统 | |
CN111049754B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |