隨著現(xiàn)代控制技術(shù)(control)、計(jì)算機(jī)技術(shù)(computer)、通信技術(shù)(communication)和圖形顯示技術(shù)(CRT)即4C技術(shù)的迅速發(fā)展,越來越多的科學(xué)技術(shù)應(yīng)用在建筑上,樓宇自動化系統(tǒng)在這種情況下應(yīng)運(yùn)而生。在樓宇自動化系統(tǒng)中,現(xiàn)場設(shè)備的各種參數(shù)需要統(tǒng)一管理、監(jiān)視和控制,通過對數(shù)據(jù)接口層的設(shè)計(jì),實(shí)現(xiàn)這些數(shù)據(jù)在現(xiàn)場控制網(wǎng)同中央監(jiān)控系統(tǒng)之間的雙向傳遞,為監(jiān)控系統(tǒng)提供數(shù)據(jù)的傳輸通道,實(shí)現(xiàn)現(xiàn)場控制網(wǎng)與中央監(jiān)控系統(tǒng)之間數(shù)據(jù)的無縫連接。
1、樓宇自動化系統(tǒng)概述
樓宇自動化系統(tǒng)(building automatic system,BAS)或稱建筑設(shè)備自動化系統(tǒng),其主要功能是對建筑物內(nèi)的空調(diào)制冷系統(tǒng)、給排水系統(tǒng)、變配電系統(tǒng)、照明系統(tǒng)、供熱系統(tǒng)以及安全防范系統(tǒng)等實(shí)現(xiàn)全面計(jì)算機(jī)監(jiān)控管理。通過對各個(gè)子系統(tǒng)進(jìn)行監(jiān)測、控制、信息記錄,實(shí)現(xiàn)分散節(jié)能控制和集中科學(xué)管理,為用戶提供良好的工作環(huán)境,為管理者提供方便的管理手段。
樓宇自動化系統(tǒng)一般采用3層的網(wǎng)絡(luò)結(jié)構(gòu)形式。第一層是管理網(wǎng)絡(luò)層,由計(jì)算機(jī)和中央監(jiān)控系統(tǒng)軟件和相應(yīng)的通訊設(shè)備組成;第二層是控制網(wǎng)絡(luò)層為通用控制器;第三層是現(xiàn)場網(wǎng)絡(luò)層,包括傳感器、微控制器、變頻器和執(zhí)行器,由于實(shí)際網(wǎng)絡(luò)結(jié)構(gòu)的構(gòu)建,樓宇自動化系統(tǒng)網(wǎng)絡(luò)邏輯上的3層結(jié)構(gòu),可以連接成為兩層結(jié)構(gòu),即網(wǎng)絡(luò)僅由管理網(wǎng)絡(luò)層和現(xiàn)場網(wǎng)絡(luò)層構(gòu)成,其控制層已包括在現(xiàn)場層中。
2、數(shù)據(jù)接口層的設(shè)計(jì)
2.1 設(shè)計(jì)思路
設(shè)計(jì)的數(shù)據(jù)接口層采用TCP/IP作為其通信協(xié)議。數(shù)據(jù)接口層的設(shè)計(jì)包括兩個(gè)方面,一方面是中央監(jiān)控系統(tǒng)實(shí)時(shí)地接收智能網(wǎng)關(guān)發(fā)送的現(xiàn)場數(shù)據(jù)信息;另一方面是將中央監(jiān)控系統(tǒng)發(fā)送的控制命令傳遞到智能網(wǎng)關(guān)。數(shù)據(jù)傳遞的過程描述如下:當(dāng)現(xiàn)場數(shù)據(jù)發(fā)生變化時(shí),現(xiàn)場控制網(wǎng)通過數(shù)據(jù)接口層向中央監(jiān)控系統(tǒng)發(fā)送連接請求,中央監(jiān)控系統(tǒng)接到這個(gè)請求后,向現(xiàn)場控制網(wǎng)發(fā)送應(yīng)答信息,此時(shí)現(xiàn)場控制網(wǎng)將實(shí)時(shí)數(shù)據(jù)通過數(shù)據(jù)接口層發(fā)送到中央監(jiān)控系統(tǒng),寫入數(shù)據(jù)庫。當(dāng)中央監(jiān)控系統(tǒng)向現(xiàn)場設(shè)備發(fā)送控制命令時(shí),先將控制命令寫入數(shù)據(jù)庫中,然后再將此控制命令通過網(wǎng)絡(luò)應(yīng)用程序發(fā)送到現(xiàn)場控制網(wǎng)中,控制現(xiàn)場設(shè)備。數(shù)據(jù)傳輸流程如圖2所示。
2.2 Windows Sockets技術(shù)
Windows Sockets是Windows環(huán)境下進(jìn)行TCP/IP程序設(shè)計(jì)的網(wǎng)絡(luò)應(yīng)用程序編程接口。它的目標(biāo)是提供一種獨(dú)立的協(xié)議,以支持開放的網(wǎng)絡(luò)性能,通過它可以方便地訪問TCP和UDP網(wǎng)絡(luò)服務(wù)。
Windows Sockets網(wǎng)絡(luò)應(yīng)用程序包括兩個(gè)部分,一部分是服務(wù)器端應(yīng)用程序,主要接收客戶端的連接請求、接收客戶端的信息、處理客戶端的計(jì)算請求、向客戶端發(fā)送計(jì)算結(jié)果和應(yīng)答信息等;另一部分是客戶端應(yīng)用程序,主要用于申請連接服務(wù)器、向服務(wù)器發(fā)送計(jì)算請求、處理服務(wù)器發(fā)回的計(jì)算結(jié)果和其他信息等。
2.3 客戶機(jī)/服務(wù)器模式
客戶機(jī)/服務(wù)器可以被理解為是1個(gè)物理上分布的邏輯整體,它是由客戶機(jī)、服務(wù)器和連接支持部分組成。其中客戶機(jī)是1個(gè)面向最終用戶的接口設(shè)備或應(yīng)用程序,可向其他設(shè)備或應(yīng)用程序提出請求,然后再向用戶顯示所得信息;服務(wù)器是1項(xiàng)服務(wù)的提供者,它包含并管理數(shù)據(jù)庫和通信設(shè)備,為客戶請求過程提供服務(wù);連接支持是用來連接客戶機(jī)與服務(wù)器的部分,如網(wǎng)絡(luò)連接、網(wǎng)絡(luò)協(xié)議、應(yīng)用接口等。在樓宇自動化系統(tǒng)數(shù)據(jù)接口層的設(shè)計(jì)過程中,將中央監(jiān)控系統(tǒng)作為服務(wù)器運(yùn)行,而現(xiàn)場控制網(wǎng)中負(fù)責(zé)同中央監(jiān)控系統(tǒng)進(jìn)行數(shù)據(jù)交換的智能網(wǎng)關(guān)作為客戶端運(yùn)行。因此數(shù)據(jù)接口層的設(shè)計(jì)實(shí)際上包括兩個(gè)方面,一是服務(wù)器端的程序設(shè)計(jì);二是客戶端的程序設(shè)計(jì)。
3、系統(tǒng)實(shí)現(xiàn)
3.1 開發(fā)及運(yùn)行環(huán)境
以Microsoft公司的Visual Studio 2005作為主要的開發(fā)工具,系統(tǒng)開發(fā)語言選用C#,它綜合了VB簡單的可視化操作和C++的高運(yùn)行效率,具有強(qiáng)大的操作能力、優(yōu)雅的語法風(fēng)格、創(chuàng)新的語言特性和便捷的面向組件編程。數(shù)據(jù)庫管理軟件采用Microsoft SQL Server 2005,該數(shù)據(jù)庫系統(tǒng)在安全性、準(zhǔn)確性和運(yùn)行速度方面有絕對的優(yōu)勢,并且處理數(shù)據(jù)量大,效率高。
3.2 數(shù)據(jù)傳輸
具體數(shù)據(jù)傳輸?shù)牟僮鬟^程如下:
1) 在客戶端和服務(wù)器端,把Winsock的Protocol(協(xié)議)屬性都設(shè)置為TCP,說明使用的是TCP協(xié)議。服務(wù)器端調(diào)用TcpListener類,客戶端調(diào)用TcpClient類。在C#中,這兩個(gè)類都封裝在System.Net命名空間中;
2) 對于客戶端應(yīng)用程序,必須知道服務(wù)器計(jì)算機(jī)的名稱或IP地址,還要知道服務(wù)器計(jì)算機(jī)的監(jiān)聽端口號,在.NET框架中IPEndPoint類包含應(yīng)用程序連接到主機(jī)上的服務(wù)所需的主機(jī)和端口信息,通過組合服務(wù)的主機(jī)IP地址和端口號, IPEndPoint形成到服務(wù)的連接點(diǎn)。創(chuàng)建Socket,將該Socket綁定到特定終端節(jié)點(diǎn),并通過Connect方法綁定到該終端節(jié)點(diǎn)所建立的連接;
3) 對于服務(wù)器端應(yīng)用程序,相應(yīng)地要設(shè)置1個(gè)監(jiān)聽端口,并調(diào)用TcpListener的Start方法監(jiān)聽來自客戶端的請求;
4) 建立連接后,任何一方都可以收發(fā)數(shù)據(jù)。調(diào)用Send方法將數(shù)據(jù)發(fā)送到Socket。當(dāng)接收數(shù)據(jù)時(shí),用Receive方法從Socket中接收發(fā)來的信息。客戶端發(fā)送的數(shù)據(jù)以‘|’分隔,在服務(wù)器端通過Split函數(shù)將這些數(shù)據(jù)區(qū)分開來。
在程序的設(shè)計(jì)中,涉及到Socket編程技術(shù)、多線程技術(shù),因此命名空間必須還包括System.Net.Sockets以及System.Threading。
3.3 數(shù)據(jù)顯示
以樓宇自動化系統(tǒng)中的電力系統(tǒng)為例,系統(tǒng)監(jiān)控對象包括:應(yīng)急柴油發(fā)電機(jī)組、高壓進(jìn)線柜、變壓器、市電聯(lián)絡(luò)柜、低壓聯(lián)絡(luò)柜、低壓配電柜。監(jiān)控的內(nèi)容包括:1)發(fā)電機(jī)的運(yùn)行狀態(tài);2)發(fā)電機(jī)電池電壓;3)發(fā)電機(jī)的運(yùn)行溫度及超溫報(bào)警;4)高壓配電柜的開關(guān)狀態(tài);5)高壓側(cè)變壓器柜的開關(guān)狀態(tài);6)低壓側(cè)變壓器柜的開關(guān)狀態(tài);7)變壓器的運(yùn)行溫度及超溫報(bào)警;8)市電聯(lián)絡(luò)柜的開關(guān)狀態(tài);9)低壓聯(lián)絡(luò)柜的開關(guān)狀態(tài);10)低壓配電柜的開關(guān)狀態(tài)。主要用到的是Label控件, TextBox控件,以及GroupBox控件。
由于用到多線程技術(shù),所以在實(shí)時(shí)數(shù)據(jù)顯示過程中用到跨線程調(diào)用窗體控件技術(shù)。
3.4 數(shù)據(jù)記錄
利用SQL Server2005制作數(shù)據(jù)庫BAS,并制作兩張數(shù)據(jù)表,分別是應(yīng)急發(fā)電系統(tǒng)表a_dynamo,變配電系統(tǒng)表a_transformer。對數(shù)據(jù)庫的操作還涉及到存儲過程技術(shù)。在BAS數(shù)據(jù)庫的stored procedures中新建兩個(gè)存儲過程,分別為應(yīng)急發(fā)電存儲過程YJInsertData以及變配電存儲過程BPInsetData,用來向相應(yīng)的數(shù)據(jù)表中插入相應(yīng)的數(shù)據(jù)。應(yīng)急發(fā)電系統(tǒng)的存儲過程YJInsertData代碼如下所示:
Create PROCEDURE YJInsertData
(@dynstatefloat,@dynvoltagefloat,
@dyntemperature float,@gtime datetime)
AS insert into a_dynamo
(dynstate,dynvoltage,dyntemperature,gtime) values
(@dynstate,@dynvoltage,@dyntemperatu,@gtime)
利用C#連接SQL Server數(shù)據(jù)庫,用到的命名空間:
System.Data,System.Data.SqlClient。系統(tǒng)時(shí)間gtime用到System.DateTime.Now命名空間。
數(shù)據(jù)庫的具體操作過程如下:
1) 利用Connection對象連接數(shù)據(jù)庫,通過Open方法使用ConnectionString屬性中的信息聯(lián)系數(shù)據(jù)源并建立1個(gè)打開的連接。ConnectionString屬性,是1個(gè)字符串,用于提供登錄數(shù)據(jù)庫和指向特定數(shù)據(jù)庫所需的信息;
2) 利用Command對象構(gòu)建SQL命令。將CommandType屬性設(shè)置為StoredProcedure,即將CommandText屬性設(shè)置為存儲過程的名稱,如YJInsertData。然后利用Command的Parameters.Add方法向該存儲過程插入相應(yīng)的數(shù)據(jù)。最后利用ExecuteNonQuery方法,執(zhí)行數(shù)據(jù)庫命令并返回受影響的行數(shù),改變數(shù)據(jù)庫的相應(yīng)數(shù)據(jù)表中的內(nèi)容;
3) 利用Connection對象的Close方法關(guān)閉數(shù)據(jù)庫連接。
3.5系統(tǒng)驗(yàn)證
在Visual Studio 2005平臺上完成代碼編寫,運(yùn)行后,模仿客戶端實(shí)時(shí)發(fā)送一組樓宇自動化系統(tǒng)中的電力系統(tǒng)數(shù)據(jù)。
本文首先對樓宇自動化系統(tǒng)的概念以及網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行簡單概述,然后對數(shù)據(jù)接口層的設(shè)計(jì)做了詳盡的介紹。最后使用Windows Sockets技術(shù)完成中央監(jiān)控系統(tǒng)與現(xiàn)場控制網(wǎng)之間的數(shù)據(jù)傳遞和數(shù)據(jù)顯示,并利用SQLServer2005對數(shù)據(jù)進(jìn)行保存。從以上分析及其實(shí)現(xiàn)來看,Windows Sockets是一種應(yīng)用廣泛,運(yùn)行效果良好的接口技術(shù),C#是一種簡單、現(xiàn)代、高性能及適用性強(qiáng)的語言,利用它們來完成系統(tǒng)的數(shù)據(jù)接口層設(shè)計(jì)基本滿足運(yùn)行要求。
來源:環(huán)境監(jiān)控系統(tǒng) 機(jī)房動力環(huán)境監(jiān)控系統(tǒng) http://shfkmygs.com/solution/ 本文采集于網(wǎng)絡(luò),如有問題有聯(lián)系刪除
北京金恒智能系統(tǒng)工程技術(shù)有限責(zé)任公司 版權(quán)所有 Copyright 2007-2020 by Create-china.com.cn Inc. All rights reserved.
法律聲明:未經(jīng)許可,任何模仿本站模板、轉(zhuǎn)載本站內(nèi)容等行為者,本站保留追究其法律責(zé)任的權(quán)利!
電話:86+10-62104277/2248/4249 傳真:86+10-62104193-819 京ICP備10010038號-2網(wǎng)站XML
智慧機(jī)房
在線體驗(yàn)