掌桥专利:专业的专利平台
掌桥专利
首页

基于UDP的通信方法、设备及系统

文献发布时间:2024-01-17 01:19:37


基于UDP的通信方法、设备及系统

技术领域

本发明涉及通信技术领域,具体涉及一种基于UDP(User Datagram Protocol,用户数据报协议)的通信方法、设备及系统。

背景技术

PLC(Programmable Logic Controller,可编程逻辑控制器)是一种数字运算操作的电子系统,其将计算机、自动控制和通讯技术融为一体,是实现单机、车间、工厂自动化的核心设备。

PLC具有逻辑控制、过程控制、运动控制、联网通信等多种功能,但由于PLC自身的局限性,为了满足用户在数据处理、人机交互、与其他系统,如ERP(Enterprise ResourcePlanning,企业资源计划)系统等交互方面的更高要求,通常需要将PLC与上位机通信,实现PLC网络化,扩大其联网功能。而实现该联网功能的基础是PLC能够与上位机进行可靠、稳定、高效率通信。

如图1所示,在现有技术中,PLC与上位机通信方式采用的是TCP/IP(TransmissionControl Protocol/Internet Protocol,传输控制协议/网际协议)通信或者借助外部软件OPC(OLE(Object Linking and Embedding,对象连接与嵌入)for Process Control,应用于过程控制的OLE)进行通信。

如果采用TCP/IP完成通信,则需要上位机11和PLC12在TCP协议层进行编程,技术难度较大,而且通信开销大,要求PLC的内存较大,通信成本昂贵,一般大型PLC中使用,难以在中小企业中推广使用。

如果采用OPC完成通信,则需要借助OPC软件。首先,购买OPC软件需要授权,会增加成本;其次,PLC需要与上位机根据实际情况进行灵活处理各种数据,OPC很难达到要求。最后,如果OPC软件开发商未开发此类PLC,则会更难以完成两者之间的通信。

发明内容

本发明提供一种基于UDP的通信方法、设备及系统,可以简单方便地实现不同设备之间的通信,并保证通信的稳定、可靠、高效性。

为此,本发明提供如下技术方案:

本发明提供一种基于UDP的通信方法,所述方法包括:

第一设备通过UDP协议与第二设备建立连接,并维护与所述第二设备的连接;

在需要向第二设备发送应用消息时,将所述应用消息封装为UDP应用数据包;

采用丢失重传机制通过所述连接将所述UDP应用数据包发送给所述第二设备。

可选地,所述第一设备通过UDP协议与第二设备建立连接包括:

第一设备向第二设备发送UDP激活连接数据包;

接收到所述第二设备返回的UDP心跳数据包后,确定与所述第二设备的链路畅通,并记录与所述第二设备的连接正常。

可选地,所述维护与所述第二设备的连接包括:

按照设定周期向所述第二设备发送UDP链路监测数据包;

如果发送UDP链路监测数据包后设定时间内未收到所述第二设备返回的UDP心跳数据包,则确定与所述第二设备的链路断开,并记录与所述第二设备的连接异常。

可选地,所述维护与所述第二设备的连接还包括:在确定与所述第二设备的链路断开后,重新通过UDP协议与第二设备建立连接。

可选地,所述方法还包括:接收到所述第二设备返回的确认消息后,确定所述UDP应用数据包发送成功。

可选地,所述方法包括:

第二设备需要向第一设备发送应用消息时,将所述应用消息封装为UDP应用数据包;

采用丢失重传机制通过所述第一设备预先建立的连接将所述UDP应用数据包发送给所述第一设备。

可选地,所述方法还包括:

接收所述第一设备发送的UDP激活连接数据包;

向所述第一设备返回UDP心跳数据包。

可选地,所述方法还包括:

接收所述第一设备发送的UDP链路监测数据包;

向所述第一设备返回UDP心跳数据包。

可选地,所述方法还包括:如果向所述第一设备返回UDP心跳数据包后设定时间内未收到所述第一设备发送的UDP链路监测数据包,则确定与所述第一设备的连接断开,并记录与所述第二设备的连接异常。

可选地,所述方法还包括:接收到所述第一设备返回的确认消息后,确定所述UDP应用数据包发送成功。

本发明还提供一种通信设备,所述通信设备包括:

连接建立模块;用于通过UDP协议与第二设备建立连接;

连接维护模块,用于维护与所述第二设备的连接;

第一通信模块,用于在需要向第二设备发送应用消息时,将所述应用消息封装为UDP应用数据包;采用丢失重传机制通过所述连接将所述UDP应用数据包发送给所述第二设备。

本发明还提供一种通信设备,所述通信设备包括:

第二通信模块,用于在需要向第一设备发送应用消息时,将所述应用消息封装为UDP应用数据包;采用丢失重传机制通过所述第一设备预先建立的连接将所述UDP应用数据包发送给所述第一设备。

本发明还提供一种通信设备,其特征在于,所述通信设备包括存储器和处理器,所述存储器上存储有可在所述处理器上运行的计算机程序,所述处理器运行所述计算机程序时执行前面所述基于UDP通信方法的步骤。

本发明还提供一种通信系统,所述系统包括:第一设备、以及一个或多个通过网络与所述第一设备连接的第二设备;

所述第一设备,用于通过UDP协议与第二设备建立连接,维护与所述第二设备的连接,在需要向第二设备发送应用消息时,将所述应用消息封装为UDP应用数据包;采用丢失重传机制通过所述连接将所述UDP应用数据包发送给所述第二设备;

所述第二设备,用于在需要向第一设备发送应用消息时,将所述应用消息封装为UDP应用数据包;采用丢失重传机制通过所述第一设备预先建立的连接将所述UDP应用数据包发送给所述第一设备。

可选地,所述第一设备为上位机,所述第二设备为PLC或单片机;或者所述第一设备和所述第二设备均为单片机。

本发明提供的基于UDP的通信方法、设备及系统,基于UDP实现两个不同设备之间的通信,由第一设备通过UDP协议建立与第二设备的连接,并维护该连接。在需要与第二设备交互应用消息时,可以将该应用消息封装为UDP应用数据包,并采用丢失重传机制通过所述连接发送该UDP应用数据包给对方。基于UDP协议实现设备间的通信,相较于现有的基于TCP/IP或者基于OPC实现的设备间的通信,可以降低技术难度,减小通信开销及成本,尤其适用于小型PLC与上位机间的通信。通过监测两设备间的通信链路,一旦有应用消息需要发送时,可以实现即时高效的通信;而且通过对建立的连接的维护、并采用丢失重传机制和避免网络拥塞保证机制,有效地保障了通信的稳定性和可靠性。

本发明方案可以应用于上位机与PLC或单片机之间的通信,也可以应用于不同单片机之间的通信,尤其是在小型PLC领域有广泛的应用前景,可以大大降低PLC与上位机之间通信的使用成本,极大地促进工业化和信息化的通融。

附图说明

图1是现有技术中PLC与上位机通信方式示意图;

图2是本发明实施例提供的基于UDP的通信方法的一种流程图;

图3是本发明实施例提供的基于UDP的通信方法的另一种流程图;

图4是本发明实施例提供的通信设备的一种结构示意图;

图5是本发明实施例提供的通信设备的一种结构示意图;

图6是本发明实施例提供的通信系统的一种结构示意图;

图7是本发明实施例提供的通信系统中不同设备间的消息交互示意图。

具体实施方式

为了使本技术领域的人员更好地理解本发明实施例的方案,下面结合附图和实施方式对本发明实施例作进一步的详细说明。

针对现有技术中PLC与上位机的通信方式存在的缺点,本发明实施例提供一种基于UDP的通信方法、设备及系统,基于UDP实现两个不同设备之间的通信,降低技术实现难度,并可有效保障通信的稳定性和可靠性。本发明方案可适用于上位机与PLC或单片机之间的通信,或者不同单片机之间的通信。

如图2所示,是本发明实施例提供的基于UDP的通信方法的一种流程图,包括以下步骤:

步骤201,第一设备通过UDP协议与第二设备建立连接,并维护与所述第二设备的连接。

具体地,可以在第一设备中配置第二设备的IP地址和端口号等信息,第一设备在启动后,获取配置信息,根据配置信息向第二设备发送UDP激活连接数据包。

需要说明的是,UDP数据包属于传输层报文,在网络层传输时,需要对其添加IP头。具体地,对于上述UDP激活连接数据包,添加IP头,IP头中包括第一设备的IP地址和端口号(即源IP地址和源端口号),以及第二设备的IP地址和端口号(即目的IP地址和目的端口号)。

对于后面提到的各种UDP数据包,传输时同样需要添加相应的IP头,后面将不再一一赘述。

相应地,第二设备接收到所述UDP激活连接数据包后,向第一设备返回UDP心跳数据包。

相应地,第一设备接收到第二设备返回的UDP心跳数据包后,确定与第二设备的链路畅通,并记录与所述第二设备的连接正常。

为了保证在有应用消息需要与第二设备进行通信时能够使所述应用消息及、高效地发送给第二设备,第一设备还需要维护与第二设备的连接,也就是说,监测与第二设备的链路是否畅通,或者说与第二设备的连接是否正常。

具体地,在一种非限制性实施例中,第一设备可以按照设定周期向第二设备发送UDP链路监测数据包。

相应地,第二设备收到上述UDP链路监测数据包后,向第一设备返回UDP心跳数据包。

相应地,第一设备在发送UDP链路监测数据包后,如果在设定时间内收到了第二设备返回的UDP心跳数据包,则表明与第二设备的链路依然畅通;如果在设定时间内未收到第二设备返回的UDP心跳数据包,则确定与第二设备的链路断开,也就是说,不能与第二设备保持正常通信了,此时需要记录与第二设备的连接异常。

进一步地,第一设备在确定与第二设备的连接断开后,可重新通过UDP协议与第二设备建立连接,即一直向第二设备的IP地址发送UDP激活连接数据包,寻址第二设备。另外,第一设备还可通过日志报错,记录与第二设备的连接异常,此种情况可能是链路异常或第二设备异常。

步骤202,在需要向第二设备发送应用消息时,将所述应用消息封装为UDP应用数据包。

具体地,将所述应用消息添加UDP头,封装为UDP应用数据包,将该UDP应用数据包发送给第二设备。

步骤203,采用丢失重传机制通过所述连接将所述UDP应用数据包发送给所述第二设备。

相应地,第二设备接收到所述UDP应用数据包后,向第一设备返回确认消息(Ack)。

相应地,第一设备接收到第二设备返回的确认消息后,确定所述UDP应用数据包发送成功。

所述丢失重传机制是指在发送方发送UDP应用数据包后,如果在设定时间内未收到对方的确认消息(Ack),则启动重传机制,重新发送UDP应用数据包。如果重新发送UDP应用数据包达到设定次数后,依然未收到来自接收方的确认消息(Ack),则确定发送失败。

相应地,如果发送失败,第一设备可记录该应用消息,以便在后续进行相应处理,比如在与第二设备的链路恢复后,重新发送该应用消息;或者根据记录信息进行人工干预等。

需要说明的是,本发明实施例中的第一设备可以是上位机,第二设备可以是PLC或单片机,或者两者均为单片机,对此本发明实施例不做限定。

另外,在实际应用中,所述第一设备可以对应一个或多个第二设备,也说是说,一个第一设备可以同时与多个第二设备通信。

由于现有的基于UDP的通信无拥塞控制机制,在第一设备需要与多个第二设备通信的应用场景下,为解决负载拥塞和效率问题,提供UDP可靠通信,第一设备可以采用多线程方式与多个第二设备通信,每个线程对应一个第二设备,负责对应该第二设备的发送和接收数据通信通道,也就是说,与不同第二设备利用不同的通道进行通信,从而保证了针对不同第二设备的消息发送不会产生拥塞。

另外,在基于UDP的通信中,由于无网络拥塞控制,应用程序必须选择合适大小的报文,若报文太长,传输层将UDP数据包交给网络层后,可能会导致分片,分片后可能导致数据丢失;若UDP数据包太短,传输层将其交给网络层层后,会使IP数据包头部的相对长度较长,降低网络层效率。

为此,在一种非限制性实施例中,还可在第二设备中设置数据块分离机制和消息互斥处理机制,以此来解决基于UDP的负载拥塞和效率问题。

具体地,首先,将需要发送的应用消息的长度控制在合理的范围,以免在将UDP数据包交付网络层时,发生数据包分片,从而丢包;其次,设置本地数据块和发送数据块,将待处理数据依次移动到本地数据块,将本地数据块中待发送数据依次移动到发送数据块进行发送。而且,在将构建的不同UDP数据包移动到本地数据块时为互斥,从而保证本地数据块在同一时间只能收到一种UDP数据包,同时将本地数据块中需要发送的UDP数据包移动到发送数据块进行发送,并清理相关数据,保证下次数据构建和移动。

通过上述单一通道、数据长度控制、以及数据块分离机制和消息互斥处理机制,确保了不会由于负载拥塞而导致丢包现象的发生。

如图3所示,是本发明实施例提供的基于UDP的通信方法的另一种流程图,包括以下步骤:

步骤301,第二设备需要向第一设备发送应用消息时,将所述应用消息封装为UDP应用数据包。

步骤302,采用丢失重传机制通过所述第一设备预先建立的连接将所述UDP应用数据包发送给所述第一设备。

所述第一设备与第二设备建立连接的过程可参照前面图2所示实施例中的描述,相应地,对于第二设备来说,接收第一设备发送的UDP激活连接数据包,向所述第一设备返回UDP心跳数据包。

另外,第二设备还会接收第一设备发送的UDP链路监测数据包,向第一设备返回UDP心跳数据包。

进一步地,在另一种非限制性实施例中,在第二设备向第一设备返回UDP心跳数据包后,如果设定时间内未收到第一设备发送的UDP链路监测数据包,则确定与第一设备的连接断开,并记录与第二设备的连接异常。

进一步地,第二设备接收到第一设备返回的确认消息后,确定所述UDP应用数据包发送成功。

本发明提供的基于UDP的通信方法、设备及系统,基于UDP实现两个不同设备之间的通信,由第一设备通过UDP协议建立与第二设备的连接,并维护该连接。在需要与第二设备交互应用消息时,可以将该应用消息封装为UDP应用数据包,并采用丢失重传机制通过所述连接发送该UDP应用数据包给对方。基于UDP协议实现设备间的通信,相较于现有的基于TCP/IP或者基于OPC实现的设备间的通信,可以降低技术难度,减小通信开销及成本,尤其适用于小型PLC与上位机间的通信。通过监测两设备间的通信链路,一旦有应用消息需要发送时,可以实现即时高效的通信;而且通过对建立的连接的维护、并采用丢失重传机制和避免网络拥塞保证机制,有效地保障了通信的稳定性和可靠性。

相应地,本发明实施例还提供一种通信设备,如图4所示,是该设备的一种结构示意图。

图4所示实施例的通信设备400包括:

连接建立模块401;用于通过UDP协议与第二设备建立连接;

连接维护模块402,用于维护与所述第二设备的连接;

第一通信模块403,用于在需要向第二设备发送应用消息时,将所述应用消息封装为UDP应用数据包;采用丢失重传机制通过所述连接将所述UDP应用数据包发送给所述第二设备。

进一步地,所述第一通信模块403还用于接收到所述第二设备返回的确认消息后,确定所述UDP应用数据包发送成功。

相应地,本发明实施例还提供一种通信设备,如图5所示,是该设备的一种结构示意图。

图5是本发明实施例提供的通信设备的一种结构示意图;

图5所示实施例的通信设备500包括:

第二通信模块501,用于在需要向第一设备发送应用消息时,将所述应用消息封装为UDP应用数据包;采用丢失重传机制通过所述第一设备预先建立的连接将所述UDP应用数据包发送给所述第一设备。

上述图4和图5中各模块的具体实现方式可参照前面的本发明方法实施例中的描述,在此不再赘述。

相应地,本发明实施例还提供一种通信设备,所述通信设备包括存储器和处理器,所述存储器上存储有可在所述处理器上运行的计算机程序,所述处理器运行所述计算机程序时执行图2或图3所示通信方法实施例中的部分或全部的步骤。

相应地,本发明实施例还提供一种通信系统,该通信系统包括:第一设备、以及一个或多个通过网络与所述第一设备连接的第二设备,其中,所述第一设备为上位机,所述第二设备为PLC或单片机;或者所述第一设备和所述第二设备均为单片机。

以上位机和PLC为例,如图6所示,上位机61连接有三个PLC,分别为621、622、623。

上位机61和三个PLC可以采用上述基于UDP的通信方式进行通信,通信方式简单,而且可以保证通信的稳定、可靠、高效性。

下面结合图7所示,详细说明其通信过程。

首先,上位机启动后,在步骤71,上位机向PLC发送UDP激活连接数据包。

相应地,PLC接收到UDP激活连接数据包后,在步骤72,向上位机返回UDP心跳数据包。

相应地,上位机收到上述UDP心跳数据包后,确定与PLC的链路畅通,记录与PLC的连接正常。

然后,在步骤73,上位机周期性地发送UDP链路监测数据包。

相应地,PLC接收到上述UDP链路监测数据包后,在步骤74,向上位机返回UDP心跳数据包。

在上述机需要向PLC发送应用消息时,在步骤75,上位机将应用消息封装为UDP应用数据包,并发送给PLC。

相应地,PLC收到该UDP应用数据包后,在步骤76,PLC向上位机返回确认消息Ack。

当然,如果PLC需要向上位机发送应用消息时,如图7所示,在步骤77,PLC将应用消息封装为UDP应用数据包,并发送给上位机。

相应地,上位机收到该UDP应用数据包后,在步骤78,上位机向PLC返回确认消息Ack。

需要说明的是,上述应用消息的发送采用丢失重传机制,所述丢失重传机制的具体过程在前面已有详细说明,在此不再赘述。

另外,上位机在发送UDP链路监测数据包后一定时间内未收到PLC返回的UDP心跳数据包,或者在发送UDP应用数据包重传失败后,确定与PLC的链路断开,记录与PLC的连接异常。在这种情况下,上位机可以继续寻址PLC,即一直向PLC发送UDP激活连接数据包。进一步地,还可以进行相应提示,以便工作人员能够及时发现链路异常,进行人工干预。

相应地,对于PLC来说,在发送UDP应用数据包重传失败后,确定与上位机的链路断开,记录与上位机的连接异常。同样,还可以进行相应提示,以便工作人员能够及时发现链路异常,进行人工干预。

需要说明的是,在实际应用中,上述UDP激活连接数据包、UDP心跳数据包、以及UDP链路监测数据包可以采用相同的消息内容,也可以采用不同的消息内容,对此本发明实施例不做限定。

利用本发明实施例提供的通信系统,可以使小型PLC简单方便地实现与上位机的通信,大大降低PLC与上位机之间通信的技术难度和使用成本,而且可有效保障通信的稳定性和可靠性。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。而且,以上所描述的系统实施例仅仅是示意性的,其中作为分离部件说明的模块和单元可以是或者也可以不是物理上分开的,即可以位于一个网络单元上,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

以上对本发明实施例进行了详细介绍,本文中应用了具体实施方式对本发明进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及系统,其仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围,本说明书内容不应理解为对本发明的限制。因此,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

技术分类

06120116131576