电子文章 | 电子资料下载 | 家电维修 | 维修资料下载 | 加入收藏 | 全站地图
您现在所在位置:电子爱好者维修技术家电维修单元电路介绍其它电路基于C/S 模式与完成端口的路灯监控软件的设计

基于C/S 模式与完成端口的路灯监控软件的设计

09-08 11:40:24 | http://www.5idzw.com | 其它电路 | 人气:605
标签:电路设计,http://www.5idzw.com 基于C/S 模式与完成端口的路灯监控软件的设计,http://www.5idzw.com

  2) 远程终端定时向软件服务端发送的现场数据报文,主要包括路灯监控现场采集到的电流,电压,温度,开关状态,报警信息等数据信息,如表2 所示。

  3) 软件客户端发送给服务端, 并由服务端转发到相应远程终端的参数设置报文,根据不同的功能号,报文发送不同的参数信息,包括开关灯时间,报警阀值,数据采集周期等如表3 所示。

表2 现场数据报文

表3 参数设置报文

  3. 4 完成端口通信的优化

  3. 4. 1 内存池的设计

  完成端口模型采用异步通信模式, 每次调用WSASend 和WSARecv 函数都需要在内存创建一个结构体空间,函数调用完毕后,再销毁这个结构体空间。频繁的创建和销毁内存空间占用了大量的系统资源,因此,在设计完成端口程序时,根据需求创建一定数量的结构体空间,并将其放入一个统一的空闲队列,当调用WSASend 和WSARecv 函数时,从队列中取用一个结构体空间,使用完毕,再将其放回队列。

  3. 4. 2 连接池的设计

  当用传统的aCCept 函数接收客户端时,accept函数会创建一个socket 作为返回值,分配给客户端。

  客户端断开连接时,创建的socket 会被销毁。创建和销毁socket 的过程会占用大量的系统资源,因此在接收客户端时, 采用acceptEx 函数代替accept,该函数可以把一个事先创建好的socket 对象,分配给接收到的客户端。首先, 创建好一定数量的socket 对象,形成一个连接池,当接收到客户端的连接请求时,从连接池中取出空闲socket 对象,分配给该客户端,断开连接时,再将socket 放回连接池队列。连接池的设计减少了客户端SOCKET 的不断创建与销毁,节省了大量的系统资源。

  3. 4. 3 线程池的设计

  完成端口本身就应用了线程池技术,线程池中的线程不仅包括了工作者线程,还包括了工作上完成端口上的服务线程。有效的对这些线程进行管理,能够减少CPU 在不同线程间的频繁切换,降低了切换线程上下文所耗费的时间。

  3. 4. 4 数据池的设计

  完成端口模块接收到的数据,要根据通信规约进行处理与分析,并将数据存储到相应的数据库中。

  由于完成端口网络通信的数据传输总是不平稳的,常常会出现短时间内接收到大量数据,而另一段时间内只接收到少量数据要的情况。为了防止服务器在短时间内超负荷工作,造成的数据意外丢失或是程序崩溃的情况,在进行数据处理时,预先建立了数据存储队列,形成一个数据池,将未处理的数据加入队列, 并采用FIFO 的策略来分配CPU 时间,这就使得CPU 资源得到充分的利用,提高了数据处理的安全性和可靠性。

  4 客户端软件设计

  客户端软件通过一般的SOCKET 通信方式与服务器相连,主要是功能是为用户提供一个简洁,便利的用户功能界面。地图显示模块通过对GIS 电子地图的绘制,将城市地图及路灯系统的分布图直观的显示给用户,使得用户能够大体的了解到整个路灯系统的运行状态。动画显示模块通过FLASH 编程技术,将单个远程终端所控制的配电柜示意图展示给用户,用户可以了解到现场的实时数据并对具体的监控点进行设置,开关灯等操作。数据显示模块与数据库相连,用户可以查询到各个监控点的历史数据以及当前的设置参数,了解路灯系统的具体工作状态。软件客户端主界面如图3 所示。

图3 客户端软件主界面

  5 完成端口服务器软件的性能测试

  5. 1 测试对象

  完成端口通信模型与传统通信模型相比,拥有更大的数据吞吐量和客户端数目,并且通过线程池、连接池、内存池的设计和应用,节省了系统资源,提高了服务器软件的数据处理效率。在对传统通信模型和完成端口通信模型的性能测试和比较中,选取饥饿的客户端和每秒线程上下文切换次数两个重要指标为测试对象。饥饿的客户端定义为同一时间向服务器申请连接并发送数据的客户端中,未被服务器影响的客户端数。

  5. 2 测试环境

  选用两台Intel Core2 1. 9GHz 双核CPU,2G 内存台式机,一台用作服务器电脑,一台用作客户端电脑。服务器电脑上分别安装传统通信模型的旧版路灯监控软件和完成端口模型的新版路灯监控软件,并且在软件程序中加入测试代码,用来计算饥饿客户端数目和线程上下文的切换次数; 客户端电脑上用测试软件来模拟一定数量的终端设备的客户端,并向服务器同时进行连接和发送数据的操作。

  5. 3 测试结果及分析

  不断的改变模拟客户端的数量,对两种通信模型进行测试,分别记录下两种模型在不同数量的客户端下,饥饿客户端数量和线程上下文切换的次数,重复多次测试,取得多组数据,取其平均值。

  如表4 所示,当模拟客户端数目逐渐增加时,传统通信模型的饥饿客户端数量也不断增加,这就使得大量的客户端无法得到服务器响应,大量客户端的数据无法传输,导致数据的阻塞和丢失。而完成端口通信模型采取了一系列的优化策略,并不存在客户端无法得到服务的情况。

  如表5 所示,在模拟客户端数量较少时,两种通信模型的线程上下文切换次数相当; 当模拟客户端数量增加时,传统通信模型的切换次数剧增,而每次的切换都会导致系统资源的额外开销,这就使的传统通信模型的数据处理效率十分低下。使用完成端口通信模型时,线程上下文切换次数并未随着模拟客户端的增加而产生更大的变化,因此完成端口模型更适合于大量客户端的应用场合,并且仍可保持的数据通信的可靠性和高效性。

表4 饥饿客户端测试

表5 每秒线程上下文切换次数

  6 结束语

  完成端口技术的引入, 充分发挥了服务器多CPU 的优势,使得整个监控系统的数据通信性能得到了极大的优化了。经过压力测试,当监控终端设备数量达5000 时,系统仍然能够保持高效、稳定的运行。目前该系统应用于厦门路桥公司,龙岩长汀等地的路灯控制,取得了良好的效果。

上一页  [1] [2] 

,基于C/S 模式与完成端口的路灯监控软件的设计