【问题标题】:In SCADA systems, is there any way of making a modbus master speak to another master?在 SCADA 系统中,有没有办法让一个 modbus 主站与另一个主站对话?
【发布时间】:2025-11-23 14:20:04
【问题描述】:

我正在制作两个交换数据的 SCADA 系统。我的目标是在 tcp 上使用 modbus,因为两个系统都支持这个协议。当然,问题是这两个系统都只能充当 modbus 主站。

在所有现场总线开源的情况下,我很惊讶没有“桥接”实用程序可以让两个主机相互交谈。我对这些技术并不是特别精通,但从外部看来,实现一个打开两个端口并充当两个独立主机的从属的进程似乎是微不足道的。

两个主设备都将中介视为从设备,但来自 Master1 的 POV 的输入寄存器是来自 Master2 的 POV 的输出寄存器,反之亦然。

在概念上或协议方面,有什么可以表明这是有问题的吗?

【问题讨论】:

    标签: modbus scada


    【解决方案1】:

    如果两个 SCADA 系统都可以访问同一个 PLC,则使用 SCADA1 将数据写入该 PLC 中的某个数据块,并使用 SCADA2 读取相同的数据。另一种选择是以某种高级语言实现简单的 MODBUS TCP 服务器,并将其放在一些 PC 上,两个 SCADA 系统都可以访问它。或者,您可以运行一些 MODBUS TCP 服务器模拟器,而不是自己实现它。

    SCADA 系统不是非常友好的非内置支持选项,因此在 SCADA 内部构建 MODBUS TCP 服务器的任务范围从非常困难到不可能 - 取决于您使用的 SCADA 系统。大多数 SCADA 系统既可以充当 OPC 客户端(访问来自各种 OPC 数据源的数据),也可以充当 OPC 服务器(为 OPC 客户端的所有标签提供读/写选项)。如果您的 SCADA 系统是这样的,那么您可以使用 OPC 来实现您想要的。

    【讨论】:

    • modbus slave 接受两个不同的 master 而不会遇到并发问题是否很常见?我认为 modbus 主机永远不会同时进行两个操作是协议的一部分。我考虑过 OPC,但出于其他考虑,我希望连接通过 IO 接口。
    • MODBUS RTU 和 ASCII 从站只能有一个主站。 MODBUS TCP 从站实际上是 TCP 服务器,消息序列化内置于其中,与任何其他 TCP 服务器一样。否则,Web 服务器无法“同时”处理多个客户端(因为序列化完成得足够快,人类可以同时感知它)。
    • Modbus/TCP 服务器旨在支持多个(但数量有限)同时连接。 Avra 建议通过共享寄存器传输信息可能是您能得到的最好的。 Peter Grote 的建议可能正是在 PC 中实现了其中一个。
    【解决方案2】:

    喜欢一起使用 OPC Server,只需使用KEPware LinkMaster,完美解决此问题。

    【讨论】: