跳到主要内容

7.15.5 建立通信连接

TCON(建立通信连接)

功能

  • TCON用于异步建立TCP连接,该指令异步执行且具有以下功能:设置并建立通信连接

设置并建立通信连接

  • 用户在connect块中配置好正确的IP地址和端口号之后,通过将REQ参数置为true,开始启用连接功能并建立通信连接

  • 正确连接过程需要先给被动连接一方的req引脚一个上升沿,再给主动连接一方的req引脚一个上升沿,可以看到TSEND_C和TRCV_C块中的状态字由0x7002(正在建立连接)→0x7004(已经建立),表示连接已经建立成功

  • 建立连接后,若此时对端主动断开连接,状态码会由0x7004(已经建立)→0x7002(正在建立连接)

  • 若在TCP_ConnectConfig块中将ActiveEstablished参数设置为true,即当前为客户端,那么给req引脚一个上升沿后,每次执行TCON函数块均会检测当前连接状态,若当前连接失败,会每个cycle都尝试建立连接;抓包可见(先发送RST报文释放套接字,然后发送SYN报文请求建立连接

LD图形

alt text

参数说明

接口变量声明区数据类型说明
REQInputBOOL识别到上升沿才建立连接
CONNECTInOutTCP_ConnectConfig配置连接参数的函数块实例,具体参见TCP_Connectconfig
DONEOutputBOOL状态参数,可具有以下值:
0:连接函数尚未启动或仍在进行
1:连接函数已成功执行。此状态将仅显示一个周期
BUSYOutputBOOL状态参数,可具有以下值:
0:连接函数尚未启动或已完成
1:连接函数尚未完成
ERROROutputBOOL状态参数,可具有以下值:
0:无错误
1:连接函数出错
STATUSOutputWORD当前函数执行过程的状态

状态码说明

TATUS(WORD 16#)说明
0000未调用
7002正在建立通信连接
7004成功建立连接
以下为异常情况状态码说明
8080创建套接字失败,系统套接字资源不足
8081IP地址错误,原因有以下几种:
LocalAddress对应的IP地址不存在,即LocalAddress与PLC所有网口的IP均不匹配;
当前使用的LocalAddress对应的PLC网口协议不为以太网协议;
当前LocalAddress的值为0.0.0.0;
8082设置IP地址和端口号可复用错误
8083bind 地址和端口号与socket失败,主要原因是当前端口已经被其他服务占用,建议更换其他端口
8084将服务端套接字加至EPoll监听队列失败
8086接收新连接失败
80A0客户端连接服务端失败
80AC异步函数入队失败

示例

  • LD示例如下动图所示:

alt text

  • ST示例如下代码所示:
TCON_1(
REQ:=Open,
CONNECT:=TCP_CONNECTCONFIG_1,
DONE=>OUT,
BUSY=>OUT2,
ERROR=>OUT3,
STATUS=>OUT4
);