


摘? 要:探討了基于Socket的空調遠程控制系統設計和實現,介紹了系統設計的總體方案,并在Delphi編程環境下實現了基于局域網的控制系統。該系統由服務器及客戶端組成,服務器負責下達指令,客戶端接收指令,采集空調機組的運行數據上報給服務器。服務器與客戶端之間采用Socket進行遠程通信。實驗證明,該系統能有效地實現一對多的實時控制。
關鍵詞:Socket;Delphi;空調;遠程控制
中圖分類號:TP311? ? ? ? ? ? ? ?文獻標識碼:A文章編號:2096-4706(2021)20-0024-04
Design of Air Conditioner Remote Control System Based on Socket
XU Li
(Nanjing Tica Climate Solutions Co.,Ltd., Nanjing? 210046, China)
Abstract: This paper discusses the design and implementation of air conditioner remote control system based on Socket, introduces the overall scheme of system design, and realizes the control system based on LAN in Delphi programming environment. The system consists of a server and some clients. The server is responsible for issuing instructions. The clients receive instructions, collect the operation data of the air conditioning unit and report them to the server. Socket is used for remote communication between server and clients. Experiments show that the system can realize one-to-many real-time control effectively.
Keywords: Socket; Delphi; air conditioner; remote control
0? 引? 言
隨著樓宇自動化的不斷發展,空調系統使用傳統的工業現場控制管理模式已無法適應需求,而網絡技術的發展,使遠程控制逐漸進入人們的意識。用戶及維護人員不僅可以通過操作遙控器或線控器控制空調,也可通過計算機遠程遙控空調。這大大提高了客戶及維護人員的運行維護能力,也降低了管理費用。本系統在Delphi編程環境下,利用Socket建立服務器與客戶端的連接,對空調系統實施遠程控制。
1? 相關知識簡介
1.1? ?TCP/IP
TCP/IP(Transmission Control Protocol/Internet Protocol)即傳輸控制協議/網間協議,定義了主機如何連入因特網及數據如何在它們之間傳輸的標準。TCP/IP系列協議歸類到四個抽象層中,應用層、傳輸層、網絡層、數據鏈路層。每一抽象層建立在低一層提供的服務上,并且為高一層提供服務。
1.2? Socket
Socket是在應用層和傳輸層之間的一個抽象層,它把TCP/IP層復雜的操作抽象為幾個簡單的接口供應用層調用已實現進程在網絡中通信。服務器Socket與客戶端Socket建立通過三次握手建立可靠的連接。
1.3? Delphi
由Borland公司推出的Delphi是全新的可視化編程環境,它提供了一種方便、快捷的Windows應用程序開發工具。它使用了MicrosoftWindows圖形用戶界面的許多先進特性和設計思想,采用了彈性可重復利用的完整的面向對象程序語言(Object-Oriented Language)、當今世界上最快的編譯器、最為領先的數據庫技術。
2? 系統總體設計方案
基于Socket的空調遠程控制系統由空調系統、遠程控制器、交換機及上位機軟件組成。上位機與遠程控制器間采用TCP/IP協議進行通訊,遠程控制器與空調機組間采用485協議進行通訊。設計方案如圖1所示。
遠程控制系統大部分時間是對空調系統運行參數進行監控,接收來自遠程控制器的數據,實時顯示機組內外機信息及故障數據,需要時,亦可對空調系統進行控制。
該系統中采用C/S(客戶/服務器)模式:作為服務器端的上位機軟件用于收集不同地點的遠程控制器的數據;作為客戶端的遠程控制器通過485通訊采集空調機組的運行參數,采集的運行參數利用Socket技術上報給服務器。
上位機與遠程控制器的連接方式采用TCP/IP連接。上位機監聽特定的端口,在接收到遠程控制器的連接請求時做出響應,建立點對點的連接。建立連接后的上位機及遠程控制器就可以通過這個連接進行通訊。上位機可以采集不同地點的遠程控制器的運行參數信息。
3? 系統的軟件設計
3.1? Socket技術應用
Socket是“打開—讀/寫—關閉”模式的實現,其交互流程大致如圖2所示。
服務器端先創建Socket,然后與端口進行綁定(bind),再調用(listen)對端口進行監聽,等待客戶端連接。客戶端在創建Socket后,調用(connect)試圖連接服務器Socket。如果連接成功,這時客戶端與服務器端的連接就建立了。客戶端發送數據請求,服務器端接收請求并處理請求,然后把回應數據發送給客戶端,客戶端讀取數據,最后關閉連接。
3.2? DelphiSocket組件
在Delphi編程環境中,可用TServerSocket和TClientSocket兩個組件實現socket通訊。
ClientSocket組件為客戶端組件。它是通信的請求方,主動地與服務器端建立連接。
ServerSocket組件為服務器端組件。它是通信的響應方,它的動作是監聽以及被動接受客戶端的連接請求,并對請求進行回復。
ServerSocket組件可以同時接受一個或多個ClientSocket組件的連接請求,并與每個ClientSocket組件建立單獨的連接,進行單獨的通信。因此,一個服務器端可以為多個客戶端服務。
3.3? 軟件部分設計方案
上位機軟件在Delphi平臺下開發,具備良好的可操作性,程序清晰而又容易擴展及維護。上位機軟件共有5部分組成:Tupo圖、內機控制、群組控制、定時控制及故障處理,如圖3所示。
3.3.1? 拓撲圖
機組正常通訊后,拓撲圖會顯示控制系統所連接的空調機組信息。外機信息包含:遠程控制器地址、系統地址、外機地址、離線/在線、內機數、模式、溫度及故障信息等。內機信息包含:遠程控制器地址、系統地址、內機地址、離線/在線、開關、模式、溫度、風速及故障信息等。軟件界面如圖4所示。
3.3.2? 內機控制
顯示內機的基礎運行參數,如甲醛、CO2、PM2.5、溫度、濕度、TVOC等;顯示機組設定參數,如開關、模式、溫度、風速等。在該頁面內機實行單臺控制,包含開關機、運行模式、風速等。
3.3.3? 群組控制
在該頁面,對所連接的空調機組進行分組,可增加或刪除分組信息,并對空調機組進行分組控制。
3.3.4? 定時控制
配置定時方案參數,包括定時方案名稱、適用群組、周定時、開始時間、模式、風速、溫度、開關。軟件在用戶登錄后,即開啟定時輪詢,當設定時間與當前時間一致時,對已分組的空調機組進行控制。
3.3.5? 故障處理
顯示空調機組實時故障信息,包含內外機故障。
3.3.6? 系統配置
配置服務器端的端口號,設置軟件連接的遠程控制器的數量及故障數據記錄周期。
3.3.7? 部分實現代碼
ServerSocket激活的實現代碼為:
procedure TMainForm.sSpeedButton9Click(Sender: TObject);? ? ?//用戶登錄
var
StrTemp,StrTemp1:string;
Begin
。。。。。。
LoginInit();//登錄信息初始化
TimerSetInit(); //定時設置初始化
indoorlistinit();//內機數據初始化
grouplistinit();//分組數據初始化
groupsetinit();//分組設置初始化
ServerSocket1.Active:=true; //TSERVERSOCKET激活
。。。。。。
end;
ServerSocket監聽的實現代碼為:
procedure TMainForm.ServerSocket1Listen(Sender: TObject; Socket: TCustomWinSocket);//打開監聽
var
i:integer;
begin
if ServerSocket1.Active=true then
begin
sessions:=0;
for? ?i:=0? ?to? ?CMAX? ?do
begin
session[i].CHandle :=0;
session[i].CUsed := False;
end;
end;
end;
ServerSocket讀取客戶端數據的實現代碼為:
procedure TMainForm.ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket);//讀取客戶端數據
begin
。。。。。。
smemo1.Lines.Add(StrTemp1+ 接收client'+Socket.Remote Address+包長:+(‘+inttostr(leng)+);+總長:+(‘+inttostr(gDataTotalLength)+););
if gDataTotal[7]=3 then
begin
fillchar(gDataTotal,26624,0); //清緩存
gDataTotalLength:=0;
exit;
end;
if gDataTotal[7]=2 then
begin
if gDataTotalLength=26624 then
begin
if gGatewayid=gGatewaycnt then
begin
Odata();
if (gflag2=0) then //首次搜索存儲內外機信息
begin
if gadd4 begin gatewaylistsave(); IndoorlistSave(); outdoorlistSave(); indoorlistinit(); grouplistinit(); groupsetinit(); add4:=gadd4+1; sStatusBar1.Panels[3].Text:=系統初始化中......; Memo1.Lines.Add(‘系統初始化中......); end else begin gflag2:=1; aq06.SQL.Clear; StrTemp:=UPDATE login SET searchstate = ‘1 ; aq06.SQL.Add(StrTemp); Timer1.Enabled:=true; Timer5.Enabled:=true; gadd4:=0; sStatusBar1.Panels[3].Text:=系統初始化已完成!; sMemo1.Lines.Add(‘系統初始化已完成!); end; end; gGatewaycnt:=gGatewaycnt+1; if gGatewaycnt>=gGatewaytotal then begin gGatewaycnt:=0; end; Timer4.Enabled:=true; //故障存儲 fillchar(gSendLanData,4352,0); //清緩存 end else begin smemo1.Lines.Add(‘未搜索到+inttostr (gGatewaycnt +1)+#網關!); end; end; gDataTotalLength:=0; fillchar(gDataTotal,26624,0); end; end; ServerSocket關閉的實現代碼為: procedure TMainForm.sSpeedButton2Click(Sender: TObject); //關閉socket begin ServerSocket1.Active:=false; sSpeedButton9.Enabled:=true; end; 4? 結? 論 本系統在Delphi平臺上完成,基于Socket的通信方式,使服務器遠程獲得了空調機組的運行參數,并實現了對空調機組的遠程控制,包含單臺機組控制、群組控制及定時控制。借助該系統,用戶可以方便地通過計算機遠程讀取空調系統的運行狀態參數,并可對空調系統進行遠程控制,提高了用戶及調試人員的使用效率,大大提高了產品的競爭力,具有廣闊的應用前景。 參考文獻: [1] 楊長春.Delphi程序設計教程 [M].北京:清華大學出版社,2016 [2] 李洪彪,廖玲俐,王萬勝,等.基于Socket的遠程無線監控系統設計及應用 [J].自動化與儀器儀表,2009(3):19-21. [3] 張允剛,劉常春,劉偉,等.基于Socket和多線程的遠程監控系統 [J].控制工程,2006(2):175-177. [4] 王艷君,朱綿慶,孫彥彥.基于Delphi的遠程監控系統的開發與實現 [J].福建電腦,2008(2):124-125. [5] 李龍光,何伊斐.TCP/IP協議的安全性淺析 [J].江西廣播電視大學學報,2011,50(2):75-78. 作者簡介:許麗(1984—),女,漢族,江蘇句容人,工程師,碩士研究生,研究方向:空調控制系統。