基于SpringBoot的工控组态软件Web发布系统设计与实现*
2019-04-24李之奇封成玉徐一凤王毅璇
李之奇,封成玉,徐一凤,王毅璇,王 皓
(华北计算机系统工程研究所,北京 100083)
0 引言
在现代化的工业现场中,往往需要远程对工业过程中的各种仪器、仪表,控制器等进行集中管理。数据采集与监视控制系统(Supervisory Control And Data Acquisition,SCADA)又称工业组态软件,可实现这样的功能。用户根据现场对象和控制要求,利用组态软件搭建出能够反映并控制被控对象实时状态的画面,通过对画面中数据的动态更新,达到实时监控和控制的目的。由于工业现场的高度复杂性和Web技术的飞速发展,应用Web技术实现工控组态软件的Web发布因其便利性和高效性也成为组态软件的重要功能。利用Web发布系统,用户只需要浏览器便可以实现便捷又安全的远程监控和控制操作,这无疑能够大大提升工业现场的管理水平,实现数字资源共享,同时提高组态软件系统的可扩展性和应用范围[1]。
工控组态软件的Web发布,即在已有工控组态软件的基础上添加Web监控功能,其基本任务为:(1)实现浏览器端画面与软件客户端画面一致并在监控过程中动态更新;(2)满足监控过程中对信息量、响应速度及安全性的要求。因此,要实现一个完整的Web发布系统,往往需要画面显示技术、通信技术等多种Web技术的融合,并随着各种技术的不断发展而同步进化。目前国内外对此的研究还没有形成完整的标准体系,研究方向主要针对客户端画面的生成方式、实时数据的传送方式、历史数据的读取显示以及报警信息推送等[1]。
在近年来Web开发技术的快速发展中,Spring框架以其独特的优势越来越受到开发者的青睐,SpringBoot则使Spring更加易于开发和维护[4]。本文通过对传统工控组态软件Web发布系统和SpringBoot框架的分析和研究,提出了一种基于SpringBoot的工控组态软件Web发布系统解决方案,该方案具有高度的可移植性、系统开发扩展与维护方便、跨平台等多项优势,并在国产PLC上位机组态软件中实现并成功应用。
1 技术分析
在工控组态软件的Web发布系统中,客户端画面的生成方式和实时数据的传送方式是系统的核心技术。其中,客户端画面的生成方式是指将工控组态软件中所组态的画面转化为浏览器中的画面所采用的方式。由于不同的工控组态软件所采用的画面存储格式、图元变化逻辑等各不相同,导致各种Web发布系统中所采用的客户端画面生成方式也不尽相同。而实时数据的传送方式是指Web系统中服务器与浏览器和数据库的通信方式。
1.1 客户端画面的生成方式
要在浏览器中生成与组态软件中相同的画面,需要读取组态软件中的画面数据格式,将其转化并嵌入HTML中,同时各个图元控件包含和原组态软件相同的变化逻辑和功能逻辑。当前Web发布系统中客户端画面的生成方式所采用的技术有如下几种:
(1)ActiveX技术:它是基于组件对象模型(Component Object Model,COM)的一种开放式组件编程技术,包括控件、动态链接库和ActiveX文档等组件[2]。通过ActiveX,可以复用组态软件中已有的图元控件,从而生成和软件中完全相同的画面,并通过动态链接库开发相应的拓展功能。但该技术的缺点也是明显的:①ActiveX控件都基于Windows开发,无法实现跨平台应用;②运行ActiveX需要安装ActiveX控件,但控件的开发和维护都比较复杂,导致其系统升级和维护较为繁琐。
(2)Applet:一种运行在客户端的Java小程序,它可以实现图形绘制、人机交互、动态更新等功能。这种将浏览器端的Applet与服务器端的Servlets/JSP相结合的Web发布系统称为基于Java的组态软件Web发布系统。其体系结构如图1所示。由于Applet程序都是解释型的,运行速度慢,且该结构中Web页面的显示逻辑和后台数据的处理逻辑均由Servlets/JSP来完成,这样开发的代码量大,程序实现复杂,且不易维护,因此并不适合要求高的工业应用环境。
图1 基于Java的Web发布系统
(3)WPF:WPF是微软公司推出的基于.NET的用户界面框架,它提供了统一的编程模型、语言和框架[2]。通过灵活使用WPF提供的页面控件,便可以实现客户端画面的再现。应用WPF技术实现的Web应用程序需要安装.NET Framework,而.NET Framework安装包的下载和安装都相对复杂,且与平台相关,这成为WPF技术的一个缺点。
(4)SliverLight:这是WPF的一个轻量版本,但它基于浏览器插件,服务器端不需要部署任何环境,客户端也无需安装.NET Framework,只需要安装Runtime插件,可以实现跨平台应用。然而,Silverlight的动态属性计算较为复杂,对客户端计算机有较高要求,同时会造成监控画面的延时问题。
(5)SVG:是W3C制定的一种基于XML的矢量图形标准,它可以在网页上显示出各种各样的高质量矢量图形,支持数据驱动的动态变化且具有良好的交互性,而且可以很好的实现图形显示的跨平台应用。这也是本文所设计Web发布系统中所采用的方法,已有研究将SVG应用于组态软件Web发布中,但由于采用传统的Web交互方式,在响应速度和用户体验方面仍有待改进[2]。
1.2 实时数据的传送方式
在工控组态软件中,数据量大、更新频繁,实时性要求高,因此对于Web发布系统中实时数据的传送方式有较高要求。当前Web发布系统中实时数据的传送方式有以下几种:
(1)通用网管接口(Common Gateway Interface,CGI):它是最早的Web数据库连接技术,负责数据库与服务器之间的通信并提供应用程序服务。基于CGI的Web发布系统结构如图2所示。Web服务器接收来自浏览器带有CGI串的HTTP请求,服务器根据指令启动CGI程序访问数据库,访问结束后将处理结果再通过服务器返回浏览器。它虽然实现了浏览器与服务器之间的动态交互,但是运行效率很差,难以满足日趋复杂的工业现场信息交流。
图2 基于CGI的Web发布系统
(2)动态服务器页面(Active Server Pages,ASP):它是一种令网页上的脚本在服务器上运行的技术。当浏览器请求某个ASP页面时,IIS(Internet信息服务)会将请求传递至ASP引擎,ASP引擎逐行读取该文件并执行其中的脚本,最后返回HTML文件给浏览器。虽然ASP在安全性上有较大优势,但ASP页面开发复杂,而且只能在Windows平台下运行。
(3)异步JavaScript和XML(AJAX):它是一种无需重新加载整个网页而更新部分网页的技术,浏览器通过AJAX引擎与服务器端通信,返回结果再由AJAX引擎决定数据插入页面的位置。AJAX通过轮询的方式实现浏览器与服务器的异步通信,其原理是客户端定时向浏览器发送AJAX请求,服务器街接到请求后返回相应信息并关闭连接。虽然AJAX实现较简单,但比较浪费服务器资源,效率不高。
(4)WebSocket:它是一种在单个TCP连接上进行全双工通信的协议,浏览器和服务器只需要完成一次握手,两者之间就可以创建持久性的连接,并进行双向数据传输。图3展示了AJAX轮询和WebSocket握手之间的差别。
图3 AJAX轮询与WebSocket连接方式
由于在工控组态软件Web发布系统中,往往需要浏览器和服务器频繁的双向通信,显然WebSocket比AJAX更加简易高效,这也是本文Web发布系统中所采用的方式。
2 系统设计与实现
在已有的工控组态软件Web发布系统中,基于以上技术,所采用的开发框架有ASP.NET、WCF、J2EE等。其中,ASP.NET不能实现跨平台系统,WCF和J2EE开发应用都有配置复杂等问题。Spring框架是现在市场占有率最高的基于J2EE框架的研发型软件产品,而SpringBoot项目是Pivotal团队开发的一个全新Spring框架,其目的就在于解决Spring开发中的复杂配置操作,使开发人员只需要专注于业务逻辑代码的实现[3]。
本文所设计的基于SpringBoot的Web发布系统,采用了SpringBoot中高效便捷的SVG、Contoller等技术,结合WebSocket、Hibernate等通信技术,结构清晰,其总体架构如图4所示。
图4 基于SpringBoot的Web发布系统
2.1 显示模块
在该Web发布系统中,显示模块用以显示组态画面并根据数据动态更新。该过程首先需要用组态软件的画面信息文件生成SVG格式文件,服务器将其加入JSP页面后再将HTML发布给浏览器。采用SVG作为组态软件与Web系统交互的画面文件格式,其优势在于:(1)矢量图可以适应浏览器端画面大小不同的缩放而不破坏清晰度;
(2)基于XML标准具有较好的开放性和拓展性;
(3)丰富的动画支持能够实现原组态软件中全部图形元素属性的动态变化。
在Web系统运行时,浏览器根据从服务端获取的组态配置信息和实时数据,通过JavaScript脚本动态更新SVG文件的DOM,进而实时更新浏览器中的画面显示[2]。该过程步骤为:(1)获取图形文件中各图形元素的动画方式及变量,编写好根据变量值改变图形显示的JavaScript代码;(2)页面定时获取数据变量的实时数据值;(3)根据JavaScript执行结果修改SVG文件,进而动态更新页面。
2.2 交互模块
由于浏览器需要实时获取服务器数据以更新画面,采用WebSocket进行服务器与浏览器之间的数据交互。WebSocket是目前浏览器中最通用和灵活的传输技术,不仅可以将整个通信过程建立在一次连接中,也可以实现服务器主动推送信息给客户端,非常适合工控Web系统实时快速的数据交流。同时WebSocket提供了简单轻量级的程序开发接口,可以显著降低系统开发复杂程度[5]。
为了保证Web系统中数据交互的安全性,同时使用了WebSocket中的加密传输(Web Socket Secure,WSS),它利用安全套接层(Secure Socket Layer,SSL)建立安全的通信链路,不需要担心数据被窃取。
当服务器收到来自浏览器的数据请求时,服务器需要向组态软件数据库查询变量点实时数据,而工控系统中变量点规模庞大,因此采用Hibernate(开放源代码的对象关系映射框架)来进行服务器与数据库的交互操作。Hibernate对JDBC(Java数据库连接)进行了轻量级的对象封装,可以自动生成SQL语句,是一个高性能的对象关系型持久化存储和查询的服务。因此,采用Hibernate能够很好地提升工控组态软件Web发布系统的性能[6]。
2.3 功能模块
在该Web系统中,功能模块主要指服务器中用来完成功能业务逻辑的Controller(控制器),之所以采用SpringMVC中的Controller来代替传统JavaWeb中的Servlets,是为了简化开发与维护工作,同时使逻辑更加清晰。Controller的基本原理是采用前端控制器模式,由DispacherServlet分发请求到Controller[2],其主要处理来自画面的显示逻辑、下发请求等。
除了对组态软件画面的同步显示和操作功能,工控组态软件Web发布系统还应具备历史数据展示、报警显示等功能,其中历史数据显示通过Web服务器中的Controller与组态软件中的历史数据库通信获得,当收到历史数据请求时,将数据统一用新的页面发送给浏览器,该页面同时具有与组态软件相似的查询等功能。报警功能则既可以嵌入在页面信息中,可定时查询数据再通过判定逻辑决定是否报警,也可以由服务器主动向浏览器推送,并通过浏览器端弹窗来显示,这是通过WebSocket实现的服务器浏览器双向通信完成的,系统将根据用户在组态软件中的选择来选取具体的报警方式。
2.4 系统应用
本系统的设计与实现均基于全国产化SCADA系统,支持在国产麒麟和Windows操作系统上跨平台运行,且提供方便的数据组态、画面组态、历史和实时趋势等功能。利用本文所实现的Web发布系统,只需要在现场控制中心运行组态软件,现场其余各处联网机只需配备浏览器即可申请访问组态画面,通过用户验证后,可以执行下发与组态软件相同的监控控制等操作。之后的软件更新等操作,也只需在控制中心维护即可。
3 结束语
本文主要分析了工控组态软件Web发布系统中的相关技术,并设计了基于当前流行Web框架SpringBoot的新型工控组态软件Web发布系统,并在基于国产PLC的工控上位机组态软件中实现并成功应用,该系统不仅具有跨平台、高效性、开发与维护方便等优势,同时具有很好的灵活性、拓展性和安全性,满足了国产PLC系统工控组态软件在工程中的应用要求。