北岛夜话
原创工业智能控制领域(PLC、单片机/嵌入式、机器人、通信、机器视觉)的技术及经验分享。
文章545 浏览8635174

西门子PLC以太网开放式用户通信连载(5)-TUSEND

前面的文章我们介绍了西门子开放式用户通信(Open User Communication)中用于建立连接的指令-TCON;用于TCP、ISO-ON-TCP协议的数据接收指令-TRCV;用于UDP协议的数据接收指令-TURCV;用于TCP、ISO-ON-TCP的数据发送指令-TSEND。今天这篇文章,我们来介绍下用于UDP协议的数据发送指令:TUSEND。

cover.png

TUSEND指令基于UDP(RFC768)协议来发送数据,这是一种没有应答机制的通信协议。也就是说,发送方并不关心发送的数据是否已经被成功接收,接收方也不提供任何反馈。UDP协议的优势在于可以快速的发送大量的数据,但是由于没有应答机制,可能会出现数据丢失的现象。更多信息可以参考这篇文章:UDP协议通信需要建立连接吗?

下面我们来介绍TUSEND指令的使用方法。

首先在指令列表中找到TUSEND,如下图:

TUSEND_Instruction_list.PNG

将TUSEND指令拖拽到程序块中,系统会自动提示为其添加背景数据块。可以选择独立背景数据块(Single Instance DB)或者多重背景数据块(Multi Instance DB),如下图:

TUSEND_DB.png

本例程我们选择独立背景数据块,并使用默认的名称:TUSEND_DB。点击【OK】确认,TUSEND指令便被添加到程序块中,如下图:

TUSEND_Init.PNG

各参数的含义如下:

  • REQ:请求发送数据,需要信号的上升沿(Rising Edge);

  • ID:使用TCON指令建立的通信ID号;

  • LEN:发送数据的长度,以字节为单位,范围为1~1472;

  • DATA:指向发送数据区域的指针。可以是数据输入/输出缓存区、位存储区或者数据块;

  • ADDR:指向TADDR_Param数据块的指针。数据类型为TADDR_Param的数据块,包含了通信伙伴的IP地址及端口号等信息;

  • DONE:数据是否已经发送完成,1=发送完成;

  • BUSY:是否正在发送数据,1=正在发送数据;

  • ERROR:发送过程是否有错误,0=没有错误,1=有错误;

  • STATUS:发送数据的状态字,如果ERROR为1,会将相应的错误代码写到STATUS中;

TADDR_Param参数保存了通信伙伴的IP地址和端口号。当连续对多个不同的通信伙伴(不同IP或端口)发送UDP数据时,仅需调整TADDR_Param参数,而不需要重新调用TCON指令和TDISCON指令来建立或断开连接。

这里,重点介绍下TADDR_Param参数。

新建一个DB块,名称为“DB_TADDR_Param_Send”,将其类型设置为“TADDR_Param”,如下图:

TADDR_DB.png

点击【OK】确认。打开新建的数据块可以看到其中包含了远程通信伙伴的IP地址(REM_IP_ADDR)和端口号(REM_PORT_NR),如下图:

TADDR_DB_content.PNG

通过对该DB块内容的修改,就可以更改TUSEND的通信伙伴的参数,达到向多个通信伙伴发送数据的目的。

完整的TUSEND指令如下图:

TUSEND_Complete.png

好了,关于基于UDP协议的数据发送指令TUSEND就先介绍到这里,欢迎扫描下方的二维码关注我们的微信公众号。


小程序【李工谈工控】提供方便的检索功能,欢迎扫描右侧的卡片体验。


取消

感谢您的支持,欢迎常来看看!

扫码支持
一点动力,多少随意

打开支付宝扫一扫,即可进行扫码打赏哦

发表评论