BACnet 协议栈浅析(Java 版)之 BACnet 协议简介

BACnet 协议是楼宇自动化中的一种常用协议,本节会首先对 BACnet 技术做一个简介,然后将介绍 Java 版的 BACnet 协议栈的学习思路。

1 BACnet 协议简介

首先,BACnet 协议栈的出现是为了解决楼宇自动化中不同设备间的通讯障碍。如果每个系统都使用自己的通讯协议,那么对于综合监控系统来说,接入这些子系统的信号将变得非常困难。当然,为了解决这一问题,也可以通过第三方工具来消除通讯上的障碍,例如数据库、WebService 等等,我们应该辩证的看待这个问题,由于 BACnet 被提出的时间(最初的想法)可以追溯到 1987 年,那个年代互联网技术还没有这么发达,软硬件成本也没有今天这么低廉,所以一种通用的楼宇设备通信协议显然是最优的解决方案。但即便是今天,存在多种替代技术的情况下,利用通用协议进行通信也不是一个坏的选择,因为这样做实际也可以节约软硬件的成本。并且,实际上很多国家已经将 BACnet 协议作为行业标准。

那么什么是 BACnet 呢?BACnet 是 A Data Communication Protocol for Building Automation and Controls NETwork 的缩写,从中可以看出,BACnet 的服务对象是楼宇自动控制系统,这个领域涉及的业务很广泛,包含 HVAC 控制、火灾监测报警、灯光控制、安防、电梯等诸多方面。从这个角度来说,对于智能楼宇、智慧城市、智能办公的从业者来说,就不得不对 BACnet 协议有一个了解,因为这些技术发展的基本前提就是数据的采集、分析与控制,而这一切都绕不开与建筑中已有的系统进行通信。

或许你很好奇,对于不同种类的设备(例如电梯和火灾报警主机),BACnet 是如何将其统一起来的?BACnet 协议定义了一系列的抽象的属性(例如模拟输出、数字输入等)和方法(例如读取属性等),每一套设备都被视为一个 BACnet 设备,可以从一个大的集合中选取其所支持的属性和方法,来构建属于自己的应用。(这类似于程序设计中的面向对象模型)

而这些应用都是基于底层的硬件网络来实现的,例如串口、以太网等等,对于不同的网络结构,其通讯又需要进行路由,BACnet 协议中的网络层解决了这些问题。

在其补充协议中,BACnet 又增加了新的对于 IP 网络的支持,这使得你的智能手机也可以通过网络轻松连接到楼宇设备。

可能你还是觉得一头雾水,你需要的只是一个快速的入门,来教会你如何使用协议栈来构建自己的应用。如果你是一个纯粹的新手,请阅读第2部分关于 BACnet协议栈的学习思路。如果你已经有一定的基础,可以在后续章节中选择性的阅读。

2 Java 版 BACnet 协议栈

本节将介绍 Java 版的 BACnet 协议栈的学习思路。

  1. 首先你需要对 BACnet 协议栈有一个基本的了解,它是干什么的,都包含哪些要素。你可以浏览其官方网站 http://www.bacnet.org/index.html,或者看一下 http://www.bacnet.org/Tutorial/HMN-Overview/sld001.htm 官方的入门教程,这可能是需要花费你半个小时到一个小时的时间
  2. 然后你可以搜寻一些 BACnet 相关介绍的帖子,或者干脆购买一本 BACnet 教程。虽然这些内容大多只是对英文版协议的翻译,但这绝对会让你对 BACnet 协议栈的认识有一个大的提升。
    • 我看的教材名字是:《BACnet 标准与楼宇自控系统技术》,机械工业出版社,这本书对于 BACnet 的介绍部分是对 BACnet 协议的翻译
    • BACnet 协议中文版:https://pan.baidu.com/s/1hrViIVy 密码: fvfx,这个协议翻译的不全
    • 一个比较好的中文入门简介: https://pan.baidu.com/s/1slERBRZ 密码: ii2g,这个教程对于协议本身的讲解比较细致
      虽然这些内容你会发现大多是雷同的,但绝对值得去看,这大概需要一到两天的时间。
  3. 这时如果你手头有现成的 BACnet 设备,你可以下载一个叫做 VTS 的工具(Visual Test Shell for BACnet)来尝试着与其通信,这个工具可以从 https://sourceforge.net/projects/vts/ 或 https://pan.baidu.com/s/1mijTEmW (密码: t9gy)下载。相信在看过之前那么多文档之后,你已经可以简单操作这个软件了。
  4. 如果你没有 BACnet 设备也不要紧,VTS绝对可以帮助你调试你自己的 BACnet 程序
  5. 选择一种语言的 BACnet 协议栈,开始你的编码工作吧。

由于我使用的是 Java 协议栈,所以从下一节开始,我将尽可能明了的阐述如何使用 BACnet for Java 协议栈构建自己的 BACnet 程序。

你可能感兴趣的:(BACnet)