我在从 BACNET IP 路由器上的设备读取属性时遇到问题。为此,我正在使用 .net 库https://github.com/ela-compil/BACnet
如果我正在与多个设备交互,每个设备都有自己的 ip 和 id(没有路由器配置),通信工作正常并且我能够读取属性。但是,一旦实现了路由器模式的设备并且所有其他设备都通过该主路由器进行通信,我将不再能够读取属性。
Main Bacnet router IP 192.168.2.222
Device 1, Ip: 192.168.1.1, ID: 10
Device 2, Ip: 192.168.1.2, ID: 11
My software is on IP 192.168.2.220
要读取我正在使用的属性:
var targetObjId = new BacnetObjectId(BacnetObjectTypes.OBJECT_DEVICE, (uint)10);
var targetBacnetAddress = new BacnetAddress(BacnetAddressTypes.IP, "192.168.1.1");
var rez = await Bacnet_client.ReadPropertyAsync(targetBacnetAddress, targetObjId, BacnetPropertyIds.PROP_OBJECT_LIST);
这将返回:“来自设备的错误:ERROR_CLASS_SERVICES - ERROR_CODE_SERVICE_REQUEST_DENIED”。如果网络上没有使用路由器,则此代码将起作用并产生结果。所以我在寻址 bacnet 设备时一定做错了什么?
使用 Yabe 浏览器,这一切都有效。因此设备配置设置正确。实际上,当我通过功能/IP 服务/外部设备注册注册外国设备时,会发现路由器后面的设备。