中國石油大學(xué)(華東)
PipephaseAPI在油氣田集輸系統(tǒng)上的應(yīng)用
趙鵬飛 王武昌 李玉星中國石油大學(xué)(華東)
Pipephase軟件廣泛用于油氣生產(chǎn)、集輸網(wǎng)絡(luò)的分析計算,其非中文用戶界面及建模過程較為繁瑣,這使得很多工程人員短時間內(nèi)無法準確、高效地使用此款軟件,但很多情況下還希望借助該軟件的管網(wǎng)分析能力,編制更加實用、高效的應(yīng)用程序。針對此問題,對PipephaseAPI接口技術(shù)進行了解析,確定了兩種接口調(diào)用方式和主要API函數(shù)的用法?;赩B語言和COMAPI編制了單管環(huán)狀摻水集油工藝參數(shù)優(yōu)化計算的示例軟件,給出了詳細的實現(xiàn)方法。與PipephaseEGUI相比,示例軟件操作簡便、分析效率高,計算功能也得到了擴展。
Pipephase;COMAPI;VB;單管環(huán)狀摻水流程
Pipephase軟件廣泛用于油氣生產(chǎn)、集輸網(wǎng)絡(luò)的分析計算,其非中文用戶界面及建模過程較為繁瑣,這使得很多工程人員短時間內(nèi)無法準確、高效地使用此款軟件,但很多情況下還希望借助該軟件的管網(wǎng)分析能力,編制更加實用、高效的應(yīng)用程序。為解決此問題,對PipephaseAPI接口調(diào)用方法及主要函數(shù)進行了解析,確定了兩種接口調(diào)用方式和主要API函數(shù)的用法?;赩B語言和COM API編制了單管環(huán)狀摻水集油工藝參數(shù)優(yōu)化計算的示例軟件,給出了詳細的實現(xiàn)方法。
Pipephase軟件接口基于組件對象模型技術(shù),用戶可使用C++、VB、Fortran語言對Pipephase API接口進行開發(fā)[1]。軟件提供兩種不同類型的COM組件:進程內(nèi)組件FF_APIServerDLL.dll和進程外組件FF_APIServerEXE.exe。使用.dll時,易引起程序間的沖突且不允許多個Pipephase實例同時模擬;使用.exe時,執(zhí)行效率雖不高但穩(wěn)定性好,可避免上述問題的發(fā)生。在使用FF_APIServerEXE. exe組件時,有以下兩種調(diào)用方式:
(1)將FF_APIServerEXE.exe組件對象分配給聲明為Object類型的變量。其代碼為:DimMyPipe AsObject=CreateObject("FF_APIServerEXE.9.5")。
(2)添加對FF_APIServerEXE.exe的引用。該方法可使用VisualStudioIDE的智能提示功能,編譯器將自動列出對象的方法、屬性等,這為編程提供了方便。其代碼為:DimMyPipeAs FF_APIServerEXELib.Pipephase,MyPipe=New FF_APIServerEXELib.Pipephase。PipephaseAPI接口包含Execute Command、Get_FF_VALS等16個函數(shù)。用戶可以通過對函數(shù)參數(shù)的設(shè)置在自行開發(fā)的軟件中實現(xiàn)與Pipephase完全相同的功能。每個API函數(shù)在完成執(zhí)行后均返回一個HRESULT類型的數(shù)據(jù),用戶可使用GetLastExitNumber和GetLastExit Message函數(shù)獲取最近一次函數(shù)的執(zhí)行情況。
2.1單管環(huán)狀摻水集油模型
摻水集油是國內(nèi)外油田輸送高黏、易凝原油時普遍采用的一種集油工藝。但該工藝能耗較高,需要確定合理的摻水量、摻水溫壓等工藝參數(shù)[2]。圖1為某油田單管環(huán)狀摻水集油的Pipephase流程圖,在環(huán)起點摻入熱水以改善管內(nèi)流動狀況,油氣水混合物最后返回轉(zhuǎn)油站進行分離外輸。該集油環(huán)長1955m,共含有3口井,集油環(huán)產(chǎn)液量約為6.5t/d,回油溫度要求不低于35℃,回油壓力要求在255kPa左右。
圖1 某油田單管環(huán)狀摻水集油Pipephase流程
2.2 設(shè)計思路與實現(xiàn)方法
使用VB語言,在VisualStudio2012集成開發(fā)環(huán)境下編制軟件。Pipephase模型選用Network模型,流體類別為Compositional。軟件功能包括參數(shù)設(shè)置、運行模擬、結(jié)果處理及顯示三個方面,軟件設(shè)計流程如圖2所示。
圖2 軟件設(shè)計流程
設(shè)置參數(shù)前,需要用Set_FF_VALS函數(shù)為模擬指定關(guān)鍵字輸入文件及初始化文件,并用Execute-Command函數(shù)依次完成以下命令:"Initialize"、"CleanStart"、"GUIDatabaseOpen"、"RunPreprocessor"、"RunThermoModule"、"RunCrossChecker"、"RunCalculations",這些命令完成了模擬的初始化及Pipephase運行環(huán)境的創(chuàng)建,并對實例的數(shù)學(xué)模型進行檢查。
2.2.1 參數(shù)設(shè)置
可以直接使用API函數(shù)Set_FF_VALS對參數(shù)進行設(shè)置。以管道環(huán)境溫度的設(shè)置為例:
CallMyPipe.Set_PPDATR("Pipe","AMBIENTTEMP",cName,0,"",Rabuff,Iabuff,7,3)。
上述代碼中數(shù)字7和3含義分別為溫度單位選擇、攝氏度。還可使用VB文件操作語句直接修改關(guān)鍵字輸入文件的方式完成參數(shù)設(shè)置,如圖2中虛線所示,采用這種方式可以避開使用較為復(fù)雜的API函數(shù)。但注意在設(shè)置某一變量時,需要同時修改inp文件中所有該指定變量。
2.2.2 運行模擬
CallMyPipe.ExecuteCommand("RerunCalculations","")。
2.2.3 結(jié)果處理及顯示
運行結(jié)束后,可使用Get_FF_VALS函數(shù)獲取運行結(jié)果,以回油壓力的獲取為例:
CallMyPipe.Get_PPDATR("NODE","PRESSURE",cName,0,"",rabuff,iabuff,9,8)
圖2中雙點劃線所示為另一種獲取結(jié)果的方式,將運行結(jié)果導(dǎo)入數(shù)據(jù)庫中,通過操作數(shù)據(jù)庫,可獲得更詳盡的數(shù)據(jù)并減少了數(shù)據(jù)損毀的可能性。為提高代碼的穩(wěn)定性及可測試性,使用GetLastExitNumber函數(shù)并結(jié)合VBIf…Then…GoToFailed/ Successful語句對部分API函數(shù)的執(zhí)行情況做出判斷,必要時拋出異常。完成全部計算后,為避免下次運行時出現(xiàn)錯誤,需要使用Shell函數(shù)關(guān)閉FF_APIServerEXE.exe進程:
Shell("taskkill/imFF_APIServerEXE.exe/f",vbHide)。
2.3 界面設(shè)計與計算實例
用戶在輸入油井及管線參數(shù)、摻水溫壓、摻水量后,點擊運行,軟件將在后臺調(diào)用Pipephase模型進行計算,并將回油溫壓等運行結(jié)果返回主界面。與PipephaseGUI相比,該軟件存在兩項優(yōu)勢:參數(shù)設(shè)置簡便快速,結(jié)合批量計算的方法,使得分析效率得到極大提高,這種優(yōu)勢在計算復(fù)雜管網(wǎng)時顯得尤為重要;軟件可利用運行結(jié)果,結(jié)合VB程序,計算月耗氣量、耗電量和運行費用,便于用戶確定最優(yōu)運行方案,在功能上得到了擴展。
表1是環(huán)境溫度為-6℃(冬季)時摻水量與耗電量的計算實例。從表1中可以看出,隨著摻水溫度的降低,摻水量與耗電量不斷增加,耗氣量與運行費則用先降低后增大。通過對比運行費用的大小,建議該油田冬季摻水溫度維持在70℃左右。
表1 軟件計算實例
(1)基于PipephaseAPI接口編制了摻水集油工藝參數(shù)優(yōu)化計算的示例軟件,驗證了接口技術(shù)的可行性及穩(wěn)定性。示例軟件操作簡便,分析效率高,未接觸過Pipephase的人員亦可使用。
(2)PipephaseGUI處理復(fù)雜管網(wǎng)時,模型及參數(shù)設(shè)置工作量大且易出錯。此時可以考慮使用API接口編制便于操作的應(yīng)用程序。借助Pipephase軟件先進的網(wǎng)絡(luò)算法,可開發(fā)更加實用、高效的油氣田集輸計算軟件。
[1]BaruaS,LansanganR.Multi-PhaseCoriolisFlowmeter:U.S.Patent7,614,312[P].2009-11-10.
[2]李心凱,孫延明,胡琪,等.摻水集油參數(shù)優(yōu)化研究[J].石油化工應(yīng)用,2013,32(5):115-117.
(欄目主持 張秀麗)
10.3969/j.issn.1006-6896.2014.10.044