国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于ASP.NET的油田生產(chǎn)時(shí)率統(tǒng)計(jì)網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn)

2021-06-04 01:24李高鵬樓海龍
天津科技 2021年5期
關(guān)鍵詞:測井后臺(tái)油井

李高鵬,樓海龍,楊 靜

(1. 中海油伊拉克有限公司 天津300450;2. 中海油采油技術(shù)服務(wù)有限公司 天津300450)

生產(chǎn)時(shí)率是油田開發(fā)生產(chǎn)過程中的重要基礎(chǔ)數(shù)據(jù),通過生產(chǎn)時(shí)率可以反應(yīng)油田的油井利用率以及整體開發(fā)生產(chǎn)效率。生產(chǎn)過程中由于各種原因?qū)е碌挠途P(guān)停事件是造成生產(chǎn)時(shí)率損失和產(chǎn)量損失的主要因素。本文以伊拉克某中資油田為背景,該油田投產(chǎn)于20世紀(jì)70年代,生產(chǎn)管理手段仍在沿用手工報(bào)表,效率低且不便于跟蹤統(tǒng)計(jì)。該油田主要包括近200口油井,隨著地層壓力的衰減,生產(chǎn)模式逐漸由自噴生產(chǎn)轉(zhuǎn)向電潛泵開發(fā),生產(chǎn)時(shí)率對(duì)地面設(shè)備和供電的穩(wěn)定性要求越來越高。

生產(chǎn)時(shí)率的影響因素多種多樣,如電網(wǎng)波動(dòng)和停電、管線泄漏、井下電潛泵故障、驅(qū)動(dòng)電潛泵發(fā)電機(jī)的保養(yǎng)和故障停機(jī)、設(shè)施流程維修改造、地層原因、偷盜等都會(huì)造成生產(chǎn)關(guān)停。

常規(guī)Excel表格統(tǒng)計(jì)生產(chǎn)時(shí)率有以下不足:①不能同時(shí)多人對(duì)表格進(jìn)行編輯;②在Excel中輸入關(guān)停事件時(shí),不僅要計(jì)算每個(gè)關(guān)停事件的時(shí)長,還要查詢單井產(chǎn)量,計(jì)算產(chǎn)量損失,工作量大且容易出錯(cuò); ③Excel安全性差,容易被篡改或刪除;④隨著數(shù)據(jù)的增多,Excel運(yùn)行速度越來越慢。

本文介紹了一種通過網(wǎng)站+數(shù)據(jù)庫的方式實(shí)現(xiàn)對(duì)關(guān)停信息的收集,同時(shí)在后臺(tái)計(jì)算出相應(yīng)的產(chǎn)量損失和生產(chǎn)時(shí)率等信息。網(wǎng)站具有共享性好,數(shù)據(jù)庫具有存儲(chǔ)量大的優(yōu)點(diǎn),對(duì)數(shù)據(jù)的處理和計(jì)算上也更加靈活。通過盡量少的輸入信息減少人員工作強(qiáng)度,盡可能多地通過后臺(tái)運(yùn)算處理來展示更多分析結(jié)果。

1 網(wǎng)站實(shí)現(xiàn)功能的具體要求

①通過網(wǎng)站頁面實(shí)現(xiàn)對(duì)關(guān)停事件的信息采集,包括井名、站名、關(guān)停復(fù)產(chǎn)時(shí)間、關(guān)停原因等。

②通過頁面實(shí)現(xiàn)對(duì)最新油井測井信息的采集,包括單井總產(chǎn)液量、含水率、自噴產(chǎn)量等,并在后臺(tái)自動(dòng)計(jì)算出純油產(chǎn)量、產(chǎn)水量、ESP泵的增加產(chǎn)量等信息,補(bǔ)充到該關(guān)停事件信息中。

③在信息輸入過程中對(duì)輸入的信息進(jìn)行必要的數(shù)據(jù)有效性驗(yàn)證,增強(qiáng)數(shù)據(jù)可靠性。

④通過頁面端查詢、更新和刪除某一時(shí)間段內(nèi)的油井的所有關(guān)停事件信息。

⑤當(dāng)頁面輸入關(guān)停事件時(shí),根據(jù)最新的油井測井信息,自動(dòng)在后臺(tái)計(jì)算出產(chǎn)量損失和該關(guān)停事件對(duì)應(yīng)的當(dāng)天的生產(chǎn)時(shí)率損失,將生產(chǎn)時(shí)率的計(jì)算精確到每一次關(guān)停事件。

⑥查詢和顯示某一時(shí)間段內(nèi)的按關(guān)停原因分組的總的時(shí)率損失。

⑦通過頁面端輸入、查詢、更新和刪除某一時(shí)間段內(nèi)的所有油井或某一口井的計(jì)量和狀態(tài)信息。

⑧查詢和顯示截至輸入的查詢?nèi)掌?,總的油井?dāng)?shù)量以及總的開井?dāng)?shù)量,以便快速得出開井率。

⑨通過Excel批量上傳油井的測井信息,并在上傳數(shù)據(jù)前進(jìn)行數(shù)據(jù)有效性驗(yàn)證,并核對(duì)數(shù)據(jù)庫,進(jìn)行查重。

⑩將查詢到符合條件的關(guān)停事件信息或者油井信息導(dǎo)出到Excel中。

2 開發(fā)工具和環(huán)境

通過ASP.net編程搭建動(dòng)態(tài)網(wǎng)站作為前臺(tái)頁面,以及MSSQL數(shù)據(jù)庫作為后臺(tái)數(shù)據(jù)存儲(chǔ),主要開發(fā)平臺(tái)及軟件:Visual Studio 2015;MSSQL 2012數(shù)據(jù)庫;開發(fā)語言C#;Bootstrap 4.0 HTML網(wǎng)頁頁面架構(gòu);Microsoft.Net Framework 4.5.2 平臺(tái);Windows7+IIS服務(wù)。

3 開發(fā)過程和具體實(shí)現(xiàn)

3.1 數(shù)據(jù)流

如圖1所示,前臺(tái)網(wǎng)頁頁面通過Visual Studio和Bootstrap進(jìn)行快速開發(fā),作為信息的收集和展示,后臺(tái)通過Action類作為頁面行為的引導(dǎo),最終通過Sqlhelper類建立和數(shù)據(jù)庫之間的數(shù)據(jù)交換,實(shí)現(xiàn)信息的動(dòng)態(tài)存取。

3.2 數(shù)據(jù)庫設(shè)計(jì)

在進(jìn)行前端開發(fā)前,首先需要對(duì)數(shù)據(jù)庫進(jìn)行配置,規(guī)劃好所有存儲(chǔ)的數(shù)據(jù)類型和表格。在數(shù)據(jù)庫中建立1個(gè)名稱為SDcollection的數(shù)據(jù)庫,同時(shí)建立 2個(gè)表格dbo.SDstatistic和dbo.Wellinfor,分別用來存儲(chǔ)關(guān)停事件信息和油井測井信息。

圖1 數(shù)據(jù)交換流程 Fig.1 Data exchange process

3.2.1 油井測井信息數(shù)據(jù)表

油井測井信息數(shù)據(jù)表總共包含14列,分別用來存儲(chǔ)油井的類型、各種產(chǎn)量、含水、測井時(shí)間等信息,具體如圖2所示,其中產(chǎn)油量Oil、產(chǎn)水量Water、電潛泵增產(chǎn)量ESPproduction,這3項(xiàng)不需要在頁面端輸入,將根據(jù)其他輸入的油井測試信息在后臺(tái)進(jìn)行計(jì)算得出,然后合并填入數(shù)據(jù)庫。

圖2 數(shù)據(jù)庫油井信息表結(jié)構(gòu)設(shè)計(jì) Fig.2 Structure design of oil well information table in database

3.2.2 關(guān)停信息數(shù)據(jù)表

關(guān)停信息數(shù)據(jù)表包含14列,分別用來存儲(chǔ)關(guān)停信息的井名、關(guān)停時(shí)間、關(guān)停原因、產(chǎn)量損失及該關(guān)停事件所對(duì)應(yīng)的當(dāng)天的時(shí)率損失等信息,具體如圖3所示。其中只有SDtime、Starttime、CloseWellYN、SDreason為必填項(xiàng),Detailreason為選填項(xiàng),其他項(xiàng)在輸入關(guān)停信息時(shí),將自動(dòng)查詢測井信息數(shù)據(jù)表,并計(jì)算出對(duì)應(yīng)的信息,一并填入關(guān)停事件信息表。

3.2.3 時(shí)率計(jì)算原則

時(shí)率計(jì)算根據(jù)統(tǒng)計(jì)規(guī)則的不同,結(jié)果也會(huì)有差別,本文所列時(shí)率計(jì)算原則具體如下:

①當(dāng)輸入某油井關(guān)停事件時(shí),將首先查詢測井信息表中有關(guān)該井的最近一條信息,并由此計(jì)算出“產(chǎn) 量損失”和“關(guān)停時(shí)長”,讀取該井的“Active”狀態(tài)、該井的“自噴產(chǎn)量”,關(guān)停時(shí)“X-tree閥門是否關(guān)閉”,“關(guān)停和時(shí)間”等,并查詢截至當(dāng)天Active=Y(jié)的總井?dāng)?shù),然后計(jì)算出該關(guān)停事件的“當(dāng)天損失時(shí)率”,合并以上信息后,作為一條關(guān)停記錄寫入數(shù)據(jù)庫。

圖3 數(shù)據(jù)庫關(guān)停信息表結(jié)構(gòu)設(shè)計(jì) Fig.3 Structure design of shutdown information table in database

②當(dāng)查詢某個(gè)時(shí)段的時(shí)率時(shí),記入時(shí)率損失的 2種情況為:如果該井狀態(tài)Active=Y(jié),并且自噴產(chǎn)量NFproduction>0,并且關(guān)閉了采油樹閥門CloseValveYN=Y(jié);如果該井狀態(tài)Active=Y(jié),并且自噴產(chǎn)量NFproduction=0,并且沒有關(guān)閉采油樹閥門CloseValveYN=N。

③當(dāng)查詢某個(gè)時(shí)段的時(shí)率時(shí),不計(jì)入時(shí)率損失的2種情況:該井狀態(tài)Active=Y(jié),并且自噴產(chǎn)量NFproduction>0,且沒有關(guān)閉采油樹閥門CloseValveYN=N;該井Active=N,則該關(guān)停事件不計(jì)入時(shí)率損失。

④當(dāng)輸入的關(guān)停事件跨越多天時(shí),輸入時(shí)會(huì)自動(dòng)分解到每一天,并計(jì)算每一天的時(shí)率損失。

⑤關(guān)停事件當(dāng)天的單井損失時(shí)率如式(1)所示:

式中:ts為關(guān)停事件當(dāng)天損失時(shí)率;h為該油井關(guān)停時(shí)長;n為當(dāng)前狀態(tài)Active=Y(jié)的所有油井?dāng)?shù)。

⑥當(dāng)查詢某個(gè)時(shí)間段的總時(shí)率時(shí),在檢索時(shí)間段內(nèi),根據(jù)條件②、③計(jì)算關(guān)停損失時(shí)率如式(2):

式中:χ為檢索時(shí)間段內(nèi)的總生產(chǎn)時(shí)率;Tstart為檢索起始日期;Tend為檢索結(jié)束日期。

3.2.4 數(shù)據(jù)庫觸發(fā)器的設(shè)計(jì)

在關(guān)停信息數(shù)據(jù)表中,定義了觸發(fā)器SDstatistic_ AutoEx_trigger,觸發(fā)器的使用主要滿足當(dāng)輸入關(guān)停事件時(shí),自動(dòng)計(jì)算相關(guān)項(xiàng)目,并更新到數(shù)據(jù)庫中。具體實(shí)現(xiàn)以下功能:

①自動(dòng)計(jì)算關(guān)停時(shí)長、液量損失、油量損失;

②查詢測井信息表獲得該井的自噴產(chǎn)量,用于后面時(shí)率計(jì)算的判斷依據(jù);

③當(dāng)關(guān)停事件跨越多天時(shí),自動(dòng)將其拆分到每 一天;

④自動(dòng)計(jì)算每一個(gè)關(guān)停事件所對(duì)應(yīng)的當(dāng)天的時(shí)率損失。

具體代碼邏輯如下,由于篇幅限制,本文以下程序只說明邏輯結(jié)構(gòu),并非可執(zhí)行源碼。

insert into SDstatistic(*)values(*)

3.2.5 數(shù)據(jù)庫時(shí)率計(jì)算函數(shù)的使用

數(shù)據(jù)庫中定義了1個(gè)表值函數(shù)FN_TimeRate ByReason,當(dāng)頁面請(qǐng)求計(jì)算某個(gè)時(shí)間段的時(shí)率時(shí),數(shù)據(jù)庫將查詢?cè)摃r(shí)間段內(nèi)的每一條關(guān)停事件,根據(jù)時(shí)率計(jì)算原則的第②、③、④條判斷是否計(jì)入時(shí)率損失,最后按關(guān)停原因分組,返回一個(gè)List給頁面后臺(tái)代碼,然后綁定到頁面GridView中。數(shù)據(jù)庫時(shí)率計(jì)算函數(shù)代碼如下:

3.3 前端頁面開發(fā)

根據(jù)前端頁面信息輸入和展示的需要,總共規(guī)劃7個(gè)頁面:

①Shutdown Event Input輸入關(guān)停事件信息;

②Shutdown Event State查詢關(guān)停事件和生產(chǎn)時(shí)率;

③Well-Info Import油井測井信息錄入;

④Well-Info State查詢油井測井信息;

⑤Backup Database備份MSSQL數(shù)據(jù)庫;

讓法比感到安全的是,叫趙玉墨的女人,永遠(yuǎn)不會(huì)愛上他。她那含意萬千的凝視是她的技巧,是她用來為自己換便利的,由此他更加恨她。他糊涂了,若是她死心塌地真心誠意地愛他,他不就完結(jié)了嗎?難道他不該感激她只和他玩技巧?

⑥D(zhuǎn)etail Shutdown Infor展示某一關(guān)停事件的詳細(xì)信息(間接打開);

⑦Detail Well-Info 展示某油井的某條詳細(xì)測井信息(間接打開)。

前端頁面的樣式設(shè)計(jì)使用Bootstrap框架,能夠滿足快速開發(fā)的需求,同時(shí)使用母版頁,在母版頁中對(duì)主導(dǎo)航欄進(jìn)行設(shè)計(jì)后,可以直接在其他子頁面中進(jìn)行調(diào)用,而避免重復(fù)開發(fā)。

本文著重講述前2個(gè)頁面,其他頁面具體功能代碼、Excel上傳下載、Bootstrap頁面架構(gòu)以及Web發(fā)布等不再詳述。

3.3.1 頁面ShutdownEventInput的設(shè)計(jì)

由于各個(gè)脫氣站的油井?dāng)?shù)量是動(dòng)態(tài)變化的,為避免每次有新的油井投產(chǎn),就要從后臺(tái)修改網(wǎng)頁的頁面設(shè)計(jì),那么油井輸入頁面也需要根據(jù)各個(gè)站的油井?dāng)?shù)量動(dòng)態(tài)顯示所有井。如圖4所示。

3.3.2 ShutdownEventInput前臺(tái)頁面

在前臺(tái)頁面中使用DropDownList控件,羅列 9個(gè)站的站名,當(dāng)需要輸入某個(gè)站的關(guān)停事件時(shí),選擇該站的站名,在后臺(tái)程序中將查詢油井測井信息表中所有隸屬該站的井,并將該站的井名和有油井類型綁定到頁面的GridView中,各列功能為:

圖4 關(guān)停事件輸入頁面 Fig.4 Input page of shutdown events

②WellName,DGS和Type是從數(shù)據(jù)庫查詢出來后直接綁定無需填寫;

③SDtime和Starttime為文本框,用于輸入時(shí)間,通過彈窗方便選取時(shí)間;

④XtreeValveClose和SDreason則為下拉菜單,便于填寫;

⑤Detailreason為多行文本框。

3.3.3 ShutdownEventInput前臺(tái)頁面代碼

3.3.4 ShutdownEventInput后臺(tái)處理

在后臺(tái)代碼中,當(dāng)點(diǎn)擊提交submit按鈕后,將首先對(duì)各個(gè)checkbox打勾的行所填內(nèi)容進(jìn)行有效性驗(yàn)證,如果不滿足下面條件,則會(huì)在頁面彈出報(bào)警提示用戶:

①輸入的 SDtime和 Startime必須符合InputTimeValidation()函數(shù)所規(guī)定的日期格式;

②XtreeValveClose和SDreason不能為空;

③點(diǎn)擊提交后,通過action.TotalCount()類獲得該站總的井?dāng)?shù);

④通過action類的GetWellName()方法,來獲得該站所有井的井名并綁定到GridView。

3.3.5 ShutdownEventInput頁面后臺(tái)代碼

3.3.6 Active類的邏輯處理

后臺(tái)代碼響應(yīng)前臺(tái)頁面請(qǐng)求時(shí),通過傳遞過來的參數(shù)“DGS”名字,查詢數(shù)據(jù)庫中對(duì)應(yīng)站所有的井,并生成列表返回到頁面后臺(tái)代碼中,最后綁定到頁面的GridView。在Action類中,首先定義好查詢SQL數(shù)據(jù)庫的字符串sql語句,以及內(nèi)部形參,然后通過內(nèi)部方法給形參賦值;最終調(diào)用Sqlhelper類中的ExecuteReader()方法獲取油井列表返回給頁面后臺(tái)。Active類代碼如下:

3.3.7 Sqlhelper類邏輯功能

Sqlhelper類專門用來處理與數(shù)據(jù)庫之間的數(shù)據(jù)交換,包含5個(gè)方法,分別用來實(shí)現(xiàn)對(duì)數(shù)據(jù)庫的讀寫等各種操作:

①ExecuteNonQuery()方法,執(zhí)行SQL語句并返回受影響的行數(shù);

②ExecuteScalar()方法,執(zhí)行SQL語句并返回查詢結(jié)果集的第一行第一列的內(nèi)容;

③ExecuteReader()方法,執(zhí)行SQL語句并返回查詢結(jié)果集;

④ExecuteDataTable()方法,執(zhí)行SQL語句并以表的形式返回查詢結(jié)果集;

⑤ExecuteProc()方法,執(zhí)行數(shù)據(jù)庫中預(yù)定義的存儲(chǔ)過程,并返回第一行第一列的值,以判斷是否執(zhí)行成功,該方法用作備份數(shù)據(jù)庫使用。

4 頁面ShutdownEventState的設(shè)計(jì)

如圖5所示,在關(guān)停事件展示頁中,定義了檢索條件行,可以分別查詢某個(gè)時(shí)間段的所有關(guān)停事件,或者某個(gè)井的關(guān)停事件,以及對(duì)應(yīng)的時(shí)間段內(nèi)按關(guān)停原因分組的生產(chǎn)時(shí)率損失和總時(shí)率。

圖5 關(guān)停事件展示頁面 Fig.5 Shutdown event state

同時(shí)在查詢結(jié)果表中,通過按鈕實(shí)現(xiàn)查詢結(jié)果導(dǎo)出到Excel中。由于在Shutdown Event Input頁面中已詳細(xì)介紹了Action和Sqlhelper類的功能,下面的內(nèi)容中將不再贅述。

如圖6所示,同時(shí)展示了符合查詢時(shí)間的關(guān)停事件的列表,在列表的首列定義了超鏈接,可以打開關(guān)于該事件的詳細(xì)信息。

圖6 關(guān)停事件列表展示頁 Fig.6 Shutdown event list

5 結(jié)論

本文提出了一種時(shí)率統(tǒng)計(jì)方法,通過網(wǎng)站開發(fā)部署和完善,能夠滿足生產(chǎn)需求,從而減輕了數(shù)據(jù)統(tǒng)計(jì)工作量,有效保障數(shù)據(jù)的準(zhǔn)確性,同時(shí)提高了統(tǒng)計(jì)的數(shù)字化水平,便于后期維護(hù)。

猜你喜歡
測井后臺(tái)油井
本期廣告索引
高強(qiáng)度高溫高壓直推存儲(chǔ)式測井系統(tǒng)在超深井的應(yīng)用
延長油田測井現(xiàn)狀與發(fā)展前景
油井遭襲
Wu Fenghua:Yueju Opera Artist
后臺(tái)暗戀
抽油井桿管防偏磨原因分析及對(duì)策研究
淺談?dòng)途鳂I(yè)壓裂酸化及防砂堵水技術(shù)研究
互聯(lián)網(wǎng)思維下的汽車服務(wù)連鎖后臺(tái)支撐系統(tǒng)
后臺(tái)的風(fēng)景
吴堡县| 嘉祥县| 弥渡县| 康保县| 志丹县| 西华县| 时尚| 醴陵市| 兴隆县| 许昌县| 桑植县| 林芝县| 淮安市| 漳州市| 苍山县| 江油市| 叶城县| 台中市| 罗平县| 西贡区| 隆德县| 吴旗县| 雷波县| 铅山县| 周至县| 宝清县| 开平市| 新巴尔虎右旗| 颍上县| 吴忠市| 涟水县| 恩平市| 盘山县| 常德市| 黔西| 虎林市| 绥芬河市| 太康县| 赣榆县| 东乌| 景泰县|