BAC0 Lite使用net:mac地址读取MS/TP控制器超时问题求助
BAC0读取MS/TP控制器(net:mac格式)超时,IP格式正常
问题描述
使用BAC0库读取IP地址格式的BACnet控制器正常,但使用net:mac格式的MS/TP控制器地址时触发超时错误,错误信息如下:
Traceback (most recent call last): File "read.py", line 22, in main() File "read.py", line 13, in main value = bacnet.read(payload) File "/home/nvidia/.local/lib/python3.6/site-packages/BAC0/core/io/Read.py", line 219, in read "APDU Abort Reason : {}".format(reason) BAC0.core.io.IOExceptions.NoResponseFromController: APDU Abort Reason : Timeout
相关代码:
import BAC0 bacnet = BAC0.lite(ip="192.168.1.20/24", port=47808) def main(): payload = "50:7 analogOutput 1 presentValue" # 无法正常工作 # payload = "192.168.1.40 analogOutput 1 presentValue" # 工作正常 print("Requesting {}".format(payload)) print("The value is ", bacnet.read(payload)) if __name__ == '__main__': main()
解决方案
1. 修正MS/TP设备地址格式
BAC0中跨网络的MS/TP设备地址格式应为network_number/mac_address(斜杠分隔),而非冒号。修改payload:
payload = "50/7 analogOutput 1 presentValue"
2. 初始化时指定目标网络
使用BAC0.connect()替代BAC0.lite(),显式指定MS/TP网络号,确保客户端能识别跨网络设备:
bacnet = BAC0.connect(ip="192.168.1.20/24", port=47808, network=50)
3. 确认BACnet网桥配置
MS/TP设备需通过BACnet IP网桥接入IP网络,检查:
- 网桥的MS/TP参数(波特率、MAC范围)与目标控制器匹配
- 网桥已正确注册网络号
50,能被IP侧的BAC0客户端发现
4. 验证设备可达性
- 使用
bacnet-scan工具扫描网络,确认50/7设备可被识别 - 检查MS/TP控制器与网桥的物理连接,确保设备在线
5. 调整读取超时时间
MS/TP设备响应速度较慢,读取时手动延长超时时间:
value = bacnet.read(payload, timeout=10)
内容的提问来源于stack exchange,提问作者Zain Ul Abidin
相关产品推荐
相关产品推荐

