返回
请教:FX5U 做 Client,读两个大金空调的 Modbus TCP 网关。 IP 地址分别是 192.168.1.10 和 .11。端口都是 502。 单独连其中一个,读写完全正常。一旦两个网关
发布

请教:FX5U 做 Client,读两个大金空调的 Modbus TCP 网关。 IP 地址分别是 192.168.1.10 和 .11。端口都是 502。 单独连其中一个,读写完全正常。一旦两个网关

11阅读 1 回复 2026-04-03 10:21发布
关注Ta

15610356273817普通会员楼主

电话/手机:联系客服

请教:FX5U 做 Client,读两个大金空调的 Modbus TCP 网关。
IP 地址分别是 192.168.1.10 和 .11。端口都是 502。
单独连其中一个,读写完全正常。一旦两个网关同时进交换机,PLC 里的连接状态就疯狂报错,一会儿连上,一会儿掉线。
程序里我已经做了轮询,一个 DONE 信号之后再启动下一个。
怀疑是网关的 Unit ID 冲突,但 Modbus TCP 不是靠 IP 识别吗?有没有大神玩过这种多网关配置的?”

以下内容回复后可见

优质评论内容

  • 明扬工控技术客服

    明扬工控技术客服2026-04-03 10:28:26

    先说结论:

    大概率不是 Unit ID 冲突。
    在标准 Modbus TCP 里,服务器本来就是靠 IP 地址 + TCP 端口 502 来区分的;Unit Identifier 主要是给“一个 IP 后面再挂串口子站/网关”的场景做路由用。对直接接在 TCP/IP 网络上的 Modbus TCP 设备,规范里明确写了 Unit Identifier 基本是“无意义”的,推荐用 0xFF,0 也通常可接受。你这两个网关已经是 192.168.1.10 和 .11 两个不同 IP,所以跨两个 IP 的 Unit ID 重号,通常不会导致彼此打架。

    再看 FX5U 这一侧,Mitsubishi 的手册写得很明确:
    FX5 的 Modbus/TCP 主站是通过 predefined protocol support function 来做的,而且一个 CPU 最多可用 8 个 Modbus/TCP 连接;所以“同时连两个 502 端口服务器”这件事,本身是支持的。

    所以你这个现象更像下面三类问题:

    第一类:两个网关并不是“纯 Modbus TCP 服务器”,而是 TCP↔现场总线网关。
    这种设备有时会要求固定 Unit ID,或者把 Unit ID 映射到后面的室内机/分组。若厂家文档要求特定 Unit ID,就按它来;但这属于每台网关各自的内部路由规则,不是“.10 和 .11 因为 Unit ID 一样所以互相冲突”。标准 Modbus TCP 规范对直连 TCP 设备并不这么工作。

    第二类:FX5U 连接参数/会话管理有问题,而不是轮询逻辑本身。
    TCP 是先 Active open 建链,再传输,再关闭/保持连接。手册也说明了 TCP 连接的 open/close 是独立处理的。你虽然做了“前一个 DONE 再启动下一个”,但 DONE 只代表这次请求完成,不一定等于“上一条 TCP 会话状态完全释放到你预期的程度”。
    现场排查时,我会把两台网关做成两个独立连接设置,每个连接用自己独立的设置号/连接号,并且尽量给它们不同的本地 Host Station Port 做测试,先把“本地端口复用/会话残留”这个变量排掉。Mitsubishi 的 Ethernet 手册里也说明了,设备分组会看 IP、协议、目标端口、Host Station Port No. 这些组合项。

    第三类:更像 IP/MAC/ARP 层面的地址冲突,而不是 Modbus 协议冲突。
    因为你现在的特征是:

    单独接 .10 正常

    单独接 .11 正常

    两个一起上交换机就乱
    这个味道更像“两个设备一起在网里时才出现的问题”,例如:

    网关有重复 IP

    网关有异常的地址配置/子网掩码/ARP 行为

    交换机端口或网关网口自协商异常

    这类问题在 Modbus TCP 层会表现成“一会儿连上、一会儿掉线”,但根因不一定在 Unit ID。

    我建议你按这个顺序查,最快:

    先把 Unit ID 统一改成 255(或按网关手册要求的固定值)测试。
    如果这两个网关是“直接 Modbus TCP 设备”,255/0 更符合标准直连 TCP 设备的用法。

    两台网关分别抓 PLC 侧错误码。
    FX5 手册给了内置 Ethernet 的每个连接错误码寄存器 SD10130 到 SD10137。先看报的是超时、连接关闭、还是参数/端口类错误,这一步很关键。

    把两台连接做成完全独立的连接参数。
    包括独立连接号、独立目标 IP、独立本地 Host Station Port。
    虽然按手册看,不同 IP 已经会被视为不同组,但现场排障时我还是会把本地端口也分开,先排除会话管理因素。

    在交换机上查 ARP/MAC。
    看 .10 和 .11 是否稳定对应两个不同 MAC;如果 MAC 来回飘,方向就很明确了。

    用电脑同时轮询两台网关做 A/B 测试。
    如果电脑同时连两台也抖,那更像网关或网络层问题;如果电脑稳、只有 FX5U 不稳,再回头盯 PLC 连接参数和预定义协议设置。

    我个人判断:
    Unit ID 冲突不是首嫌疑。首嫌疑更像是网关本身的 TCP 会话实现,或者 PLC 端两个连接的参数/本地端口/会话释放处理。