TwinCat3-TF6310 TCP/IP多网卡数据发送配置方法咨询
解决TwinCAT 3中多台IP重复设备的跨网卡通信问题
可以通过绑定不同物理网卡实现通信,核心逻辑是利用不同网卡的独立网络链路,让TwinCAT的Socket指定从特定网卡发送报文,从而区分同IP的设备。具体配置步骤如下:
一、物理连接与网卡IP配置
- 将IP重复的设备分别接入不同的物理网卡,确保各设备所在的网络链路完全独立(比如设备1接网卡A,设备2接网卡B,两者不共享交换机或网线)
- 给每个网卡配置不重叠的网段IP,例如:
- 网卡A:
192.168.1.10/24 - 网卡B:
192.168.2.10/24
无需修改设备的重复IP,只要设备和对应网卡在同一物理链路即可。
- 网卡A:
二、TwinCAT Socket绑定特定网卡
在PLC程序中,使用FB_TcpClient(或对应Socket功能块)时,必须指定本地绑定IP(即对应网卡的IP地址),不能使用默认的0.0.0.0(自动选网卡)。示例ST代码如下:
PROGRAM MAIN VAR TcpClient_Dev1: FB_TcpClient; TcpClient_Dev2: FB_TcpClient; // 网卡A的IP LocalIp_NIC_A: STRING := '192.168.1.10'; // 网卡B的IP LocalIp_NIC_B: STRING := '192.168.2.10'; // 两台设备的重复IP Device_IP: STRING := '192.168.0.1'; Device_Port: UINT := 502; // 示例端口,根据设备实际端口调整 END_VAR // 绑定网卡A连接设备1 TcpClient_Dev1( sLocalAddr := LocalIp_NIC_A, sRemoteAddr := Device_IP, nRemotePort := Device_Port, bConnect := TRUE ); // 绑定网卡B连接设备2 TcpClient_Dev2( sLocalAddr := LocalIp_NIC_B, sRemoteAddr := Device_IP, nRemotePort := Device_Port, bConnect := TRUE );
三、系统路由与隔离配置
为避免Windows自动路由导致报文交叉,需配置静态路由:
- 查看网卡接口索引:执行命令
route print,找到对应网卡的Interface Index值 - 删除默认路由(可选,若原有路由干扰通信):
route delete 0.0.0.0 mask 0.0.0.0 <原有默认网关IP>
- 添加针对设备IP的静态路由:
- 针对网卡A(假设网关为
192.168.1.1,接口索引为10):route add 192.168.0.1 mask 255.255.255.255 192.168.1.1 metric 1 if 10 - 针对网卡B(假设网关为
192.168.2.1,接口索引为11):route add 192.168.0.1 mask 255.255.255.255 192.168.2.1 metric 1 if 11
- 针对网卡A(假设网关为
四、通信验证
- 监控TwinCAT中每个
FB_TcpClient的bConnected状态,确认连接成功 - 使用Wireshark分别在两个网卡上抓包,验证报文仅从指定网卡收发,无交叉流量
内容的提问来源于stack exchange,提问作者Lyu Jeff
相关产品推荐
相关产品推荐

