胡 康,谈德才,陈 华
(1.武汉大学水资源与水电工程科学国家重点实验室,武汉 430072;2.九寨沟水电开发有限责任公司,四川 阿坝藏族羌族自治州 624000)
随着大量梯级水电站的建设和投入运行,水电站的管理已从单库调度向流域梯级联合调度转型。在梯级联合调度中,与单库调度相比,流域梯级水电站群运行的生产环境和调度管理更加复杂。随着计算机网络技术的发展,梯级水电站调度系统应运而生,为解决日益复杂的运行调度管理提供了方案。
网络技术,在初期是计算机与通信相结合的产物,它的出现和发展使计算机应用发生了巨大的变化。计算机的处理模式从最初的以大型主机为核心的集中式运算和以个人电脑为基本单元的独立处理后,已发展成现在的网络计算,其应用范围已远远超出了科学计算,成为综合信息、通信和娱乐的工具,计算机网络的发展即受到计算机科学技术和通信科学技术的支撑,又受到运用计算机网络的那些专业领域技术的支持[1]。网络技术的发展主要依托于以及表现在硬件方面以及网络协议的发展,硬件的发展相对较慢,但其每一次突破都会产生应用上的飞跃,如新一代因特网、移动IP技术、物联网等[2]。其所产生的新的应用形式如大数据和云计算正深刻地改变着世界[3];网络协议的发展非常迅速,并已逐渐渗透到各行各业中,如HTML协议的发展和完善导致调度系统软件设计开发由C/S(Client/Server)模式转向B/S(Brower/Server)模式。
随着网络硬件和网络协议的发展,梯级电站调度系统的设计开发也由C/S架构设计模式转向B/S架构设计模式。目前,国内关于水电站调度系统的成果已有很多,C/S模式的有河海大学的闽江流域预报调度系统[4]、南瑞集团的WDS-9000电网水调自动化系统[5]等;B/S模式的有重庆电网水电站群中长期发电调度决策系统[6]、横江流域梯级水电站防洪及综合调度系统[7]、柳江流域梯级水库调度系统[8]等。由于C/S模式存在工作量繁重、维护成本高、功能扩展困难、数据无法共享、跨平台性差等缺陷[9],现在的研究主要集中在B/S模式上。部分学者就对B/S模式下特定的网络技术在水库调度系统中的应用进行了研究,这些网络技术有三层B/S结构、Web Service技术、面向对象技术和MVC技术等[10-12]。但网络技术的应用涉及数据传输的效率、数据安全和科学计算速度等关键问题,本文将以白水江梯级水电站群为研究对象,结合水文水资源专业和计算机信息化技术,针对上述问题展开研究和探讨,并开发基于网络技术下梯级水电站调度系统。
系统开发将遵循先进性、实用性、可靠性、安全性和开放性原则,采用最新的网络应用开发技术,对于基于网络技术的梯级水电站调度系统进行设计。互联网的普及,导致了大量网络用户的产生,这些迅速增长的用户群使得网络应用产生了新的形式。网络应用开发也由面向控件的形式,基于各开发平台已经封装好的类和对象,转为直接面向网络,直接基于像HTML、CSS、Javascript这些互联网的基础规范和技术。由于这些规范和技术是全球统一的,它在满足互联网发展的同时,也大大促进了互联网的发展,同时自身也得到快速发展。一些新的网络技术不断涌现,如HTML5、CSS3、Bootstrap、JQuery、基于JQuery的HighCharts框架和HTTPS协议等。这些技术中有增强网络信息安全的互联网协议,如HTTPS;有增强网络数据传输效率的协议和技术,如HTML5、Bootstrap、HighCharts等;还有增强开发效率和用户体验的技术等。白水江梯级水电站调度系统将基于这些新的网络技术进行设计开发。根据研究任务要求和相关的功能模块,可以把整个梯级水调度的高级应用系统纳入一个总体的结构框架中。应用系统体系结构划分三部分:数据层、应用支撑层、应用层。对应的软件平台为:协同数据平台、算法调度平台、综合管理平台。系统框架及软件平台结构见图1。
图1 系统结构图
数据层主要包括实时水雨情数据库(气象业务系统提供)、调度数据库和预报数据库等。为了支持应用服务,需要做好与水情(气象)和水调的接口程序,将采用标准化方法来设计。为了支持应用服务,数据层需要采用第三方提供的数据接口,主要指连接调度库采用的WebServices应用接口;同时提供了数据传输接口,主要指长中短期发电调度计划编制和96点日前发电计划的上传信息等。
协同数据平台的逻辑处理内容如下:①基础业务数据存储;②存储综合管理平台对算法平台的请求以及相关参数;③存储算法平台相关状态;④存储计算结果;⑤存储相关报表的触发器和存储过程。
应用支撑层主要包括基础应用服务、高级应用业务服务、基础数据维护三大部分组成,主要利用标准控件来提供应用基础服务,根据应用业务要求,通过再开发形成应用支持层。基础应用服务包括常用的各种图形、表格、数据结构、通用算法、用户管理,这些服务通过标准数据、图形、表格控件和标准函数来实现。高级业务应用支持主要包括发电优化调度模型、水电负荷分配算法和常规调度计算方法等,为了便于系统可扩展和维护,采用标准化的模型控件来设计。基础数据维护主要提供与第三方接口、数据通信、基础数据增加、删除、编辑等功能,采用标准控件来实现。根据任务要求,将形成梯级水电站中长期发电优化、短期(实时)优化调度和数据维护等3个应用支撑服务。
算法调度平台的逻辑处理内容如下:①从协同数据平台监听计算请求,并读取相关参数;②向协同数据平台反馈请求状态;③计算结果,并存放到协同数据平台。
应用层主要包括长中短期发电优化、实时调度、评价分析和数据维护等的业务应用,用户操作鼠标、键盘,通过浏览器方式就可以完成相关的应用操作。
在B/S模式的梯级水电站调度系统中,计算服务都发生在中心服务器上,用户通过浏览器与数据传输通道和服务器相连,获取数据服务。这也使得系统在运行有些问题需要解决。在服务器端,由于梯级水电站联合优化调度是一个典型的高维、多约束、非线性复杂系统优化问题[13],计算工作量大;同时,由于系统是运行在网络中的,会有多用户同时访问的情况发生,这对于服务器是承重的负担。在数据传输通道上,基本上所有的网络数据传输都是采用TCP/IP协议进行,这可能会导致传输链路上数据的拥堵和信息的泄露。在浏览器端,由于浏览器只识别HTML、CSS、Javascript,这使得系统在显示专业图表时开发任务繁重。在白水江梯级水电站调度系统实现中,通过以下技术可有效解决这些问题。
在科学计算问题上,C#(面向对象的高级语言)不如Fortran(面向科学计算)、C(面向计算机底层)高效。将使用计算效率高的语言写成的梯级水电站调度算法编译成动态链接库供C#调用,提高算法计算效率;同时C#通过并行调用动态库,充分利用计算机的并行计算性能。这将能大大提高服务器的计算服务能力。通过定义标准化的动态库接口,发挥两种语言各自的优势,系统的结构和功能得到分离,系统的可移植性和可扩展性均得到加强。
在基于网络技术的应用中,一个很关键的问题是数据传输效率的问题。结合AJAX和JSON技术可以使我们在不用增加硬件成本的基础大大增强用户体验。
AJAX使浏览器可以为用户提供更为自然的浏览体验。在AJAX之前,Web站点强制用户进入提交/等待/重新显示范例,用户的动作总是与服务器的“思考时间”同步。AJAX提供与服务器异步通信的能力,从而使用户从请求/响应的循环中解脱出来。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。
在本项目中,我们将使用JavaScript对象标志(JSON)和JSON分析器在服务器和客户端AJAX引擎之间创建复杂而强有力的JSON数据传输层。具体过程包括:创建一组JavaScript对象;把JavaScript对象串行化为JSON;把JSON反串行化为客户端JavaScript对象。
常见WEB攻击方式有SQL注入攻击、XSS脚本攻击、CSRF请求伪造和md5加密安全碰撞攻击。其中,SQL注入攻击通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令;XSS(Cross-site scripting),它是一种网站应用程序的安全漏洞攻击,是代码注入的一种,它允许恶意用户将代码注入网页上,其他用户在观看网页时就会受到影响;CSRF(Cross-site request forgery)跨站请求伪造是一种对网站的恶意利用;md5是一种不可逆加密算法,但攻击者可以利用MD5彩虹表以及互联网上的共用解密平台,通过MD5碰撞逆推加密前的原始字符串。
本系统基于ASP.NET MVC框架,系统的安全体系架构如图2。在应对SQL注入攻击时,由于用户的所有请求是由核心控制器模块调度的,这就防止了用户直接操作数据库的可能,同是ORM结构又在访问数据库时提供了一种关系映射机制,这样就完全杜绝好任何SQL注入攻击的可能。在应对XSS脚本攻击时,前端本系统采用成熟的 JQuery 及 Razor框架结构,配合合理的过滤策略可以很好地防止对恶意脚本请求。在应对CSRF请求伪造攻击时,本系统合理的设计,可有效防止伪造Cookies的可能,同时asp.net MVC有着强大的过滤功能,能自动辨别任何伪造的Session请求。在应对加密安全碰撞攻击时,系统研发采用了安全 MD5加盐算法,大大增加了反查难度。
图2 基于MVC模式的系统安全体系
基于网络技术的白水江梯级水电站调度系统需要大量图表显示,图表显示的效果直接影响着用户体验。本系统采用基于Highcharts的多元化图形提供优良的用户体验。
Highcharts是一个用纯JavaScript编写的一个图表库,能够便捷的在web网站或是web应用程序添加有交互性的图表,支持的图表类型有曲线图、柱状图、饼状图、散状点图和综合图表。HighCharts的主要特性包括:
(1) 兼容性:HighCharts采用纯JavaScript编写,兼容当今大部分的浏览器,包括Safari、IE和火狐等等。
(2) 支持大部分图表类型:HighCharts支持图表类型,包括曲线图、区域图、柱状图、饼状图、散状点图和综合图表等等,可以满足各种需求。
(3) 提示功能:HighCharts生成的图表中,可以设置在数据点上显示提示效果,即将鼠标移动到某个数据点上,可以显示该点的详细数据,并且可以对显示效果进行设置。
(4) 放大功能:HighCharts可以大量数据集中显示,并且可以放大某一部分的图形,将图表的精度增大,进行详细的显示,可以选择横向或者纵向放大。
白水江为白龙江的一级支流,发源于岷山山脉东麓,全长287 km,天然落差2 958 m,河道平均比降1.03%,流域面积8 316 km2。白水江规划为“一库七级”开发方案,目前已完成“一库四级”开发,自上至下依次为:多诺(龙头水库)电站、黑河塘电站、双河电站和青龙电站。
白水江流域已建的“一库四级”电站中,通过对历史数据的统计和模拟发现:在使用了调度系统的情况下,梯级电站、黑河塘、双河以及青龙的多年平均年发电量分别提高了2.3%(0.37亿kWh)、4.5%(0.18亿kWh)、2.8%(0.1亿kWh)、2%(0.09亿kWh),装机年平均利用小时数分别提高了2.4%(416 h)、4.5%(209 h)、2.8%(123 h)、2%(84 h)。增加效果显著。见表1。
白水江梯级水电站调度系统开发平台为VS2012,运行平台为WINDOWS SERVER 2012。数据库软件使用SQLSERVER2012,通过Entity Framework访问数据库,使用泛型编程技术封装数据访问类,在业务逻辑层调用梯级水电站调度标准化动态库,并使用linq语法和lamdba表达式为动态库的输入输出准备数据。显示层采用MVC框架,WEB前端使用Razor引擎以及众多的JQuery框架。整个开发过程流程规范合理,团队合作良好,高效,使用了最新的网络开发技术,有效地解决了系统开发和运行中的一些问题,并重点考虑和解决了网络信息安全问题。本系统主要功能模块有:基础信息维护、中长期发电优化调度、短期优化调度和方案管理与评价等。
表1 已建电站基本信息
系统在目标服务器上首先部署数据库和发布网站后,便可在局域网或者互联网上访问。主界面上功能菜单包括:基础数据管理、水库实时水情、中长期调度、短期调度以及系统设置。以短期调度以电定水为例,新增以电定水方案,系统会加载默认的水位、流量、电价、机组数据等约束条件,也可人工进行修改,界面如图3所示。然后点击计算,系统会调用相应的调度算法进行计算,结果会存入数据库供读取和显示。调度结果如图4和图5所示。
图3 以电定水新增方案
图4 水位流量过程线
图5 机组出力图
白水江梯级水电站调度系统基于结构与功能分离的理念,采用平台化的设计思路和分层的设计方法,建立了数据层、应用支撑层、应用层,分别对应协同数据平台、算法调度平台、综合管理平台。系统结构合理,逻辑清晰,可以很方便地移植到其他流域。同时,本文总结了基于网络技术的梯级水电站调度系统的开发和运行中的一些难题,并在具体的开发实践中给出了解决方案:①通过并行调用科学计算语言编写的标准化动态库,有效解决了服务器负载重的问题;②结合AJAX和JSON技术提高网络数据传输效率;③通过ASP.NET MVC的安全体系架构有力地防止了信息安全问题的出现;④使用HighCharts等JQuery框架,增强浏览器前端显示效果,给用户良好的交互体验。通过实践应用证明,系统界面友好,数据传输安全,计算效率高,为白水江流域的梯级水电站调度运行管理提供了强有力的支持。
□
[1] 张 帆, 朱国仲. 计算机网络技术发展综述[J]. 光盘技术, 2007,(4):4-5.
[2] 谷林柱, 王 凯. 现代网络技术发展概述[J]. 软件, 2011,32(3):11-13.
[3] 高琳琳, 马 丹, 刘 岩. 智慧城市建设的奠基石----云计算、大数据和物联网[J]. 江苏商论, 2015,(17):265-266.
[4] 陈学凯, 龚继瑄. 闽江流域洪水预报调度系统应用研究[J]. 中国防汛抗旱, 2007,(4):21-23,45.
[5] 丁 杰, 徐展强. 电网水调自动化系统[J]. 电力系统自动化, 1999,23(17):48-50.
[6] 徐 刚, 马光文, 徐瑞林,等. 重庆电网水电站群中长期发电调度决策系统[J]. 水力发电学报, 2007,26(5):10-14.
[7] 郎学友. 横江流域梯级水电站防洪及综合调度系统[J]. 江淮水利科技, 2015,(5):16-19.
[8] 潘小溱, 莫明海, 韦喜榴. 柳江流域梯级水库调度系统的设计开发与应用[J]. 四川水力发电, 2015,(2):71-74.
[9] 张世钦, 张 俊, 程春田,等. 福建省电网中长期水文预报系统设计与开发[J]. 水电能源科学, 2008,26(6):58-61.
[10] 涂扬举, 马光文, 刘治理,等. 基于三层B/S结构的水电站中长期优化调度系统[J]. 水力发电学报, 2006,25(2):90-93.
[11] 张 俊, 吴 臻, 廖胜利,等. 面向对象技术在水电站群优化调度系统中的应用[J]. 电力建设, 2011,32(6):1-4.
[12] 程春田, 廖胜利, 武新宇,等. 面向省级电网的跨流域水电站群发电优化调度系统的关键技术实现[J]. 水利学报, 2010,41(4):477-482.
[13] 郑慧涛, 梅亚东, 杜亚平,等. 大规模水电站群短期优化调度的并行求解[J]. 华中科技大学学报:自然科学版, 2013,41(1):16-20.