跳到主要内容

7.15.8 建立通信连接后,发送数据

TSEND(建立通信连接,发送数据)

功能

  • TSEND系统库用于异步发送指定数据。
    • 不提供连接功能

设置并建立通信连接

  • 连接在成功建立后,用户给req一个上升沿,会触发一次发送数据函数;

  • 发送数据函数TSEND只有在通信连接已经成功建立的情况下才发挥作用;

  • 正确发送过程需要先给req引脚一个上升沿,可以看到TSEND块中的状态字由0x7004(已经建立连接)→0x7005(正在发送数据)→0x7009(成功发送数据)表示数据已经发送成功;

  • 给req引脚一个上升沿后,此时若未建立连接,此时会显示error = true,状态码为0x80A1(连接尚未建立)

LD图形

alt text

参数说明

接口变量声明数据类型说明
REQInputBOOL识别到上升沿才触发一次发送数据动作
LENInputUDINT发送长度为LEN的数据,若为0,全发
若大于65535或者大于DATA的大小,会直接报错
CONNECTInOutTCP_ConnectConfig配置连接参数的函数块实例,具体参见TCP_Connectconfig
DATAInOutANY_TYPE待发送的数据块
DONEOutputBOOL状态参数,可具有以下值:
0:发送数据尚未启动或仍在进行
1:发送数据已成功执行
此状态将仅显示一个周期
BUSYOutputBOOL状态参数,可具有以下值:
0:发送数据尚未启动或已完成
1:发送数据尚未完成
ERROROutputBOOL状态参数,可具有以下值:
0:无错误
1:发送数据出错
STATUSOutputWORD当前函数执行过程的状态

状态码说明

STATUS(WORD 16#)说明
0000未调用
7005发送数据过程中
7009成功发送数据
以下为异常情况状态码说明
80A1尚未建立指定连接,用于发送和接收功能激活时,但连接尚未建立
80A4数据块为空
80A5出现80A5,原因有以下三种:
参数LEN大于65536;
LEN的值大于数据块的大小;
LEN为0,数据块大小大于65536
80A7获取发送缓冲区失败
80A8socket发送缓冲区已满
80A9发送失败
80AC异步函数入队失败
80C3当前TConnectConfig对应的连接已经被其他TSEND块使用
80C5发送数据过程中,对端主动断开连接

实例

  • LD示例如下动图所示:

alt text

  • 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;