You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 06:50:08