7.15.14 创建UDP通信资源并发送数据
USEND_C(创建UDP通信资源并发送数据)
功能
- USEND_C系统库用于异步创建UDP通信资源并发送数据
- 该指令异步执行且具有以下功能:
- 设置并创建UDP通信资源
- 通过现有的通信资源发送数据回收释放当前通信资源
- 设置并创建UDP通信资源
- 用户在UDP_CONFIG配置块中配置好当前UDP通信中的本地IP地址和端口号之后,通过将CONT参数置为true,开始创建UDP通信资源
- 通过现有的通信资源发送数据
- 在成功创建好UDP通信资源后,状态码更新为0x7001,此时参数REQ检测到上升沿时会执行一次发送数据请求。用户需要在DATA块绑定需发送的数据变量并指定发送的长度,若未指定发送长度,即LEN = 0,则默认将DATA全部发送
- 若DATA为STRING类型,当LEN = 0时,则默认发送82个字节的数据(String类型变量默认大小为82个字节)
- 若DATA为UDT类型,当0 < LEN < DATA的大小,此时会根据LEN的值进行指定长度的数据发送
- 参数REQ检测到上升沿时会执行一次发送数据请求,在UDP资源创建正常的情况下,会保证发送指定长度的数据完全才可进行下一次发送,若当前处于发送过程中,REQ检测到上升沿,此时不会再触发新的发送动作
- 若发送过程中UDP通信资源已经不存在,则会在缓冲区清空当前已发送的字节数,等待UDP通信资源重新创建后,需要再次识别到上升沿才会重新进行新数据的发送
- 终止和重置连接
- 参数 CONT 由"true"置位为"false"时,将回收并释放UDP通信资源
参数说明
| 参数 | 声明 | 数据类型 | 说明 |
|---|---|---|---|
| REQ | Input | BOOL | 在上升沿启动发送作业 |
| CONT | Input | BOOL | 控制UDP通信资源: ● false:释放UDP通信资源 ● true:创建UDP通信资源 |
| LEN | Input | UDINT | ● LEN表示最大支持发送的数据的字节数。UDP一次发送最大支持2048字节大小的数据 ● 当LEN=0时,此时若Data大小>2048,报错0x80A5,否则默认将Data区域中的数据全部发送 ● 当LEN不为0时,则根据LEN的实际值进行发送,若LEN的长度>2048或者 LEN > DATA 的大小,会报错0x80A5 |
| CONFIG | InOut | UDP_CONFIG | 配置连接参数的UDP_CONFIG函数块实例。 |
| DATA | InOut | ANY_TYPE | 需要发送的数据,ANY _TYP类型,支持基础类型、String以及UDT,注意:该接口赋值的变量仅能使用具有全局属性的变量(包含:GVS中定义的变量、PRG中定义的变量、FB实例的INPUT区、OUTPUT区、STATIC区定义的变量) |
| ADDR | InOut | ADDR_PARAM | 用于设置UDP发送端的通信伙伴的IP地址和端口号信息。 |
| DONE | Output | BOOL | 状态参数,可具有以下值: ● false:发送作业尚未启动或仍在进行 ● true:发送作业已成功执行。此状态将仅显示一个周期。 |
| BUSY | Output | BOOL | 状态参数,可具有以下值: ● false:发送作业尚未启动或已完成。 ● true:发送作业尚未完成。无法启动新发送作业。 |
| ERROR | Output | BOOL | 状态参数,可具有以下值: ● false:无错误。 ● true:创建UDP通信资源、发送数据、回收UDP通信资源时出错 |
| STATUS | Output | WORD | 当前函数执行过程的状态,当ERROR = 1时,可根据STATUS的值,判断当前出错的原因; |
状态码说明
| STATUS(WORD 16#) | 说明 |
|---|---|
| 0000 | 未调用 |
| 0001 | 当前正在创建套接字 |
| 7000 | 未激活任何任务,REQ检测到上升沿,但是CONT为false |
| 7001 | 创建套接字成功 |
| 7005 | 正在发送数据中 |
| 7007 | 主动释放连接资源成功 |
| 7009 | 发送数据成功 |