欢迎来到捷库猫

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

  2021-02-04 阅读:139

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

undefined

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的详细描述,请看下面这张表格:

undefined

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

TRCV_Complete.PNG

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

反对 0举报 0 收藏 0 打赏 0

免责声明:
本站部份内容系网友自发上传与转载,不代表本网赞同其观点;
如涉及内容、版权等问题,请在30日内联系,我们将在第一时间删除内容!

注册有礼

在线咨询

关注微信

微信

下载APP

捷库猫APP