SignalR技术在光伏监控系统中的研究与应用

计算技术与自动化 / 2018年08月19日 07:40

互联网+

何文学��++罗晟勇��++彭天玲

摘要:随着互联网技术的快速发展,采用易于部署和远程监控的B/S架构来实现光伏监控系统是大势所趋,但传统B/S架构以客户端发出请求、服务器端响应的工作方式无法很好的满足光伏行业对数据实时性的高要求。为了解决此问题,研究SignalR技术在光伏监控系统中的应用具有重要的意义和实用价值。

关键词:SignalR;光伏监控;B/S架构;服务端

中图分类号:TP311.5文献标识码:A

1引言

随着能源供需矛盾的不断加剧和环境污染的日益严重,世界各国都在努力开发和寻找可替代的绿色清洁能源。太阳能是一种清洁、高效和永不衰竭的新能源,太阳能资源的利用是国家可持续发展战略的重要内容[1]。使用无污染的太阳能并将光伏发电技术推广势在必行。随着规模性光伏电站大量投入运行,实时地监控光伏电站运行状况,满足电站系统的监控需求,是目前亟需解决的关键问题。

目前的光伏发电站大都以孤立的形式存在,之间并无联系,缺乏统一的调度与监控,每个光伏电站都配备了各自的技术、运行和管理人员,各电站间缺乏协调运行管理[2,3]。随着互联网技术的快速发展,传统的C/S架构系统向B/S架构发展已成为必然的趋势,B/S架构的系统能很好的解决光伏发电站信息孤立,多站远程统一调度与监控困难的问题,但是B/S架构传统的客户端浏览器与服务器之间通过请求/响应来获取信息的方式已经不能满足光伏监控系统对数据实时性的要求。SignalR兼容的通讯设计将Comet与WebSocket等实时通讯技术都整合在其通讯框架中,支持从服务端到客户端的高频率推送,极大的提高了B/S架构应用的实时性。同时,SignalR将底层复杂的通讯技术进行抽象,提供给开发者一个简单易用的高阶API,用来实现服务器端与浏览器间的远程调用[4]。

2SignalR技术研究

SignalR是一个有利于构建交互式、多用户以及实时Web应用程序的框架,它大量使用了异步技术以使得应用程序满足实时性要求并达到最佳性能。它抽象了应用程序客户端和服务器之间的传输协议,支持HTML5的WebSocket,ServerSendEvents协议及Comet的ForeverFrame,AjaxLongPooling协议[5]。SignalR始终都会尝试根据环境的兼容性选用最高效的传输方式,然后使用它来创建底层连接并保持连接持续打开,同时还能自动管理连接断开和重连。如图1所示,我们只需要使用一个持续打开的连接,而无需知道其底层是采用的哪种技术实现的。

SignalR提供了一套统一的编程模型,它不依赖于实现基础连接的具体技术。开发人员而无需关心底层是使用LongPooling还是WebSockets方式来维持连接,只要在框架建立的虚拟连接上实现自己的服务,并且始终都是使用同样的API,这种方式使得该框架功能非常强大,灵活。SignalR还包含一个消息总线,它可以管理连接到服务的客户端和服务端之间数据的发送和接收。服务端可以跟踪连接到它的客户端并检测它们的状态是连接还是断开,同时,服务端可以发送消息给所有或者部分连接到它的客户端,自动管理所有和通讯相关的问题并保证消息的传送[6]。

SignalRAPI包含两种模式的客户端和服务器之间的通信:持久连接和Hubs。一个持久连接表示发送单一的接收方消息、分组消息或广播消息的一个简单的端点。持久连接API使得开发人员可以直接访问SignalR公开的低级别的通信协议。而Hubs是建立在持久连接API上的更高级别的管道,它允许客户端和服务端可以像调用本地方法一样直接相互调用对方的方法,并支持强类型的参数传递及模型绑定[7]。图2显示了Hubs、持久连接和用于传输的基础技术之间的联系。

3SignalR在光伏监控系统中的应用

在光伏监控系统中,底层的汇流箱、逆变器、箱变和环境监测仪等设备的实时数据通过数据采集程序统一采集并存放到实时数据库中,光伏监控系统需要在实时数据库中的数据更新时能立即反馈给客户端界面,动态的更新界面数据,同时实时反映出底层设备的运行工况。

传统的光伏监控系统都是采用C/S架构的组态软件实现,实时性较高,能很好的满足光伏监控系统对数据实时性要求高的需求,但是具有部署困难、维护成本高和无法通过互联网进行远程监控和多站监控的缺点[8]。而采用B/S架构的监控系统能够进行分布式部署,客户端只需一个浏览器就可以进行远程监控和多站监控,能够很好的解决C/S的不足。但是传统的B/S架构的软件一般都是客户端使用AJAX轮询的方式(如图3),在指定时间间隔主动向服务端发出异步的HTTP请求,服务端接收到请求后马上返回响应信息并关闭连接。客户端不管实时数据是否有更新,都会将从服务端获取的实时数据用于前端界面的更新,这样就造成了带宽和服务器资源的浪费,导致实时性和响应速度下降。为了弥补B/S架构软件的这些缺点,将兼容了多种通讯协议的SignalR框架应用到光伏监控系统中,能够很大程度上提高其实时性和响应速度,让使用者感觉就像是在用C/S架构的软件。应用了SignalR框架的光伏监控系统,在系统初始化时SignalR会初始化一个Hub连接到服务端(如图4),服务端会一直等待数据更新,在实时数据没有发生更新之前,服务端不会返回响应信息,直到实时数据发生更新,服务端的Hub会主动调用客户端JavaScript脚本方法,用最新的实时数据更新前端需要更新的元素,而不会反复的与服务器端发生HTTP请求,前端数据也只会在实时数据真正发生改变时才被服务端通知进行更新,这样就能很大程度上减小带宽的使用,同时也能保证光伏监控系统更高的数据实时性,能及时的反应出底层设备的运行情况。

要将SignalR框架应用到光伏监控系统中,首先要在服务层为需要进行实时更新的业务数据建立相应的Hub类,它负责处理从客户端接收的连接和客户端调用的服务端方法。然后建立一个相应的业务类,它负责定时的查询实时数据库中的数据是否发生变化,当数据发生变化时,业务类将发生变化的数据广播到客户端,客户端对应的脚本方法接收到服务端的通知后,会将需要更新的实时数据替换前端界面的旧数据,以达到有针对性的进行实时数据更新的目的。

1.环球科技网遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.环球科技网的原创文章,请转载时务必注明文章作者和"来源:环球科技网",不尊重原创的行为环球科技网或将追究责任;3.作者投稿可能会经环球科技网编辑修改或补充。