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

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

上一篇文章我们介绍了西门子基以太网的开放式用户通信中用来建立连接的指令:TCON。今天这篇文章,我们来介绍用于TCP协议的数据接收指令:TRCV。

cover1.png

TRCV指令用来完成对TCP、ISO-ON-TCP协议的数据接收(不支持UDP协议),当接收到有效数据时,NDR参数会被置1,RCVD_LEN的值表示实际接收到的数据的长度(字节为单位)。

下面我们在博途(Portal)平台下来看看TRCV指令的具体用法:

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

TRCV_Instruction.PNG

将其拖拽到程序块中,系统会自动添加该指令的背景数据块(与之前的TCON指令类似),如下图:

TRCV_DB.png

我们选择使用默认的名称:TRCV_DB,独立背景数据块(Single instance DB)。点击【OK】确认,系统会在【系统块(system block)】-【程序资源(Program resources)】中添加该数据块。

程序块中新建的TRCV指令如下图:

TRCV.png

下面来介绍下该指令各参数的含义:

  1. EN_R:接收使能,该参数为1时才能接收数据;

  2. ID:连接ID,之前调用TCON指令所成功建立连接的ID;

  3. LEN:接收缓存区的长度,以字节为单位;

  4. ADHOC:是否开启ad-hoc模式,默认(FLASE)不开启;

  5. DATA:指向接收数据的指针;

  6. NDR:New Data Received,1=接收到新数据,0=没有接收到新数据;

  7. BUSY:1=正在接收数据,0=未开始接收数据或已经接收完成;

  8. ERROR:接收过程中是否有错误发生。0=没有错误,1=有错误;

  9. STATUS:接收过程的状态值;

  10. RCVD_LEN:实际接收的数据长度,字节为单位;

关于ad-hoc模式的数据接收:

  • ad-hoc模式可以用来接收长度不确定的数据。在TCP协议下,可以开启ad-hoc模式,其方法是将LEN参数设置为0并且将ADHOC参数设置为TRUE;对于标准访问的数据块,ad-hoc支持所有的数据类型;对于经过访问优化的数据块,ad-hoc模式支持以数组(ARRAY)、字节(BYTE)或者其它8位(bits)的数据方式进行访问。

  • 当接收数据的长度已确定时,将LEN参数设置为要接收的数据的长度(比如:100字节),将ADHOC参数设置为“False”。这种情况下,只有当接收到的数据长度等于LEN设置的长度时,数据才会有效。当数据接收完成并且有效时,NDR(New Data Received)会被置1。

数据接收过程中,如果发生错误,ERROR会被置1;相关的状态会被记录在状态值STATUS参数中。关于STATUS的详细描述,请看下面这张表格:

TRCV_Status.png

设置好参数的TRCV指令如下图:

TRCV_Complete.PNG

好了,关于西门子基于以太网的开放式用户通信用于TCP(ISO-ON-TCP)协议的数据接收指令—TRCV就先介绍到这里,欢迎扫描下方的二维码关注我们的微信公众号。


已经过安全软件检测无毒,请您放心下载。

取消

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

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

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

发表评论