http://www.oaha.net

<<首 页

<<学术研究

<<信息公告

<<名录检索

<<工程精英

<<网罗人才

<<空中书阁

<<联系我们

<<城市论谈

首页>>学术研究>>更多

 

|电力|通讯|自动化|更多|

 

<< 楼宇自控

<< 火灾报警

BACnet路由器研究

张勤 刘贤德


摘要
分析BACnet路由器的功能和特点,给出实际的设计方案,并对方案进行论证和分析。随后预测了BACnet路由器的前景。本文对于BACnet路由器设备的开发具有良好的指导意义。
关键词
BACnet,路由器,楼宇自动控制,协议
Study of BACnet Router
Zhang Qin, Liu Xiande
Optoelectronics Department, Huazhong University of Science and Technology, wuhan, hubei province, PR china
Email: wildfield@netease.com
Abstract:
This article first analysed the functions and characteristics of the BACnet router, then gave an actual design, and demonstrated it, finally forecasted the future of the BACnet router. This article gave valuable guidances to the development of the BACnet router device. 
Keyword:
BACnet, router, automation, protocol
1. 前言
BACnet路由器,即以BACnet协议为标准的楼宇自动控制网络的路由器。
所谓路由器,即在网络层连接两个或多个网络的设备。BACnet路由器是将两个或多个BACnet网络互联起来,构成一个BACnet互联网络的设备。路由器可以提供、也可以不提供BACnet应用层功能。BACnet路由器使用BACnet网络层协议报文自动构造和维护其路由表。
通过一个点到点(PTP)联接互联两个独立BACnet网络的设备也称为BACnet路由器。
可以用一台单独的设备实现BACnet路由功能,这个设备是BACnet路由器设备;也可以在那些具有楼宇自动控制功能的设备内实现BACnet路由功能,这种设备是综合设备。
BACnet网络通讯协议是由美国暖通空调制冷工程师学会(ASHRAE)发起制定并得到美国国家标准局(ANSI)的批准,由楼宇自动化系统的生产商、用户参与制定的一个开放性标准。
BACnet协议是一个新兴的控制网络数据通信协议。用于采暖、通风、空调和制冷控制设备(简称HVAC&R)的监控计算机设备之中,也可用于其它楼宇自动控制系统的计算机设备之中。此外还定义了一个抽象的和面向对象的方法,用来表示这些设备之间信息通信方式,从而促使在楼宇系统中使用数字控制技术[1]。BACnet创造了一个安全强劲的方法来保证系统间的互操作能力,同时保持了开放性和灵活性来兼容厂商间的不同方案[2]。
2. BACnet路由器的特点
2.1 BACnet路由器协议栈分析

图1. BACnet简化的体系结构层次图
BACnet协议的体系结构如图1。BACnet协议定义了自己的应用层和简单的网络层,路由功能是BACnet网络层协议的一部分。对于其数据链路层和物理层,提供了五种选择方案。
另外在BACnet协议附件J中详细规范了BACnet使用因特网协议实现网络互联和报文传输的应用,定义了BACnet/IP(B/IP)的概念。一个BACnet/IP网络是一个或者多个IP子网(IP域)的集合,这些子网都被分配有单独的BACnet网络编号。一个BACnet互联网络由两个或者多个BACnet网络组成,这些网络可以是B/IP网络,也可以是图1中所列技术的网络。B/IP的特点是使用IP网络作为BACnet网络的底层传输机制,IP网络对BACnet网络层来说是透明的。
BACnet路由器,工作在BACnet网络层,其功能是使两个或多个不同的BACnet局域网,不论使用什么样的BACnet数据链路技术,都能够将报文从一个BACnet网络传送到另一个BACnet网络,例如ISO 8802-3和ARCNET,实现互联,并且提供中继功能。
针对市场需求和实用性,BACnet路由器不一定要对上述全部可选数据链路层和物理层提供路由功能,按需求选择适当若干种即可。
2.2 BACnet路由器的分类
在两种情况下使用BACnet路由器,一种情况是要把两种不同类型的BACnet局域网络互连;另一种情况是要把一个太大的BACnet局域网分割成为多个比较小的局域网段以减小通信量拥塞。
根据连接的子网类型,可将BACnet路由器分为:B/IP路由器,非B/IP路由器,B/IP网络和非B/IP网络之间的路由器。提供PTP连接的路由器又称为半路由器。使用扩展路由表连接非BACnet网络和BACnet网络的路由器又称为BACnet网关。
2.3 B/IP网络和非B/IP BACnet网络的比较
第一,在B/IP网络方面,B/IP地址的作用相当于非B/IP BACnet网络的MAC层地址。第二,路由器连接非B/IP网络,使用物理端口;连接B/IP网络,使用端口的B/IP地址识别每一个逻辑端口。第三,涉及多个B/IP网络的BACnet互联网络,与传统的BACnet互联网络相比有更大的动态性。
2.4 BACnet路由器和IP路由器的的比较
第一,BACnet/IP以IP网为传输机制。IP路由器连接多个IP子网,组成一个B/IP网络。第二,BACnet路由器无需最佳路径选择,这是因为在设计和安装BACnet互联网时,要求在任何两个设备之间只能有一条有效路径,这个限制大大降低了网络层的复杂性。而在IP路由器中路由选择是重点。第三,BACnet路由器排除了在网络层中对报文分段和重组功能的需要,BACnet协议对经过BACnet路由器的报文中的网络层PDU(NPDU)长度强加了一些限制。即NPDU的最大长度不能超过源到目标路径上所经过的任何数据链路技术的能力[1]。第四,BACnet网络的拓扑结构不会常常变化,而IP路由器需要解决网络拓扑变化的问题。第五,BACnet网络属于控制网,BACnet路由器的数据流量比IP路由器小得多。第六,IP路由器已经发展到基于硬件的交换式路由器,而目前BACnet路由器是基于软件的,还处在刚刚起步阶段。
3. BACnet路由器的组成结构及设计方案
BACnet路由器作为一个具体设备,不仅要实现BACnet路由器的功能,还要考虑到许多非功能性需求,比如安全性,可靠性,稳定性,易用性等等。为了支持路由器软件的运行,需要选择合适的硬件和合适的操作系统。为了维护和使用,还需要有配置或者说控制功能。
我们开发的BACnet路由器的使用示意图见图2。

图 2. BACnet路由器的使用示意
选择一种工业控制计算机作为路由器的硬件平台,具有两个以太网接口,两个RS-485接口,两个RS-232接口。使用DiskOnChip存储器存储操作系统和所开发的运行程序。实际上,为设备的冗余,热插拔,吞吐量,时钟精度等性能考虑,BACnet路由器的硬件应专门精心设计。
定制一种Linux操作系统,该操作系统(以下简称“自制Linux”)以不到2MB存储空间的代价提供了必要的硬件驱动,运行库,和管理维护工具软件。Linux具有很高的稳定性和灵活性,足以胜任BACnet路由器的操作系统[3]。
路由器软件可以作为一个应用程序运行在该Linux系统上,也可以做成设备驱动程序的形式放入内核空间。当协议软件集成到操作系统中后,在协议软件的低层之间进行数据传送的开销要小很多。我们暂采用应用程序的方式[4]。
为了保证路由器正常运行,还需要路由器管理程序,路由器配置程序,路由信息查看程序,及操作系统维护软件,必要的实用工具等等,这些组成了管理及支持子系统。
系统的软件体系结构设计如图3。

图 3. BACnet路由器软件简化的体系结构
实际上,Linux内核已经包含了对IP网络的支持,而MS/TP和PTP的驱动则要自己开发。
网络层报文的组装拆装。设立一个报文接收缓冲队列,通过特定函数在层间传递地址指针来进行报文的层间传送;对于每个报文的组装拆装,通过头尾指针的移动来设定新的报文头尾。
路由表的维护。一个BACnet路由器至少要连接到两个以上BACnet网络,每个连接都是经过一个“端口(port)”完成的,使用一个结构体来描述每个端口的以下信息:
struct {
port 一个与网络连接的端口;
net 映射BACnet网络,
netAddress 一个BACnet网络地址。 
routingInformation 封装下一跳地址next_hop、要使用的发送地址address_for_sending、以及可到达性状态state。
routingTable 用来实现路由表的功能。
Router哈希表 “键-值”对为“net-routingInformation”对,net对应着一个BACnet网络,routingInformation包含达到net的路由信息,利用router可以快速检索到达到目标网络net的路由信息。
port_net哈希表 “键-值”对为“port-netAddress”对,该实例容纳路由器各个端口及和各个端口相连的BACnet网络号码。
}
实现BACnet路由器软件的关键是路由表的维护,使用BACnet网络层协议报文来对路由表进行维护。当路由器收到网络层协议报文,就执行对应于报文的已由协议规定的操作。
4. BACnet路由器的性能分析
下面对BACnet路由器的实时性、可靠性、稳定性、安全性等逐一进行分析。
实时性分析。MS/TP需要一个精度为5毫秒的计时器,用于产生和测量字节之间的介质静止时间,而Linux的周期模式定时器频率仅为100Hz。若用软件实现这个计时器,要求操作系统具有高实时性,那么就要对Linux进行改造,把它改造成实时操作系统,但是目前的改造方法不尽如人意。所以我们用硬件实现MS/TP适配器,就不至于对操作系统提出过高的实时性要求。
可靠性要求是针对故障恢复和负载能力而提出来的。对于BACnet路由器来说,可靠性主要体现在接口故障和网络流量增大两种情况下。BACnet路由器设备的可靠性取决于软件和硬件的实现水平,这就需要实现者确定最优的体系结构。仅从操作系统来说,Linux的可靠性保证了一定程度的设备可靠性。
稳定性体现了路由器在数据转发以及长时间工作下的表现。路由器的硬件可以用热备份、双电源供电、数据通路备份等方法来提高稳定性,但对于软件的稳定性则是一个较难解决的问题。软件稳定性的难点在于软件的状态均受不同软件相互作用的影响。
BACnet路由器安全方面的主要隐患,是有人有意或无意地改变了设备的配置参数或控制参数。问题产生的原因经常是由于安全措施没有把某个计算机操作包括在内,从而使得在那台计算机上可以进行非法操作。Linux操作系统提供了有效的安全管理手段。
此外,BACnet路由器还需要有体积小,功耗小,丢包率低,易于使用等性能特点。
5. BACnet路由器的发展和展望
综合化。市场需求表明,越来越多的BACnet智能控制设备朝综合化的趋势发展,例如一个综合设备兼有控制器、BACnet网关、BACnet路由器的功能。综合设备降低了系统的软硬件成本。
构件化。因为众多BACnet设备都是对BACnet协议的适当裁剪,其中的BACnet网络层协议变化性最小,具有高度可复用性。如果开发出一个既全面又可根据用户需求灵活配置和裁剪的可复用构件,既可以节约开发单位的开发成本,又具有很高的商业价值。
硬件化。随着BACnet的发展,软件路由器必然满足不了越来越高的性能要求,而使得BACnet路由器也如IP路由器一样向硬件化发展。这些年,出于成本和性能的考虑,在IP路由器中ASIC应用得越来越广泛。可编程ASIC的出现,对于变化相当快的网络结构和协议是一个福音。
参考文献
1. ANSI/ASHRAE, Standard 135-1995: BACnet-A Data Communication Protocol for Building Automation and Control Networks, USA, 1995
2. David Fisher, BACnet(r) at Work, http://www.bacnet.org/Bibliography/ASH-7-00.htm
3. 任远扬,胡正国,LINUX及其在智能建筑系统中的应用,计算机工程与应用,2002年18期
4. 董春桥,刘贤德,惠晓实,基于Linux开发BACnet的体系结构研究,华中科技大学学报 2001年10期

作者简介:
张勤,华中科技大学硕士研究生。刘贤德,华中科技大学教授,博导。

<< 保安监控
<< 系统集成
<< 智能金卡
<< 其        它
   

   

关于我们|网管信箱|友情联接
®oaha
渥安华信息公司网络部版权所有