黄艳庭,谷玉海,王菊远
(北京信息科技大学现代测控技术教育部重点实验室,北京 100192)
风电机组Web实时监测系统要对风电机组的振动、温度、转速等各种数据进行实时监测,功能复杂,数据的实时传输量大。而传统监测系统的通信主要是通过轮询的方式不断地向服务器发送请求,但是会导致请求过于频繁,使服务器的负载压力过大;但是如果通信间隔过长,则无法保证信息的实时性。为了改进这种通信方式,设计了基于WebSocket的风电机组Web实时监测系统,数据服务器通过TCP/IP通信获取高速同步采集系统采集的监测数据,并通过Go语言提供的Channel消息通信机制建立数据服务器与Web服务器之间的数据传输,确保了数据显示的实时性。在浏览器端实现对采集数据的实时在线监测、处理、分析和诊断,对准确了解风电机组设备实时状况及延长设备寿命具有重要意义。
系统总体结构如图1所示,针对分布在各地的风电机组设备,监控中心的主服务器与高速同步采集卡建立基于TCP/IP协议的数据连接。在系统中,高速同步采集卡将数据实时传输给数据服务器,数据服务器一方面将数据保存在Postgre数据库内,另一方面通过Channel消息机制将数据传输给Web服务器,客户端在调用JavaScript后使WebSocket建立与Web服务器的实时数据连接,实现数据的实时交互,最后通过HTML5和Echarts将信息显示在浏览器上。由于系统的各个模块的功能各不相同,完全独立,各个模块之间采用接口进行数据交互,保证了系统运行的可靠性。
WebSocket是一种建立在HTML5基础上的由单个TCP连接实现全双工通信技术方式。在WebSocket API中,浏览器与Web服务器之间只需完成一次握手动作,就可以在两者之间建立一条高速数据传输通道。为建立一个高速WebSocket数据通信。首先,浏览器端向Web服务器端发起一条HTTP连接请求,这个连接与普通的HTTP连接请求不同,发出的连接中具有一条附加信息,附加信息中的“Upgrade:WebSocket”表代表本条信息是一个申请协议升级的 HTTP信息。Web服务器端在接收到请求后,首先处理附加信息,在处理后产生应答信息,并将产生的应答信息发送到浏览器端,由此浏览器端与Web服务器端就成功的建立了一条基于WebSocket方式的快速数据传输通道。浏览器端和Web服务器端就可以通过这个WebSocket数据传输通道随时进行数据传输(图2),而且这条通信连接将会一直持续保持连接,除非浏览器端与Web服务器端中的一方主动将数据通信关闭。
图1 系统总体结构
图2 WebSocket连接
JavaScript实现WebSocket连接的核心代码如下。
数据服务器主要实现同Web服务器的数据实时交互,采用以Go语言为核心的Beego框架搭建的平台,在系统运行最初阶段首先建立同Web服务器端的通信连接。Go语言提供的消息通信机制被称为Channel,它类似于单双向数据管道(Pipe),用户可以使用Channel在两个或多个线程之间传递消息。对于在线程间传输大量数据的应用,可以使用异步Channel,从而达到消息队列的效果(图3)。异步Channel就是给Channel设定一个Buffer值。在Buffer未写满的情况下,不阻塞发送操作;在Buffer未读完之前,不阻塞接收操作。
图3 线程间通信示意
为能够实现信息的远程快速传送要求,系统设计了基于TCP协议的自定义数据传输协议,远程数据采集系统首先按自定义传输协议将数据打包,然后根据TCP协议将数据包发送到系统数据服务器。数据帧格式定义如表1所示,采用16进制数字的0xAA0x55代表数据的数据头,表示一帧数据的基本信息;数据包类型表示采集的数据类型为数据采集结果包或者数据采集参数数据包;数据包的最大采样长度为65 536,其中包含AA55的字节长度;采样时间表示一帧数据开始采集的时间;采样频率代表监测数据的采样频率;起始通道代表和结束通道分别代表一帧数据中数据采集系统的开始通道和结束通道。
将数据库布置在各个数据服务器上,由不同的IP地址进行区分。由监测系统的设计要求建立系统的数据库数据的存储结构。存储的数据主要包括主轴转速、电机转速、风速、温度等数据,由于采集的监测数据非常大,数据库存储的信息很就可以达到TB数量级。
根据PostgreSQL数据库的特点,把需要储存的监测数据先进行纵向划分,然后进行横向划分。纵向划分是把采集到的机组数据保存在不同的数据库中,每个数据库存储设定数量的监测信息,同时建立一个风场整体信息数据库用来保存风场全部监测数据。横向划分将同一数据库中每一机组的数据信息依据采集时间的不同存储在不同的数据表内。划分之后的各子数据库和监测信息存储表整体设计和数据信息存储表结构如图4所示。将同一机组的不同监测位置采集的实时在线监测信息保存在风场整体信息数据库的实时数据表内,同时将监测到的各机组数据保存在数据库的相关历史数据表内。
表1 数据帧格式
为验证监测系统的性能,利用构建的综合试验台模拟风机齿轮箱的工作平台,进行数据采集及故障诊断分析并在前端浏览器实现实时显示及频谱分析。图5为模拟单台机组的运行监测状态;图6为模拟单台机组实时振动波形图。
根据以上论述设计的基于Websocket技术的风电机组Web实时在线监测系统,它是根据目前风电机组监测系统中普遍存在的数据传输速度慢、功能单一的缺陷和弊端中开发的一套管理系统,经过多次测试,效果良好,工作性能稳定、可靠,完全满足设计需要。
图4 各子数据库和监测信息存储表整体设计
图5 模拟单台机组的运行监测状态
图6 模拟单台机组实时振动波形图
[1]周奇才,朱清,赵炯,等.大型设备远程监测系统的实时通信设计[J].机电一体化,2016,22(2):41-44.
[2]张川,蔡其星.基于智能移动终端的工厂监控系统设计与实现[J].工业控制计算机,2014,27(1):5-6.
[3]唐昭琳,顾林.基于Ajax长轮询技术的在线答疑系统设计[J].广西科学院学报,2013,29(1):40-42.
[4]文爱平,文德民.基于IE浏览器的Ajax Comet架构[J].电脑知识与技术,2010,6(17):4646-4648.
[5]戚永军,翟智平,耿娟平.基于Comet的Web即时通信系统设计与实现[J].计算机科学,2012,39(S2):77-79.
[6]张信.基于Websocket信息推送的研究与实现[J].科学与财富,2014(3):127-128.
[7]吕海东.基于WebSocket的实时Web监控系统[J].工业控制计算机,2014,27(6):82-83.
[8]郑玲,郑晓天.基于WebSocket的电力系统实时数据更新研究[J].计算机与现代化,2013(1):85-87.
[9]谷玉海.大型风电机组齿轮箱早期故障诊断技术与系统研究[D].北京:机械科学研究总院,2016.