智能建筑管理系统数据库模块的研究和设计
摘 要:随着信息技术的飞速发展,真正意义上的智能建筑管理系统应当采用Web技术且具有很强的开放性和通用性。提出基于子系统平等方式的智能建筑管理系统,并对其数据库模块,包括实时数据库、实时数据分发服务器、历史数据库、实时数据库与OPC的通信几个子模块进行深入的研究和设计。实际应用表明,该系统的数据库模块设计合理、实时性高、安全稳定性好。
关键词:子系统平等;智能建筑;实时数据库;OPC;hash表
中图分类号:TP311.13 文献标识码:A
1 引言
智能建筑管理系统(Intelligent Building Man-agement System)是信息时代和计算机技术应用的重要产物,其具体任务就是在物理上集成各子系统信息,集中监视各子系统、关键设备、关键监测点状态,执行集中管理控制指令,向数据库提供各子系统数据、图像信息,实现各子系统间的联动功能,并且协调优化各系统的运行,从而为建筑物提供安全、舒适、方便的生活条件和高效的工作环境,并保证其运行维护管理的经济性和智能化。
现阶段智能建筑管理系统集成模式…主要有:①基于硬结点方式的系统集成;②以串行通信方式进行的系统集成;③以楼宇自控系统BAS为平台进行的系统集成;④采用开放式标准协议实现的系统集成;⑤基于子系统平等方式进行的系统集成。其中基于子系统平等方式进行的系统集成是目前公认最先进的集成方式,其核心思想是:
整个BMS集成分为上层管理网和下层现场控制网两个网络层次。系统集成数据库位于上层管理网,各个子系统以平等的方式集成在现场控制网。各子系统的实时数据通过开放的工业标准接口(如OPC接口)转换成统一的格式,存储在系统集成数据库中。系统集成管理网络通过BMS系统核心调度程序对各子系统实现统一管理、监控及信息交换。这种系统集成方法有利于设备制造商各种子系统之间的集成,可以降低开发成本和开发难度,有利于节省项目开发时间。
随着现代信息技术的发展,基于子系统平等的系统集成方式和支持以Web浏览和数据库为核心应用的B/S(Browser/Server)监控模式的IBMS,已成为智能建筑系统集成的发展方向。
2 系统框架
本文研究的系统是在VC的背景下集成开发的,采用了基于子系统平等的集成方式。系统基本框架如图1所示,整个系统采用分层分布式结构的集散监控,总体分为三层。最上层为监控管理中心,负责整个系统协调运行和综合管理;中间监控层及各子系统,具有独立运行能力,实现各系统的监测和控制;下层为现场设备层,包括各类传感器、探测器、仪表和执行机构等。
3 数据库模块的研究与实现
在整个系统实现过程中,数据库模块为IBMS系统集成的关键,同时也是项目开发难点。数据库模块主要包括实时数据库模块、历史数据库模块、实时数据分发服务器模块以及实时数据库与OPC客户端的通信模块。它为集成系统和下层子系统之间的数据通信提供高速通道,是智能建筑系统集成的核心。
数据库模块向上接受监控中心的控制指令,准确迅速地传递给各个子系统,达到控制设备运转的目的;向下数据库模块从现场控制网获取数据,对数据进行分析、处理,执行用户定义的子系统联动功能,保存历史数据。数据库模块的层次结构如图2所示。
3.1 实时数据分发服务器
实时数据分发服务器(RDDS)是实时数据库与Web客户端的数据通信接口。其功能是为浏览器端的页面表现提供数据分发服务,接收并转发客户端(访问、操作人员)下发的控制命令和事件记录。这里我们设计了基于Sockett的实时数据分发服务器,提供客户端与服务器之间的可靠无差错的数据传输。
数据分发服务器与客户端之间的数据交互方式采用面向连接的TCP/IP流式套接字,通信双方接收数据通过多次握手完成,保证了数据传输的有效性。数据由操作功能信息码和操作数据信息两部分组成。接收方首先读取操作功能信息码,再根据操作功能信息码确定下一步读取操作中的数据类型和数据大小,以完成读取操作数据信息,保证了数据传输的安全性。操作功能信息码的各字段值由交互双方的操作类型决定。操作类型划分为客户端注册、客户端注销、客户端用户登录、客户端用户退出、信息点同步、分发状态数据和接收控制指令。操作数据信息的数据包结构如图3所示:
实时数据分发服务器采用事件驱动机制传输数据,服务器把更新的数据主动提供给客户端,以保证数据传输的实时性。
3.2 实时数据库
实时数据库是数据库模块的核心部分,在智能建筑集成系统中起着至关重要的作用。
本系统的实时数据库基于对象方式进行设计,采用从上至下包容的方式:包含系统类对象、子系统类对象、设备类对象和点类对象。实时数据库类对象的层次结构如图4所示:
目前,在Windows环境的组态软件中I/O接口驱动程序与系统实时数据库之间的数据交换一般都是利用动态数据交换协议(DDE)来实现的。由于DDE为基于消息的协议标准,数据传送过程需要处理多条消息,数据交换效率会受到影响。为了提高系统的实时性能,本文提出了利用动态链接库(DLL)和全局共享内存技术来建立实时数据库的设计思想,并通过给用户提供一套接口标准——实时数据库接口,来实现OPC Client及用户程序和实时数据库间的高速数据传递。实时数据库接口由一组API函数组成,包括创建点、删除点、设置点属性、读取点属性等功能,OPC Client和各个用户模块可以直接访问数据库,使系统具有全面的开放型和二次开发功能。
如图5,实时数据库,OPC Client和分发服务器之间通过内存映射实现全局共享内存。OPCClient通过内存映射获得实时数据库点对象的指针,完成写,读,修改配置参数以及对数据的操作,包括添加、删除对象。由于系统包含的点对象数量庞大,需要使用hash表来记录点名与点对象的地址。本系统采用静态分配桶(hash链表长度)结合拉链的方法构造hash链表。拉链即将所有关键字为同义词的结点链接在同一个单链表中。hash表的结构如图6所示,纵向的为静态桶数据结构,横向的为hash node节点数据。
以上的结构建立了点名与点内存地址的一个映射,这样通过点名就可以查询到点的内存地址,即点对象指针。本系统采用time33的hash算法,定义点名变量str,取hash初值为5381。核心代码为:
hash+=(hash<<5)+(*str++);
用掩码取结果的有效位,得到最终的hash值。
在多线程访问同一个数据对象的情况下必须要考虑冲突的解决问题。本系统采用对数据加锁
的方式,即访问数据必须先获得锁再进行操作。该算法构造一个和hash静态桶数组一样的一个BOOL型记录锁数组,访问时通过点名经过hash函数运算得到一个key及对应桶数组的位置。得到key后判断锁数组对应位置的BOOL型变量是否为0(没其他线程访问),如果为0则改为1(这个操作过程须为原子操作),如果为1(其他线程正在操作数据)则放弃剩余时间片,等到下个时间再判断是否锁已经开了,循环一段时间如果还没有开则放弃此次操作报警。经过测试,拉链长度16229静态桶,插入10000个随机字符串,最大拉链长度为7,一个记录锁最多锁住7个点,函数调用总时间不超过1.4秒。算法分布为:kong:8739,elements=10000,good=5426,second=1683,three=322.four=53,five=6。输出中的kong表示hash表的空桶数。elements表示hash表中一共存放了多少个元素,good表示“只有一个元素”的桶个数,sec-ond表示“有两个元素”的桶个数,three表示“有三个元素”的桶个数,four表示“有四个元素”的桶个数,five表示“有五个元素”的桶个数,函数调用总时间表示hash函数总的执行时间。以上测试表明,该算法能以较快的速度建立hash表,并能很好地组织点名与内存地址的映射关系,减少冲突问题的发生。
3.3 实时数据库与OPC的通信
OPC是OLE for Process Control的缩写。顾名思义,OPC是一种利用微软的COM/DCOM技术来达成自动化控制的协定。基于OPC技术的接口是一种有效的手段,能够实现各异构子系统的无缝连接,从而快捷有效地把已有建筑子系统融合起来,组成智能建筑系统集成。
OPC协议采用Client/Server体系。应用程序作为OPC接口中的Client方,硬件驱动程序作为OPC接口中的Server方。OPC Client通过读取配置文件,加载实时数据库DLL并且打开内存映射文件获得实时数据库对象的指针。接着OPCClient遍历实时数据库各个子系统对象,创建相应线程并建立与各OPC Server的连接。OPC Client与实时数据库间的通信如图7所示,包括以下几个步骤:
1)OPC Client初始化实时数据库,由OPCClient提供初始化函数;
2)Web界面发生控制事件或触发联动脚本执行,实时数据库执行OPC Client提供的接口函数写OPC Server;
3)OPC Server数据发生变化时,系统调用COM接口里面的回调函数OnDataChange(),通过实时数据库提供的接口,把更新的数据写入实时数据库。
当有大量的客户和大量的数据进行交互的时候,采用这种异步通讯的方式可以避免客户端数据请求的阻塞,最大限度地节省CPU和网络资源,提高数据传输效率。
3.4 历史数据库
本系统使用SOL Server作为历史数据库的开发平台。历史数据库用于记录、保存和查询各种报警和操作事件、设备运行数据及故障情况。系统采用时间片结合缓冲区链表的方法将实时数据库里的数据写入历史数据库。具体实现办法是:缓冲区维护一个300条数据的链表,实时数据库不断将已更新的数据写入缓存区。一旦缓存区满或经过了一个时间片,系统就将缓存区里的数据追加到历史数据库里面。这样做的好处是能防止断电丢失缓存区里的数据且能提高数据的有效性和准确性。
4 结束语
本文提出了基于子系统平等的智能建筑管理系统,并对该系统的数据库模块,包括实时数据库、实时数据分发服务器、历史数据库、实时数据库与OPC的通信几个子模块进行了深入的研究和设计。基于流式套接字的分发服务器保证了数据传输的安全性、有效性和及时性;动态链接库和全局共享内存技术的应用提高了系统的实时性;hash表在点名和点的内存地址之间建立了快速有效的映射关系;子系统平等方式集成的特点以及OPC技术的运用使得各个异构子系统之间的无缝集成成为可能,解决了系统集成的伸缩性问题。
目前该系统集成已在深圳某大厦得到了较好的应用。经测试,系统实时数据的传输时间≤1秒,控制命令的传输时间≤2秒,联动控制命令传输时间≤2秒。事实证明该智能建筑管理系统的数据库模块设计合理,实时性高,安全稳定性好。
上一篇:数控技术在机械制造中的发展应用