SOCKET_READ
SOCKET_READ 指令读取套接字上的数据,并返回指定的字节数。对于传输控制协议 (TCP),返回任何已接收到的数据,最多可返回所请求的字节数。对于用户数据报协议 (UDP),在数据报可用时完成。
操作详细信息︰
以下 SOCKET_READ 行为可能会影响现有通信(包括非套接字通信):
- 如果 SOCKET_READ 操作未与远程设备同步执行,则控制器将保留远程设备接收数据包,直到发生以下操作之一:
- SOCKET_READ 已执行。
- 套接字超时时间到期。
- 从远程设备接收到 RST。
- SOCKET_DELETE 或 SOCKET_DELETEALL 已执行。
- 执行运行模式更改,这将删除所有已创建的套接字实例。
- 控制器从运行模式更改为编程模式,这将删除所有已创建的套接字实例。
- 控制器从运行模式更改为编程模式,这将清除套接字诊断计数器信息和各个套接字计数器信息。
- 如果在执行 SOCKET_READ 操作期间 (BUSY = True) Length 或 Offset 参数值发生更改,将发生错误并丢弃接收数据包。
- SOCKET_READ 指令返回的字节数可能少于所请求的字节数。RxLength 包含已接收的数据字节数。写入程序以检查 RxLength,然后发出其他读取请求以接收完整应用程序消息。
- 在“运行模式更改”模式下,如果在 BUSY 状态下操作期间更改 SOCKET_READ 输入,将发生错误并丢弃接收的数据包。
- 输出与程序扫描同步更新。
支持的语言︰功能块图、梯形图和结构化文本。
该指令适用于 L20E、L50E 和 L70E 控制器。
SOCKET_READ

参数 | 参数类型 | 数据类型 | 描述 |
|---|---|---|---|
Execute | 输入 | BOOL | 启用指令。
|
Instance | 输入 | UDINT | 复制从 SOCKET_CREATE 或 SOCKET_ACCEPT 指令返回的套接字句柄。
|
Timeout | 输入 | UDINT | SOCKET_READ 的超时。如果超时值小于最小值,指令块会返回错误。 超时范围:1,000-86,400,000 毫秒。将“超时”设置为 0 以使用默认值 10,000(10 秒)。 |
Length | 输入 | UINT | 定义要读取的字节数。 在 RxLength 中检查实际读取的字节数。SOCKET_READ 返回的字节数可能少于所请求的字节数。 最多支持 256 个字节。 |
Offset | 输入 | UNIT | 到 Data 数组的偏移。从此位置开始读取已读取的数据。 |
Data | 输出 | USINT[1..1] | 用来存储从 SOCKET_READ 读取的数据的数组。
输出与程序扫描同步更新。 |
Done | 输出 | BOOL | 指示操作完成的时间。
输出与程序扫描同步更新。 |
Busy | 输出 | BOOL |
输出与程序扫描同步更新。 |
Error | 输出 | BOOL | 指示发生了错误。
输出与程序扫描同步更新。 |
RxLength | 输出 | UNIT | 包含接收到的数据字节数。 |
UDPAddr | 输出 | 发送用户数据报协议 (UDP) 数据的设备的地址。 定义 UDPAddr 192.168.2.100 和端口 12000 的示例: UDPAddr.IPAddress[0]=192 UDPAddr.IPAddress[1]=168 UDPAddr.IPAddress[2]=2 UDPAddr.IPAddress[3]=100 UDPAddr.Port = 12000 对于传输控制协议 (Transmission Control Protocol, TCP),此结构将不使用,并且全部包含零。TCP 连接传送远程地址信息。 |
SOCKET_READ 示例
SOCKET_READ 功能块图示例

SOCKET_READ 梯形图示例

SOCKET_READ 结构化文本示例

结果 - TCP

结果 - UDP

提供反馈