秦玲玲,张学功
(宁波市白溪水库建设发展有限公司,浙江 宁海 315606)
浙江省某大(2)型水库,以供水、防洪为主,兼顾发电、灌溉,总库容1.684亿m3,多年平均径流量2.81亿m3,年设计供水量1.73亿m3,多年平均发电量4 380万kW·h,水电站装机2×9MW,主要承担电网调峰任务,供水保证率94%,发电保证率75%。供水工程进水口设置在电站尾水池左岸,水库供水水源来自于发电机组尾水。为确保供水,水库多采用“以水定电”的运行方式。“以水定电”的目的是节约用水,即根据日供水量计算出特定水库水情下对应的日发电量,据此安排机组出力[1]。
这种发电、供水一体化布置形式提高了水资源的利用率,增加了经济效益,但也在一定程度上限制了机组运行的灵活性,增加了水电站运行调度的难度。尤其是遇到电网线路检修电站不能正常并网发电时,为保证供水安全,水库生产安排亟待进行精细的预测分析。本文按照 “以水定电”的运行原则,利用Visual Basic与Fortran语言混合编程,进行水电站实时运行调度方案设计,提供机组出力计划,供电站运行人员参考。
实时运行调度方案设计基本思路为:由水库水情、尾水池初始水位,结合机组出力、供水、下泄等条件,按控制方程进行水量调节计算,从而得出合理的水电站机组出力过程和尾水池水位变化过程。
方案设计的原则:①保证供水安全,即尾水池水位在最低控制水位 (75.5 m)和最高控制水位 (86.0 m)之间;②由于峰谷电价往往有数倍之差,从经济效益方面考虑,尽量少发谷电[2];③兼顾运行人员工作安排,尽量减少凌晨作业。
考虑到进行短期调节计算(比如1 d)过程中水库水位变幅较小,故该程序假定调节计算时水库水位不变。
经过大量统计分析,发现1 d内供水流量变幅具有如下规律:08∶30至22∶30供水流量偏大,为日平均流量的1.1;22∶30至次日 08∶30供水流量较小,为日平均流量的0.9。本文程序通过自定义函数进行供水流量过程的模拟。
调节计算的基本原理是水量平衡原理。发电尾水池蓄水量变化等于进入尾水池的发电水量与流出尾水池的供水量和下泄水量之差:
尾水池水位—蓄水量关系为:V=f(z)
式中:Q发电为发电流量,m3/s;Q供水为供水流量,m3/s;Q下泄为尾水池向下游河道下泄流量,m3/s;Δ t为时间步长,s;V末为时段末尾水池蓄水量,m3;V初为时段初尾水池蓄水量,m3。发电流量 Q发电按电功率法,由发电水头、机组出力、机组运转特性曲线计算;供水流量Q供水按日供水量计划值,由自定义函数计算;下泄流量 Q下泄为下游蝶阀出流,按公式Q下泄=Q(z,e)计算。
2.4.1 程序设计
本文利用Visual Basic可视化技术制作调节计算界面,便于用户与程序的交流,直观及时地展示调节计算结果[3]。程序界面见图1,左边界面为用户输入的调节计算条件及参数,界面右边显示调节计算得出的调节池水位过程,以及各项水量统计值。
由于Fortran语言较强的数学计算能力和较高的计算效率,本文选用Fortran进行调节计算。VB与Fortran语言的链接具有多种方法[4],本文将Fortran程序代码编译成动态链接库文件 (DLL,Dynamic Link Library工程文件),VB调用DLL文件中的Fortran函数,从而实现VB与Fortran的混合编程。程序实现的基本流程可以概括为:
(1)VB的可视化界面接收用户输入的计算条件和参数;
(2)VB调用DLL文件中的Fortran函数进行调节计算;
(3)利用VBMsflexgrid控件显示计算结果,同时将结果输入EXCEL文件中保存。
2.4.2 参数传递及下界值不同问题的解决
(1)参数传递。虽然VB与Fortran语言默认的都是按址传递(Call By Reference),但Fortran字符串是由字符串内容加上字符串长度组成的,在VB中会传递出2条数据,这给程序设计带来更大的工作量[5]。本文采用自定义数据类型的方式进行2种语言间的参数传递,取得了较好的效果。
通过Fortran函数tjc-main(chuandi)进行计算分析,定义动态链接库的接口:
Fortran中自定义数据类型如下:
相应VB中自定义数据类型如下:
(2)默认下界值不同。VB与Fortran中数组元素的默认下界值不同,VB中为0,Fortran中为1,进行数组传递时最好用语句 “Option base 1”将VB中数组元素下界值设为1,从而保证参数正确传递[6]。
VB的主调用过程中声明DLL的语句为:Private Declare Sub TJC-MAIN Lib “tjc-forlib.dll” (ByRef chuandi As chuandi)
VB调用DLL的语句为:Call TJC-MAIN(chuandi)
经过大量的实际应用检验,尾水池水位日调节计算的误差控制在0.5 m以内,能够满足工程应用的需要。摘录的部分对比数据见表1。
表1 每日 09∶30调节计算误差 (实例)表 m
分析调节计算误差来源主要有:①基础数据方面的误差,包括尾水池水位—蓄水量关系曲线误差,蝶阀出流能力计算误差,机组发电流量计算的误差;②实际运行中机组出力值、开停机时间、蝶阀操作、1 d供水量等与计划值难以保持严格一致带来的误差;③基本假定带来的误差。
为了清楚展示程序应用效果,现模拟计算安排机组出力。假设某月8日接到电力调度部门通知,10日08∶30—15∶30电网线路检修,期间水库电站暂停向电网送电。为了保证10日供水安全,电站需要调整机组运行方式。
图1 调节计算程序界面图
按电站月度生产计划,9日22∶30尾水池水位达最高值86.0m,应用调节计算程序,得到图1计算结果,按图1方式安排10日机组出力,可保证供水安全。
机组出力具体安排:10日06∶15—08∶30电站 2台机组满负荷运行,将尾水池水位在线路断开之前蓄至最高值86.0m;线路检修期间 (08∶30—15∶30),电站 1台机组带厂用电运行,出力300 kW;线路恢复后 (15∶30—22∶30)电站1台机组满负荷运行,至22∶30可将尾水池水位蓄至85.5m,符合月度运行方案要求,保证11日即可恢复正常运行方式。此种运行方式可保证供水量约55万m3/d、下游放水量4.5万m3的安全、经济运行。
VB与Fortran混合编程综合了VB可视化界面设计和Fortran良好的数值计算功能,很好地满足了工程应用对计算机程序界面直观、运行高效的要求。误差分析表明,该水电站实时运行调度方案设计克服了基础资料精度有限、供水过程稳中有变等诸多困难,将误差控制在可接受范围内,实现了水电站实时运行方案设计电算化,为相似情况下的水电站运行提供借鉴。
[1]孟利平.潘家口水电站的联合调峰与电量补偿 [J].水电站机电技术,1998(02):8-11.
[2]欧述俊.考虑峰谷电价的水库发电调度优化方法探讨[J].水力发电,2003,29(01):8-9.
[3]王艳秋.VB在水利水电工程造价软件开发中的应用 [J].水力发电,2005,31(04):82-84.
[4]张志华.混合编程与 Fortran计算程序可视化 [J].计算机应用,1999,19(06):33-35.
[5]彭国伦.Fortran 95程序设计[M].北京:中国电力出版社,2002.
[6]李书琴.Visual Basic 6.0程序设计教程 [M].西安:西北大学出版社,2005.