專利名稱:抽油機智能控制系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明設(shè)計一種油田抽油機控制技術(shù),尤其是抽油機智能控制系統(tǒng)。
背景技術(shù):
目前,在我國各大油田不像中東的油田那樣有很強的自噴能力,有相當(dāng)一部分低滲透的低產(chǎn)油井,其中往復(fù)式有桿抽油系統(tǒng)會出現(xiàn)供液不足的情況。所謂供液不足即油井液面低于抽油泵吸入口,出現(xiàn)這種情況就會使抽油裝置出現(xiàn)空抽現(xiàn)象。若抽油裝置出現(xiàn)空抽,就會浪費電能,同時將導(dǎo)致抽油泵、抽油桿、油管等磨損、壽命縮短。據(jù)有關(guān)報導(dǎo),抽油機的運行效率特別低,在我國平均效率為25.96%,國外平均水平為30.05%。我國大部分油田對這種現(xiàn)象的經(jīng)驗解決方法是間抽,間抽控制的原始做法是派人定時到油井去開停抽油機,使抽油機開一段時間停一段時間,即使在發(fā)達國家,目前也還有不少油井采用這種人工控制方式,以便解決抽油機的低效和浪費問題。這種做法每天要派人去井場操作好幾次,經(jīng)過長期試驗才能摸索出適合各油井的間抽規(guī)律,費工費時。于是有地油井引入了定時鐘,只需設(shè)定開、停機時間,便能自動地進行間抽控制,這雖然減少了人工,但仍然無法解決令抽油機的工作能力動態(tài)地響應(yīng)油井負荷的變化,達到抽、停時間間隔為最優(yōu)化,同時還有可能會影響油井的產(chǎn)量。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種在不影響油產(chǎn)量的情況下可以及時有效地判斷井口是否出油,快速、有效地控制抽油機的啟停時間,使抽油機的停井時間最長,開井時間最短的抽油機智能控制系統(tǒng),它解決了目前其它技術(shù)存在的缺點,本發(fā)明的目的是這樣實現(xiàn)的,它是由人機對話界面、適配器、工控機、信號數(shù)據(jù)轉(zhuǎn)換器、數(shù)據(jù)信號轉(zhuǎn)換器、流量信號采集傳感器、液位傳感器、電機控制系統(tǒng)、電機連接而成,人機對話界面與工控機由適配器連接;在工控機的輸入端由電纜連接著信號數(shù)據(jù)轉(zhuǎn)換器,其輸出端由電纜連接著數(shù)據(jù)信號轉(zhuǎn)換器;信號數(shù)據(jù)轉(zhuǎn)換器的輸入端通過電纜與流量信號采集傳感器和液位傳感器相連;數(shù)據(jù)信號轉(zhuǎn)換器的輸出端通過電纜與電機控制系統(tǒng)連接,電機控制系統(tǒng)與電機連接;在工控機內(nèi)裝有抽油機智能控制程序。
該系統(tǒng)功能主要由計算機控制程序?qū)崿F(xiàn)。全套系統(tǒng)的主要功能是通過流量開關(guān)判斷有油無油,根據(jù)初值動態(tài)計算最優(yōu)停開時間,以計算結(jié)果去控制油井電機,并配有人機界面動態(tài)顯示抽油過程。
該技術(shù)采用工控機輸入端配接信號數(shù)據(jù)轉(zhuǎn)換器、流量信號采集傳感器和液位傳感器,輸出端配接數(shù)據(jù)信號轉(zhuǎn)換器和電機控制系統(tǒng)來控制抽油機電機的方式,在不影響油產(chǎn)量的情況下可以及時有效地判斷井口是否出油,快速、有效地控制抽油機的啟停時間,使抽油機的停井時間最長,開井時間最短。該控制系統(tǒng)能選擇和控制最優(yōu)的停開井時間,達到耗電最小又不影響油井產(chǎn)量,同時延長設(shè)備壽命,只要選擇合適的初值,該系統(tǒng)可以快速準(zhǔn)確計算所需結(jié)果,而且其優(yōu)化結(jié)果是跟蹤地質(zhì)條件、油井條件、注水等生產(chǎn)工藝措施的變化,始終保持一動態(tài)的最優(yōu)停開時間。除了優(yōu)化停開時間比,同時優(yōu)化停井時間和開井時間總的周期,如停30小時開10小時與停300小時開100小時停開時間比是一樣的,但他們的優(yōu)化周期不一樣,優(yōu)化周期用數(shù)學(xué)上“瞎子爬山法”的方法計算,一般情況下工人都或多或少有此經(jīng)驗,只要確定初值不是差得太多,都可以經(jīng)上述優(yōu)化確定最佳停開時間。
四
圖1為抽油機智能控制系統(tǒng)示意圖,圖中1、人機對話界面2、適配器3、工控機4、信號數(shù)據(jù)轉(zhuǎn)換器5、數(shù)據(jù)信號轉(zhuǎn)換器6、流量信號采集傳感器7、液位傳感器8、電機控制系統(tǒng)9、電機
圖2為抽油機智能控制程序圖
五具體實施例方式在圖1中,人機對話界面1與工控機3由適配器2連接;在工控機3的輸入端由電纜連接著信號數(shù)據(jù)轉(zhuǎn)換器4,其輸出端由電纜連接著數(shù)據(jù)信號轉(zhuǎn)換器5;信號數(shù)據(jù)轉(zhuǎn)換器4的輸入端通過電纜與流量信號采集傳感器6和液位傳感器7相連;數(shù)據(jù)信號轉(zhuǎn)換器5的輸出端通過電纜與電機控制系統(tǒng)8連接,電機控制系統(tǒng)8與電機9連接;在工控機3內(nèi)裝有抽油機智能控制程序。
在圖2中,抽油機智能控制程序為
unit Unit1;interfaceuses Windows,Messages,SysUtils,Variants,Classes,Graphics,Controls,F(xiàn)orms, Dialogs,ExtCtrls,StdCtrls, OleCtrls,MPlayer, MSCommLib_TLB,Gauges;<!-- SIPO <DP n="3"> --><dp n="d3"/>typeTForm1=class(TForm) Image1TImage; Image2TImage; Image3TImage; Timer1TTimer; Image4TImage; Image5TImage; Label1TLabel; Image6TImage; Label2TLabel; Label3TLabel; Label4TLabel; Label5TLabel; Label6TLabel;Label7TLabel;Label9TLabel; Panel1TPanel; GroupBox1TGroupBox; GroupBox2TGroupBox; Label10TLabel; Label11TLabel; Bevel1TBevel; Label12TLabel; Label13TLabel; Label14TLabel; Edit2TEdit; Label15TLabel; Label16TLabel; Label17TLabel; Edit1TEdit; Edit5TEdit; Edit3TEdit; Timer2TTimer; Button1TButton; Button2TButton; Button3TButton; MSComm1TMSComm; Label18TLabel; Shape1TShape; Label19TLabel; Label8TLabel;<!-- SIPO <DP n="4"> --><dp n="d4"/> Edit4TEdit; Label20TLabel; Label21TLabel; Timer3TTimer; MediaPlayer1TMediaPlayer; procedure Timer1Timer(SenderTObject); procedure Timer2Timer(SenderTObject); procedure Button1Click(SenderTObject); procedure Button2Click(SenderTObject); procedure Button3Click(SenderTObject); procedure FormCreate(SenderTObject); procedure Timer3Timer(SenderTObject); private {Private declarations} T1,T2,T3,t4tdatetime; st0,stop0,st1,STOP1integer; oldstatusboolean; ainteger;public {Public declarations}end;varForm1TForm1;implementation {$R*.dfm} function timetoint(ttdatetime)integer;var h,m,s,ttimeinteger; xstring; begin x=timetostr(t); if length(x)>7 then ttime=strtoint(copy(x,1,2))*3600+strtoint(copy(x,4,2))*60+strtoint(copy(x,7,2)) else ttime=strtoint(copy(x,1,1))*3600+strtoint(copy(x,3,2))*60+strtoint(copy(x,6,2)); timetoint=ttime;<!-- SIPO <DP n="5"> --><dp n="d5"/>end;function getdata(Addrstring;chstring)single;varsendstring,recevstring1,head,temp1String;count,tou,weiinteger;xsingle;begin sendstring=′#′+Addr+ch+chr(13); head=′>′; Form1.MSComm1.InBufferCount=0; recevstring1=″; count=0; if not Form1.MSComm1.PortOpen then Form1.MSComm1.PortOpen=True; Form1.MSComm1.output=sendstring; while Form1.MSComm1.PortOpen do begin count=count+1; If Form1.MSComm1.InBufferCount>0 Then recevstring1=recevstring1+Form1.MSComm1.Input; if pos(chr(13),recevstring1)>0 then begin if pos(head,recevstring1)>0 then begin tou=Pos(head,recevstring1); wei=Pos(chr(13),recevstring1); temp1=copy(recevstring1,tou+1,wei-tou-1); x=strtofloat(temp1); getdata=x; break; end else begin Form1.MSComm1.InBufferCount=0; //if count>3000 then Form1.MSComm1.output=sendstring; recevstring1=″; end;<!-- SIPO <DP n="6"> --><dp n="d6"/> end; if count>30000 then begin count=0; getdata=0; break; end;end; Form1.MSComm1.PortOpen=false;end;function getdata2(Addr2string;ch2string)string;varsendstring2,recevstring2,headString;countinteger;beginsendstring2=′#′+Addr2+ch2+chr(13); head=′>′; Form1.MSComm1.InBufferCount=0; recevstring2=″; count=0; if not Form1.MSComm1.PortOpen then Form1.MSComm1.PortOpen=True; Form1.MSComm1.output=sendstring2; while Form1.MSComm1.PortOpen do begin count=count+1; If Form1.MSComm1.InBufferCount>0 Then begin recevstring2=recevstring2+Form1.MSComm1.Input; if recevstring2=head then break else begin Form1.MSComm1.InBufferCount=0; //if count>3000 then Form1.MSComm1.output=sendstring2; recevstring2=″; end;<!-- SIPO <DP n="7"> --><dp n="d7"/> end; if count>30000 then begin count=0; break; end;end; Form1.MSComm1.PortOpen=false;end;procedure yewei();//液位var Vcsingle;begin if form1.timer1.Enabled=false then begin Vc=getdata(′01′,′0′); form1.label1.height=252-round((Vc-3.7)*17.29); form1.label2.height=252-round((Vc-3.7)*17.29); end; if form1.timer1.Enabled=true then if getdata(′01′,′1′)<1 then begin Vc=getdata(′01′′0′); form1.label2.height=0;//lable2 for oil pipe form1.label1.height=252-round((Vc-3.7)*17.29); end else begin //form1.label1.height=300; //form1.label2.height=form1.label1.height; form1.label1.height=252-round((Vc-3.7)*17.29); form1.label2.height=252-round((Vc-3.7)*17.29); end; end;procedure TForm1.Timer2Timer(SenderTObject);varl,ysingle;begin<!-- SIPO <DP n="8"> --><dp n="d8"/>yewei;if oldstatus thenbegin Getdata2(′02′,′000E′); form1.timer1.Enabled=true; form1.timer3.Enabled=false; form1.MediaPlayer1.play; form1.Shape1.brush.Color=clred;endelse begin Getdata2(′02′,′0000′); form1.timer1.Enabled=false; form1.timer3.Enabled=true; form1.Shape1.brush.Color=clyellow; form1.mediaplayer1.stop;end;if oldstatus then//..........................................3<br/>begin l=getdata(′01′,′1′); y=getdata(′01′,′0′); //form1.edit4.Text=times; if((1>5)or(y<3))then //..............................2 begin oldstatus=false; T3=now; st1=timetoint(T3-T1); //form1.edit6.text=inttostr(st1); if St1>=st0 then //......................1 begin st0=st0+10; stop0=stop0-10; form1.edit5.text=inttostr(st0); form1.edit3.text=inttostr(stop0); //T1=T3; end else//.....................................1 begin st0=st0-10; stop0=stop0+10; form1.edit5.text=inttostr(st0);<!-- SIPO <DP n="9"> --><dp n="d9"/> form1.edit3.text=inttostr(stop0); //T1=T3; end;//...................................1.... end else begin oldstatus=true; T3=now; end; end else//........................................................3 begin T4=now; stop1=timetoint(T4-T3); if stop1>=stop0 then begin oldstatus=true; T1=T4; end else oldstatus=false end;end;procedure TForm1.Timer1 Timer(SenderTObject);begin form1.Edit4.Text=timetostr(now);if a=0 thenbeginimage2.Visible=false;image3.Visible=false;image4.Visible=false;Label4.Visible=false;Label6.Visible=false;Label3.Visible=false;Label8.Visible=false;Label7.Visible=true;Label5.Visible=true;image1.Visible=true;end;if a=1 thenbegin<!-- SIPO <DP n="10"> --><dp n="d10"/> image1.Visible=false; image3.Visible=false; image4.Visible=false; Label4.Visible=false; Label5.Visible=false; Label3.Visible=false; Label7.Visible=false; Label8.Visible=true; image2.Visible=true; Label6.Visible=true; end;if a=2 thenbegin image1.Visible=false; image2.Visible=false; image4.Visible=false; Label4.Visible=false; Label6.Visible=false; Label3.Visible=false; Label8.Visible=false; Label7.Visible=true; Label5.Visible=true; image3.Visible=true; end;if a=3 thenbegin image1.Visible=false; image2.Visible=false; image3.Visible=false; Label5.Visible=false; Label6.Visible=false; Label7.Visible=false; Label8.Visible=false; Label3.Visible=true; Label4.Visible=true; image4.Visible=true; end;if a=0 thenbegin a=a+1; end else if a=1 then<!-- SIPO <DP n="11"> --><dp n="d11"/> a=a+1 else if a=2 then a=a+1 else a=0; end;procedure TForm1.Button1Click(SenderTObject);var nstring; m,kinteger;begin Val(form1.edit1.text,st0,m);Val(form1.edit2.text,st0,k);if(m<>0)or(k<>0)thenShowMessage(′您輸入的初始數(shù)據(jù)有誤,請重新輸入!′)elsebegintimer2.Enabled=true; n=getdata2(′02′,′0000′); st0=strtoint(form1.edit1.text); stop0=strtoint(form1.edit2.text); T1;=now; oldstatus=true; end;end;//.........................procedure TForm1.Button2Click(SenderTObject);begintimer2.Enabled=false;timer1.Enabled=false;Getdata2(′02′,′0000′);form1.mediaplayer1.stop;end;procedure TForm1.Button3Click(SenderTObject);beginform1.mediaplayer1.stop;application.Terminate;end;<!-- SIPO <DP n="12"> --><dp n="d12"/>procedure TForm1.FormCreate(SenderTObject);beginform1.Timer1.Enabled=false;form1.Timer2.Enabled=false;Label6.Visible=false;Label5.Visible=false;end;procedure TForm1.Timer3Timer(SenderTObject);beginform1.Edit4.Text=timetostr(now);end;end.
權(quán)利要求
1、抽油機智能控制系統(tǒng),它是由人機對話界面(1)、適配器(2)、工控機(3)、信號數(shù)據(jù)轉(zhuǎn)換器(4)、數(shù)據(jù)信號轉(zhuǎn)換器(5)、流量信號采集傳感器(6)、液位傳感器(7)、電機控制系統(tǒng)(8)、電機(9)連接而成,其特征是人機對話界面(1)與工控機(3)由適配器(2)連接;在工控機(3)的輸入端由電纜連接著信號數(shù)據(jù)轉(zhuǎn)換器(4),在工控機(3)的輸出端由電纜連接著數(shù)據(jù)信號轉(zhuǎn)換器(5);信號數(shù)據(jù)轉(zhuǎn)換器(4)的輸入端通過電纜與流量信號采集傳感器(6)和液位傳感器(7)相連;數(shù)據(jù)信號轉(zhuǎn)換器(5)的輸出端通過電纜與電機控制系統(tǒng)(8)連接,電機控制系統(tǒng)(8)與電機(9)連接;在工控機(3)內(nèi)裝有抽油機智能控制程序。
2、根據(jù)權(quán)利要求1所述的抽油機智能控制系統(tǒng),其特征是操作程序如下unit Unit1;interfaceusesWindows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms,Dialogs,ExtCtrls,StdCtrls,OleCtrls,MPlayer,MSCommLib_TLB,Gauges;typeTForm1=class(TForm)Image1:TImage;Image2:TImage;Image3:TImage;Timer1:TTimer;Image4:TImage;Image5:TImage;<dp n="c1"/>Label1:TLabel;Image6:TImage;Label2:TLabel;Label3:TLabel;Label4:TLabel;Label5:TLabel;Label6:TLabel;Label7:TLabel;Label9:TLabel;Panel1:TPanel;GroupBox1:TGroupBox;GroupBox2:TGroupBox;Label10:TLabel;Label11:TLabel;Bevel1:TBevel;Label12:TLabel;Label13:TLabel;Label14:TLabel;Edit2:TEdit;Label15:TLabel;Label16:TLabel;Label17:TLabel;Edit1:TEdit;Edit5:TEdit;Edit3:TEdit;Timer2:TTimer;Button1:TButton;Button2:TButton;Button3:TButton;MSComm1:TMSComm;Label18:TLabel;Shape1:TShape;Label19:TLabel;Label8:TLabel;Edit4:TEdit;Label20:TLabel;Label21:TLabel;Timer3:TTimer;MediaPlayer1:TMediaPlayer;procedure Timer1Timer(Sender:TObject);procedure Timer2Timer(Sender:TObject);<dp n="c2"/>procedure Button1Click(Sender:TObject);procedure Button2Click(Sender:TObject);procedure Button3Click(Sender:TObject);procedure FormCreate(Sender:TObject);procedure Timer3Timer(Sender:TObject);private{Private declarations}T1,T2,T3,t4:tdatetime;st0,stop0,st1,STOP1:integer;oldstatus:boolean;a:integer;public{Public declarations}end;varForm1:TForm1;implementation{$R*.dfm}function timetoint(t:tdatetime):integer;varh,m,s,ttime:integer;x:string;beginx:=timetostr(t);if length(x)>7 thenttime:=strtoint(copy(x,1,2))*3600+strtoint(copy(x,4,2))*60+strtoint(copy(x,7,2))elsettime:=strtoint(copy(x,1,1))*3600+strtoint(copy(x,3,2))*60+strtoint(copy(x,6,2));timetoint:=ttime;end;function getdata(Addr:string;ch:string):single;varsendstring,recevstring1,head,temp1:String;<dp n="c3"/>count,tou,wei:integer;x:single;beginsendstring:=′#′+Addr+ch+chr(13);head:=′>′;Form1.MSComm1.InBufferCount:=0;recevstring1:=";count:=0;if not Form1.MSComm1.PortOpen thenForm1.MSComm1.PortOpen:=True;Form1.MSComm1.output:=sendstring;while Form1.MSComm1.PortOpen dobegincount:=count+1;If Form1.MSComm1.InBufferCount>0 Thenrecevstring1:=recevstring1+Form1.MSComm1.Input;if pos(chr(13),recevstring1)>0 thenbeginif pos(head,recevstring1)>0 thenbegintou:=Pos(head,recevstring1);wei:=Pos(chr(13),recevstring1);temp1:=copy(recevstring1,tou+1,wei-tou-1);x:=strtofloat(temp1);getdata:=x;break;endelsebeginForm1.MSComm1.InBufferCount:=0://if count>3000 thenForm1.MSComm1.output:=sendstring;recevstring1:=";end;end;if count>30000thenbegincount:=0;getdata:=0;break;end;<dp n="c4"/>end;Form1.MSComm1.PortOpen:=false;end;function getdata2(Addr2:string;ch2:string):string;varsendstring2,recevstring2,head:String;count:integer;beginsendstring2:=′#′+Addr2+ch2+chr(13);head:=′>′;Form1.MSComm1.InBufferCount:=0;recevstring2:=";count:=0;if not Form1.MSComm1.PortOpen thenForm1.MSComm1.PortOpen:=True;Form1.MSComm1.output:=sendstring2;while Form1.MSComm1.PortOpen dobegincount:=count+1;If Form1.MSComm1.InBufferCount>0Thenbeginrecevstring2:=recevstring2+Form1.MSComm1.Input;if recevstring2=head thenbreakelsebeginForm1.MSComm1.InBufferCount:=0;//if count>3000 thenForm1.MSComm1.output:=sendstring2;recevstring2:=";end;end;if count>30000thenbegincount:=0;break;end;end;Form 1.MSComm1.PortOpen:=false;end;<dp n="c5"/>procedure yewei();//液位varVc:single;beginif form1.timer1.Enabled=false thenbeginVc:=getdata(′01′,′0′);form1.label1.height:=252-round((Vc-3.7)*17.29);form1.label2.height:=252-round((Vc-3.7)*17.29);end;if form1.timer1.Enabled=true thenif getdata(′01′,′1′)<1 thenbeginVc:=getdata(′01′,′0′);form1.label2.height:=0;//lable2 for oil pipeform1.label1.height:=252-round((Vc-3.7)*17.29);endelsebegin//form1.label1.height:=300;//form1.label2.height:=form1.label1.height;form1.label1.height:=252-round((Vc-3.7)*17.29);form1.label2.height:=252-round((Vc-3.7)*17.29);end;end;procedure TForm1.Timer2Timer(Sender:TObject);varl,y:single;beginyewei;if oldstatus thenbeginGetdata2(′02′,′000E′);form1.timer1.Enabled:=true;form1.timer3.Enabled:=false;form1.MediaPlayer1.play;form1.Shape1.brush.Color:=clred;endelse<dp n="c6"/>beginGetdata2(′02′,′0000′);form1.timer1.Enabled:=false;form1.timer3.Enabled:=true;form1.Shape1.brush.Color:=clyellow;form1.mediaplayer1.stop;end;if oldstatus then//..........................................3beginl:=getdata(′01′,′1′);y:=getdata(′01′,′0′);//form1.edit4.Text:=times;if((1>5)or(y<3))then//.....................................2beginoldstatus:=false;T3:=now;st1:=timetoint(T3-T1);//form1.edit6.text:=inttostr(st1);if St1>=st0 then//......................1beginst0:=st0+10;stop0:=stop0-10;form1.edit5.text:=inttostr(st0);form1.edit3.text:=inttostr(stop0);//T1:=T3;endelse//..................................1beginst0:=st0-10;stop0:=stop0+10;form1.edit5.text:=inttostr(st0);form1.edit3.text:=inttostr(stop0);//T1:=T3;end;//...................................1....endelsebeginoldstatus:=true;T3:=now;end;endelse//........................................................3<dp n="c7"/>beginT4:=now;stop1:=timetoint(T4-T3);if stop1>=stop0 thenbeginoldstatus:=true;T1:=T4;endelseoldstatus:=falseend;end;procedure TForm1.Timer1Timer(Sender:TObject);beginform1.Edit4.Text:=timetostr(now);if a=0 thenbeginimage2.Visible:=false;image3.Visible:=false;image4.Visible:=false;Label4.Visible:=false;Label6.Visible:=false;Label3.Visible:=false;Label8.Visible:=false;Label7.Visible:=true;Label5.Visible:=true;image1.Visible:=true;end;if a=1 thenbeginimage1.Visible:=false;image3.Visible:=false;image4.Visible:=false;Label4.Visible:=false;Label5.Visible:=false;Label3.Visible:=false;Label7.Visible:=false;Label8.Visible:=true;image2.Visible:=true;Label6.Visible:=true;<dp n="c8"/>end;if a=2thenbeginimage1.Visible:=false;image2.Visible:=false;image4.Visible:=false;Label4.Visible:=false;Label6.Visible:=false;Label3.Visible:=false;Label8.Visible:=false;Label7.Visible:=true;Label5.Visible:=true;image3.Visible:=true;end;if a=3 thenbeginimage1.Visible:=false;image2.Visible:=false;image3.Visible:=false;Label5.Visible:=false;Label6.Visible:=false;Label7.Visible:=false;Label8.Visible:=false;Label3.Visible:=true;Label4.Visible:=true;image4.Visible:=true;end;if a=0 thenbegina:=a+1;endelse if a=1thena:=a+1else if a=2thena:=a+1elsea:=0;end;procedure TForm1.Button1Click(Sender:TObject);varn:string;m,k:integer;beginVal(form1.edit1.text,st0,m);<dp n="c9"/>Val(form1.edit2.text,st0,k);if(m<>0)or(k<>0)thenShowMessage(′您輸入的初始數(shù)據(jù)有誤,請重新輸入!′)elsebegintimer2.Enabled:=true;n:=getdata2(′02′,′0000′);st0:=strtoint(form1.edit1.text);stop0:=strtoint(form1.edit2.text);T1:=now;oldstatus:=true;end;end;//.........................procedure TForm1.Button2Click(Sender:TObject);begintimer2.Enabled:=false;timer1.Enabled:=false;Getdata2(′02′,′0000′);form1.mediaplayer1.stop;end;procedure TForm1.Button3Click(Sender:TObject);beginform1.mediaplayer1.stop;application.Terminate;end;procedure TForm1.FormCreate(Sender:TObject);beginform1.Timer1.Enabled:=false;form1.Timer2.Enabled:=false;Label6.Visible:=false;Label5.Visible:=false;end;procedure TForm1.Timer3Timer(Sender:TObject);beginform1.Edit4.Text:=timetostr(now);end;end.。
全文摘要
抽油機智能控制系統(tǒng)是一種油田抽油機控制技術(shù),它解決了目前其它技術(shù)存在的缺點,在抽油機智能控制系統(tǒng)中,人機對話界面與工控機由適配器連接;在工控機的輸入端由電纜連接著信號數(shù)據(jù)轉(zhuǎn)換器,其輸出端由電纜連接著數(shù)據(jù)信號轉(zhuǎn)換器;信號數(shù)據(jù)轉(zhuǎn)換器的輸入端通過電纜與流量信號采集傳感器和液位傳感器相連;數(shù)據(jù)信號轉(zhuǎn)換器的輸出端通過電纜與電機控制系統(tǒng)連接,電機控制系統(tǒng)與電機連接;在工控機內(nèi)裝有抽油機智能控制程序;該技術(shù)在不影響油產(chǎn)量的情況下可以及時有效地判斷井口是否出油,快速、有效地控制抽油機的啟停時間,使抽油機的停井時間最長,開井時間最短。
文檔編號E21B44/00GK1811623SQ20061001741
公開日2006年8月2日 申請日期2006年2月16日 優(yōu)先權(quán)日2006年2月16日
發(fā)明者杜辛欣 申請人:杜辛欣