7.15.8 建立通信连接后,发送数据
TSEND(建立通信连接,发送数据)
功能
- TSEND系统库用于异步发送指定数据。
- 不提供连接功能
设置并建立通信连接
-
连接在成功建立后,用户给req一个上升沿,会触发一次发送数据函数;
-
发送数据函数TSEND只有在通信连接已经成功建立的情况下才发挥作用;
-
正确发送过程需要先给req引脚一个上升沿,可以看到TSEND块中的状态字由0x7004(已经建立连接)→0x7005(正在发送数据)→0x7009(成功发送数据)表示数据已经发送成功;
-
给req引脚一个上升沿后,此时若未建立连接,此时会显示error = true,状态码为0x80A1(连接尚未建立)
LD图形
参数说明
接口变量 | 声明 | 数据类型 | 说明 |
---|---|---|---|
REQ | Input | BOOL | 识别到上升沿才触发一次发送数据动作 |
LEN | Input | UDINT | 发送长度为LEN的数据,若为0,全发 若大于65535或者大于DATA的大小,会直接报错 |
CONNECT | InOut | TCP_ConnectConfig | 配置连接参数的函数块实例,具体参见TCP_Connectconfig |
DATA | InOut | ANY_TYPE | 待发送的数据块 |
DONE | Output | BOOL | 状态参数,可具有以下值: 0:发送数据尚未启动或仍在进行 1:发送数据已成功执行 此状态将仅显示一个周期 |
BUSY | Output | BOOL | 状态参数,可具有以下值: 0:发送数据尚未启动或已完成 1:发送数据尚未完成 |
ERROR | Output | BOOL | 状态参数,可具有以下值: 0:无错误 1:发送数据出错 |
STATUS | Output | WORD | 当前函数执行过程的状态 |
状态码说明
STATUS(WORD 16#) | 说明 |
---|---|
0000 | 未调用 |
7005 | 发送数据过程中 |
7009 | 成功发送数据 |
以下为异常情况状态码 | 说明 |
---|---|
80A1 | 尚未建立指定连接,用于发送和接收功能激活时,但连接尚未建立 |
80A4 | 数据块为空 |
80A5 | 出现80A5,原因有以下三种: 参数LEN大于65536; LEN的值大于数据块的大小; LEN为0,数据块大小大于65536 |
80A7 | 获取发送缓冲区失败 |
80A8 | socket发送缓冲区已满 |
80A9 | 发送失败 |
80AC | 异步函数入队失败 |
80C3 | 当前TConnectConfig对应的连接已经被其他TSEND块使用 |
80C5 | 发送数据过程中,对端主动断开连接 |
实例
- LD示例如下动图所示:
- ST示例如下代码所示:
TSEND_1(
REQ:=bVar,
LEN:=0,
CONNECT:=TCP_CONNECTCONFIG_1,
DATA:=iVar,
DONE=>OUT,
BUSY=>OUT2,
ERROR=>OUT3,
STATUS=>OUT4
);
bVar:=not bvar;
iVar:= iVar+2;