【问题标题】:Discover BACnet device in different network with bacnet4j使用 bacnet4j 发现不同网络中的 BACnet 设备
【发布时间】:2018-06-26 09:43:18
【问题描述】:

我正在使用 bacnet4j 库来发现远程 BACnet 设备。在同一个网络中,一切都按预期工作。但我找不到位于不同网络中的 BACnet 控制器设备。

String hostAddress="10.8.102.28";
IpNetwork network = new IpNetworkBuilder().withPort(47808).withSubnet(hostAddress, 24).build();
Transport transport = new DefaultTransport(network);
LocalDevice localDevice = new LocalDevice(Integer.decode(this.settings.getDeviceId()), transport);
localDevice.initialize();

//Finding remote device
int remoteId=1234;
RemoteDeviceFuture remoteFuture = RemoteDeviceFinder.findDevice(localDevice, remoteId);
RemoteDevice remoteDevice = null;
try {
        remoteDevice = remoteFuture.get(); //remote device is null here
    } catch (Exception e) {
        LOGGER.error("Remote device with id " + remoteId + " does NOT exist!");
    }

上面的代码 sn -p 在同一网络中查找具有给定 remoteId 的远程设备。但它找不到位于不同网络中的设备。这里有什么问题吗?

【问题讨论】:

    标签: java controller bacnet bacnet4j


    【解决方案1】:

    这实际上是设计使然。发现过程使用不通过 IP 路由器路由的广播“Who-Is”消息进行。因此,不会以这种方式发现不同 IP 子网上的任何设备。如果您知道远程设备的 IP 地址,则可以直接将 IP 配置/编程为静态 IP 地址。

    但是,有一种叫做 BBMD(BACnet 广播管理设备)的东西。其中一个需要放置在每个子网中,每个子网都配置有另一个 BBMD 的 IP 地址。 BBMD 将拦截其子网上的 BACnet 相关广播,将其发送到另一个子网上的对等 BBMD,后者将重新传输广播,有效地桥接两个(或更多)子网。

    或者,您可以将您的客户端配置/编程为“外国设备”,让它在远端子网上注册一个 BBMD,这将实现大致相同的效果。

    BBMD 相当普遍。大多数(所有)BACnet/IP 到 BACnet MS/TP 路由器都具有该功能。许多 BACnet 设备也允许启用该功能。

    希望这会有所帮助。请参阅http://www.bacnetwiki.com 了解更多信息。

    【讨论】:

      【解决方案2】:

      UDP/IP 广播 - 用作“Who-Is” (BACnet) 服务的一部分,默认情况下通常不会路由,并且在大多数情况下不允许路由 - 例如安全问题是主要原因。

      但如果路由到位,您可以将单播/定向流量发送到相关设备。

      (如果我没记错的话,理论上你现在应该能够以单播/定向请求的形式发送 Who-Is - 但即使我说的没错,大多数设备很可能只会仅通过广播收听 Who-Is 服务。)

      BBMD 并非绝对必要 - 并且已被视为安全问题,因为它们可能会泄露太多信息。

      可以(有效地)使用沼泽标准网络路由而不是 BBMD - 让流量跨越几个不同/目标 VLAN。

      (还要注意在客户端和服务器/服务设备之间混合使用私有 IP(v4) 地址和公共 IP(v4) 地址,您可能会遇到问题。)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-10-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多