UDP协议通信需要建立连接吗?
在西门子PLC的开放式以太网通信(Open User Communication)中,无论是使用TCP协议还是UDP协议,首先都需要使用函数TCON来建立连接。善于思考的小伙伴们肯定会提出一个问题:UDP协议不是面向非连接的协议吗?为什么还需要使用TCON来建立通信连接呢?今天这篇文章,我们就来回答这个问题。
我们把TCP协议和UDP协议做个对比,首先明确结论:TCP是面向连接的协议;UDP是面向非连接的协议。这里的“连接”,是指通信双方在协议层上建立的一条专用的数据传输通道。
TCP协议是有真实的数据传输通道的,它的执行跟打电话的过程很类似。一个人要想给另一个人打电话,首先要拨号,一旦对方接起电话,两人之间就建立了一条专用的通信信道。如果出现断线,则需要重新拨号,再次建立连接才能继续通话。TCP的传输过程也是类似的,通信的发起方必须和接收方建立连接,才能进行通信。一旦连接中断,则需要重新请求建立连接。TCP的传输具有确认机制,是可靠的、安全的。当然,相对慢些。
UDP协议则不同,它不需要在两个通信伙伴之间建立真实的通信信道,其执行过程跟写信很类似。寄信人将收信人的名称和地址写到信封上,然后把信投到邮箱。至于这封信是顺利到达收信人的手中还是在中途遗失了,它完全不管。UDP协议没有确认重传机制,不需要在通信伙伴之间建立通信连接,因此把它称作是“面向非连接”的协议。其优点是传输速度较快。
好了,那么问题来了。既然UDP是面向非连接的协议,为什么在西门子PLC的开放式以太网通信(Open User Communication)中,在使用UDP传输前,要调用TCON函数来建立“连接”?
其实,TCON函数即可用于TCP传输的连接,也可用于UDP传输的连接。用于TCP通信时,它是真实在通信伙伴之间建立连接;而用于UDP通信时,它只是用来配置通信的参数(比如,通信伙伴的IP地址和端口号)。用户程序通过调用TCON函数把UDP的通信参数交给PLC的操作系统,之后它就不管了。操作系统负责把这些信息以UDP报文的形式发送出去。因此,在UDP通信时,TCON函数是在用户程序和操作系统之间建立了“连接”,而不是与通信伙伴建立连接,此“连接”非彼“连接”。
下面这张图,是博途(Portal)环境下TCON函数的方框图:
好了,关于西门子PLC开放式以太网通信的连接函数TCON就介绍到这里。
-
神器:5秒钟搞定赝电容k1拟合、绘图、计算电容贡献率 2020-06-25
-
化工设计之工程图纸(这篇文章给你讲全了) 2020-07-03
-
工具:赝电容k1Tool-v2.6解决拟合交叉问题 2020-06-25
-
断续焊焊接符号 2021-10-14
-
板式塔设计核心:负荷性能图(水力学图) 2020-07-03
-
应急管理部已明确:临时性登高作业属于特种作业!需要取证 2021-10-18
-
PDMS12.1sp4安装教程 2020-07-03
-
话说LED灯的利用系数 2020-07-04
-
一张图讲清楚断路器的工作原理 2020-07-10
-
引起管道振动的主要原因及消振措施 2020-12-06