大家好,欢迎来到IT知识分享网。
随着现代控制技术(control)、计算机技术(computer)、通信技术(communication)和图形显示技术(CRT)即4C技术的迅速发展,越来越多的科学技术应用在建筑上,楼宇自动化系统就是在这种情况下应运而生。在楼宇自动化系统中,现场设备的各种参数需要统一管理、监视和控制,通过对数据接口层的设计,实现这些数据在现场控制网同中央监控系统之间的双向传递,为监控系统提供数据的传输通道,实现现场控制网与中央监控系统之间数据的无缝连接。
楼宇自动化系统概述
楼宇自动化系统(BAS)或称建筑设备自动化系统,其主要功能是对建筑物内的空调制冷系统、给排水系统、变配电系统、照明系统、供热系统以及安全防范系统等实现全面计算机监控管理。通过对各个子系统进行监测、控制、信息记录,实现分散节能控制和集中科学管理,为用户提供良好的工作环境,为管理者提供方便的管理手段。
楼宇自动化系统一般采用3层的网络结构形式。第一层是管理网络层,由计算机和中央监控系统软件和相应的通讯设备组成;第二层是控制网络层为通用控制器;第三层是现场网络层,包括传感器、微控制器、变频器和执行器。由于实际网络结构的构建,楼宇自动化系统网络逻辑上的3层结构,可以连接成为两层结构,即网络仅由管理网络层和现场网络层构成,其控制层已包括在现场层中。
总体设计框图如图 1 所示:
图 1 楼宇自动化系统网络结构
数据接口层的设计
设计思路
设计的数据接口层采用TCP/IP作为其通信协议。数据接口层的设计包括两个方面,一方面是中央监控系统实时地接收智能网关发送的现场数据信息;另一方面是将中央监控系统发送的控制命令传递到智能网关。数据传递的过程描述如下:当现场数据发生变化时,现场控制网通过数据接口层向中央监控系统发送连接请求,中央监控系统接到这个请求后,向现场控制网发送应答信息,此时现场控制网将实时数据通过数据接口层发送到中央监控系统,写入数据库。当中央监控系统向现场设备发送控制命令时,先将控制命令写入数据库中,然后再将此控制命令通过网络应用程序发送到现场控制网中,控制现场设备。数据传输流程如图2所示。
图 2 数据传输流程
WindowsSockets技术
WindowsSockets是Windows环境下进行TCP/IP程序设计的网络应用程序编程接口。它的目标是提供一种独立的协议,以支持开放的网络性能,通过它可以方便地访问TCP和UDP网络服务。
WindowsSockets网络应用程序包括两个部分,一部分是服务器端应用程序,主要接收客户端的连接请求、接收客户端的信息、处理客户端的计算请求、向客户端发送计算结果和应答信息等;另一部分是客户端应用程序,主要用于申请连接服务器、向服务器发送计算请求、处理服务器发回的计算结果和其他信息等。
客户机/服务器模式
客户机/服务器可以被理解为是1个物理上分布的逻辑整体,它是由客户机、服务器和连接支持部分组成。其中客户机是1个面向最终用户的接口设备或应用程序,可向其他设备或应用程序提出请求,然后再向用户显示所得信息;服务器是1项服务的提供者,它包含并管理数据库和通信设备,为客户请求过程提供服务;连接支持是用来连接客户机与服务器的部分,如网络连接、网络协议、应用接口等。
在楼宇自动化系统数据接口层的设计过程中,将中央监控系统作为服务器运行,而现场控制网中负责同中央监控系统进行数据交换的智能网关作为客户端运行。因此数据接口层的设计实际上包括两个方面,一是服务器端的程序设计;二是客户端的程序设计。
系统实现
开发及运行环境
以Microsoft公司的VisualStudio2005作为主要的开发工具,系统开发语言选用C#,它综合了VB简单的可视化操作和C++的高运行效率,具有强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程。数据库管理软件采用MicrosoftSQLServer2005,该数据库系统在安全性、准确性和运行速度方面有绝对的优势,并且处理数据量大,效率高。
数据传输
具体数据传输的操作过程如下:
◆在客户端和服务器端,把Winsock的Protocol(协议)属性都设置为TCP,说明使用的是TCP协议。服务器端调用TcpListener类,客户端调用TcpClient类。在C#中,这两个类都封装在System.Net命名空间中;
◆对于客户端应用程序,必须知道服务器计算机的名称或IP地址,还要知道服务器计算机的监听端口号,在NET框架中IPEndPoint类包含应用程序连接到主机上的服务所需的主机和端口信息,通过组合服务的主机IP地址和端口号,IPEndPoint形成到服务的连接点。创建Socket,将该Socket绑定到特定终端节点,并通过Connect方法绑定到该终端节点所建立的连接;
◆对于服务器端应用程序,相应地要设置1个监听端口,并调用TcpListener的Start方法监听来自客户端的请求;
◆建立连接后,任何一方都可以收发数据。调用Send方法将数据发送到Socket。当接收数据时,用Receive方法从Socket中接收发来的信息。客户端发送的数据以‘|’分隔,在服务器端通过Split函数将这些数据区分开来。
在程序的设计中,涉及到Socket编程技术、多线程技术,因此命名空间必须还包括System.Net.Sockets以及System.Threading。流程图如图 3 所示。
数据显示
以楼宇自动化系统中的电力系统为例,系统监控对象包括:应急柴油发电机组、高压进线柜、变压器、市电联络柜、低压联络柜、低压配电柜。监控的内容包括:
◆发电机的运行状态;
◆发电机电池电压;
◆发电机的运行温度及超温报警;
◆高压配电柜的开关状态;
◆高压侧变压器柜的开关状态;
◆低压侧变压器柜的开关状态;
◆变压器的运行温度及超温报警;
◆市电联络柜的开关状态;
◆低压联络柜的开关状态;
◆低压配电柜的开关状态。
利用Visual Studio 2005 平台,制作监控界面如图 4 所示。主要 用到的是 Label 控件, TextBox 控件, 以及GroupBox 控件。
图 4 电力系统监控界面
由于用到多线程技术,所以在实时数据显示过程中用到跨线程调用窗体控件技术。流程图如图 5 所示。
图 5 跨线程调用窗体控件流程
数据记录
利用SQLServer2005制作数据库BAS,并制作两张数据表,分别是应急发电系统表a_dynamo,变配电系统表a_transformer。
对数据库的操作还涉及到存储过程技术。在BAS数据库的storedprocedures中新建两个存储过程,分别为应急发电存储过程YJInsertData以及变配电存储过程BPInsetData,用来向相应的数据表中插入相应的数据。应急发电系统的存储过程YJInsertData代码如下所示:
CreatePROCEDUREYJInsertData
(@dynstatefloat,@dynvoltagefloat,
@dyntemperaturefloat,@gtimedatetime)
ASinsertintoa_dynamo
(dynstate,dynvoltage,dyntemperature,gtime)values
(@dynstate,@dynvoltage,@dyntemperatu,@gtime)
利用C#连接SQLServer数据库,用到的命名空间:
System.Data,System.Data.SqlClient。系统时间gtime用到System.DateTime.Now命名空间。
数据库的具体操作过程如下:
◆利用Connection对象连接数据库,通过Open方法使用ConnectionString属性中的信息联系数据源并建立1个打开的连接。ConnectionString属性,是1个字符串,用于提供登录数据库和指向特定数据库所需的信息;
◆利用Command对象构建SQL命令。将CommandType属性设置为StoredProcedure,即将CommandText属性设置为存储过程的名称,如YJInsertData。然后利用Command的Parameters.Add方法向该存储过程插入相应的数据。最后利用ExecuteNonQuery方法,执行数据库命令并返回受影响的行数,改变数据库的相应数据表中的内容;
◆利用Connection对象的Close方法关闭数据库连接。
系统验证
在VisualStudio2005平台上完成代码编写,运行后,模仿客户端实时发送一组楼宇自动化系统中的电力系统数据‘1|220|30|1|0|1|0|1|0|35’,服务器端监控界面数据显示如图 6 所示。
图 6 实时数据监控界面
利用数据表记录 4 组不同时间段客户端发来的数据如图 7 、图 8 所示。
结论
本文首先对楼宇自动化系统的概念以及网络结构进行简单概述,然后对数据接口层的设计做了详尽的介绍。最后使用WindowsSockets技术完成中央监控系统与现场控制网之间的数据传递和数据显示,并利用SQLServer2005对数据进行保存。从以上分析及其实现来看,WindowsSockets是一种应用广泛,运行效果良好的接口技术,C#是一种简单、现代、高性能及适用性强的语言,利用它们来完成系统的数据接口层设计基本满足运行要求。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/87655.html