7.15.6 断开指定的连接
TDISCON(断开指定的连接)
功能
- TDISCON系统库用于异步断开当前TCP连接
设置并建立通信连接
-
用户在connect块中配置好正确的IP地址和端口号之后,通过将REQ参数置为true,开始启用断连功能并终止当前通信连接
-
断连函数只有在通信连接已经成功建立的情况下才作用
-
正确断连过程需要先给req引脚一个上升沿,可以看到TDISCON块中的状态字由0x7003(正在终止连接)→0x7007(已经终止连接),表示连接已经断连成功
-
建立连接后,若此时对端主动断开连接,状态码会由0x7004(已经建立)→0x7002(正在建立连接);若此时断开连接,则会释放己方创建的套接字资源,通过抓包能见RST报文;若己方为服务端,还会将己方移除侦听状态,后续对端无法再建立连接
LD图形
参数说明
接口变量 | 声明 | 数据类型 | 说明 |
---|---|---|---|
REQ | Input | BOOL | 识别到上升沿才主动断开连接 |
CONNECT | InOut | TCP_ConnectConfig | 配置连接参数的函数块实例,具体参见TCP_Connectconfig |
DONE | Output | BOOL | 状态参数,可具有以下值: 0:断连函数尚未启动或仍在进行 1:断连函数已成功执行。此状态将仅显示一个周期 |
BUSY | Output | BOOL | 状态参数,可具有以下值: 0:断连函数尚未启动或已完成 1:断连函数尚未完成 |
ERROR | Output | BOOL | 状态参数,可具有以下值: 0:无错误 1:断连函数出错 |
STATUS | Output | WORD | 当前函数执行过程的状态 |
状态码说明
STATUS(WORD 16#) | 说明 |
---|---|
0000 | 未调用 |
7003 | 通信建立正在关闭中 |
7007 | 主动断开连接 |
以下为异常情况状态 码 | 说明 |
---|---|
8087 | 移除客户端对应Epoll Event失败 |
80A2 | 主动断开连接失败 |
80AC | 异步函数入队失败 |
实例
- LD示例如下动图所示:
- ST示例如下代码所示:
TDISCON_1(
REQ:=Close,
CONNECT:=TCP_CONNECTCONFIG_1,
DONE=>OUT,
BUSY=>OUT2,
ERROR=>OUT3,
STATUS=>OUT4
);