潘家口水库水情信息处理系统开发
2010-07-16吉辛望佟德军
吉辛望 ,佟德军
(1.海河水利委员会引滦工程管理局,河北 迁西 064309;2.河北省唐秦水文局,河北 唐山 063000)
0 前言
潘家口水库位于河北省迁西县境内滦河干流中游,控制流域面积 33700 km2。水库大坝为混凝土低宽缝重力坝,中间部分设有 18 孔溢洪道,用 15 m ×15 m 弧形闸门控制。31#和 32#坝段为底孔坝段,共设 4 个底孔(其中1#底孔后改建为防汛自备电站进水口),用 4 m×6 m 弧形闸门控制。坝后建有混合式电站 1 座,由 1 台 150 MW 常规机组(1#机)和 3 台 90 MW 抽水蓄能机组(2#~4#机)组成。水库大坝下游 6 km 处,另建有 1 座混凝土拦河坝,形成一个与电站尾水连成一体的抽水蓄能机组反调节池(下池)。
下池蓄水及抽水蓄能机组运行后,原坝下测流断面即行废止,水库(上池)出库流量改由发电洞、溢洪道、泄洪洞工作(泄流)曲线(即水力学法)进行计算。这种多类型、多孔洞出流的水情处理过程,涉及 10 多类原始数据,需翻阅、查算 6 种关系查算表,参加计算的数据多达 50 余组。水情信息传输的时效性和原始数据的正点采集,要求水情计算及拍报必须在尽可能短的时间内完成。采用传统手工方法计算,工作量大且易出错,迟报、错报现象难以彻底消除。为此,开发了基于 Windows 平台的潘家口水库水情信息处理系统,以实现数据处理及水、雨情信息传输的自动化。
1 系统功能
潘家口水库水情信息处理系统,不仅需要处理逐日的水情信息并产生水情日报表,还需将逐日和瞬时采集到的水文信息及计算成果存入数据库,用来在下月初和第二年年初生成并打印月、年成果表。因此,它实质上是一个数据库应用软件。鉴于 Object Pascal 具有代码效率高、使用方便及速度快等特点,故将其作为开发平台,并以 Delphi 7.0 为编程工具,Access 为数据库,ADO 为数据库引擎。最终开发出的软件,经安装生成一个扩展名为“.exe”的 Windows 应用程序。系统运行后的主数据表界面如图1 所示。
图1 系统主数据表画面
1.1 数值计算
(1)依据 1#~4#机组发电运行后的表底读数计算日发电量,进而求得发电用水量(流量);依据 2#~4#机组抽水运行后的表底读数计算抽水耗电量,求得抽水水量(流量),并以负值表示。以发电用水量(流量)与抽水水量(流量)的代数和作为发电洞日平均出库流量。
(2)依据上、下池水位人工观测值,按各自库容曲线分别插值计算上、下池库容。
(3)实时计算多个不同工况的溢流闸的泄流量,对全日多个泄流时段的泄流量进行统计,求得溢流闸日平均泄流量。
(4)实时计算多个不同工况的泄洪洞的泄流量,对全日多个泄流时段的泄流量进行统计,求得泄洪洞日平均泄流量。
(5)依据有功功率及运行小时数,按给定公式计算自备电站日平均出流量。
(6)将以上各计算结果相加,得到日平均总出库流量。
(7)依据日平均总出库流量和水库(上池)蓄水变量,计算日平均入库流量。
(8)将上述计算结果按本次计算所在记录位置追加至数据库;在下个旬初、月初、年初开始时刻,分别计算旬、月、年统计值。
1.2 报表生成
(1)水情计算完毕后,同时编制水情日报表;
(2)每月 1 日,生成上月水情月报表(含月统计值);
(3)年初按各水情因子分别生成上一年的年报表。
1.3 数据维护
系统提供了对主数据表等各类表的维护功能,主要用于特殊情况下对数据表记录的批量修改或添加,包括追加、修改、插入、删除等。在进行数据维护操作时,鼠标停留在相关按钮上,即显示对其功能的提示信息,以方便用户操作。其中,对于“删除”操作,系统会要求用户进行确认,以避免误操作。数据库维护界面如图2 所示。
1.4 报文及报表输出
在报文区,提供了剪贴板编辑功能,藉此功能,即使是采用不同水情信息编码标准编写的报文,也都能顺利实现二次编辑。报文编辑区界面如图3 所示。
图2 数据库维护界面
图3 报文编辑区界面
2 数据库、函数及控件
2.1 数据库结构
Microsoft Access 数据库是库表结构。根据任务需要,在数据库里建立了以下 3 类数据表:
(1)程序系统表
主要包括主数据表和溢洪闸、泄流洞、发电洞瞬时数据的结构空表。当程序运行中判断需要创建新表时,即自行复制为相应表的数据结构。此外,系统表还包括程序运行所需的一些初始信息。
(2)各种曲线表
主要存放上库容和下库容曲线、泄流洞和溢流闸泄流量查算表、发电机组效率曲线等关系表的数据(节点),供程序运行时调用。
(3)用户数据表
主要包括存放有各水文要素实测值的主数据表,及存放溢流闸、泄流洞和发电洞运行参数的其他数据表。主数据表每日生成 1 条记录。为提高检索速度和保证数据安全,以系统日期为准,每月生成 1 张主数据表。溢流闸、泄流洞和发电洞数据表中数据量较少,故每年只分别产生 1 张相应数据表。
2.2 主要函数
2.2.1 上、下池库容曲线插值函数
函数定义:function kr1 ( h:variant):variant; //上库容插值函数function kr2 ( h:variant):variant; //下库容插值函数按照上、下池库容曲线的趋势,在能控制曲线走向的前提下,选取一定数量的节点,存放在数据库中的相应数据表内。根据曲线的线性,分别用直线内插和一元三点插值公式进行插值,经验证满足精度要求。
直线内插公式:
一元三点插值公式:
式中:X, Xi, Xi+1, Xi+2分别为库容曲线上的水位节点;Y, Yi, Yi+1, Yi+2分别为库容曲线上的蓄水量节点;H 为插值点的水位;V 为插值点的相应蓄水量。
2.2.2 溢流闸泄流量计算函数
函数定义:
function fff ( a:real ): real; //查表求 ƒ 值
function mmm ( h:real ): real; //查表求 m 值
function jisuan ( h:real;e:real ): real; //计算溢流闸流量
function ylzcb ( h:real;e:real ): real; //单孔溢流量查算
function xlz ( riqi:integer ): real; //遍历泄流数据库
为方便用户使用,程序提供了 2 种溢流闸流量计算方式,即公式法和查表法,可任选其一,默认方式为查表方式。
溢流闸泄流量公式:Q = ƒ(H, e),
式中:Q 为溢流闸瞬时泄流量;H 为水头(坝前水位减堰顶高程);e 为闸门开度。
(1)查表法
查表法,是使用原有的 H-e-Q 关系表直接查读流量。将 H-e-Q 关系表存放在数据库中的曲线表中,程序根据坝上水位和闸门开度可查出相应的泄流量。 H-e-Q 关系表是个三维表,而 Microsoft Access的数据表是二维表,故存放时需增加 1 字段,以实现三维查询。对于关系表中的空缺处,则采用在数据库相应数据栏填入特殊标记字符串的方式,程序读取后自行判定并提示采用公式法计算。
(2)公式法[1][2]
式中:M 为堰流流量系数,由 WES 标准剖面堰 M =ƒ ( m, H ) 关系查得;m 为孔流流量系数,m = 0.8 e/H + (0.25 - 0.357 e/H ) cos α;s 为溢流闸开启孔数(开度须相同);B 为单孔溢流闸门宽度;α 为弧形闸门下弦线与水平线夹角,α = arc cos ((c - e)/r ),c 为闸门轴至堰顶垂直距离,r 为弧形闸门半径;ƒ 为垂直收缩系数;F 为横向收缩系数,F = 0.9 -{0.2[ξk+ ( s -1)ξe]H }/s B,ξk= 0.05,ξe= 0.45;g 为重力加速度。
当 e / H ≤ 0.75 时为孔流,否则为堰流。
溢流闸日平均泄流量计算:溢流闸日泄流量为各单次泄流量折合日平均流量之和。
式中:Q泄为泄流闸日平均泄流量;Qi1为第 i 次泄流开始时刻瞬时流量;Qi2为第 i 次泄流终了时刻瞬时流量;△ti为第 i 次泄流历时。
2.2.3 泄洪洞泄流量计算函数
函数定义:
function chaxian ( h:real ): real; //泄洪洞泄流曲线插值函数
function fsd ( riqi:integer ): real; //遍历泄洪洞数据库
泄洪洞泄流量 Q = ƒ (H),采用查表法计算,即:将现有坝前水位与泄洪洞泄流量关系曲线节点存入数据库相应数据表中,由程序读取水位级节点,按直线内插求得相应泄流量。
泄洪洞日平均泄流量计算方法与泄流闸相似,为各单次泄流量折合日平均流量之和。
2.2.4 发电洞出流量计算函数
函数定义:
procedure TForm 7.Button 2 Click (Sender: TObject );//事件
function aq ( ah:real;var ah1,ah 2,ah 3:real ): real;//效率曲线插值函数
function fdd ( riqi:integer ): real; //遍历发电洞数据库发电洞出流量,按机组发电量,用下式[3]计算:
式中:Q电为发电洞日平均出流量;P为电功率,以1日的电功值除以24得之;J为效率,J= ƒ (H)。效率曲线保存在数据库相应数据表中,由程序根据当前坝前水位插值求得;H为水头,由坝前水位减去发电机尾水位(即下池平均运用水位,采用139.00m)求得。
2.2.5 日平均出库流量计算函数
日平均出库流量为上述各单项出库流量之和。
2.2.6 数字组格式化函数
函数定义:
function ws ( q:real ): real; //流量有效位数函数
function gsh ( h1,h:string ): string; //格式化水位字串,相同整数位省略
function gsjs ( t:real ): string; //格式化降水量字串
function ny(t:integer): string; //天数转换成X月X日
格式函数的设置,主要是为控制计算结果的有效位数,使其满足规范要求。水位、降水量格式函数主要用于转换输出界面的显示格式和报表的数据格式。
2.3 控件
本软件使用的控件主要包括以下几类:
(1)数据访问及数据感应控件;
(2)人机交互和界面控制控件;
(3)报表和其他用途控件。
3 主要特点
潘家口水库水情信息处理系统,具有以下主要特点:
(1)人性化处理方式
软件能自动处理各类偶然事件,如:可根据系统日期,自行判断报表所属类型;对闰年、闰月等的出现,也可自动判断并进行相应处理。
鉴于水情信息处理的实时性,在数据读取和记录指针定位时,直接读取电脑系统时钟,避免用户指针定位错误。
(2)人机交互能力强
软件对各主要参(系)数给出默认值,同时提供相应修改功能。用户根据需要,可选择使用手工输入或使用加法器对这些参(系)数进行修改,以适应水情处理计算需求。
(3)界面直观,操作简便
软件界面友好,提供单表和双表2 种显示模式,用户可根据个人习惯任选其一;提供有多个快捷按钮,除输入数据时需用键盘外,其它操作均可通过点击鼠标完成,使用起来方便、快捷。
(4)安全性高
软件考虑了数据库存放数据的安全性要求,提供了对数据记录进行删除操作的提示、确认功能;用户界面只显示当前操作对应的表格及选项,其它无关表格或选项不显示,可有效防止误操作。软件核心系统表部分,在用户界面不可见。
4 结语
潘家口水库水情信息处理系统软件开发完成后,进行了测试。软件的测试,主要针对涉及各种曲线的计算模块进行。重点对发电洞出流量计算进行了对比测试。按 1#机发电、蓄能机发电、蓄能机抽水 3 种工况分别进行测试,有效样本分别为 31、44 和 39 个。通过测试,确定 1#机发电、蓄能机发电、蓄能机抽水 3 者流量修正系数依次为 1.00、0.88 和 0.62。同时对月报表的产生和输出功能进行了测试。测试结果表明,月报表能正常生成及打印,月统计值准确无误。
通过 2005 年汛期以来的运行,证明软件性能可靠,功能较为完善。由于考虑了各种复杂条件下的出流情况,使得计算过程更加合理,计算结果能够满足潘家口水库与其下游大黑汀水库及区间支流潵河 3 者间达成水量平衡的要求。水情处理所需时间大幅缩短,满足了水情传递的时效性要求。
2006 年,新的《水情信息编码标准》开始实施。利用软件提供的剪贴板编辑功能及输出的水情报表,可方便地实现与新的水情收、发报系统的整合,使水情处理及传输效率提高到一个全新的水平。
[1]华东水利学院. 水工设计手册[M]. 北京:水利电力出版社,1987,12.
[2]莫斯特柯夫. 水力学手册[M]. 北京:水利出版社,1956,11.
[3]湖北省水利学校. 水文资料整编[M]. 北京:水利电力出版社,1979,11.