You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

两台计算机以太网TCP Modbus通信连接被拒故障排查

Modbus TCP跨机通信连接被拒的修复方案

核心故障原因

你当前遇到的连接被拒错误,和以太网直连链路无关,核心问题是主从站代码均使用了127.0.0.1回环地址:该地址仅能用于本机进程间通信,无法跨设备访问,且从站仅绑定回环地址时,不会响应外部网卡的连接请求。

必须修改的配置与代码项

  • 从站监听地址修改
    将从站代码中绑定回环地址的行替换为监听所有网卡:
    // 原代码:IPAddress address = new IPAddress(new byte[] { 127, 0, 0, 1 });
    IPAddress address = IPAddress.Any;
    
    如果需要指定监听网卡,也可以直接填写从站设备以太网口的静态IP,禁止填写127.0.0.1。
  • 主站连接地址修改
    将主站连接的目标IP替换为从站设备的以太网实际IP,禁止使用回环地址:
    // 原代码:using (TcpClient client = new TcpClient("127.0.0.1", 502))
    // 示例:从站以太网IP设为192.168.1.10时如下填写
    using (TcpClient client = new TcpClient("192.168.1.10", 502))
    
  • 两台直连设备的IP配置
    给两台电脑的以太网口设置同网段静态IP,无需配置网关:
    • 从站以太网IP:192.168.1.10,子网掩码:255.255.255.0
    • 主站以太网IP:192.168.1.20,子网掩码:255.255.255.0
      配置完成后在主站命令行执行ping 192.168.1.10,确认链路连通后再启动程序。
  • 端口权限与防火墙配置
    Windows系统默认限制普通程序绑定1024以下端口,502端口属于Modbus默认周知端口,需要右键以管理员身份运行Visual Studio启动从站程序,避免端口绑定失败;也可以将主从站代码中的端口统一改为5020这类1024以上的端口,规避权限问题。
    同时需要在两台电脑的防火墙中添加入站/出站规则,放开你使用的Modbus通信端口,避免连接被防火墙拦截。
  • 从站ID参数修正
    你当前主站代码中ReadInputs第一个参数(从站ID)传值为0,但从站代码中仅添加了ID为1、2的两个从站设备,连接成功后需要将该参数改为1或2,对应你要访问的从站ID,否则会触发从站不存在的错误。

验证顺序

  1. 启动从站程序,确认控制台无端口占用、绑定失败类报错
  2. 启动主站程序发起连接
  3. 若仍有报错,先在主站使用telnet 从站IP 端口命令确认端口可通,再排查代码参数问题

内容的提问来源于stack exchange,提问作者Cassius.Peter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 17:18:06