首页>>科技 >>内容

利用电力线宽带通信技术平台构建电力线家庭内部网络系统

发布时间:2023-10-28 13:55:30编辑:温柔的背包来源:

很多朋友对利用电力线宽带通信技术平台构建电力线家庭内部网络系统不是很了解,每日小编刚好整理了这方面的知识,今天就来带大家一探究竟。

利用电力线宽带通信技术平台构建电力线家庭内部网络系统

电力线通信(PLC)是近年来发展迅速的一种以电力线网络为载体的新兴通信技术。利用采用嵌入式系统和电力线调制解调技术构建的电力线网络通信终端,人们可以轻松地在办公室、家庭和工业现场组建局域网,成为一种智能家居和分布式工业过程控制。非常好的系统构建方法,具有广阔的应用前景和市场。本应用系统利用电力线终端平台和路由器构建电力线家庭内部网络,实现家电、安防、三表的集中管理;外部通过宽带连接互联网,远程终端可通过软件查询和控制家电状态。具体搭建方法是在每个房间、客厅、厨房放置一个电力线通信终端平台,挂载在电力线上,形成家庭内部网络,集中管理所有电器,利用电力线调制解调器模块连接路由器,通过ADSL上网。这样整个家庭内部网络就与互联网进行交互,使得远程终端可以通过Internet网络访问家庭内部局域网。

一、 系统功能与设计

本应用系统实现的主要功能如下:

1)实时监控客厅温度。比如夏天超过33度,系统会主动控制制冷、空调开启;冬天低于10度就开暖气、空调。

2)小区安防系统通过连接电力线通信终端平台和与其互联的GPRS,可以上传安防信息。例如,当有人非法进入房屋时,系统会通过Internet网络向预设的报警接收终端发送实时消息,例如110报警站。物业服务公司监控室、业主办公电话或业主手机等,发送预警信息。

3)业主可以通过远程终端接入家用电器,实施远程控制,比如打开和关闭日光灯、打开电饭锅,这样下班回家后就能吃到美味的米饭。

为了实现上述功能,利用CPU模块上LPC2210的GPIO(General Purpose I/O)口连接继电器来控制家用电器的开关,如:电饭锅、空调、日光灯等, ETC。芯片的外部中断用于连接安防系统,当系统报警时,外部中断通知ARM CPU使用GPRS发送报警信息;同时,硬件电路上安装了LED灯和A/D转换电路,实时测试并显示各种家用电器当前的运行状态。应用系统包括电力线通信平台的编程和PC机的编程。 CPU模块(下位机)作为服务器,使用TCP作为通信协议提供服务。服务器端收到服务请求后,解析该请求,并根据不同的请求提供相应的服务。 PC作为客户端,发出服务请求,收到服务器的响应后,将具体内容显示在屏幕上。本例中客户端使用Qt可视化编程环境。下面,我们首先介绍Qt的相关知识,然后具体分析服务器端和客户端的应用程序设计。

二、Qt简介

Qt 是一个综合性的C++ 应用程序开发框架。它包含用于跨平台和国际开发的类库和工具。 Qt 是一个全面的开发框架,包括用于开发高性能、跨平台客户端和服务器端应用程序的广泛特性、功能和工具。

同时,Qt针对不同平台(Unix、Windows、Mac)封装了专门的API,如文件处理、网络(操作、协议)、进程处理、线程、数据库访问等。统一的跨平台API使得程序员可以专注于增值技术创新,而不必担心维护和管理现有应用程序多个版本的基础设施和接口。 Qt 已在多个操作系统和编译器上经过了数千名商业和开源应用程序开发人员的测试,为高性能和资源密集型应用程序奠定了基础。 Qt 不需要“虚拟机”、模拟层或大容量运行时环境。它像本地化应用程序一样直接编写低级图形函数,因此Qt 程序可以以源代码速度执行。通过使用Trolltech 的双重许可模式,Qt 在商业支持和经过验证的框架内提供了开源的所有优势: 开源优势包括活跃的开源开发人员社区。 Qt 的持续开发加上完全的代码透明度,使Qt 开发人员能够“彻底深入”来定制和扩展Qt 以满足他们的独特需求。商业产品的保修包括经过客户验证的产品支持、专门的Qt 开发团队以及不断发展的第三方工具、组件和服务生态系统。

(1) 信号

当对象的客户端或所有者的内部状态发生变化时,对象会发出信号。只有定义此信号的类及其派生类才能发出此信号。当发出信号时,其关联的槽将立即执行,就像普通的函数调用一样。信号和槽机制完全独立于任何GUI 事件循环。发射函数仅在所有槽都返回后才返回。如果一个信号有多个槽位关联,那么当该信号发出时,这些槽位会依次被执行,但是它们的执行顺序会是随机且不确定的,我们无法人为指定先执行哪一个槽位哪一个稍后会被执行。信号在头文件中声明。 Qt的signals关键字表明你已经进入了信号声明区域,接下来你就可以声明自己的信号了。

(2) 凹槽

槽是普通的C++成员函数,可以正常调用。它们唯一的特点是可以与许多信号相关联。当发出相关信号时,会调用此槽。槽可以有参数,但槽参数不能有默认值。由于槽是普通成员函数,因此它们与其他函数一样具有访问权限。插槽的访问权限决定了谁可以与其关联。与普通的C++成员函数一样,槽函数也分为三种类型,即公共槽、私有槽和受保护槽。

三、 服务器端

在本应用中,电力线通信终端平台作为服务器连接家用电器。在实时显示电器状态的同时,需要构建TCP服务器,为远程终端提供服务,实现远程控制和报警功能。在基于QF操作系统的网络协议栈中,QL4接口类实现了L4协议(传输层)的解析和处理抽象。在本应用中,需要派生一个QTcp类来实现传输层的TCP协议。

处理抽象。在本应用中,需要派生一个QTcp类来实现传输层的TCP协议。一般基于TCP的网络应用必须继承QTcp类,然后在ESTABLISHED状态中添加子状态来完成特定的功能。在服务器端,量子框架用于实现一个QServer类,它是一个活动对象,继承自QTcp类。 QServer主动对象连接到客户端TCP Socket后,进入ESTABLISHED状态,通过调用Recvfrom函数接收客户端的请求,然后解析请求的服务类型,根据不同的请求提供不同的服务。软件流程图如图1所示:

服务器需要提供的具体服务包括: (1)当接收到客户端打开家电的请求时,使用GPIO端口发送电平信号,并通过继电器打开相关家电。 (2)监测客厅温度。如果夏天超过33度,它会主动控制制冷和空调开启。冬天,当气温降到10度以下时,就会开启暖气和空调。并通过TCP协议及时将空调开关信息传输至远程终端。 (3)当有人触发安防系统并发生外部中断时,利用服务器向客户端发送报警信号。并通过GPRS将预警信息发送至110报警站、物业服务公司监控室、业主办公电话或业主手机等。

四、 PC客户端

PC机作为远程客户端,主要工作是向服务器发送服务请求,并在接收到服务器的响应或报警信号后,将接收到的具体内容显示在屏幕上,实现远程控制和报警功能。在这个例子中,我使用Qt的可视化编程环境。下面介绍客户端的具体功能和实现:在客户端可视化界面上按下日光灯或者电饭锅按钮,可以向服务器发送开关家电的请求,服务器收到请求后执行;同样,按下A/D按钮,您可以发送读取A/D的请求。客户端收到服务器采集的A/D值后,将其显示在屏幕上;每两秒测量一次温度。发送请求,读取当前温度,显示在屏幕上,判断是否打开空调,从服务器读取空调的状态信息,更新空调的开关状态栏,显示在文本框中;当服务器的安防系统检测到入侵时,就会向客户端发送报警信号,客户端需要修改当前的安防系统状态来进行相应的报警。

首先使用Qt的工具Qt Designer来设计界面。然后进入具体的客户端编程阶段,构造一个表单类作为TcpClient类。具体软件编写如下:

TcpClient:TcpClient(QWidget *parent)

: QWidget(父级)

{

ui.setupUi(this);

adsocket=新的QTcpSocket(this); //TCP通道用于传输A/D数据

tempsocket=新的QTcpSocket(this); //用于传输温度数据的TCP通道

applincesocket=新的QTcpSocket(this); //用于控制家电的TCP通道

securitysocket=new QTcpSocket(this); //用于安全系统报警的TCP通道

QTimer *temptimer=new QTimer(this); //2S定时器

连接(临时定时器,信号(超时()),这个,SLOT(temp_update()));

临时-》开始(2000);

连接(adsocket, SIGNAL(connected()), this, SLOT(ad_request()));

连接(adsocket,信号(readyRead()),这个,SLOT(ad_readresult()));

连接(tempsocket,信号(已连接()),这个,SLOT(lm_request()));

连接(tempsocket,信号(readyRead()),这个,SLOT(lm_readresult()));

连接(appliancesocket,信号(已连接()),这个,SLOT(appliance_request()));

连接(securitysocket,信号(readyRead()),这个,SLOT(security_readresult()));

}

动态分配四个QTcpSocket(Qt内部对TCP协议的封装类)对象,并使用该类的对象指针adsocket、tempsocket、appliancesocket、securitysocket分别指向这四个对象。然后定义一个QTimer对象来实现2秒计时。然后连接一些信号和槽,完成各个组件之间的通信,包括:QTimer对象的超时信号连接到temp_update()槽,adsocket对象的连接信号连接到ad_request(),readyRead信号adsocket 对象的连接到ad_readresult ()groove。以同样的方式连接其他几个QTckSocket对象的信号和槽。

下面详细介绍如何实现温度检测和自动空调控制功能(其他功能实现类似,不再详细介绍):

(1) 定时器每2S触发一次。客户端使用tempsocket连接服务器,然后发送测温请求。

(2)接收到服务器的温度数据后,显示在界面上,并根据要求决定是否启动空调。

(3)使用appliancesocket发送打开或关闭空调的命令。并根据服务器端的执行结果修改空调开关状态栏显示。

五、结论

实际测试中,服务器在实验室运行,并连接日光灯、电饭锅和空调。客户在宿舍里跑步。在实现本应用全部功能的基础上,将电力线终端作为服务器连续开启一周,并进行高流量负载测试。能够稳定运行,各项功能正常,无故障。这验证了终端的稳定性以及智能家居应用的可行性。

以上知识分享希望能够帮助到大家!