APP下载

BACnet/IP智能终端的模型研究与设计

2014-09-06郑翔张珣

单片机与嵌入式系统应用 2014年1期
关键词:实例终端对象

郑翔,张珣

(杭州电子科技大学 电子信息学院,杭州 310018)



BACnet/IP智能终端的模型研究与设计

郑翔,张珣

(杭州电子科技大学 电子信息学院,杭州 310018)

BACnet/IP是BACnet协议与IPV4互联网互连的协议。本文提出了一种将BACnet/IP与无线通信相结合的终端模型,同时将BACnet Protocol Stack开源工程移植应用于此种模型之上。硬件平台是ARM9处理器和CC1101无线通信模块,经测试此控制器符合BACnet/IP的通信协议规程。重点完成了ARM9嵌入式平台的软硬件搭建、BACnet Protocol Stack在此平台的移植与改进,以及无线模块与BACnet协议栈的互操作和终端提供的web服务。

BACnet/IP;ARM9;CC1101; BACnet Protocol Stack;楼宇控制器

引 言

BACnet(Building Automation and Control network)是一种为楼宇自动控制网络所制定的数据通信协议,其产生的背景是用户对楼宇自动控制设备互操作性的广泛要求,即将不同厂家的设备组成一个一致的自控系统,它是智能建筑楼宇自控领域中唯一的国际标准。目前全球跨国楼宇自控厂商均支持和生产BACnet自控设备和产品,而国内对于BACnet方面的研究与应用仅限于少量的论文及会议,这对于我国智能建筑自控领域的发展显然是十分不利的。本文在研究国外BACnet发展的基础上提出了一种BACnet/IP楼宇控制器的模型,并在实验室环境中实现和测试。

1 BACnet协议简介

BACnet最成功之处就在于采用了面向对象的技术,定义了一组具有属性的对象(Object)来表示任意的楼宇自控设备的功能,从而提供了一种标准的表示楼宇自控设备的方式。BACnet标准中定义的标准对象有模拟输入(Analog Input)、模拟输出(Analog Output)、设备(Device)等,其中“设备对象”是每个BACnet必须拥有的对象,这是一个具有网络访问特征的集合模型。 举例来说,一个标准的BACnet测温设备就可以用设备对象(Device)加一个模拟输入对象(Analog Input)来表示。

当一个BACnet设备要与另一个BACnet设备进行通信时,它必须要获得该设备的设备对象中所包含的某些信息,这些信息在BACnet中就称为BACnet设备对象的属性,“对象标识符”是BACnet设备中的每个对象必须具有的属性,它是一个32位的编码,可以唯一地标识一个BACnet设备。对象标识符由对象的类型和其实例标号组成,第一部分为对象类型标识域,占10位,可以表示1024个对象类型。协议规定0~127为BACnet保留类型,例如Analog Input对象类型为0,Analog Output对象类型为1,Device对象类型为8等;第二部分为对象实例编码域,共22位,可以表示4T个对象实例,也就是说Device对象在整个BACnet网络中只能有4T个实例,而其他对象在一个BACnet设备中就可以有4T个实例。类比于IPV4协议来说,Device对象所对应的实例号就相当于IP地址,除Device对象外的其他对象在每个BACnet设备中可以多达4T个,每个对象都可以提供不同的服务,如BACnet测温设备中的Analog Input对象可以提供读取温度服务,这就相当于IP通信进程中的“PORT”,每个PORT可以提供不同的服务,BACnet设备的通信过程与IPV4协议中通过IP + PORT在IP网络中确立一个服务进程的思想是一致的。

BACnet/IP作为BACnet协议的扩展于1999年加入至BACnet标准中,BACnet/IP 提出了使用IPV4网络作为BACnet的底层网络,从而可以极其方便地利用IP网络组建大型的BACnet网络。

2 BACnet/IP智能终端的模型建立

2.1 传统BACnet/IP终端模型

传统的BACnet/IP终端在实现上基本上遵循这样的模型:终端控制器一方面实现BACnet/IP协议栈的功能,另一方面还要和底层控制器,如空调控制、照明控制器等各种DDC(直接数字控制系统),进行通信。每个BACnet设备由一个Device对象和一个其他的服务对象组成,这个服务对象就和特定的DDC进行通信,从而完成特定的工作。

传统的BACnet/IP终端设备模型如图1所示,往往是每个控制器负责一样具体的工作,如每个控制器只能单一的控制空调设备,暖通设备或者照明设备等,这种做法可以降低BACnet/IP控制器的工作负荷,每个控制器只用维护很少量的资源,节约控制器的制造成本,甚至可以用单片机实现。但是,缺点是显而易见的:这种做法必将占用大量的Device实例号,不易于BACnet的大规模组网与实现。

图1 传统BACnet/IP终端设备模型

2.2 改进的BACnet/IP终端模型

鉴于前述的传统BACnet/IP终端模型的缺点,提出了一种改进的终端模型:一个BACnet设备由一个Device对象和多个其他对象组成,相同的对象类型则由对象实例域进行区分,比如温度对象和湿度对象在BACnet标准中都是用Analog Input对象来表示,但是相同对象可进一步用不同的对象实例号来区分。若远端试图访问本BACnet终端的湿度对象,则需要在BACnet/IP网络上通过Device对象实例号与湿度对象对应的Analog Input对象实例号来访问。

相比与传统的BACnet/IP终端模型,改进后的终端中每个BACnet/IP控制器可以负责不同的工作,拥有多种不同的对象及属性,可以提供更多的服务,同时大大减少Device对象的使用量,适合BACnet网络的大规模实现。

传统与改进后的BACnet/IP终端模型如图2所示。

图2 传统与改进后的BACnet/IP终端模型

2.3 基于无线的BACnet/IP终端

在改进的BACnet/IP终端模型中,BACnet控制器与底层控制器间仍然是以有线的方式进行通信,有线通信对于BACnet/IP通信环境的搭建以及以后的扩展维护都是一个极大的阻碍。所以本文采用无线通信的方案进行BACnet/IP终端的实现,其模型如图3所示。当BACnet/IP终端收到经由IPv4网络发送而来的BACnet服务原语,会经过其内部的BACnet协议栈确认为对象访问类服务,控制器需要操作无线模块对特定的无线采集DDC节点进行访问,如读取当前温度值、调节照明亮度等。

图3 基于无线的BACnet/IP终端

将无线通信的方法应用于BACnet,可以使得BACnet组织更加灵活,更加方便地增加和移除设备。

3 BACnet/IP终端的硬件设计

基于上述模型,终端需要同时提供多个对象的服务、IP网络服务,以及和无线模块之间通信,这对于硬件资源的要求较高,所以终端在硬件微处理器的选择芯片为三星公司的S3C2440A处理器,而在无线模块上选择是CC1101无线芯片。图4是终端控制器的硬件结构图,各部分的功能如下:

① S3C2440A控制核心板,负责嵌入式Linux操作系统及BACnet协议栈的运行。

② USB模块,主要是外接无线网卡,可以通过WLAN将终端接入IP互联网中,接无线网卡的好处是进一步省去了IP网络布线的麻烦。

③ UART模块,使终端可以通过RS232接口和PC机进行通信,主要是为了调试。

④ 无线模块,终端侧的无线节点,和底层无线采集节点进行通信。

⑤ LCD触摸屏,用于和用户交互,平时工作时可以将背光关掉以节能。

图4 BACnet/IP终端硬件设计

4 BACnet/IP终端的软件设计

基于前面的BACnet/IP终端模型与硬件平台,软件平台上选择嵌入式Linux作为平台,ARM9和Linux的配置也是当前较为先进和流行的嵌入式平台。软件设计部分主要涉及嵌入式Linux系统的搭建与裁剪、BACnet/IP协议栈的移植,以及BACnet/IP协议栈和无线模块之间的交互。

4.1 嵌入式Linux系统构建

在ARM9处理器上移植与构建嵌入式Linux系统目前已经有比较成熟的方案,在移植Linux系统时不要裁剪网络功能,需要将IPV4与IPV6网络功能保证完全,因为BACnet/IP协议正是基于TCP/IP协议栈的UDP层,而保留IPV6协议栈是考虑到BACnet也可以架构与IPV6网络之上,这是需要注意的。

4.2 BACnet/IP协议栈的移植

BACnet/IP协议栈的实现上,本文采用移植BACnet Stack Protocol工程。BACnet Stack Protocol是Steve Karg在2005年于著名的开源网站sourceforge上维护的一个BACnet协议栈开源工程,它完整地实现了BACnet协议标准,并且可以方便地移植应用于多种平台上,如WIN32、Linux、PIC单片机、ARM7处理器等,目前最新的版本是bacnet-stack-0.8.0。

由于BACnet Stack Protocol工程采用C语言开发,所以可以很方便地移植于嵌入式Linux系统中,具体来说只要在编译的时候选择相应处理器对应的编译器即可。BACnet Stack Protocol之所以具有高度的可移植性,归功于其模块化的编程方法和BACnet协议栈的分层设计。在将BACnet Stack Protocol移植于不同硬件平台时,只需要修改对应数据链路层部分,而网络层和应用层代码无需修改,这和IP协议栈能应用于不同硬件场合的思想也是一致的。

4.3 无线模块与BACnet/IP通信

由于无线模块只负责控制着底层的DDC,相应于BACnet协议中的应用服务,也就是说无线模块只需要负责和BACnet协议栈中的应用层进行通信,当应用层协议数据单元(APDU)需要获取DDC的数据时,即调用无线模块进程与之进行通信。整个系统的软件设计如图5所示。

图5 BACnet/IP终端软件设计

系统的软件由以下几部分模块组成:

① Linux内核模块,主要用于IP网络协议栈以及各种底层驱动(如LCD屏幕,无线模块驱动)的实现。

② BACnet协议栈模块,主要用于移植BACnet Protocol Stack开源工程。

③ 无线模块,用户态的无线模块进程用于和底层的各个无线采集节点进行通信,而通信的上层进程为BACnet协议栈。

④ Web模块,提供Web服务,使得用户可以通过IP网络的http服务远程访问和控制终端。

5 系统性能测试

Research and Design of Intelligent Terminal Model of BACnet/IP

Zheng Xiang,Zhang Xun

(Electronic Information Institute,Hangzhou Dianzi University,Hangzhou 310018,China)

BACnet/IP is the protocol linking BACnet and IPV4 Internet. The paper puts forward a terminal model that combined BACnet/IP and wireless communication, and applys the open source projects “BACnet Protocol Stack" on this model. With the ARM9 processor and CC1101 wireless communication module hardware platform, this terminal controller complies with BACnet/IP communication protocol well. The paper focuses on building the ARM9 embedded hardware and software platform, BACnet Protocol Stack migration and improvement, as well as wireless module with BACnet protocol stack, to provide interoperable Web services and terminals.

BACnet/IP;ARM9;CC1101; BACnet Protocol Stack;building controller

TP368.1

A

猜你喜欢

实例终端对象
涉税刑事诉讼中的举证责任——以纳税人举证责任为考察对象
X美术馆首届三年展:“终端〉_How Do We Begin?”
通信控制服务器(CCS)维护终端的设计与实现
GSM-R手持终端呼叫FAS失败案例分析
攻略对象的心思好难猜
基于熵的快速扫描法的FNEA初始对象的生成方法
区间对象族的可镇定性分析
完形填空Ⅱ
完形填空Ⅰ
ABB Elastimold 10kV电缆终端及中间接头