基于VB 与Fortran 混合编程的抽水蓄能电站 过渡过程仿真.pdf
基于 VB 与 Fortran 混合编程的抽水蓄能电站 过渡过程仿真 基于 VB 与 Fortran 混合编程的抽水蓄能电站 过渡过程仿真 周建旭 黄渝桂 刘文明(河海大学水电学院,江苏南京 210098)摘 要 基于在 WindowsXP 操作系统下 Visual Basic 与 Microsoft Fortran 两种语言动态链接的方法,包括数据的传递、程序的调用和数据类型的约定等,结合抽水蓄能过渡过程数值仿真,采用 Visual Basic与 Microsoft Fortran 混合编程,使 Fortran 计算流程和输入输出数据实现可视化,既可避免重复性的操作,又可以充分利用 WindowsXP 操作系统的优点,提高计算应用程序的通用性和提供友好的人机对话窗口。关键词 混合编程;仿真模拟;抽水蓄能电站;过渡过程 1 引言1 随着计算机的进步和抽水蓄能电站在我国的建设发展,抽水蓄能电站仿真机得到了较快发展和应用,较为典型的抽水蓄能电站仿真机是基于 LINUX 集成系统仿真环境,以 Fortran 或 Visual C+程序为核心构建1,近年来,新型水电仿真系统平台 GHS2的提出,为抽水蓄能电站仿真机的构建提供了崭新的平台。但是,抽水蓄能电站仿真机在一定程度上是作为原型电站的运行参照系统,通常不具备通用性,主要用于电站运行阶段培训相关运行人员13。因此,应用软件的可视化日益得到工程界和科技界的重视且得到了较大的发展,可应用到实际工程建设的各个阶段。杨建东等4,5基于Visual C+和 Visual Basic 平台,利用面向对象方法,提出以动态编号方法以及子管线组合为基础的自动编码方法,自动建立实体间的拓扑关系,实现对水电站引水发电系统的图形化模拟和图形化物理参数输入,开发出水电站过渡过程可视化计算软件。对于抽水蓄能电站水力过渡过程数值仿真而言,Fortran 源程序的模块化和结构化已很成熟,通用性也较强,只是可视化程度低,在此,基于 Fortran 源程序,进一步结合 Visual Basic 仿真平台,采用混合编程的方法实现抽水蓄能电站水力过渡过程数值仿真的可视化。2 应用程序可视化的实现分析 可视化编程是现代计算与分析软件设计的重要发展方向之一,直接关系到应用程序的使用效果。应用程序的可视化,一般包括界面操作、数据输入与数据输出的可视化。Fortran 语言具有结构层次清楚、数值计算与数学分析能力强,和运行计算稳定可靠的特点,广泛应用于数学与工程计算,特别适用于编制模块化结构的大型计算程序,然而,Fortran 语言的一个不足之处是进行可视化编程难度大。Visual Basic 语言(简写 VB)能迅速有效地编制友好的人机交互界面,广泛用于 WindowsXP 环境下系统的可视化界面设计,同时 VB 语言所提供的对象链接与嵌入(OLE,Object Linking and Embeding)工具,为利用其它软件进行数据的可视化处理提供了方便。因此,有必要应用基于 VB 与 Fortran 语言可视化混合编程的 VB 调用 Fortran 动态链接库这一关键技术,分析将 Fortran 语言强大的数值计算能力与 VB 在界面操作、数据输入与数据输出方面的可视化设计能力结合起来,充分利用这二种语言的优势,结合的关键是建立用于 VB 应用程序的 Fortran动态链接库(DLL,Dynamic Link Library),解决两种语言参数传递约定、命名约定和调用约定等接口问题。徐林春等6结合 Fortran 和 VB 两种语言,采用集数值计算、交互式控制和可视化功能于一体的混合编程技术用于流动仿真模拟领域中,取得了良好的效果。作为 Fortran 语言在水利工程中应用的主要应用程序之一,抽水蓄能电站水力过渡过程数值仿真程序,充分利用 Fortran 语言程序设计的优点和特点,通过模块化及结构化编程,真实体现了抽水蓄能电站水力机械系统的瞬态过程,为抽水蓄能电站建设各个阶段输水系统的布置设计和运行控制提供可靠的理论依据和数值验证。但是,仅基于 Fortran 语言编程和计算分析,需要通过数据输入、程序的执行、数据的输出和输出数据的处理等过程,往往需要重复性的多个工况输入/运行操作和冗余数据的处理分析,因此,若实现抽水蓄能电站水力过渡过程数值仿真的可视化,必能降低数据输入/输出和处理的工作量,提高程序运行的效率和可操作性,使程序既具有通用性,又具有应 用于抽水蓄能电站数值仿真的特殊性。因此,结合抽水蓄能电站水力过渡过程数值仿真,利用Fortran计算源程序创建动态链接库,由 VB 主界面对 DLL 计算函数或过程加以调用,实现可逆式机组全特性曲线的处理和水力过渡过程全过程的可视化计算、演示和分析等。抽水蓄能电站水力过渡过程数值仿真的关键技术包括:数学仿真模型的通用性扩展;管道参数和机组特性参数的整理和导入;软件的界面设计;仿真计算程序(Visual Fortran 程序)和界面设计软件(Visual Basic 软件)的接口;计算软件的调试和使用。3 抽水蓄能电站水力过渡过程数值仿真 3.1 数值仿真内容 抽水蓄能电站在电网中的调峰填谷、调频、备用、电网黑启动等作用日渐明显,是重要的电网保安工具。同时,必须首先充分保障其安全稳定性,抽水蓄能电站中发生的水力机械过渡过程往往是威胁电站安全稳定运行的主要因素,必须对其进行准确地计算分析、预测和控制。不同于常规水电站,抽水蓄能电站具有抽水和发电两个主要工况,工况转换迅速而频繁,输水系统中存在双向水流等特性,另外,抽水蓄能电站部分过渡过程经小开度区或低转速区,以及机组全特性曲线水泵工况区斜率较陡和可能存在“S”特性区等,使得抽水蓄能电站水力过渡过程多而复杂,包括组合工况,以及是否可控制等。因此,为了保证抽水蓄能电站的设计、运行和控制,分析和了解其水力过渡过程显得尤为重要,即开发相应的计算分析软件,对抽水蓄能电站电站的大波动、小波动和水力干扰过渡过程进行计算机仿真模拟研究。数值仿真的数学模型依物理机理建立,能实现机组各种运行工况和过渡工况的计算仿真分析,主要包括机组的启停、发电工况甩荷、抽水工况断电等典型过渡工况,以及组合工况,考虑机组导叶的正常启闭和拒动情况,以分析包括蜗壳进口最大内水压力、尾水管进口最小内水压力和机组最大转速上升值在内的各调节保证计算参数,以及调压室涌浪等参数的控制工况和控制值,还包括机组导叶关闭规律和转动惯量的优化选择等,为工程设计和运行控制提供可靠的依据和建议。3.2 数学模型 抽水蓄能电站水力过渡过程计算数学模型主要包括“输水系统的仿真数学模型”和“可逆式机组的数学模型”两部分,边界条件包括上下库进/出水口、调压室、上下游分岔点和可逆式机组等。为了准确反映输水系统的水力特性,实现仿真程序的通用性,建立以特征线法为基础,并且辅以系统状态方程分析和相关数值分析方法的仿真分析数学模型。结合现有的并经模型试验及大量工程科研项目验证,以结合特征线法和系统状态方程分析的联合算法为核心的抽水蓄能电站水力机械系统大、小波动过渡过程以及水力干扰仿真计算程序,进行通用性扩展开发,可广泛用于抽水蓄能电站水力机械系统过渡过程数值仿真计算。(1)水锤计算特征线法7 特征线方法是求解管道系统水力瞬变流常用的数值计算方法,也是用于抽水蓄能电站水力过渡过程计算的 Fortran 源程序的核心。依据考虑弹性的有压管流基本方程建立特征线方程 PiPPPiQBCHC=+:(1)PiMMPiQBCHC+=:(2)式中,CP、BP、CM和BM为由t-t时刻、i-1 和i+1 断面已知的测压管水头和流量以及管段特性确定的已知系数;Hpi和Qpi为t时刻i断面的测压管水头和流量,为未知量。(2)可逆式机组全特性曲线转化7,8 因可逆式机组具有发电和抽水两种运行工况,而其全特性曲线局部斜率较陡,且可能存在“S”形特性区,为了避免计算中可能产生的多值问题,采用 Suter-form 格式对全特性曲线进行转化 22221111211112)()(),(yqhQQnnyyxWHrr+=+=(3)yMkhmyMkMyxWMrr)(),(11111111+=+=(4)0,arctanarctan2111121111+=+=hkqnnkQQxrr 0 ,arctanarctan2111121111+=+=hkqnnkQQxrr 式中,h、m、和q分别为水头、力矩、转速和流量的无量纲值;n11、Q11和M11分别为单位转速、单位流量和单位力矩,带下标“r”表示对应参量的额定值;y 为导叶相对开度;k1和k2为系数,计算中取k1=1.01.8、k2=0.51.2。基于特征线法和 Suter-form 格式转化得到的可逆式机组特性曲线,以及机组转动力矩平衡方程,则可建立可逆式机组边界的数学模型,依据给定的导叶启闭规律y=y(t)即可求解各种工况的机组瞬态参数h、m、q等。4 VB 和 Fortran 混合编程应用实例 4.1 混合编程的实现方法 抽水蓄能电站水力机械过渡过程数值仿真 Fortran 源程序的主要计算分析模块包括:输入输出模块;初始状态分析模块;开度分析模块;机组瞬时运行点分析模块;机组全特性曲线 Suter-form 格式转化模块;机组和调速器状态分析模块;输水系统瞬变流分析模块;单纯形法寻优模块、代数方程组求解模块、微分方程组龙格库塔法求解模块、二元三点插值模块等数值计算分析模块。所有模块均为子列程子程序(SUBROUTINE)定义的程序单元。以抽水蓄能电站水力机械过渡过程数值仿真 Fortran 源程序为核心,可视化平台采用Visual Basic 软件设计开发,全面实现软件的输入和输出功能,其中输入端的设计与开发便于工程布置的展开和优化调整,以及计算方案的优化选择,输出端包括各参数的动态过程曲线和极值等,以表格或图形的形式实现。实现 VB 和 Fortran 两种语言的混合编程,首先解决相关接口问题,包括:两种语言之间的调用;变量的传递及数据类型的对应关系;两种语言的命名规范;等。在充分考虑和正确处理相关接口后,采用 call()函数实现 VB 调用 Fortran 生成的动态链接库DLL 文件。动态链接库是把 Fortran 程序代码中使用的函数编译成机器码,保存在 DLL 文件中。动态链接库文件(DLL 文件)是一个函数库,可以是一个函数也可以是多个函数,且这些函数独立与主程序进行编译、链接和储存,可为程序设计提供良好的设计平台。Fortran 动态链接库建立的具体步骤可参见文献6。注意动态链接库名必须指明 Fortran 生成的 DLL 文件的路径,或者把 DLL 文件放在当前文件夹里。VB 调用 Fortran 动态链接库子程序或函数,须在全局模块或窗体中声明,以便编译器找到该过程。结合抽水蓄能电站水力机械过渡过程数值仿真 Fortran 源程序,Fortran 和 VB 混合编程的具体步骤包括(1)创建通用的 Fortran 计算源程序 SUBROUTINE CHOUXU(AR,AM,LG)1$ATTRIBUTES DLLEXPORT:CHOUXU 2$ATTRIBUTES ALIAS:CHOUXU:CHOUXU DIMENSION AM(10,10)LOGICAL LG 3 CALL SUTER(AN1M,AN1Q,TAU,Q11,AM11,LOPN,LN11,X,WHN,WMN)4 CALL WTHM(DT,H,Q,HP,QP,HPS,QPS,)RETURN END SUBROUTINE 语句 1 用于建立 VB 和 Fortran 接口的引入点,语句 2 给出子程序的别名,不可以省略,语句 3表示调用机组全特性曲线转化模块,语句 4 表示调用输水系统瞬变流分析模块。Return 把 Fortran计算结果返回 VB 主程序。子程序说明语句中未列出实际的虚拟参数,仅以实型变量、数值变量和逻辑变量为代表表示,以说明不同类型变量的传递约定。调试完成 Fortran 计算程序,选择 Compile CHOUXU.F 试运行,然后 Build 创建 CHOUXU.Dll 文件。(2)建立 VB 标准工程 建立 VB 标准工程的代码如下:5 Private Declare Sub CHOUXU Lib CHOUXU.dll(ByRef AR As Long,ByRef AM As Single,ByRef LG As Boolean)Private Sub Command1_Click()Dim AR As Long Dim AM(1 To 10,1 To 10)As Single 6 Call CHOUXU(AR,AM(1,1),LG)Open App.Path&RESULT.txt For Output As#2 Close#2 End Sub 该 VB 调用 Fortran 动态链接的标准工程具体体现了动态链接的过程,语句 1 为 VB 调用 Fortran动态链接库的声明语句,在语句 6 中体现数据的传递,可以看出对于数组而言,只要将数组的第一个元素传递到 DLL 过程,DLL 过程就可以能够访问数组的所有单元。4.2 抽水蓄能电站过渡过程仿真的可视化实现 基于上述通过 VB 和 Fortran 混合编程得到的抽水蓄能电站水力过渡过程数值仿真的可视化软件,结合一双机共尾水调压室和尾水主洞抽水蓄能电站的输水系统布置,确定水库节点信息、串联节点信息、分岔节点信息、机组节点信息和调压室节点信息等,建立系统模型,同时设置水力过渡过程计算仿真工况,及机组导叶启闭规律等。数据的输入输出由 VB 友好的交互式界面承担,原始数据(初始条件、边界条件、计算参数等)可由 VB 界面直接输入或更改(前处理),计算功能则通过调用Fortran 动态链接库得以实现,整个计算过程是通过 Fortran 动态链接库在后台处理,再将计算成果传回 VB 程序,利用 VB 可视化功能绘出,系统直观地进行计算分析。可逆式机组是抽水蓄能电站常用的机组型式,其全特性曲线水泵工况区斜率较陡和可能存在“S”特性区等,需要采用 Suter-form 格式进行转化,避免各等开度线的局部较陡或交叉现象,以保证数值仿真的收敛和正确性。图 1 即为基于抽水蓄能电站水力过渡过程数值仿真的可视化软件得到的 Suter-form 格式转化后的机组全特性曲线的可视化输出,很直观地表明了转化后的成果满足计算要求,各等开度线不存在交叉,且曲线斜率较缓。图 1 Suter-form 格式转化后的机组全特性曲线可视化输出 基于转化后的可逆式机组全特性曲线,则可进一步分析抽水蓄能电站水力过渡过程的各种工况,直观地了解水力过渡过程中输水系统任一控制断面的内水压力和机组运行参量随时间的变化规律,以及相应的极值。图 2 给出了机组发电甩荷导叶关闭工况下机组蜗壳进口内水压力和尾水管进口内水压力动态曲线的可视化输出,并且直观显示了对应的极值;图 3 给出了机组抽水断电导叶拒动工况下机组转速和蜗壳进口内水压力动态曲线的可视化输出,也直观显示了对应的极值。依据图 2 和图 3,可以直观地判断相应参量极值的控制工况以及各参量极值的具体数值,无需借助其他的绘图分析软件进行繁琐的数据后处理。图 2 发电甩荷导叶关闭工况相关参数动态曲线的可视化输出 图 3 抽水断电导叶拒动工况相关参数动态曲线的可视化输出 5 结论 应用软件的可视化日益得到发展和普及,在实际工程建设的各个阶段发挥应有的功能和作用。基于广泛应用于实际工程的抽水蓄能电站水力过渡过程数值仿真计算的 Fortran 源程序,生成动态链接库(DLL 计算程序),采用与基于对象语言 VB 的混合编程,充分利用 Fortran 在数值计算方面和VB 在可视化方面的优势,实现程序资源的共享和可视化,节约时间和提高效率。数据的输入输出由VB 友好的交互式界面承担,原始数据由 VB 界面直接输入或更改(前处理),通过调用 Fortran 动态链接库实现计算功能(后台处理),将计算成果传回 VB 程序并且利用 VB 可视化功能直观显示和分析。结合实际算例的可视化仿真表明:基于 VB 与 Fortran 混合编程的抽水蓄能电站过渡过程仿真软件的正确性,以及在数据输入/输出和处理方面的优势。参考文献:1徐广文,刘兵,葛新峰,郑源,张建方.抽水蓄能电站全范围仿真培训系统J.华东电力,2007,35(9):58-60.2苏羽,赵海,苏威积,徐野.GHS:一种新型水电仿真系统平台的研究与应用J.系统仿真学报,2005,17(5):1230-1233.(SU Yu,ZHAO Hai,SU Wei-ji,XU Ye.GHS:Research and Application of Grid Based Hydro-electrical Simulation System Platform J.Journal of System Simulation,2005,17(5):1230-1233.)3周建旭,刘兵.无功功率调节在水电站仿真中的实现J.系统仿真学报,2008,20(11):3043-3046.(ZHOU Jian-xu,LIU Bing.Realization of Reactive Power Regulation in Simulation of Hydropower Plants J.Journal of System Simulation,2008,20(11):3043-3046.)4杨建东,莫剑,唐岳灏,赵桂连.水电站过渡过程程序可视化设计的思路及实现.水电能源科学,2005,(2):57-59.5莫剑,杨建东,赵桂连.引水发电系统的图形模拟及参数设计.水力发电学报,2005,24(6):83-87.6徐林春,赵明登,童汉毅.Fortran 与 VB 混合编程及其在流动数值模拟可视化技术中的应用J.武汉大学学报(工学版).2004,37(4):21-24.7WYLIE E B and STREETER V L with SUO Li-sheng.Fluid transients in systems M.New Jersey:Prentice Hall Englewood Cliffs,1993.8梅祖彦.抽水蓄能发电技术M.北京:机械工业出版社,2000.