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