本发明涉及一种设备状态实时方法及系统,适用于电厂等需要实施监控设备状态的企业。
背景技术:
在计算机技术飞速发展的今天,发电厂等生产企业采用计算机监控是发电厂现代化生产的必然要求,计算机监控使发电厂的自动化程度大大提高,还可以提高发电厂的运行效率,计算机监控还为实现发电厂无人值班或少人值守奠定基础。计算机监控技术已经成为现代化发电厂的核心技术之一,从事各类能源转换与发电的技术人员掌握计算机监控技术是非常重要的。
例如在发电企业中,随着大容量、高参数汽轮发电机组的出现,需要监控的参数越来越多,因此计算机监控系统已成为火电厂汽轮发电机组不可缺少的组成部分。为了保证机组的安全、经济运行,对自动化设备的可靠性以及对自动控制系统的性能都提出了更高的要求。
然而传统的计算及监控技术存在一些缺点。主要表现在:
1)传统的监控技术采用c/s系统架构,需要在专用的电脑上安装客户端,导致部署成本高,而且不便于更新和维护。
2)一些基于web的监控系统,虽然解决了部署和维护麻烦的问题,但是因为采用ajax或者定期刷新页面的方式来更新显示数据,所以不但性能较低,而且对网络开销大。
3)另外,传统的监控系统往往十分复杂,开发成本高,周期长。
技术实现要素:
本发明的目的在于克服传统web监控技术反应慢、网络开销大的问题,提供了一种基于websocket的传输方式,通过服务端向客户端推送设备状态数据,以数字或图标的方式在浏览器上实时显示设备的状态。
本发明的实现方式为:
一种基于websocket的设备状态实时监控方法,包括步骤:
a)通过express实现web容器功能,为每个成产系统提供一个独立的监控页面;
b)通过node-mysql实时从数据库取数,客户的数据采集系统往同一个数据库实时插入数据;
c)在取得数据库数据后,通过服务端的socket.io库向浏览器端推送设备状态数据;
d)客户端的socket.io库取得数据后,通过基于jquery的文档更新算法,对页面内容进行实时更新,把设备监控状态图呈现给最终用户。
采用基于nodejs的express框架搭建web服务器,可以在极短的周期内完成开发,并且十分便于扩展和维护;
采用socket.io框架实现websocket服务端和客户端,支持所有主流浏览器,支持服务器端向客户端推送;
默认采用node-mysql框架实时查询mysql数据库,另外也可以支持oracle、mongodb、sqlserver等所有主流数据库,对数据库无要求;
客户端使用基于jquery的文档更新算法,实现页面内容实时更新。
本发明所述的基于websocket的传输方式,通过服务端向客户端推送设备状态数据,以数字或图标的方式在浏览器上实时显示设备的状态。并且由于采用开源框架搭建,插件丰富,代码量小,使得系统可扩展性非常强。通过共用数据库表的方式来与数据采集系统进行交互,实现松耦合,高适应性。
本发明还公开了一种基于websocket的设备状态实时监控系统,包括:
数据采集模块:该数据采集模块安装在设备,实时采集设备的各种状态数据,数据采集模块读取采集器的数据并存储到公用数据库表中;
数据推送模块:该数据推送模块独立运行在web服务器后台,按指定频率从公用数据库中抓取设备状态数据,然后检查当前是否有活动的来自客户端的websocket连接,如果有,就向该连接推送数据;
数据接收模块:该数据接收模块运行在客户端浏览器中,它通过websocket与数据推送模块保持连接,不断接收服务器端推送过来的设备状态数据,并把它传递给界面渲染模块;
界面渲染模块:该界面渲染模块负责接收到数据后的渲染工作,它会在页面上为每一个设备节点创建相对应的dom元素,并且把得到的每个节点的实时状态值显示在该元素上。
本发明基于一些成熟的开源框架,可以在极短的时间内完成一套基于websocket传输数据的监控系统,开发周期非常短,对服务器的要求也不高。由于采用websocket传输,除了推送设备状态数据以外几乎没有额外的网络开销,所以速度非常快,对服务器和浏览器的压力都比较小。因为是基于b/s架构的系统,所以部署起来非常方便,任何一台装有浏览器的电脑和手机都可以成为监控客户端。
所述的基于基于websocket的设备状态实时监控系统,也可以基于nodejs的express、socket.io、node-mysql等框架,以及基于jquery的文档更新算法。
附图说明
图1为本发明的流程示意图。
具体实施方式
下面结合附图和具体实施例,对本发明做进一步详细说明:
本系统分成几个模块:电厂设备数据采集模块、公用数据库、数据推送模块、数据接收模块、界面渲染模块。
每个模块的功能如下:
安装在电厂设备上的数据采集器(传感器)实时采集设备的各种状态数据,数据采集模块读取采集器的数据并存储到公用数据库表中。采集频率可根据实际用户需求设置,最高每秒1次。该步骤主要目的是将设备状态数据完整、准确、及时的采集到公用数据库中。
数据推送模块独立运行在web服务器后台,按指定频率从公用数据库中抓取设备状态数据,然后检查当前是否有活动的来自客户端的websocket连接,如果有,就向该连接推送数据。该步骤主要目的是通过websocket技术实时将公用数据库中设备状态数据推送到前台。
数据接收模块运行在客户端浏览器中,它通过websocket与数据推送模块保持连接,不断接收服务器端推送过来的设备状态数据,并把它传递给界面渲染模块。该步骤主要目的是通过websocket技术实时接收数据推送模块推送出来的数据。
界面渲染模块负责接收到数据后的渲染工作,它会在页面上为每一个设备节点创建相对应的dom元素,并且把得到的每个节点的实时状态值显示在该元素上。设备状态一般有两种表现形式,一种是数值型的,例如设备的温度,用文字表示即可;另一种是开关类型,例如风扇的状态、开关的状态,这需要用图标来表示。