趙桂連,劉程鵬,楊桀彬,楊建東
(1.中國電建集團成都勘測設計研究院有限公司,四川 成都 610072;2.武漢大學 水資源工程與調度全國重點實驗室,湖北 武漢 430072)
隨著水電的開發,目前大多數自然條件較優的中低水頭水力資源已被開發殆盡,余下的僅是流量較小及落差很大的高山河流的水力資源[1]。在我國十四五規劃、碳達峰、碳中和等政策導向下,建設高水頭水電站己成了最迫切的需求[2]。盡管沖擊式水輪機在國內外高水頭水電站中得到了較為廣泛的應用,但當水電站的建設受到水輪機制造水平或地形條件等因素制約時,多級串聯水電站布置方案被納入到工程設計或建設之中。
水電站系統從一種穩態到另一種穩態過程被稱為過渡過程,在這一過程當中極易發生管道的壓力、調壓室水位以及機組轉速的變化[3-5]。在某些極端工況中,上述參數可能會超出規范允許的范圍,危及電站的安全運行。因此,具備友好的人機界面的過渡過程計算軟件被設計單位所急需。
為了能夠快速簡便地對水電站進行過渡過程計算,前人已開發了諸多具有良好可視化能力的計算軟件。河海大學沈祖詒教授開發了一套Windows 界面下的水力-機械過渡過程仿真計算通用軟件[6],該軟件能夠用于裝有混流式、軸流轉槳式、貫流式或可逆式水輪機的水電站 ,并適用于任何形式的有壓過水系統。武漢大學唐岳灝[7,8]基于面向圖形系統的水電站過渡過程程序,提出了新的編碼原則。陸桂明[9]以及莫劍[10]等人根據引水發電系統的布置形式,實現了對水電站系統的圖形化建模,極大地提高了軟件的通用性。FANG[11]基于Matlab/Simulink開發了一套適用于各種水電站的過渡過程可視化軟件,并選擇了某電站進行實驗和仿真對比,證明了該軟件的準確性。譚越宇[12]基于C#語言,將面向對象技術和水力過渡過程仿真原理相結合,開發了一套具有圖形建模仿真功能的過渡過程計算程序。胡曉陽[13]、耿田皓[14]則是基于Flowmaster 進行了二次開發,對泵站系統和混流式水輪機發電機組進行可視化建模及過渡過程仿真計算。Topsys是由武漢大學開發的水電站過渡過程一維計算軟件,該軟件被成功運用于國內多座已建或在建水電站的計算分析[15,16]。商用軟件Bentley HAMMER 可以對復雜管網進行水錘分析,界面簡潔,被廣泛用于工程實際與科學研究之中[17-19]。EPFL 公司開發的SIMSEN 軟件不僅可以考慮水輪機等機械系統的影響,同樣可以考慮包括變壓器等電氣側的影響[20,21]。
盡管上述軟件能夠對各類水電站或者泵站進行過渡過程計算,但是均未考慮串聯水電站這一特殊布置形式。串聯水電站布置復雜,管道與節點類型多變,因此構建正確的拓撲關系以及求解恒定流比較困難。本文在過渡過程計算理論的基礎上,基于C++語言以及Qt庫開發了一款能夠對串聯水電站進行過渡過程計算的可視化軟件,為串聯水電站的設計單位以及運行管理單位提供了一個方便簡潔的工具,實現對設計方案以及過渡過程工況的數值模擬,從而有效減低串聯水電站的設計及運行風險。
在管網模型中,所有節點都與一條或多條管段相關聯。對于管網模型中的任意節點i,根據質量守恒定律,流入節點的所有流量之和應等于流出節點的所有流量之和,可以表示為:
式中:Qki,j表示與節點i相連的管道ki,j的流量;ni表示與節點i相連的管道數量;qi表示與節點i的流量需求,水電站管網中一般為0。當管段方向指向該節點時取負號,否則取正號,即管段流量流出節點時取正值,流入節點時取負值。
所有管段都與兩個節點關聯,根據能量守恒規律,任意管段i兩端節點水頭之差,應等于該管段的壓降,可以表示為:
式中:H為節點測壓管水頭,m;下標i與j表示管道k連接的起始節點與終止節點編號;對于水電站輸水系統,局部水頭損失占比高,可以在計算時擬取α=2;rk表示管道的阻力系數,包含局部阻力系數與沿程摩阻系數。該方程稱為管段的壓降方程。
1.2.1 有壓管道非恒定流數學模型和特征線法
考慮水體和管壁彈性的情況下,有壓一維非恒定流基本方程如下式[22]:
式中:x為從任意起點開始的沿管軸的坐標距離,m;α為管道各斷面形心的連線與水平面所成的夾角;A為面積,m2;a為波速,m/s;H為以某高程為基準的測壓管水頭,m;V為斷面流速,m/s。對于非棱柱體管道,式中?A/?x≠0;對于棱柱體管道,?A/?x=0。
有壓管道一維非恒定流的動量方程以及連續性方程是以x和t為自變量、以V和H為因變量的擬線性雙曲性偏微分方程組。雙曲性偏微分方程組的一般解不存在,將式(3)和式(4)轉換為特殊的常微分方程,然后對常微分方程積分得到有限差分方程。整理可得:
式中:
上游水庫、下游水庫、岔管、調壓室、水輪機等非恒定流計算邊界條件可見文獻[22]。
1.2.2 明渠一維非恒定流模型的基本方程及離散
明渠一維非恒定流圣維南方程組由連續方程和運動方程組成[22]:
式中:B為水面寬度,m;h為水位,m;t為時間,s;Q為流量,m3/s;C為謝才系數,x為斷面距離坐標,m;q為區間入流量,m3/s;A為過水斷面面積,m2;v為水流沿軸線方向的流速,m/s;R為水力半徑,m;i為渠道的底坡。
用Preissmann 格式離散圣維南方程,離散結果分別以未知時層和增量的形式表示水位與流量,離散方程分別如下。
式中:
當各渠道組成渠網時,在岔點處需要補充連接條件,如下式所示,其中,下標i和o分別為斷面位于流入和流出岔點的渠道上:
若岔點有n個分支渠道交匯,則有1個流量連續方程和n-1個水位平衡方程,再補充外邊界條件,及各渠道內部的圣維南離散組,便可形成整體矩陣進行求解。
在水電站過渡過程計算軟件中,涉及的類與函數數量較多,軟件整體較為復雜,并存在一些功能相似的函數或具有共同父類的子類,因此可以將整個軟件根據功能劃分為以下三大的模塊,即人機交互模塊、計算模塊以及計算結果后處理模塊。三大模塊并不是相互獨立的,而是存在聯系。該軟件采用主界面對三大模塊進行管理,其中人機交互模塊包括程序的主界面以及繪圖模塊繪圖,繪圖模塊用來對串聯水電站布置進行建模,是過渡過程計算的基礎;計算模塊則是在繪圖模塊的基礎上對所建立的模型進行相應的計算;后處理模塊為用戶提供了多種形式對計算結果進行處理展示。
本文計算模塊以C++為編程語言,人機交互模塊以及后處理模塊則是通過Qt 來實現的。Qt 是跨平臺的C++圖像用戶界面應用程序框架,具備優良的跨平臺特性,支持Windows、Uinux、Linux 等各類平臺,在多個工程行業得到廣泛的應用[23-25]。作為C++圖像用戶界面應用程序框架,Qt 具有良好的封裝性以及擴展性,包含了大量且功能各異的API;另外,Qt 庫提供了完善的說明文檔,為可視化串聯水電站過渡過程計算軟件提供了便利。
程序主界面是用戶與程序交互的核心,用戶對程序的一切操作都是基于程序主界面來進行的,包括對主要模塊進行管理和以三大模塊為核心的輔助功能模塊,圖1 為軟件的結構設計圖。

圖1 程序結構設計圖Fig.1 The diagram of program structure design
(1)文件保存模塊:可以將繪制好的過渡過程計算模型的布置形式以及各管道、節點參數保存至數據文件(.sbl 格式)當中。
(2)文件讀取模塊:可以直接將數據文件(.sbl格式)中數據進行讀取,并將文件中的過渡過程計算模型以及各管道、節點參數還原在繪圖區中;用戶可以在繪圖區中對布置形式以及參數進行修改并保存。
(3)繪圖檢查模塊:用戶可以通過該模塊來對所建立的模型進行檢查,來判別用戶是否建立了正確的過渡過程計算模型。
(4)屬性查詢模塊:查詢管道與水輪機的基本參數,并可以進行修改。
(5)其他功能模塊:為方便用戶對水電站布置形式進行建模,程序提供了包括撤銷、復原、對齊、刪除以及縮放等一系列輔助功能。
繪圖模塊是串聯水電站過渡過程建模的基礎核心部分,計算模塊將會以該模塊所建立的模型進行恒定流以及非恒定流的計算。
水電站輸水管道系統盡管在布置上是三維立體的,但是采用平面二維圖形完全可以表示出管網系統的布置以及管道之間的連接關系。另外對于過渡過程計算而言,計算結果與節點的實際位置無關,因此二維平面圖形不影響計算的準確性。
在依據串聯水電站布置形式在繪圖區建立好計算模型后,用戶可以依靠參數編輯模塊來對管道、水輪機、調壓室以及調節池的參數信息進行修改編輯。
用戶可以對計算的時間步長、時間總長、迭代次數、迭代精度以及數據保存精度進行設置,計算模塊將會根據用戶的設置來進行計算。
計算模塊主要包括恒定流計算以及非恒定流計算兩個計算模塊,其中非恒定流計算是恒定流計算的基礎上進行。計算模塊將前處理中繪圖模塊繪制于繪圖區的電站管道布置圖轉化為管道拓撲關系并保存于數組當中,與管道和節點參數相結合,先計算出串聯水電站的恒定流,然后根據各水輪機的參數設置,進行大波動、小波動以及水力干擾等過渡過程的計算。
在計算模塊計算出串聯水電站的恒定流以及非恒定流后,會將將計算結果傳遞到后處理模塊當中。
后處理模塊主要包含的是結果展示模塊以及結果保存模塊兩大部分,用戶可以通過程序主界面上對應的按鈕查看計算結果,包括機組、調壓室、調節池、閥門以及檢測點各個時刻的詳細信息。如果用戶需要對計算結果進行分析處理,在計算結束后,用戶可以通過后處理模塊將計算結果展示和保存。
繪圖功能作為過渡過程計算軟件的基礎,水電站管道系統的模型的建立、數據輸入、恒定流以及非恒定流的計算都是在繪圖功能的基礎上進行的,因此建立一個可交互的繪圖區以及完善對應的繪圖功能至關重要。
串聯水電站中包含大量的管道以及串聯點、岔點、機組等節點,繪圖模塊需要對各類管道節點進行分類,并且能夠對鼠標事件進行響應。Qt 提供了圖形視圖(GraphicsView)框架,方便對框架下的Item 項進行管理。并且圖形視圖框架提供拖放操作、碰撞檢測等功能,同時能夠對各類鍵盤事件和鼠標事件進行管理,為軟件繪圖模塊的實現提供了便利。圖2 為繪圖功能框架。

圖2 繪圖功能框架Fig.2 The framework of drawing functional
根據水電站的布置形式可以將繪圖內容分為兩個父類,即節點單元父類以及管道單元父類。節點單元父類主要是由上游水庫節點類、下游水庫節點類、串聯節點類、岔管節點類、閥門節點類、調壓室節點類、調節池節點類以及水輪機節點類等子類所繼承;根據輸水系統中的管道形式,管道單元父類將會被有壓管道類、明滿流管道類以及明渠管道類3個子類所繼承。對于擁有同一父類的子類而言,功能一致的函數可以在父類中進行編寫,功能相似的函數則可以在父類中聲明虛函數,并在子類中進行重寫,這樣不僅簡便了代碼量,并方便了對繪圖的管理。串聯水電站過渡過程計算程序繪圖類的劃分如圖3所示。

圖3 水電站過渡過程計算程序繪圖類的劃分Fig.3 Division of drawing class of calculation program for transition process of hydropower station
與QGraphicsItem 中提供的基礎圖元不同,程序中需要將圖元基本樣式修改成能夠直接反映節點類型的圖形,并且對圖元進行可交互的操作如鼠標單擊選擇圖元、雙擊彈出數據輸入對話框、右鍵彈出菜單以及拖拽等功能,因此需要自定以QGraphicsItem 類來滿足程序的要求。自定義QGraphicsItem 類必須要實現兩個虛函數,paint()函數以及QRectF boundingRect()函數。paint()的作用是以本地坐標繪制自定義Item 的內容;QRectF boundingRect()則是確定該圖形的重繪區域。此外自定義Item類還可以調用setPixmap()函數來修改顯示的圖形。
自定義Item 需要對相應的類輸入用于計算的參數,如水輪機節點需要輸入水輪機類型、轉輪直徑、特性曲線以及水輪機需要計算的工況和相關參數等,有壓管道則需要輸入管道長度、波速、前后斷面類型等。通過對話框的形式將所需要輸入的參數呈現出來,能夠使得用戶更加直觀的將對應的參數輸入正確,從而保證計算的準確性。因此在自定義的Item 中,需要定義一個對話框,并將所需要的參數呈現在對話框中,用戶通過對話框來實現參數的修改以及輸入。
Qt 中使用QDialog 類來實現對話框,QDialog 類繼承自QWidget 類,開發人員可以通過對QDialog 類添加各種組件以及布局來完成對話框的構建,各類組件的添加都可以通過QT designer 拖拽進行設計。對話框中任何功能都需要開發人員進行編寫,如按鈕功能、下拉框更改對話框的內容、單選以及多選按鈕的應用,而上述功能的實現都需要運用到Qt 的信號與槽機制,完整的對話框布局以及對應的功能的完善才是一個完備的對話框,如圖4為水輪機參數輸入對話框。

圖4 水輪機參數輸入對話框Fig.4 Turbine parameter input dialog
自定義類在圖形形狀、繪圖區域以及參數對話框確定后,需要對圖形的交互功能進行完善與編寫。在QGraphicsItem 類中提供了眾多虛函數來對事件進行處理,用戶只需在自定義的Item 中將虛函數重寫便可實現對應的功能。用戶與圖元的交互功能主要為鼠標單擊選擇圖元、雙擊彈出數據輸入對話框、右鍵彈出菜單以及拖拽等。
場景類作為一個管理Item 的容器,需要在場景上對不同類型的Item 進行添加、刪除、移動以及復制黏貼等動作。場景類的動作大部分都是由鼠標點擊來實現的,因此需要對不同的鼠標動作進行響應。
當用戶開始依據水電站布置形式建立計算模型時,需要在繪圖區域進行繪制。當繪制節點時,便可在鼠標點擊區域創建一個節點圖形;當繪制管道時,需要在繪圖區域點擊兩次便可以創建一條管道。場景類包含一個模式屬性參數,不同的模式對不同的鼠標左鍵事件進行響應,在場景對事件做出響應前,先判斷模式屬性的類別,再進行響應的動作。如點擊繪制水輪機節點時,用戶點擊了繪圖工具欄上的按鈕,場景模式屬性轉變為水輪機狀態,用戶點擊繪圖區時,場景便在鼠標點擊處添加一個水輪機節點。如果不選擇任何一種繪圖工具欄上的按鈕時,模式屬性便會轉化為空狀態,此時場景不會對鼠標左鍵點擊產生事件響應。如果該點存在Item,場景會將事件傳遞給在這一點的最頂層的Item。如果頂層Item 不接受該事件,則將事件傳遞給下一層的Item,以此類推,直至某一層Item 接受該事件。如果該點不存在Item,則該事件將會忽略。
在串聯水電站過渡過程計算結束以后,用戶需要對計算結果進行查看來確保計算結果的正確,或是修改計算參數的設置。程序提供了兩種方式來查看恒定流以及非恒定流過渡過程的計算結果,一種是在程序能直接查看各個重要參數,另一種是直接將計算結果保存為數據文件。
Qt提供了QTableWidget類在界面上添加表格,通過setItem()函數來對表格內容進行添加或修改。由于計算時間長,計算時間步長小,系統中機組數量多,且機組非恒定流詳細信息對話框中包含多個參數頁面,因此整個對話框數據量十分龐大,因此整個對話框的響應十分的緩慢。為了在較短時間內使得對話框響應完成,并將各個頁面的數據完整的呈現給用戶,多線程的調用是一個有效的解決措施。C++語言中提供了Thread庫,開發者可以根據需要來進行多線程的開發使用。在該對話框中,可以將每一個頁面放入一個線程當中,當對話框被調用,則多個線程并行,多個頁面中的數據同時顯示,對話框便能夠在短時間內被響應。
除了在參數顯示對話框顯示數據以外,還需要對數據的變化趨勢進行展示。Qt 中提供QChart 類供開發者進行圖形的顯示,addSerise()函數可以將系列參數添加到ChartView 中進行展示。在將繪圖對話框以及參數顯示對話框進行綁定后,用戶可以選擇任意的參數以及時間范圍進行繪制。圖5為某機組甩負荷計算結果顯示對話框。

圖5 結果顯示對話框Fig.5 The dialog to display result
某裝有反擊式水輪發電機組的兩級串聯水電站,其布置形式如圖6所示。其中調節池面積為60 000 m2;一級水電站裝有三臺機組,三臺機組共尾水調壓室,引水隧洞長約758 m;二級水電站裝有四臺機組,并劃分為兩個水力單元,每個水力單元中的兩臺機組共上游調壓室,引水隧洞長約17 km,兩級水電站的機組詳細信息如表1所示。

表1 串聯水電站機組基本參數Tab.1 The basic parameters of series hydropower station units

圖6 兩級串聯水電站布置簡圖Fig.6 Layout diagram of two-stage series hydropower station
按兩級串聯水電站的布置形式在軟件上進行繪圖建模,如圖7所示。圖中J1~J3為一級水電站機組,J8~J11為二級水電站機組,J5 為調節池,J4、J6 和J7 為調壓室,J16~J18 為上游水庫,J12~J15為下游水庫。

圖7 兩級串聯水電站過渡過程計算布置圖Fig.7 The calculation layout of transition process of two-stage series hydropower station
7臺機組額定出力運行時,同時突甩10%額定負荷,機組為了能夠恢復到穩定狀態,需要進行頻率調節或是功率調節。頻率調節模式下調速器參數取bt=0.5,bp=0,Tn=0.6 s,Td=8 s。功率調節模式下調速器參數取bt=0.5,bp=0.04,Td=8 s,計算結果見圖8、圖9以及表2。

表2 頻率/功率調節下機組的調節時間Tab.2 Unit adjustment time under frequency/power regulation

圖8 功率調節下機組出力變化Fig.8 Unit output changes under power regulation

圖9 頻率/功率調節下調節池參數變化Fig.9 Variation of regulating reservoir parameters under frequency/power regulation mode
頻率調節模式下,一級水電站機組調節時間約為160.4 s,二級約為485.6 s。功率調節模式下,一級水電站機組進入功率±2%帶寬約為51.6 s,二級約為425.6 s。二級水電站機組調節時間長于一級電站機組的原因是二級水電站輸水管道長,因此水流慣性大,調壓室水位波動周期長、衰減慢,從而導致二級水電站機組在頻率調節模式下機組調節時間較長。當兩級串聯水電站機組在頻率調節和功率調節下恢復到穩定后,無論是頻率調節還是功率調節,調節池流入與流出流量并不匹配,調節池水位依舊會快速下降,因此單獨的頻率調節以及功率調節無法使得串聯水電站系統恢復到穩定狀態。
由于地形條件的限制,相鄰電站并不能夠通過容積有限的池庫式調節池進行連接,而是通過明渠管網的方式,如田灣河梯級電站[26]以及天龍湖-金龍潭梯級電站[27]。為驗證本程序對明渠連接的串聯電站水力過渡過程計算的能力,以某通過明渠連接的兩級串聯水電站為對象,對其進行水力過渡過程計算,其平面布置形式如圖10所示。一級電站引水隧洞長350 m,二級電站引水隧洞長1 400 m;通過底寬為20 m,長度為100 m 的四條明渠將相鄰兩級水電站向量。兩級電站均安裝一臺出力為338.74 MW,設計水頭為75.4 m,設計流量為492.4 m3/s,轉輪直徑為7.1 m,額定轉速為100 r/min的混流式水輪機組。

圖10 明渠連接的兩級串聯水電站布置形式Fig.10 Layout diagram of two-stage series hydropower station connected by open channels
按圖10 的布置形式在軟件上進行繪圖建模,如圖11所示。圖11中J1為上游水庫,J3、J11分別為為一級電站和二級電站機組,J5、J13 為調壓室,J14 為下游水庫;L1~L5,L10~14 為有壓管道,L6~L9為明渠管道。

圖11 明渠連接的兩級串聯水電站程序計算模型Fig.11 The calculation layout of transition process of two-stage series hydropower station connected by open channels
當上游一級電站機組突甩負荷,為保證下游電站機組的安全,120 s 后下游機組甩負荷,兩臺機組導葉關閉規律采用12 s直線關閉規律。計算結果見圖12~14 和表3所示。圖12(b)、(c)分別為距上游電站出口處不同距離處的水深與流量變化。

表3 串聯電站機組極值結果Tab.3 The extremum of series hydropower station units

圖12 明渠參數變化Fig.12 Variation of open channels parameters
由圖12(a)可知,當上游電站機組甩負荷后,明渠管道的平均水位下降,當下游機組同樣甩負荷后,明渠的平均水位不在下降。由圖12(b)、(c)可知,當上游電站機組開始甩負荷后,靠近上游電站處的明渠節點流量開始減小,水位開始降低,并向下游傳播;在此其間,靠近下游電站的明渠流量主要受下游電站機組引用流量的影響。當下游電站機組開始甩負荷后,下游電站引用流量減小,明渠整體水位不再降低并產生雍水;該雍水從下游向上游進行傳遞,如圖12(b)所示。此時明渠各點的水深和流量將受到上下游兩個擾動的影響,如圖12(b)、(c)所示。
由圖13 可知,當明渠的平均水位下降時,上游電站的尾水調壓室受到明渠部分的水位的影響,其水位在波動中不斷下降,同時尾水管進口壓力也在調壓室水位的影響下逐漸降低。由圖14 與表3 可知,在上下游機組甩負荷期間,上游一級電站機組最大蝸殼壓力為116.14 m,尾水管進口最小壓力為6.24 m;下游二級電站機組最大蝸殼壓力為189.43 m,尾水管進口最小壓力為2.54 m。二級電站機組導葉關閉過快,導致蝸殼壓力上升率較大,需要對導葉關閉規律進行優化。

圖13 調壓室水位變化Fig.13 Variation of surge-chamber water level

圖14 機組參數變化Fig.14 Variation of units parameters
從案例一與案例二的計算結果來看,頻率調節下機組轉速與功率調節下的機組出力變化以及甩負荷下機組參數的變化規律符合頻率、功率調節以及大波動下機組參數的變化規律[28-30],因此該程序具備實際的應用價值。
過渡過程作為影響水電站安全運行的重要因素,設計單位以及水電站管理單位尚未有針對多級串聯水電站進行系統計算分析的精細化軟件。本文在過渡過程計算理論的基礎上,開發了一款能夠針對串聯水電站復雜管網進行過渡過程計算的可視化軟件。該軟件具有良好的人機交互界面,且操作簡單直觀,用戶能夠按照串聯水電站布置形式建立過渡過程計算模型,并對管道或節點進行參數的輸入與修改;針對串聯水電站的圖形計算模型,軟件將會根據尋線算法建立串聯水電站的拓撲關系并構建總體矩陣方程,求得串聯水電站的恒定流;在此基礎上,軟件能夠對串聯水電站進行大波動、小波動以及水力干擾工況的計算,計算結果正確合理,并由后處理模塊對計算結果進行展示保存。