基于Socket的空调远程控制系统设计

2021-05-09 00:29许丽
现代信息科技 2021年20期
关键词:远程控制空调

摘  要:探讨了基于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—),女,汉族,江苏句容人,工程师,硕士研究生,研究方向:空调控制系统。

猜你喜欢
远程控制空调
卖空调
我给空调发奖状
“空调病”到底是什么病?
空调病是怎么回事
水冷发射机冷却系统故障分析及解决方案
基于GSM的远程控制系统
小心空调病