7.15.4 配置TCP/ModbusTCP连接参数
TCP_CONNECTCONFIG(配置连接参数函数块)
注意
- 每个TCP_ConnectConfig代表一个特定的连接
- T3最大支持8个TCP连接,T4最大支持32个TCP连接
功能
- TCP_ConnectConfig(FB类型UDT):仅用于配置连接参数
参数说明
| 接口变量 | 数据类型 | 说明 |
|---|---|---|
| ActiveEstablished | BOOL | 主动/被动连接标志位,主动("1"或"TRUE")连接代表客户端,被动("0"或"FALSE")连接代表服务端 |
| RemoteAddress | ARRAY[0..3] OF BYTE | 对端的IP地址 |
| RemotePort | UINT | 对端的端口 |
| LocalAddress | ARRAY[0..3] OF BYTE | 本地的IP地址 |
| LocalPort | UINT | 本地的端口号 |
| SendDelayOpt | BOOL | 是否禁用TCP发包延迟机制(Nagle算法); 默认为false,不关闭,保证数据传输可靠性,无法保证实时性; 设置为true,关闭该机制,可提高发包频率,保证数据传输的实时性,无法保证可靠性; |
| KeepAliveTimeInterval | UNIT | Keep-alive报文发送时间间隔,单位为秒(s); 可根据实际场景设置时间间隔,物理层断开后,3*KeepAliveTimeInterval时间后进行一次发送或者接收动作时系统可对应识别到连接断开; 默认为0,表示使用系统设置,系统默认KeepAliveTimeInterval=10s; |
- TCP _ConnectConfig函数块仅用于用户配置对应的ip地址和端口号。各参数意义如下:
- 参数ActiveEstablished:表示当前连接为主动连接还是被动连接模式,主动连接则表示当前PLC会建立一个TCP客户端,被动连接则表示当前PLC会建立一个TCP服务端
- 参数RemoteAddress和RemotePort:表示为需要与PLC建立连接的对端的IP地址和端口号
- 参数LocalAddress和LocalPort:表示为当前PLC实际的IP地址以及需要绑定的端口号
- 参数SendDelayOpt:用于控制是否关闭TCP发包延迟机制
- 参数KeepAliveTimeIterval:用于设置系统层的Keep-alive机制的时间间隔,单位为秒
使用注意事项
注意
- 参数ActiveEstablished仅用于TCP建立连接过程,发送/接收数据过程支持双工模式,无需区分主动连接/被动连接
- 参数LocalAddress设置IP时不能为0.0.0.0,且IP 地址对应的PLC网口当前必须为以太网协议,不能为EC协议或其他协议
- 参数LocalPort使用时不能为0,同时,为避免出现端口号发生碰撞报错,建议使用范围为2000~5000
- 参数填写错误,进行信息校验时,会检验出信息有误,进而导致连接无法成功建立
- 参数SendDelayOpt您可根据实际场景需求进行配置,可以不设置该参数,采用系统默认配置,即SendDelayOpt=false,不关闭该Nagle算法
- 参数KeepAliveTimeInterval您可根据实际场景需求进行配置,可以不设置该参数,即KeepAliveTimeInterval=0,此时会采用系统默认配置;Linux操作系统规定了系统层的Keep-alive机制仅在没有数据传输时,间隔一个KeepAliveTimeInterval后才会发送第一条keep-alive报文,若当前实际场景需要频繁进行数据发送,此时系统层的keep-alive机制不会生效,建议您在频繁进行数据传输的场景下,编写应用层的心跳报文用于检测网络是否正常
- FB中仅支持创建1个TCP_ConnectConfig实例,实例化多个将导致通讯出现异常,请务必注意
-
若ActiveEstablished = true,表明当前PLC连接为TCP客户端
- 要求您依据PLC实际IP地址和端口号,分别填写相应的客户端和服务端参数信息
- 要求您注意remoteAddress和RemotePort都不能为0,否则无法建立连接(出现报错)
- 要求您注意LocalPort=0,系统会自动分配一个随机的端口号与该连接绑定,建议使用非0端口号,防止系统自动分配的端口与其他服务使用的固定端口有冲突,进而影响其他服务的功能
-
若ActiveEstablished = false,表明当前PLC连接为TCP服务端
- 要求您依据PLC实际IP地址和端口号,分别填写相应的客户端和服务端参数信息
- 要求您注意LocalAddress和LocalPort都不能为0,否则对端客户端将由于无法得知服务端的端口号导致无法建立连接
RemoteAddress RemotePort 连接情况 0 ≠0 允许接收来自任意IP地址的连接,但是会对端口号进行校验,若端口不相等则会拒绝连接 ≠0 0 不会对端口号进行校验,但会对连接发起方的IP进行校验,若IP地址不相等则会拒绝连接 0 0 不会对ip地址和端口号都进行校验,但是,只会接受一个连接请求,其他连接请求将会被拒绝
示例
- LD示例如下动图所示:

- ST示例如下代码所示:
TCP_CONNECTCONFIG_1();