如何在树莓派上使用 Bacnet MSTP
BACnet 是一种国际标准的楼宇自动化通信协议,可使来自不同制造商的设备(如供暖、通风、空调、照明和安防系统)能够相互通信。尽管当前的 BACnetnet 系统主要使用以太网作为传输介质(BACnet/IP),但在早期阶段,RS485(BACnet MSTP)通常被用作第0层。
BACnet 的栈接口在 C++ 和 Python 中均可用于 Raspberry Pi。然而,大多数教程几乎完全专注于 BACnet/IP。
在本教程中,我将向您展示如何在树莓派上使用 BACnet MSTP。
硬件
建议使用较新的树莓派4或Pi 5来实现BACnet。原因有两点:第一,BACnet堆栈相对较大且资源消耗较高;第二,这些型号配备了多个硬件UART接口,专用于此功能,不会同时用于蓝牙等其他用途。
此外,我们需要一个RS485接口来通过BACnet MSTP进行通信。为此,我使用了一个带电隔离功能的Zihatec RS485 HAT。
布线
至于BACnet MS/TP,最常见的连接方式是菊花链总线配置,即使用单根RS485电缆将网络中的所有设备按线性链式连接。
为此,请将每个设备的“+”和“-”端子相互连接。HAT配备有5针接口,其中两个引脚标有“A”和“B”。A引脚必须连接到其他设备的“+”端子,B引脚则连接到“-”端子。
对于较远距离,建议使用双绞线电缆。通过RS485可实现最长一英里的传输距离。
HAT上的设置
HAT上的DIP开关必须设置为RS485模式(半双工)。为此,请按以下方式设置开关:
•S1:关 - 开 - 开 - 关
•S2:关闭 - 关闭 - 开启 - 开启
•S3:关闭 - 关闭 - 开启 - 开启
现在我们需要使用两个跳线来选择K3上要使用的UART。跳线必须设置为U3(UART3)、U4(UART4)或U5(UART5)位置之一。
注意:在 Raspberry Pi 5 上,UART 的编号方式不同。此处,U3 是 UART2,U4 是 UART3,依此类推。
准备操作系统
首先,将当前版本的 Raspbianbian 操作系统(在本例中为 Debian Trixie 64 位)安装到 SD SD 卡上。然后,像往常一样,将操作系统更新到最新版本:
现在我们需要启用要使用的UART。为此,请打开Config.txt文件:
现在,让我们在文件末尾启用相应的UART。以UART3为例,应设置为:
保存 Config.txt 文件并重启树莓派后,我们现在可以检查 UART 是否已启用:
此外,对于相应的UART,现在应可在路径 /dev/ttyAMAxAx 处提供接口。
安装并编译 C/C++ BACnetnet 栈
现在我们可以开始安装BACnet软件栈了。
这些编译好的文件现在应该位于 bacnet-stack/bin/bin 目录中,具体是 BACnet MSTP 的三个示例程序:
测试BACnet协议栈
该堆栈包含多种用于MSTP的示例程序,其中包括一个用于从BACnet MSTP总线捕获数据的工具。
我们只需将RS485接口连接到现有系统,即可记录通信协议。(如果不存在BACnet MSTP系统,您也可以直接在电脑上安装YABE并记录此通信。)
为此,请在 /bacnet-stack/bin/bin 目录中输入以下命令:
当然,可能需要调整波特率和接口路径。
mstpcap 会将所有接收到的数据包记录到文件中,直到程序通过 Ctrl+C+C 终止为止。
YABE 在树莓派上
在树莓派上使用BACnet IP和MSTP的另一种方法是使用YABE(Yet Another BACnet Explorer)。由于YABE实际上是一个基于微软.NET Framework编写的Windows程序,因此我们需要先安装mono-complete,以便YABE能在Linux系统上运行。
现在我们可以下载最新版本的 YABE 作为 ZIP 文件(不是 EXEE 安装程序!!!),然后解压它。
现在可以使用 mono mono 启动 Yabe。要访问接口,应通过 sudo sudo 运行启动命令
通道的配置窗口将自动打开。在“端口”下,选择串行接口的路径,例如 /dev/ttyAMA3。
按下开始按钮后,YABE 会自动发送一个 Whois 查询,并显示总线上可用的设备:
本文编译自hackster.io





