一月
27
使用Wireshark对Bacnet MSTP流量进行故障排除
- 2018年1月27日
- 0评论
在调试以太网流量时,有很多硬件和软件工具可供选择,Wireshark 就是一个功能强大的免费工具。然而,当需要分析 RS485 总线上的 MSTP 流量时,选择就非常有限了。Bacnet 通信的特殊性以及严格的时序要求,使得 Windows 和 Linux 等多任务操作系统难以跟上。Bacnet 规定设备应在 15 到 20 毫秒内开始响应,这几乎是 PC 的极限。多亏了 Steve Kargs 的创新工作,我们现在可以使用普通的 PC 来捕获 MSTP 数据包,并使用 Wireshark 实时查看它们。Steve 的工作故事在这里: http://steve.kargs.net/bacnet/wireshark-and-bacnet-mstp/.
获取硬件:
你的电脑需要一个 RS485 端口和一个 Bacnet 设备才能与之通信。
我们为RS485端口制作了这款低成本的USB转RS485转换器。LED指示灯本身就非常实用。
https://bravocontrols.com/product/usb-to-rs485-converter/
您还需要安装 FTDI 驱动程序,该驱动程序也在产品页面上。
你需要一个 Bacnet 设备。如果你还没有,这里推荐一款我们正在开发的 $30 设备。它的主要功能是“脉冲输入到模拟输出”,但你也可以将其用作通用 I/O,因为它有六个通用输入和六个模拟/二进制输出。产品页面上有指向该产品源代码的链接,该源代码使用 Arm STM32F103VC 处理器。有了这两样硬件,你很快就能开始使用 Bacnet MSTP 进行编程了。
https://bravocontrols.com/product/pwm-input-to-voltage-output-transducer/
安装 Wireshark 和 MSTP 辅助工具
接下来安装 Wireshark 2.0 数据包捕获工具: https://www.wireshark.org/#download
整个安装过程中都选择默认选项。
您可以点击标签 4 中的链接,这将打开标签 5 中显示的正确文件夹。
4.从Steve处下载并解压mstpcap.exe辅助文件,该文件可以在这里找到: https://sourceforge.net/projects/bacnet/files/bacnet-tools/bacnet-tools-0.8.5 这个压缩包里有很多实用工具,你只需要 mstpcap.exe 文件。将 bacnet tools 文件解压到一个临时文件夹,然后将重要的 mstpcap.exe 文件复制到 wireshark\extcap 文件夹。
安装过程中,Wireshark 会询问是否要重启,我觉得没必要,可能是因为我之前已经多次安装过这个软件。您的结果可能有所不同。
首次运行 Wireshark 时,会显示电脑上所有可用通信端口的列表。Tab5 选项卡中有一个网络活动图表,显示 Wi-Fi 端口有一些活动,说明安装顺利完成。
要查看 MSTP 流量,我们首先单击 tab6 中的“COM6 上的 BACnet MS/TP”图标,这将弹出一个对话框,我们可以在 tab7 中编辑波特率。然后在 tab8 中开始捕获。
最后是 MSTP 流量,这次捕获的数据来自 COM1 上的一个会话。
在 Wireshark 中设置过滤器:
您可以通过设置过滤器来锁定感兴趣的流量,过滤器可以直接在 tab9 中编辑。这里我们设置了一个简单的过滤器,用于捕获所有发往 Bacnet ID = 3 的数据,语法为“mstp.dst == 0x03”。过滤器可以很复杂,因此我们提供了一个对话框来帮助您构建过滤器表达式。点击 tab10 即可打开此对话框。在这里,我们在 tab11 中选择了 Bacnet MSTP 协议,在 tab12 中选择了“目标地址”过滤器,在 tab13 中选择了“==”以进行精确匹配,最后在 tab14 中输入了十六进制格式的 Bacnet 地址 ID 0x03。
8. 如果遇到问题,可以尝试不同的波特率。我的设备在 78k 波特率下无法正常工作,但令人惊讶的是,在 112k 波特率下却可以正常工作。此外,还可以在“Windows 设备管理器”的“端口设置”->“高级设置”->“延迟计时器”中找到 COM 端口延迟设置。FTDI 的常用 USB COM 端口芯片的默认设置为 16 毫秒,如果驱动程序支持,您可以尝试更低的设置。
其他开源工具:
最后,对于更高级别的 Bacnet 对象调试,我们有久负盛名的“Yabe”,它的全称是“Yet another Bacnet Explorer”(又一个 Bacnet Explorer)。这是一个开源项目,目前由 Frédéric Chaxel 维护。安装我们的 T3000 软件时,它会自动安装,您可以在“工具”->“Bacnet 工具”下找到它。如果您想在不安装 T3000 软件的情况下安装该工具,以下是 Yabe 开源项目的链接:
https://sourceforge.net/projects/yetanotherbacnetexplorer/
10.这就是在不花很多钱的情况下调试 Bacnet MSTP 流量的方法。
专业 Bacnet 工具:
以下是一些来自 Cimetrics、Polarsoft 和 Chipkin 的常用工具,专业开发人员或集成商应该会需要它们。不过,正如您所见,它们的价格也不菲。我们在 Yabe 工具问世很久之前就购买了 Chipkin Bacnet Explorer 工具,它已经物有所值,但现在 Yabe 的功能已经很完善,我们团队很少再使用它了。











