跳到主要内容

7.15.4 配置TCP/ModbusTCP连接参数

TCP_CONNECTCONFIG(配置连接参数函数块)

注意
  • 每个TCP_ConnectConfig代表一个特定的连接
  • T3最大支持8个TCP连接,T4最大支持32个TCP连接

功能

  • TCP_ConnectConfig(FB类型UDT):仅用于配置连接参数

参数说明

接口变量数据类型说明
ActiveEstablishedBOOL主动/被动连接标志位,主动("1"或"TRUE")连接代表客户端,被动("0"或"FALSE")连接代表服务端
RemoteAddressARRAY[0..3] OF BYTE对端的IP地址
RemotePortUINT对端的端口
LocalAddressARRAY[0..3] OF BYTE本地的IP地址
LocalPortUINT本地的端口号
SendDelayOptBOOL是否禁用TCP发包延迟机制(Nagle算法);
默认为flase,不关闭,保证数据传输可靠性,无法保证实时性;
设置为true,关闭该机制,可提高发包频率,保证数据传输的实时性,无法保证可靠性;
KeepAliveTimeIntervalUNITKeep-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=flase,不关闭该Nagle算法
  • 参数KeepAliveTimeInterval您可根据实际场景需求进行配置,可以不设置该参数,即KeepAliveTimeInterval=0,此时会采用系统默认配置;Linux操作系统规定了系统层的Keep-alive机制仅在没有数据传输时,间隔一个KeepAliveTimeInterval后才会发送第一条keep-alive报文,若当前实际场景需要频繁进行数据发送,此时系统层的keep-alive机制不会生效,建议您在频繁进行数据传输的场景下,编写应用层的心跳报文用于检测网络是否正常
  • 若ActiveEstablished = true,表明当前PLC连接为TCP客户端

    • 要求您依据PLC实际IP地址和端口号,分别填写相应的客户端和服务端参数信息
    • 要求您注意remoteAddress和RemotePort都不能为0,否则无法建立连接(出现报错)
    • 要求您注意LocalPort=0,系统会自动分配一个随机的端口号与该连接绑定,建议使用非0端口号,防止系统自动分配的端口与其他服务使用的固定端口有冲突,进而影响其他服务的功能
  • 若ActiveEstablished = false,表明当前PLC连接为TCP服务端

    • 要求您依据PLC实际IP地址和端口号,分别填写相应的客户端和服务端参数信息
    • 要求您注意LocalAddress和LocalPort都不能为0,否则对端客户端将由于无法得知服务端的端口号导致无法建立连接
    RemoteAddressRemotePort连接情况
    0≠0允许接收来自任意IP地址的连接,但是会对端口号进行校验,若端口不相等则会拒绝连接
    ≠00不会对端口号进行校验,但会对连接发起方的IP进行校验,若IP地址不相等则会拒绝连接
    00不会对ip地址和端口号都进行校验,但是,只会接受一个连接请求,其他连接请求将会被拒绝

示例

  • LD示例如下动图所示:

alt text

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