<<
>>

Программы расчета энергозатрат и затрат машинного времени при спус-ко-подъемных операциях за цикл проводки скважины, на примере спуско-подъемного комплекса (СИК) буровых установок различных типов

^include #mclude #include #include #include Щ nclnde #include

/*

Программа расчета энергозатрат и затрат машинного времени при спуско-подъемиых операциях за цикл проводки скважины, на примере спуско-полъемного комплекса (СГТК) буровой установки БУ 2500-ЛГУ

*/ /*

Расчет машинного времени с<ушествляется поэтапно:

- исходя из характеристики силового привода, приведенных масс системы в веса бурильной колонны рассчитываются элементы тахограммы подъема каждой свечи (период разгона, период замедления и период установившегося движения) и ее время подъема:

• исходя из параметров кривой проходки рассчитывается количество подъемов каждой свечи за цикл проводки скважины;

- исходя из времени подъема каждой свечи и количества ее подъемов, рассчитывается суммарное машинное время подъема за цикл проводки скважины.

»/

const int ARR=132000: /// 66000: int SIARRI, SUM{ARR|, NJVIARRJ;

double M.

LMAX. LB. MTC. MPH. MPKI4+H. MPKBI4+1). IMV2. MPV2.

MICK, MM, MM1, MM2, WPL[ARRJ, WPLSJARR], WPLE[ARR}, IMDE, MPDE[4+11, MNOM, MMAX, WPLL(ARR|, NN, KPlXi, Z1J4+1J, Z2(4+l|. U(6+iL RB|4+1], HC[4+1], CVE|ARR|, CQE|AKK|, W SUMIARRI. WSPJARR1. VPIARR1. TPIARR). SPIARRI. TJVfKH-И. FPSLfARRl. OKfARRJ. OCfARRL MK(ARR|, MPZ[ARR|, MPREDJARRJ, ZE[4+IJ, UL?|6+1|, 1MBE, 1MV1, MPBE, MPVE[6+!I, QSPKjARRJ, MPLE16+1], MPRE[ARRJ, KPDTC|ARRJ, KPDLE, NE, NM|ARRJ, NM1, VUE|ARRJ, SZEIARRJ. SUEIARRI. SREIARRI. MCE. MPRESIARRI. TREIARRj. TUEIARRI. TZE|ARR).TE|ARRI. LAMDE{ARR|, TSUMEfARR), TSPE|ARR|, ALSR, WSUM=0., WPSUM, WPMM|ARRJ, RBR, AND, FE, H, Lev. HXC, MMU. QMAX, WIARRJ, WPM[ARRJ, WPMSIARRJ, PR, PC, ОТ, GTC, КГ, E, A1H, QKT, DP, WPLSUM=0.. ANP(ARR). DH. DK. DB. AM2. UTC. EP. AMI. P. GCV. KPDH. WU(ARR). CAv{ARR). ODK_ QU. LU, D. KPDIT, CyEltARKj, CQEltARRJ.

MCE1, AN1, yUEUARRJ, TLAMS=0, TLAMBJARRJ, TLSUMlARRj:

int JV, X, Y, YPMfARRJ, SSUM. mufta, WPfARRJ; double ID, TO, TMiARR). MUjARRI, MO, MU11ARRJ, TCtARR|, PDMIARR). DVMlARRj. VMIARR). DSMIARRJ. SSMIARR). MUFCfARRl. NMMIARRJ, MMDIARR], VPMIARR|. SPM|ARRJ, TPM| ARRJ, TMUIARRJ, Z. KEE. KEL KE2. NO. MP. KPDSUMI ARRI. WSPS=0. WUS=0:

lypcdef char * string;

string li.KJ^PJXiL4a;,KV,lDl.iD2,lD3,lD4,lD5.1D6; char BEI80|--»:

int ZB. ZK, LKMAX, NL, NU, NV, I_MAX;

int TESr_FLAG_TRUE=0;

iltt JMIARRI:

double AN. MCEMI ARRI:

of stream fout; #deftne COUT fout #dcfine eetchO

ofstrcam mcad_te, mead I vu, mead It;

ll~ —- 1 >-

const int MaxBuf=HKK): ifstrcam wod;

int Hag_para!iictr_is_absenf--<);

int Лак wod from kbd=<»: //1-е клавиатуры. 0 - m файла

int Init_vvod( char * wod name);

int (jetlntParam( char * param name);

double GctDoublcParamt char * param name):

void GetStringParam( char * paramname, char * paramstring);

void ChangcPointToZpK char* fin, char* fout);

int main(int argc, char* argv(]) і

mead te.opcnf "mcadte.prn". k»::witlios::tninc): rncadI_vu.opcn( "meadlvu.prn", ras.:out|ios::trunc); mcadl_t.open( Hmcadl_t.prn", ios::outjios::trunc); foul opent "fout.txt". ios::«Hlios::minc):

//=

if( lmt_wod( "wod_bu.txt" )=4) ) return 0; int kbd=GetlntParam( "KBD"): if( kbd!=0) flag_wod_from_kbd= 1 ;

П = " «« Значения передаточных отношений и ггр иве ленных масс »»": КРР= *— Коробка передач —

КК = " ZB ZK Z2I ?22 Z23 224 Zll Z12 Z13 Z14 1MV2"; ZB - GetlntParamf "ZB"): ZK « GctIntParam( "ZK"); Z2[l| = GctlntPararm; "Z2| 1 )"); Z2I2) = C^lntPararat "Z2I2I"V. Z2[.3| « QrUntParanK "Z2[31"); Z214J = GctintParam( "Z214]"); Zlf Ij - C^tParamf "Zll l|">; Zl[2| = GetIntPararn( "ZI[2|"); Z1J3) = GeUntParam( "ZIUJ"); Z1I4} = GetlntParamt "ZH4I"): IMV2 « CretIntParain( "IMV2"); GctStrmgParain( "NAME", BE );

K.E ? " ZE1 ZE2 ZE3 ZE4 IMBE PMVE LMDE KJPDLE NE":

ZEfll = CetIntParam( "ZE[1]");

ZE12J = CicUntParam( "Zt|2|");

ZEI31 » GetlntParamt "ZE!3J"V.

ZE|4| » GetlntPararrK "ZE{4J");

IMBE = GctDoublcParam( "IMBE");

IMV1 « GetT>oubteParami "IMV1HV.

IMDE - GctDoubleParam( "IMDE">;

KPDLE= GctDoublcParara( "KJPDLE");

KPDH - Ck?tDoubleParamt "KPDHHV.

NE = GetDoublcParam( "NE");

1D1=" LMAX H Lev HXC НСГ;

LMAX= GetDoubleParamf "LMAX"):

H * GctDoublcParam( ТГ);

Lev = GctDoublcParami "Lev");

HXC = C«tDoubleParam( "HXC"):

HC[1}= GetDoublcPararnX "HC[1J");

Ю2 = щ HC4 PR PC QT GTC";

HCI41= GetDoubleParamt "НСІ4Г):

PR = GctDoublcParam( "PR");

PC = OctDoublcParamt "PC");

ОТ - GetDoubleParamr "ОТ"):

GTC ? GetDoublcParam( "GTC);

1D3 = " M Ft E A1H QKT";

M ? GetDoubleParaml "M"):

FT - GctDoub!cParam( TO;

E = GctDoublcParam( "E");

AIH ? GetDoublcParami "A1HHV.

QKT = GctDoublcParam( "QKT");

Ю4 = и DH DK DB LB U 1С";

DH - GetDoubleParaml "DHHv.

:

DK = GctDoublcParam( "DK");;

DB = GctDoublcParam( HDB");;

LB - GetDoubleParam( "LB"V.:

UTC = GctDoubIcParam( 4JTC*);

ID6 = ? P ";

P - GetDoublePararol "P"):

NU ? Get Int Param< "Nil"); LU = GctDoubicParam( HLU"); 04J - GetDoubleParaml "OU">: QMAX = GctDoub!cParam( "QMAX"); D = GciDoublcParam( "D"): TO - GetDoubleParaml TO"): MO * GetDoubIcParam( "MO"); NO = Gctl>JubicParam( "NO"); X - GetlraParami "Xй): NV - GctIntParara{ "NV"); mufta - GetlnlPararnC "muna");

wod.close<);

iff flag Daramctr is absent) return 0: И ,„ ...

H Расчет параметров кривой проходки и числа свече подъемов за цикл бурения скважины

/?

LKMAX - максимальная глубина скважины в свечах;

NL - индекс, под которым хранится информация параметров подъема незагруженного элеватора за цикл бурения скважины:

S [N] - суммарное количество подъемов колонны из N свечи за цикл бурения скважины; SUM [ N] - нарастающее количество с вече подъемов.

?/

GCV«Lcv*QT; LKMAX = int( LMAX / Lev ); NL-LKMAX+1; int L J, K, L, N;

for(N=l; N<=LKMAX; N++) (

S[N] - int(l + LMAX / H * (I. - pow( (Lcv*N/LMAX) ,(1./M)) )); }

SUMI1I=SJ11: for (N=2; N<=LKMAX; N++)

KV - ? «« END OF INPUT ««":

/*

UE - передаточное отношение между валом муфты двигателя и входным валом К! Ill; UB - пеое.таточиое отношение между выходным валом КПП я подъемным валом лебедки: U[J] - передаточное отношение КПП при работе на J-ой передаче;

ULE[J] - передаточное отношение от выходного вала двигателя до подъемного вала на J-ой передаче. <7

double UE1.UE2. UB;

UEI = doublctZE|2|)/Zfc|l|; Ub2 = double'ZEI4IV / Zhm. UB = doublc(ZB) / ZK; tor(J=l;J<=4; J=J+1) <

U[JI = Z2(JJ/Z1[JI;

ULEIJJ = UEI * UE2 • U|J) * UB;

>

COUT « "Результаты расчета передаточных отношений" « endl;

COUT «"ULE|1J ULE[2J ULE13) UL?|4J UB UEI UE2" «endl:

COUT «ULEll]^, "<< ULE[2J <<", *«ULE[31«", ? « ULEJ4J «", "« UB «\ "« UEI «•, "« UE2« endl; // Раесчет масс поступательно движущихся и вращающихся элементов // С ГТК, приведенных к талевому блоку

*/ С

МРН - масса шкивов талевой системы, кг.

M 1С - масса поступательно движущихся частей талевой системы, приведенная к талевому блоку, кг, МРКП1.

MPKI4J - масса талевого каната, находящегося в оснастке (без учета каната навитого на барабан), соответственно в начале периода разгона и в конце периода замедления, приведенная к талевому блоку, кг, MPKBJ1J, МРКВ|4] - масса талевого каната навитого на барабан, приведенная к талевому блоку, соответственно в начале периода разгона и в конце периода замедления, кг.

M РВЕ - масса вращающегося подъемного вала (барабана с вращающимися с ним элементами), приведенная к талевому блоку, кг,

MPVE(J). MPDEIJ) - масса входного вала КПП в выходного вала ПКМ 1000 со связанными с ними элементами, соответственно, приведенных к талевому блоку, при работе на J-ой передаче, кг, MPV2 - масса выходного вала Kill 1 и связанных с ним элементов, приведенная к талевому блоку, кг, MPLEIЛ - суммарная масса вращающихся элементов подъемного агрегата при работе на J-ой передаче, приведенная к талевому блоку без учета каната, кг. */

МТС - GTC / 9.81:

double MPV2, MPVEI4+II, MPDE[4+1|, rh * (DH+DK)/2.; МРН = A1H * UTC * (UTC+l.) * (2.*UTC+1.) / (6.*rh*rh);

MPKIП - (OKT*HCI U*UTC*(fUTC+2>*(UTC+t.> + 3.*UTC*(HXC/HC[IM.»V9.81:

MPK[4J = (QKT*HC[4I*UTC*((UTC+2)*(UTC+1.) + 3.*UTC*(HXC/HC[4J-l.)))/9.8l; MPKB11J = (QKT*2*3.14» UTC*UTC ?15*RB11J)/9.81; MPV2 - IMV2 * (UTC*UB/RBR>*(UTC*UB/RBR); MPBE = IMBE * (UTC/RBR)*(UTC/RBR);

for (J=l; J<=4; J=J+1)

i

MPVE[J] = IMV1 ? fJjTC*UiJ)*UB/RBR)*anrC*UlJI*UB/RBR); MPUh|J| = 1MDE * }

COUT « endl;

COUT « "СУММ, масса вращающихся элементов привода подъемного агрегата " « endl: COUT « " при работе на J-ой передаче, приведенная к талевому блоку, кг" « endl; COUT«"MPLE|l| MPLE|21 MPLE13J MPLE|4j" « endl; COUT « MPLEI 1J «". " « MPLE(2) «". "«MPLEI3|«". "« MPLE14) « endl:

// Расчет нагрузки на крюке и КПД талевой системы /•

ОКГг-П - сила веса бурильной колонны с учетом КНБК. Н:

QQNJ - сила веса талевого блока и бурильной колонны (с учетом выталкивающей силы бурового раствора и сил трения).

кН:

KPDO - КПД талевой системы при подъеме бурильной колонны максимального веса; KPDH-ЮЩ шкива;

KPDTCfNl - КПД талевой системы, при подъеме БК из N свечей:

MKfN] - масса колонны бурильных труб из N свечей, кг.

•/

LU - NU*Lcv.

double KPDO - KPDH *(l-pow(KPDH,UTC)) /(UTC*(I-KPDH)); lor(N=l; N<-=NL; N^)

t

if(N<=NU) QK|N| = QU*Lcv*N;

else Ok|N| -04J*LU + (N-NU)*Lcv*OT; ifOKINM>.: QQNJ *(QK[N|*(1-PR/PC + FT) + GTC)/1^.;

double t - 1/KJPDO + (0.04*(GC V*(NL-l)+P+MK|Nj = QK{N]/9.81; KPDtr = KPDLH / 0.97; KPDSUMIN) - KPDTC(N)*KPDLE*KPDtr.

}

// Расчет скоростей подъема колонны бурильных труб

/*

MNOM, ММ АХ - номинальный и максимальный момент двигателя, при разгоне, Н*м; CVRIN1 - коэффипиент псосвола скорости движения талевого блока в частоту вращения

вала двигателя и обратно; CQEfN] - коэффициент перевода момента на выходном валу двигателя в движущую силу талевого блока и обратно:

МСЕ - момент сопротивления, приведенный к двигателю от действия веса колонны бурильных труб и веса подвижных частей талевой системы, Н*м;

VUEINI - установившаяся скорость движения талевого блока, при подъеме БК из N свечей, м/с: MPR?|N] - суммарная масса колонны бурильных труб, поступательно движущихся и вращающихся элементов CI 1К в период разгона, при подъеме ЬК из N свечей, приведенная к талевому блоку, т. MCEMJN1 - момент сопоотивления. приведенный к валу двигателя от действия веса колонны буоильиых труб и веса подвижных частей талевой системы (используется при расчете времени включения муфты). Н*м; JM[NJ - номер перердачи при расчете времени включения муфты; ?/

for(N=I;N<=NL; N++) {

юг(К=1:К<=4:К++) {

J=5-K4

CVEINI = RBR * 3.14 / (UTC * ULE(J) * 30): CQE[NJ - UTC * ULE[J] * KPDTClNJ * KPDLE / RBR; MCE = (QKJN| + GTC) / CQEINJ; MCEMIN1 = MCE: AN = 1857. -0.3336*MCE/D; it" (AN>NE) AN=NE; VUEINI* AN*CVEINU MUFC[N| = (<(C^V*N+P)*(l-PR/PC+FT)+GTO*RBR)/(UTC*KPDTC{NJ*KPDLE); if(AN>NV) break;

>

if (J<11) J>4) cout« *J=" « J « *, ";

// Приведенная масса системы, т MPREJN) « (MPK.|i}+MPKB(lJ+MPH-t-MTC+MK|Nl+MPLElJ)V1000.; JM{NJ - J;

// Расчет времени и пути в период замедления

MPZ[N] - суммарная масса колонны бурильных труб, поступательно движущихся и вращающихся элементов СПК в период замедления, т;

TZF.fNl.

SZEfNl - восмя (с) и путь (м) движения талевого блока в период замедления. ?/

for (N=1; N<=NL; N++) (

MPZ[N|= (MTC+MK|N|+ МРК|4|+МРН)/ИЮ0.; // MPZjNj- (MIC*MK|NhMPBt-*-.MPlvB|4)-+NlPK.|4j-^MPH)/l(.KK).; TZblNH VUEINI* MPZINI/OCINI: SZE|NJ= VUEIN]* 1ZEINJ/2;

)

II Расчет момента развиваемого двигателем в период разгона скорости, // времени и пути движения талевого блока при подъеме на высоту свечи

/*

JV - число интервалов при разбивке установившейся скорости движения талевого блока; DV, D Г - величина изменения скорости и времени на интервале, соответственно;

VPfLL ТРИ Л. SPIM - стсорость (м/с), восмя (с) и путь (м) на рассматриваемом интервале скорости с индексом L от I до Л/, соответственно;

NM - частота вращения выходного вала ІІКМ 1000, в период разгона, об/мин;

МI. MM. М2 - момент на выходном валу ПКМ 1000 в период разгона в начале, в середи не и конце интервала L скорости, соответственно, Н*м;

РО - движущая сила, развиваемая приводом в период разгона, приведенная к талевому блоку, кН; TRFf N]. SREfNl - время (с) и путь (м) движения талевого блока в период разгона. EPSL[N] - ошибка интегрирования. •У

// Расчет времени включения муфты ПКМ 1000

f

MMU - крутящий момент муфты в период наполнения, Н*м;

МО - максимальный момент муфты. Н*м:

TPM[N] - время включения муфты, с*

ТО - время наполнения воздухом камеры муфты, с.

?/

for(N=l;N<=NL;N-M-) {

SSMI0j= О.: VM|0| = О.; WPMS|0J= О.; VPMINI-0.;

SPM[N1 - 0.;

WPU1J=0.;

WPLS11}=0.: NM[1]=0.;

for(Y=l; Y<=X; Y++) і

TD-TO/X;

TMlYj = (Y •TD)-(TD/2); MUIY1= (MO / TO) * TMIYJ: MU1[Y| = MU[Y|/(KPDU*ULE[JM[N|I); if (MCEMiNJ >= MU11YJ)

TCINJ = TM|YJ;

VMIYJ = 0.;

SSMIY1= 0.:

WPMS[Y]=0.; YPM|N| ? Y; continue:

}

PDM|YJ = MU1|YJ ? CQEINJ/1000.; DVMIY1 = (PDMfYJ -OC|N|)*TD/(MPRE{N|): VMfYJ - VM[Y-IJ + DVM(YJ; DSM|Y| = TD* VM[Yj; SSMIYJ - SSMIY-ll + DSMIY1:

NMM(YJ = (VM{YJ * UTC * 30)/(3.I4*RBR);

MMD|Y] = (5566. - 2.y97*(NMM|YJ*ULttJMlNJl))*D; VPMIN1 = VMIYI: SPM[N] = SSM[Y]; YPMINJ = Y; TPMINI = TMIYL

if (MUIIYJ > MMD|Y]*KPDtr)

break,

1

I_MAX= 17; for (1=4; i<=l_MAX; {

JV=int(pow(2.I)+l);

double DV = 0.82 * VUEfN) / JV;

double DV = VUErNl / int( pow(2.4HU. int KM = int(VPM[Nl / DVJ; tf(mufta==0) { KM=1:

VP[KM] = 0.; TP|KMJ = 0.; SPIKM1 = 0.: WPLSrKM]=0.;

>

«г1че

i

VP|KMJ = VPMINJ; TP I KM I = TPMINJ+TCINJ: SP[KMJ = SPM[NJ;

WPLSiKMJ=0.; I

L=KM+1;

MM1 = (5566.-2.997*(VP|L-l] / CVE[N]))*D; for (L=KM+1: L<«JV: L++>

{

VP|L] = VPIL-1J + DV; NMILJ * VPILWCVEINI:

NN = (NM[Ll+NM(L-Il)/2; MM2 = (5566.-2.997*NM|L])*D; MM - (MM2+MM1 )/2.: MM 1 = MM2; double UT, PD=MM*CQhlNJ/1000.; if(PD-OC|NI>0> {

DT - MPRE(N) * DV /(PD-OCfNjV.

// КПД 1^1дротранс форматора

KPDG = 0.00O0(XX^O14*NN*NN*NN-0.000(Ю386*NN*NN-Ю.0O3124*NN?И).076;

// Энергетические затраты на каждую итерацию (без учета КПД гидротрансформатора) // с учетом КПД гидротрансформатора

WPULJ - (((((MM*3.14*(«NMIM+NM|L-ll>/2>)/3O)*DTV36O0)/lO00.VKPDG: WPLS(LJ - WPLS|L-I|+WPLfL]; TP|L|=1PIL-1J+DT;

SPIL|=SPIL-1| + MVPILH-VPIL-IJ) * DTV2.: if (SPfL] - (E*Lcv-SZE[Nl)>=0.) goto MET26;

}

else eoto MET 26: }

TRE|Ni=TP|L-l|; SRE[N| - SPIL-1):

WPLE|N)= WPLS[L-H;

/?LIST 4*/ goto MET_28;

MET_26: TRE(NJ = TP?L-iJ; SKHINJ = SFjL-lj; WPLEf N1=WPLSIL-1 J: MET_28: TrVfll * TRE[NJ; if (l<=4) gOtoMET_260;

EPSLINI ~ fabs? TJVIU -TJVI1-II): if ( EPSLfNJ <= 0.01) goto MET^237; Mh 1_260:; 1

MET_237: NJV[N1 = JV; }

// Расчет nvm и времени установившегося движения // TUE{NJ, SUE[NJ - время и путь установившегося движения талевого блока. ?or(N=l;N<=NL; N++)

(.

SUE|N1 = Lev * Е - SZEfNJ - SRE[N); TUEJNJ = SUEINJ / VUEINJ;

I

/* Расчет машинного времени и степени неполноты тахограммы подъема колонны бурильных труб на длину

свечи и за цикл бурения скважины */

/?

TE(N], LAMDE[N] - машинное время (с) и степень неполноты тахограммы подъема колонны бурильных труб из N свечей;

TSUMFIN1. TSPEfNl - суммарное и нарастающее машинное время подъема колонны блркльных труб из N свечей, на длину свечи за цикл бурения скважины, соответственно, ч;

SLAMO - суммарное нарастающее значение степени неполноты тахограммы подъема за цикл бурения скважины ?/ double SLAMD - О.; for(N=l;N<=NL;N++) t

ТЕ [N] - TREfN] + TUE[N] + TZEfN]; // LAMDEjN| = TEjN| * VUE|N| / Lcv/E;

LAMDEIN! - 1+ 10*VUEIN1*VUE|N| / Lev. SLAMD = SLAMD + LAMDE|N| * S[N|; TSUME|Nj ? TE|N) * S|N| / 3600.; if ? (N-1»0) TSPEINJ - TSPEIN-l] + TSUME(N): else TSPE[1| = TSUME[1|;

// Методика Авакова TLAMB1NI - E * Lev * LAMDEINI / VUE(N]: TLSUM(N) - TLAMB[NJ*S[NJ/3600; 1'LAMS - TLAMS + TLSUM|NJ:

CAvlNJ-?TElN)*VUEINI-E*Lcv)/?VUEIN]*VUE|Ni*E);

}

// Расчет среднего значения степени неполноты тахограммы подъема // за цикл бурения скважины

ALSR - SLAMD / 2. / SINLJ;

// Расчет энергозатрат

for?N=l.N<«NL:N++> {

// Требуемая мощность при разгоне колонны из N свечей на один подъем, кВт ANPINI - WPLEINI/?TREINI/ЗбООУ.

// Суммарные энергетические затраты на одни подъем при разгоне, кВт*ч WPLSUM = WPLSUM + WPLEfNJ;

// Энергетические затраты на установившееся движение колонны из N свечей // (на один подъем), кВт*ч

WUINJ = (QSPK.INJ*VUEINJ* lUElNj/3600)/KPDSUMlNJ; WUS - WUS + WU?N1:

// Энергозатраты на разгон и подъем (установившееся движение) при подъеме

// на высоту свечи колонны из N свечи, кВт*ч

WIN] - WPLEINI + WUINj: W_SUM|NJ - W(N]*S[N1;

// Суммарные энергозатраты на один подъем. кВт*ч WSPINJ - WPLE1NJ + WUINJ:

WSPS = WSPS ? WSP[N]; }

// Суммарные энергозатраты на разгон н польем (установившееся движение) // при подъеме на высоту свечи колонны из N свечи, кВт*ч for(N=l; N<=LKMAX; N++)

{

WSUM = WSUM * W_SUMfNl; }

// Формирование заголовка тябзипы if (mufta==0) for(N=l;N<=NL;N++) TPMlN|=SPMlN|=VPM[N|=0; й ( l) //0 -нет печати, 1 - печать {

^gctchO;

COUT « BE « endl;

COUT « Таблица результатов расчета" « endl: COUT

COUT«"N S OC MPR MPZ TR TU TZ T SR SU SZ TPM VU LAMD KPDTC KR WPLEfN] ANP[N] WU[N] W_SUM[N] WSP[N] EPSL NJV « endl:

COUT«"CB CBKHT T С CC CM M M С М/С кВт*ч кВт кВт*ч кВт*ч кВт*ч "«endl:

COUT

for(N=l:N<-NL:N++)

{ int N_=N;

if(N==NL) N_=0; COUT « setH^sf1aes(ios::ienlios::fixcd) « setwO) « N_ « ? * « sctiosflags(ios.:lcft|ios::fixed)« sctw(3) « SfN] <<•" « seUostlags(ios::leit|ios:.a\ed) « setw(4) « setprecision(3) « QSPKfN) « ? ? « sctiosfla«s(ios::lcnlios::rlxcd) « setw(5) « sclPiwsion(3) « MPREjNl « • ? « setiosflags(ios::Icn|io9::fixed) « setw(5) « sctpfCcision(3) « MPZ|NJ «• ? « seUc>stlags(!Os::lcttlios::fi\cd) « setw(6) « sctprccision(3) « TRE|NJ « " " « setiosflaes(ios::lcnlios::fixcd>« scrw(6)« sctprccision(3)«TUEIN1 «" ? « scUosflags(H>s::Ien|ios::fixcd) « sctw(6) « sctprccision(3) « TZE[NJ « • • « setiostlags(ios::leti|!os::nxed) « setw(6) « setprecision(3) « TE|N| « " " « setK)sfla^ios::knli<>s:.nxed) « sctw( 6) « sctprecision(3) « SREtNI « • " « sctiosflags(ios::lcn|ios: fixod) « serw( 6) « sclpirxisiorj(3) « SUEfN] « ? " « seUosflags(ios::lcn|ios::fixed) « setw( 6) « setprecision(3) « SZE[NJ « • ? «sctrosflaes« srtiosflags(ios::lcfl|ios"fLxod) « sctw( 5) « sctorccision(2) « VUE(NJ « ? ? « setiosilags(ios::len|jos::fixed) « serw( 6) « setprecision(3) « LAMDEfN] « ? " « setiosflaes(ios::lenlios::fixed)« scrw( 6) « sctprecision(3? «KPDTCfNl «? ? « seuosflags(ios::left|ios::fixed) « 9Ctw( 6) « sciprccisioo< 5) « KR[N] « " *

« setiosflags(ios::leftjios::fixed) « set\v( 7) « setprecisioiK3) « WPLE|N] « " "

« setiosflaes(ios::kf(lios::fixed) « setw( 7) « sctprccision(3) « ANPfNl « • •

« sctiosflags(ios::lcn|ios::fixcd) « sctw( 7) « sctprccision(3) « WUfN] « " »

« seUosllags(ios::lefl)ios::nxed) « setw( 7) « setprecision(3) « W_SUM|Nj « " ?

« setiosfla8s(ios::Ienlios::fixed) « serwf 7) « setprecision(3) « WSPIN1 «» ?

« sctiosiJags(ios::lcft) « sctw( 7) « sctore?sion<3) « EPSUN] « " ? « seuosflags(ios::left) « setw( 4) « CAv[N] « endl; uTN%9=0) nclcho:

}

COUT «endl:

)

COUT « endl « "«« Печать результатов расчета показателей подъема незагруженного элеватора »»- « endl:

COUT «endl: N=NL;

COUT « "NMAX - "«setiosllags(tos::lcfT|ios::fixed)<« " - максимальное число свечей в БК: "«endl: COUT « "SSUM = "<« " - суммарное число свечеподъемов за цикл бурения скважины; "« endl; COUT « "GTC = "«setiosflaes(ios::leftlios::fixcd)<redsion<3r<« " - сила веса поступательно движущихся частей талевой системы, Н; *« стиИ; COUT« "MPRJOj = "<« " - масса незагруженного элеватора н элементов СП К. приведенная « ТБ. в период разгона, г, "« cndl;

COUT « "MPZIOJ = "<« н - масса незагруженного элеватооа и элементов СП К. приведенная к ТБ. в период замедления, г. "« cndl:

COUT « "TREfOj - "«sctJosIlagsl?os^Icttiiosiifixcd^setwiX^'sctprcasionliK-^IKhlNI

« " - время разгона незагруженного элеватора, с: и<< cndl: COUT « TUE|0J = "<« " - время установившегося движения незагруженного элеватора, с; "« endi; COUT « TZF.Mi| = "<« • - время замедления незагруженного элеватора, с; "« cndl; COUT « "TE|OJ ? "<« " - машинное время подъема незагруженного элеватора на ДЛИНУ свечи, с: "« end к COUT « wSRE[0] = "<« " - путь разгона незагруженного элеватора, м; "« endl: COUT« "SUE10I « "<« * - путь установившегося движения незагруженного элеватора м; "« cndl; COUT « "SZE(0| = "<« " - ПУТЬ замедления незагруженного элеватора, м: "« endl: COUT« "VUE [0J = "<« * - скорость установившегося движения незагруженного э.теватора, м/с; "« endl; COUT « "LAMDEKH» "<s::lenho5.:fixedK« " - степень неполноты тахограммы. подъема колонны на высоту свечи: *« endl; COUT« "KPD1C10|= "<« ? - КПД талевой системы: "« endl: COUT « "EPSL10] = "<ошибка интегрирования, с; *« endl;

COUT«"NJVI01 « "«setiosflaesrkwrrlen) «serivT4K

COUT « cndl « " «« Машинное время подъема КБТ за цикл бурения скважины »» " « endl: COUT «endl;

COUT « "SSUM = "« SSUM «

H - СУММ. кол. свече подъемов колонны за цикл бурения скважины: " « endl; ?UT<* - сумм, машинное время подъема колонны за цикл бурения скважины, ч; " « endl ;

COUT « setpreciaon(l)« "TSUMEiOJ = ? « TSUMEfNLJ «

? - СУММ. мат. время подъема незагруженного элеватора за цикл бурения скважины, ч. " « cndl: COUT « setprecisiorK 1 )« "ALSR = "« ALSR «

" - усредненное значение степени неполноты тахограммы подъема за цикл бурения скважины; " «

endl:

COUT « setprecisk>n(3) « "ТРМ - "« TPM[N| «

* - время включения муфты, с;" « endl;

" - коэффициент эквивалентности поллпипииков последнего (тихоходного) шкива кроиблока;" « endl:

COUT « sctprccision(l) « "WPLSUM= "« WPLSUM « " - суммарные энергозатраты на один подъем при разгоне, кВт*ч;" « endl;

COUT « setprecision( 1) « "WUS = "« WUS «

* - суммарные энергозатраты на один подъем при установившемся движении, кВт*ч;* « endi;

COUT « setprecision(l) « "WSPS = *« WSPS « " - суммарные энергозатраты на один подъем. кВт*ч:" « endl:

COUT « saprecision(2) « "WSUM « "« WSUM « " - суммарные энергозатраты на подъем КБТ, кВт*ч;" « endl; COUT « setprecisiond) « "TLAMS = "« TLAMS «

* - сумм. маш. время подъема КБТ и незагруженного элеватора за цикл бурения скважины, ч;" « endl;

for (N=1; N<=NL: N++) {

mcadte « TEfN) « endl; mcad l. vu « VUEfNl « endl;

mead IJ « TSPE[N1 «endl;

}

fout.closeO: mcadjecloscO; mcadl_vu.close(); mead I t closet):

ChangePointToZpK "fout.txt*. "fout_z.txt"): // noc.TcaHa*!!! return 0;

}

int !nit_wod( char * wod_namc) I

char bufllMaxBuf):

wod.opcn( wodname. im::in|ios::nocrcate); wod » bull; ifl wod.failO) {

cout « "iniHHHIllHHHIIIIfllUir « endl; cout « "File V" «\'vod_name«"\H is absent! I l"«endl: ^gctcbX); return 0;

\

wod.seckg(ios: :bcg); return 1;

>

int GctInlParam( char * param_namc) { int paramint;

if( Hag wod from kbd)

{

cout « paramname « " * cin » oaram int: cout « endl; return param int; >

strstream strca;

charbui]MaxBulj,paramjoameinnle (MaxBu fj ; wod cleart 0):

wodscckg(ios: :bcg);

intflag=0;

param int=-l:

white( rwod.cofiO)

{

wod ectlinef buf. MaxBuf): bufl80] -10»;

if( strchr(buf, *=')==0) continue; inti:

for(i=0; iiff strstrtDuf. param namc)=0) continue: strca.seckp(0); strea.seekgtO); strea « buf:

strca » rjaram_namc_in_file:

if( strcmpt param_name_in_file, param_name)?=0) continue; flae=l:

strea » param int; //cout« buf « endl;

>

tf( flag=0) {

flag paramctr is abscnt=l:

cout « ^mmmmmmmmmmmmmmr « end!;

cout « "Parametr V" «param_name«"" is absent!! !"«endi; _gctch():

return -1;

}

return oaram inf. }

ooublc GctDoubicParam( char * param_namc) {

double param double:

iU tlag_\TOd_from_kbd) I

cout« param_namc « " = cm >> param jioublc; cout« endl: return paramdouble; }

strstrearn strea:

char buf|Ma\Bufl, paiam_namcJn_filc[Ma\Buf];

wocLclearX 0);

wod.secke(ios::bce): //clear

intflag=0;

param double^-1;

while( Iwod.eofO)

{

wod.gctline( but MaxBuf); buf180l - Mi*:

if{ strchr(buf, *=')=0) continue; int i;

for(i=0: KMaxBuf. i++> if(bufli)-=,-,> bufliH bufI80J = Mr;

if( strstitbuf, param name )=0) continue; strea. sccko(()>: strea. scckg(O); strea « but";

strea » oaram name in file:

if( strcmp< param_narnc_in_file. param_namc)!=0) continue; flag=l;

strea » oaram double: //cout «buf<< endl;

}

iff flae=0)

{ flag_paramctr_is_abscnt=l;

cout« "ffhtHtiilifti!iftlH)iHHHtHillHtttl!t1ittHtfttHtm" « endl; co*rt « "Parametr V" «param name«"" is absent! I!"«endl: _getchO;

return -1.0;

)

return param jioublc; }

void GetStrineParamf char * oaram name, char * param string) { if( flag wodfrom kbd)

{

cout« paramname « " ? ": can »paramstnng; cout« endl; return:

}

strstrearn strea;

char buflMaxBufl. param name infilerMaxBufl: wod.clcait 0);

wod. seek g(ios:: beg),

int flaK=0: whilc( !wod.eof())

{

wod.ectlinef buf. MaxBuf):

bufl801 = W:

if( strcbx(buf. -')=0) continue; int i:

for(i=0; i if(bufli}==,=') buf|i]='»; buil80| = W;

if( strstrfbtrf. wmm namc)=0) continue: strca.scekpfO): strc3.scck2(0); strea« buf:

strca » parara_namc_in_file;

il( strcrnpt parara_name_in_hle, param_name)!=U) continue; flae=l:

strca » paramnamcinfilc;

//cout« buf « endl;

//cout«Daram name in file « endl:

pa ram name in fi lc [ 80 ]=NO*;

strcpy( paramstnng, paramnamemfile);

//cout« pararastrine « endl:

JictcbX);

}

if( flae=0>

{ flagj>arametr_is_absent=l;

cout« "Paramctr V" «param name«"" is absent!! !"«cndl: ^gctchO;

strcpyt param^stnng, "no string!");; return:

J

return; )

void ChangcPointToZpt( char* f_in char* fout) { intcl;

ifstrcam fstr in:

fstrin.opcnX fjn); ofstream fstr_ouU

fstr out openf f_out. ios::outlios::tninc); while ( !fstr_in.eof())

{ cl = fstr_in.gct();

if(cl —(intV.,> cl»(intV7: fstr_oulput((char)c 1);

}

fstr in.closeO: fstr out closeO; return;

>

#include #inchide include include #includc

^include

// Программа расчета энерготатоат и затрат машинного времени при СПУСКО-// подъемных операциях за цикл проводки скважины, на примере спуско-// подъемного комплекса буровой установки БУ 25<м)-ЭП

I*

Расчет машинного времени осуществляется поэтапно: -

исходя из характеристики силового привода, приведенных масс системы и веса бурильной колонны рассчитываются элементы тахограммы подъема каждой свечи (период разгона, период замедления и период установившегося движения) и ее время подъема; -

исходя из параметров кривой проходки рассчитывается количество подъемов каждой свечи за цикл проводки скважины; -

всходя из времени подъема каждой свечи и количества ее подъемов, рассчитывается суммарное машинное время подъема за цикл проводки скважины.

*/

const int ARR=8100:

int SIARRJ. SUMiARR). LK(ARR). NJVIARR). SSUM. JV.

double M LMAX, LB, МТС, MPH, MPK12+1I, MPKBJ2+1], 1MV2, MPV2. MICK, MM, MM1, MM2, NMIARRJ. WPL|ARR|. WPLSUM=0.. IMDE. IMTE. MP1E|2+1|, MPDEJ2+1J. MNOM MMAX, WUIARRJ. UI2+11. RBI4+II. НС14+Ц. WPLSIARRj. WPLEIARRI. CVEIARRJ. COEIARRI. KPDSUMIARR). KPDtr. W(ARRK W_SUMJARRJ, VP[ARR|, TPf ARRj, SP|ARR|, TJV[10+1|, EPSLIARR), QK[ARR|, QC|ARR|, MKJARRI. MPZ|ARRj, MPRES|ARR|, ZE|6+1|. ULE12+1J, 1MBE, 1MVE, MPBE, MPVE|2+ll, MPLE12+1L MPREIARRJ. KPDTCIARRI. KPDLE. NE. NMI. VUEIARRI. SZEIARRI. SUE(ARR). SRE(ARR). TREIARRI. TUEjARRJ, TZEfARRJ, KR|ARR], MPRED(ARR], TE[ARR], LAMDE[ARR|, TSUMEfARR], TSPE[ARRJ, ALSR, AND, FE. H. Lev, HXC. WSUM=0.. WUS=0. WSPS=0. WPRS=0, WPUS=0. WPRjARR|. WPU|ARRJ, CAvIARRI. PR. PC. ОТ. GTC. FT. E. A1H. OKT. DP. WSPjARR). DH. DK DB. AM2. UTC. EP. AMI. P. GCV. KPDHL AN, QU, LU, ANP(ARRJ. QSPKfARR, RBR}; typedef char • string.

String П.КРР.КК,КЕ.КУ.ГО1.ГО2.тз.Ю4.Ш5.1Г)6: Char BE[80}="";

int ZB, ZK, LKMAX, NL, NU, J_mass(500J;

int TEST FLAG_TRUE=<>:

ofstrcam fout:

#defmeCOUTfout

#dcfmc ectcbO

const int MaxBuf=IO0O;

ifstream wod;

im flag paramctr ie_absent=0:

int flag_wod_from_kbd=0; //1-е клавиатуры, 0 - из файла im lmt_wod( char * wod_name); int GetIntParam( char * oaram name): double GetDoublcParam( char * param name); void GetStimgParam( char * param_name, char * paramstnng); void ChanecPointToZptt char* fin. char* fout): void WritcFilcToZubO; im main(int argc, char* argvU) I

//mcad_te.opcn( "rncadje.prn", i«::out|ios::trunc);

fout.open( "touttxt", ios::out|ios::trunc);

if( Init wodCwod bu.txt")=fl ) return 0: //1 Ш

int kbd=GctlntParam( "KBD");

if( kbd!=0) tlag_v\'od_from_kbd= 1;

11 = " «« Передаточные отношения и приведенные массы »»":

КРР* "— Коробка передач —"; GetStrmgParam( "NAME", BE У,

КЕ-" ZE1 ZE2 1MBE IMDE KPDLE AN NE FE":

ZE[1J - GctIntParam( "ZE(I|"); ZE[2J = Gc?ntParam( "ZE|2J"); ZEI3] - GetlntParaml "ZEI3ГУ. ZE(4| - GetIntParam( "ZEJ4J"); Zhl5] = GcUntParaml "ZE|5j"); ZEI6I» GetlntParaml "ZEIM"): IMBE = GctDoublcParam( "IMBE"); IM?h = GctDoublcParam( "IMDb"): IM IE = GctDoublcParaitii "IMTE*V. KPDLE= GctDoublcParam( "KPDLE"); KPDH = GctDoublcParam( "KPDH"); AND - GetDoubleParaml "AND"): NE - GctDoublcParam( "NE"); FE ? GetDoublcParam( "FE"); ID1-" LMAX H Lev HXC HCl": LMAX= GetDoublcParam< "LMAX"); H = GctDcoiblcParam( "H"): Lev ? GetDoubleParaml "Lev"): HXC = GclDoublcParam( "HXC"); HCl U= GctDoubicParanji "НСЩ"); ID2-" HC4 PR PC ОТ GTC"; HC{4|= GclDoublcParara( *HC[4]"); PR ? ?ctDoublcParam( "PR"); PC - GetDoubleParaml "PC"): QT = GctDoubleParairK "ОТ"); GTC = GctDomMcParam( "GTC"); ID3-' M FT E A1H OK.T": M - GctDoublcParanH "M"); FT ? GetDoubleParaml "FP); E - GetDoubleParaml "E"): AIH - GetDoubleParam( "АГН"); OKT = GetItoubleParam( "QKT"); ID4-" DH DK DB LB UTC": DH = GctDoublcParam( "DH"); DK = GetDoubleParaml "DK"); DB - GetDoubleParaml "DB"): LB - Get I X>ublcParam( "LB"); UTC = GctDoubleParam( "UTC"); ID6 - " P

P = GetDoubleParaml "P"); NU = GctlntParam( "NU"); LU - GctDoubleParamt "LU"): KV - ' «« END OF INPUT ««";

wod closet):

if( flag j>aramctr_is_abscnt) return 0; // Расчет параметров кривой проходки и числа свечеподъемов за цикл // ovDCHHK скважины

GCV-Lcv*QT; LKMAX - int( LMAX / Lev); NL - LKMAX+1: int L J, K, U N = 0; for (N=1; N<=LKMAX; N++) I

S[N] - int( 1 + LMAX / H * (I. - pow( (Lcv*N/LMAX) ,(I./M)) )); >

SUMIll-Sfll: for (N=2; N<=LKMAX; N++)

{

SUMIN] =* SUMIN-l) + S[NJ: }

SSUM - S|Nj« SUMILKMAXI:

// Расчет числа витков талевого каната в одном слое навивки // на барабан

int LZ - im( LB /(DK+0.U02) ): // Расчет радиусов слоев навивки каната на барабан

for (К=1; К.<=3; К=К.+1) *RB|K.| = (DB + DK+1.70 ?(K-l)»DK)/2.;} // Расчет ппивс.теннпго Рялиуся навивки каната на баоабан

PxDR = (RB|I|4 RB|2| + RB|l|)/3: // Расчет передато'гных отношении между валами подъемного агрегата double UE:

UE = doublcU[J1=ZE[2*J?/ZE[2*M1; ULEJJJ = UE * UJJj;

)

COUT «Тстулътаты расчета передаточных отношений" « cndl;

COUT «"ULEJ1J ULEJ2J UE"«endL COUT « ULEm «". "« ULEI2J «". " « UE « endl;

MTC-GTC/9.81: double MPDEJ2+1?, rh - (DH+DKV2.; MPH = АІН * UTC * (UTOH.) * (2.*UTC+1.)/ (6.*rh*rh);

MPKU) - (OKT*HC(l)*UTC*((UTC+2)*(UTC+l.) + 3.*UTC*(HXC/HCf 11-1.ПУ9.81: MPK[4| « (QKT*HC|4|*UTC*((UTC+2)*(im?+l.) + 3.*иТС*(НХСУНС|4|-1.)))/9.81;

MPKB|1J = (QKT*2*3.14* UTC*U1C *13*КИШУУ.81;

MPKBI4I » (OKT*2*3 14* UTC*UTC *LZ*(RB| I )+RB12J+RBl3J))/9.81:

MPBE = ГМВЕ ? (UTC/RBR)*(UTC/RBR); for(J=l; J<=2; J=J+1) і

MPTE[JJ - IMTE * (UTC*U[J1 / RBR)*(UTC*UIJ| / RBR); MPDEIJJ = 1MDE ? (U 1C*ULE|J|/RBR)*(UTC.ULEIJJ/RBR); MPLEjJJ - MPBE + MPDEjJJ + MPTEUJ: }

COUT « endl;

COUT «"Суми, масса врашаюгаихся элементов привода подъемного агрегата " « endl: COUT «" при работе на J-ой передаче, приведенная к талевому* блоку, кг" « endl; COUT «"MPLEl 1 j MPLE12J" « endl;

COUT « MPLEl 1) «". " « MPLE(2] « endl:

LU = NU*Lcv;

double KP1X) = КРОН *(1-ро^КРиаитС))/(иТС*(1-КРОН)); for(N-l:N<=NL:N-H-)

{

if(N<=NU) QK[NJ = QU*Lcv*N;

else OKIN1 - OU*LU + (N-NU>*Lcv*OT: if (N=NL) QK[N|=0.; QQNJ = (QMNj* (1-PR/PC + FT) + GTC) / 1000.;

double t * 1/KPDO + (0.04*r?V*(NL-lHP+GTC)VlOKINJ+GTC>-0.04:

KPDTCfNl = 1/U

MK|NJ = QK|N|/9.81; KPDtr » KPDLE / 0.97: KPDSUMlNf - KPDTC[Nl*KPDLE*KPDtr,

}

// Расчет скоростей подъема колонны бурильных труб MNOM = AND *1000* 30/ (3.14* NE); ММАХ = MNOM * FE; for(N=l:N<=NL: N++) {

for(K.=l;K<=2;K++)

J=3-K4

CVfc|NJ = RBR*3.14/UTC/ ULE|JJ/30.;

COEINI - UTC * ULEIJ) * KPDTCIN) * KPDLE / RBR:

double MCE = (QK[N] + GTC) / CQE[N|;

AN = AND»30.0*lOOO.*l.4/(MCE*3.14);

ift AN>KKK)i AN-1000:

VUEjNl = AN*CVE[N|; П( AN >= 5<и>) break;

1

J_mass| N ] =» J;

//11ривсдснная масса системы, т MPRE(N) - (MPK.11|+MPKBU|+MPH+MTC+MKIN)+MPLE(J|)/1000.:

}

// Расчет воеменн и ПУТИ В ПСОИОЛ замедления// for (N=1; N<=NL; N-и-)

i

MPZIN1= (МТС+МКГ№+ MPKf41+MPHVi(K)0.:

// MPZ|N)= (MTC+MKl^+MPKB|4|+MPBE+MPK[41+MPrn/lfJ00.;

TZE|N|= VUEiNj* MPZ|N|/QCiNJ; SZEINH VUEINI* TZEINJ/2:

}

WPL11J=0.;

WPLSH!=0.:

VP|l| = 0.; TP[!|=0.; SP|l)-0.;

for(N=l;N<=NL;N++) {

MM1- AND*FE*3O.*1000./(5()0.*3.i4V. for (!=!;]<= 12; I++)

JV= int( pow(21>+l 40.01V. double DV - VUE[N1 / JV; lor(L=2;L<=JV;L-H-) i

VPJLJ = VP[L-IJ + DV; NMjLJ = VPILJ / CVEINJ;

MM2- AND*FE*30.*1000./(NM1L1*3.14V.

if (NMfLl<=500.) MM2=MMI;

MM - (MM2+MM1) / 2;

MM1-MM2: double DT. PD=MM*CQErNl/I000.; if (PD-QC'lNj >0) {

DT - MPRE[N| • DV /(PD-QC[ND; // Энергозатраты на каждую итерацию

WPULj - ((((MM*3.14*((NMILl+NM|L-in/2W30)*DT)/3600.V1000.;

WPLSILJ - WPLS[L-1J + WPLILJ;

TPILJ=TP|L-1|+DT;

SPIL|=SP|L-l) + <(VPILI+VPIL-1)) * DTV2.:

if (SP{LJ - (E*Lcv-SZE[N])>=0.) goto MET_26;

}

else tsoto MET_26. }

4RE|N1=TPIL-1|; SREINI-SPIL-ll; WPLE[N]=WPLSIL-1]; /?LIST 4*/ goto ME !_28;

MET 26:TRE|Nl=TPrL-n;

SREfN] = SP[L-1]; WPLE|N|=WPLSjL-l|; MET_28: TJVni» TREJN1;

if (1=1) goto MET_260;

EPSL?N1» TJV|I| - TJVFL-H;

if (RPSblN) <* 0.001) goto MET_237: MET_260: ; } MET_237: NJVINJ = JV:

1

// Расчет пути и времени установившегося движения

for(N=l; N<=-NL; N-M-)

t

SUE(N| = Lev ? E - SZE|N| - SREINJ; i UEINJ = SUEIN) / VUElNj; >

// Расчет машинного времени и степени неполноты тахограммы подъема // колонны бурильных труб на длину свечи и за цикл бурения скважины double SL AMD - 0.: for(N=l;N<=NL; N++)

{

TEINJ - TRE?N1 + TUErN] + TZEINJ: // LAMDE[N| = TE|NJ * VTJE(N| / Lev /Е;

LAMDE|N| = 1+ 2.4*VUEINJ*VUE|N| / Lcv/E; SLAMD « SLAMD + LAMDE1N1 * SIN]: TSUMEINJ ? TE|N] ? S[N] / 3600.; if ( (N-1)>0) TSPEINJ = 1SPEIN-IJ + TSUMEINJ; else TSPE11J = TSUMEI1):

CAvlNJ = (TEiN]*VUElN]-E*Lcv)/(E*VUEtNJ*VUE|NJ);

>

// Расчет среднего значения степени неполноты тахограммы // подъема за цикл бурения скважины

ALSR - SLAMD / 2. / S|NL|:

// Расчет энергозатрат for (N=1; N<=NL; N++)

{

ANPJN] - WPLE[N]/(TRE(NJ/3600); WPLSUM ? WPLSUM+WPLE|Nj; WPRINI - WPLE1N|*SINI:

WUIN} - (QSPK[?]*\aiE'N|*TUElN]/3600)/KPDSUM[NI;

WPU[NJ = WU1N]*S|NJ;

WUS - WUS + WUf N1:

WIN| - WPLE[N| + WU|N];

W_SUM|N] = WtNJ*SlNJ;

WSP1N) * WPRIN) + WPUINU

WSPS - WSPS + W[N|;

)

// Суммарные энергозатраты на разгон и подъем (установившееся движение) // при подъеме на высоту свечи колонны из N свечи, кВт*ч

for (N= I; N<=LKMAX; N++)

WSUM = WSUM + WSP[NJ; WPRS - WPRS + WPRJN j; WPUS » WPUS + WPU|Nj:

}

// Фоомированне заголовка таблицы

flinclude mnclude #include #include # include 4Knr»luH<» <Л»гмт h>

^include

// Программа расчета энергозатрат и затрат машинного времени при стско-// подъемных операциях за цикл проводки скважины, на примере спусхо-// подъемного комплекса (СПК) буровой установки БУ 25(Ю-ЭУ /*

Расчет машинного времени осуществи ястс я поэтаггно: -

исходя из характеристики силового привода, приведенных масс системы и веса бурильной колонны рассчитываются элементы тахограммы подъема каждой свечи (псоиод разгона, период замедления и период установившегося движения) и ее время подъема; -

исходя из параметров кривой проходки рассчитывается количество подъемов каждой свечи за цикл проводки скважины; -

исходя из времени подъема каждой свечи и количества ее подъемов, рассчитывается суммарное машинное время подъема за цикл проводки скважины.

*/

const int ARR=8100;

int SIARRJ. SUM|ARR|, LKlARRj. NJV|ARRL JV. SSUNt

double M LMAX. LB. МТС. MPH. МРК14+1]. MPKBI4+1). 1MV2. MPV2. MICK. MM. MM1. MM2. TLAMS=0, DMDE, MPDE[4+1], MNOM, MMAX, W(ARR|, W_SUM[ARRJ,

RBR, Z114+H, Z2|4+l|, U|6+1J, RB|4-HJ, HC|4+1J, CAvlARRJ, CVEjARRJ, CQEIARRJ, KR|ARRJ, WPL|ARR|. WPLSIARR1. WPLEIARRI. VPIARR). TPIARR). SPIARR). TJVIIO+Ц. EPSLIARR). OK|ARRL QC|ARR|, MK[ARR|, MPZ|ARRJ. MPRED|ARR|, ZE[2+I|, ULE|6+IJ, IMBE, IMVE, MPBE, MPVE|6+1|, WSPIARRI, MPLE|6+l). MPRE|ARR|. KPDIC|ARR|. KPDLE, NE, NM|ARR|. NM1. VUEIARRJ, SZE|ARRL SUEIARRI. SREIARR). KPDSUMIARR). TR?(ARRI. TUEIARR). TZE[ARRJ. KPDtr. MPRESIARR). TEIARR). LAMDE[ARRJ, TSUME[ARR|, TSPE[ARR], ALSR, AND, FE, H, Lev, HXC, WPLSUM=0., WU[ARR}, WSUM=0.. PR, PC. ОТ. GTC, FT. E, A1H, QKT, DP, ANP(ARR), WSPS=0. DH, DK DB. AM2, UTC. EP, AMI, P. GCV. KPDH. WUS=0. LU: typedef char * string;

string B,KJJP,KKHIOi,KV.lDi,iD2.1D3,lD4,lD5,lD6; char BE|W»|»"":

int ZB.ZK, LKMAX.NL, NU; int TEST_FLAG_TRUE=0; ofstream Гош: #dcflne COUT foul #defme _getch() ofstream mead te. const int MaxBuf=10O0; ] I stream wod;

int flag parametr is absent^):

int flagwodfrom kbd=0; //1-е клавиатуры. 0 - из файла im lmt_wod( char * wodnamc); int GeilntParam( char * oaram name): double GetDoubleParam( char * paramnamc); void GetStnngParam( char * paramname, char * paramstnng); void ChanecPointToZpU char* fin. char* font): int main(int argc, char* argv[]) (

mead te ооегн' "mead te.prn". ios::outlios::tnincV. fout open( "fouttxt". ios::out|ios::trunc); tf( lmt_wod(',vvod_bu.txt")==0 ) return 0; int kbd=GetlntParam( "KJBD"): if( kbd!=0) flag wodfrom kbd= 1;

li = " «« Значения передаточных отношении и приведенных масс "»»"; КРР="— Коробка псослач —и:

КК = " ZB ZK Z2I Z22 Z23 Z24 Zll ZI2 Z13 ZI4 IMV2"; ZB = GctJntParam( "ZB"): ZK » GetlntParamt "ZK"):

Z2\l] = GetIntParam( "2211]"); ?2[2\ = GetintParam( "i^2l2J">; Z2I3) = Getlnu^arami "Z2W"): Z2|4| = GctlntPajrara( "Z2[4)"); Zl|lj = GctlntParaml "Zl|in; ZH2I = GetintParaml "Z1I2I"): ZI|3| = GctlntParam( "Zl|}j"): ZlJ4| = GctlntParam( "Zl|4|"); 1MV2 = GeUntPanimi "IMV2">: GctStringParam( "NAME", BE); Kii = " ZEl Zt2 IMBh 1MVE IMDE KPDLE AN NE EE"; ZE| 11 - GeUntParaml "ZEl ІҐ): ZE12J = GctlntParam( "ZEpj"); IMBE = GetDoubleParaml "IMBE"); IMVE * Geu>>ub!eParam< "IMVE"): IMDE = GetDoublcParam( "IMDE"); *LPDLE= CictDoublcParam( "KPDLE"); KPDH * GetDoubleParaml "KPDH"); AND = GctDoublcParam( "AND"); NE = GetDoublcParam( "NE"); FE = GetDoubleParaml "FE"): ID! -" LMAX H Lev HXC HC1"; LMAX= GctDoublePararo( "LMAX"); H - GetDoubleParaml HH"V. Lev »= GctDoiiblcParam( "Lev"); HXC = GctDoublcParam( "HXC"); НСЦ)* GetDoubleParaml "HCU)">: ID2 = " HC4 PR PC QT GTC; HC14)= GetDoublcParam( "HC14J"); PR - GetDoubleParaml "PR">: PC - GctDoublcParam( "PC"); QT = GctDmmlcParam< "QT"): GTC « GetDoubleParaml "GTC"): ID3 = * M FT E AIH QKT"; M - GctDoublcParanK "M"); FT = GetDoubleParaml' "FT"); E = GctDoublcParanK "E"); AIH = ОсШошзІсРагаїш; "AIH"): OKT « GetDoubleParaml "OKT): ID4 =" DH ГЖ DB LB UTC "; DH = GetDoubleParaml "DH"); DK = GetDoubleParaml "DK"): DB ? GetDoubleParam( "DB"); LB = GetDOTbleParam( "LB"); UTC = GetDoubleParaml "UTC"): ID6 =" P "; P * GeUJoublcParam( "P"); NU = GeUntParaml "NU"): LU = GetDoubleParam( "LU"); KV = ' «« END OF INPUT ««"; wod.closeO:

Щ flagjxiramctrisabscnt) return 0; // Расчет параметров кривой проходки и числа свечеподьемов за цикл // бурения скважины

GC V = Lev * QT;

LKMAX = int( LMAX / Lev);

NL - LKMAX+1:

int I, J, K, L, N = 0;

tor (N=1; N<=LKMAX; N-H-)

{

SINJ = int(I + LMAX / H * (I. - pow( (Lcv*N/LMAX) ,(1./M)) ));

}

SUM(lHSIl):

for (N=2; N<=LKMAX; N-и-) {

SUMfN] = SUMIN-1J + SIN J; >

SSUM = S|N|= SUM|LKMAX1; // Расчет чиста итггкпи тяте ного каната н отном слое навивки // на барабан

int LZ = іпц LB /(DK+O.002)); // Расчет оа дичсов слоев навивки каната на барабан

for (K=l; К<=4; К=К+1) {RB[Kj = (DB + DK +1.70 *(K-l)*DK)/2.;} // Расчет приведенного радиуса навивки каната на барабан

RBR ? (RBI i|+RBI2|+RB?3|) / 3: // Расчет передаточных отношении между ватами подъемного агрегата double UE, UB; UE - double(ZEI2l) / ZEI1J: UB = double?ZB) / ZK; for(J=i; K=4; J=J+1) <

U[J] = Z2[J]/Z1[JJ; ULEUJ = UE * U|J| • UB;

I

// Рассчет масс гюступательно движущихся и вращающихся элементов // (ЛІК. щрітедснвьгх к талевому блоку

МТС * GTC /9.81:

double rh = (DH+DK)/2.; МРН = А1Н * UTC ? (UTC+1.) * (2.*UTC+1.) / (6*rh*rh);

MPKI1] * (OKT*HCIll*UTC*((UTC+2)*(UTC+l.) + 3.*UTC*(HXC/HCIlH.)))/9.81: MPK|4J - (QKT*HC(4)*UTC*((UTC+2)*(UTC+1.) ? 3.*UTC*(HXC/HC14J-1.)))/9.8I;

MPKBl 1J = (QK,T*2*3.14* UTC*UTC *15*RB| 11)/9.81;

MPKBI4I - (OKT*2*3 14* UTC*UTC *LZ*(RBll]+RBI2]+RBl3]»/9.8l:

MPBE - DMBE • (UTC/RBR)*(UTC/RBR); MPV2 - IMV2 ? (UTC*UB/RBR)»(UTC*UB/RBR);

for (J=l: J<=4: J=J+D

{

MPVEjJJ = 1MVE * (UTC*UJJj*UB/RBR)*(UTC*UlJJ*UB/RBR); MPDEIJ) - IMDE * (UTC*ULEUI/RBRl*?UTC*ULEIJ}/RBR): MPLE?J] * MPBE + MPV2 + MPVE[J1 + MPDE[JJ;

>

COUT « endl: // Расчет нагрузки на крюке и КПД талевой системы LU = NU*Lcv;

double КРОО = КРОН *(l-oow(KPDH.UTO> /(UTC*(1-KPDH)V. for(N=l;N<=NL; N-H-)

{

if(N<=NU) OKINI ? OU*Lcv*N:

else QKINJ - QU*LU + (N-NU)*Lcv*OT; il(N=NL)QKlN|=0.; OCINI - (OKINI* ?l-PR/PC + FT) + GTC) /1000.:

double t - 1/KPD0 + (0.()4*(C4rV*(NI^iy+P4GTC))/(QKlN}+GTCH).04; KPDTQN| ? 1/t; MKIN| = OKIN)/9 81: KPDtr= KPDLE /0.97; KPDSUMINJ * KPDTCLNJ*KPDLE*KPDtr,

>

// Расчет скоростей подъема колонны бурильных труб MNOM - AND «?OOO* 30/ (3.14* NE); ММАХ - MNOM * FE: for(N=l;N<=NL;N++) {

for(K=l:K<»4:K++) {

J=5-K;

CVEIN1« RBR * 3.14 / UTC / ULE(J) / 30:

CQE[N] = UTC ? ULEfJl * KPDTC{N1 * KPDLE / RBR; double MCE = (QKJ.N1 + G1С) / CQE|N|;

if <(MCE-7500><=0> VUEIN) - (750. - MCE /150) * CVEINJ: else VUE|N|=(714.-0.3811* pow(2.718,(0.000479*MCE))) * CVEINJ; tf((L5»MNOM -MCfc)>=0.) break;

>

// Приведенная масса системы, т MPKEINJ = (MFK|l|+MPKiJll|*Ml»H+AirC-»-MK.|N|+MPLElJJ)/1000.; 1

// Расчет времени и пути в период замедления for(N=l;N<=NL; N++)

{

MPZfNI= (MTC+MKjNl+MPK[4|+MPHV1000.; // MPZ[N]= (M1C+MK|N|4MPBE+MPKB|4|+MPK|4J+MPH)/1000.; TZEINH VUE[NI* MPZ|NI/OC|NJ: SZEIN]= VUE[NJ* TZElNj/2;

>

// Расчет момента развиваемого двигателем в период разгона, скорости, //

// времени и пути движения талевого блока при подъеме на высоту свечи //

VPI1J-0.: ТР[1| = 0.; SPIIJ=0.;

WPLIII- О.:

WPLS[ll=0.;

for(N=l:N<=NL:N++) i

MMl=MMAX; for (1=1:1<=13:1++)

{

JV - int( pow(2.l)+l +0.01); double DV - 0 97* VUEIN) / JV: for(L=2: L<=JV:L++)

{

NMl ' 714. - 0.3811 * row(2.718.(0.0OO47v*MMAX>):

VP[LJ - VPfL-lJ + DV; NMJLJ = VP|LJ / CVEIN); if (NMfLl-NMKO.) MM2=MMAX: else

{

if(NMIL}-700.<0.)

MM2 - (log((714-NM[L])/0.3811)) / 0.000479; else MM2 = 150 * (750-NMIL1);

>

MM = (MM2+MMI) / 2; MM1=MM2;

double DT. PD=MM*COE(N1/1000.: if (PD-OC[N] X>)

{

DT - MPPxEIN] * DV /(PD-QC(N)v. // Энергозатраты на каждую итерацию

WPL|L| = ((((MM*3.14*((NM|L)-»-NMlL-lJ)/2))/3U)*DT)/3600.)/1000.;

WPLSIL) * WPLSfL-1] + WPLILJ:

TP[L}=TP|L-1|+DT; SP[L]=SPfL-iJ + ((VPfLJ-HVPiL-lJ) * DT)/2.; if (SPn/| - (E*Lcv-S7.ElNl)>=0 ) goto MET_26;

}

else goto MET_26; }

TRE[NJ= ТР[Ы1; SRElN|=SP|L-lj; WPLE1NI=WPLS|L-1):

/?LIST 4*/ goto MET_28;

MET 26: 1REINJ = TPIL-1J; SREINI - SP1L-I1: WPLE[Nl=WPLSfL-l]; MET_28: TJVH1* IKE(NI; tf (1=1) eoioMET 260: EPSLINJ = TJVfn -TJVfI-1}; it (hPSL|N| <= 0.0І) goto Mfci_237; MKT 2ЫУ. : \ MET_237: NJV[N| = JV;

// Расчет пути и времени установившегося движения for (N=1: N<=NL: N++)

{

SUEINJ = Lev * E - SZEIN1 - SREINJ; TUEINl-SUEINI/VUEIN):

}

If Расчет машинного времени и степени неполноты тахограммы подъема / // колонны бурильных трлб на длину свечи и за никл буосния скважины/* double SLAMD = О.; for(N=l;N<=NL; N++) { TEINI • TRE|N) + TUEIN) + TZE[N); LAMDEIN] = TE|N) * VUE[N] / Lev IE;

II LAM?EINJ m 1+ 6»VUE(N1*VUE|NJ / Lev,

SLAMD - SLAMD + LAMDEIN) * SINJ: TSUME[N] =• TE|N| * S[N| / 3600.; if ((N-1)>0> TSPEtNJ = TSPE|N-1J + TSUMEINJ; else TSPE?I-TSUMEII): // Методика А пакова

CAv|NJ = (TE|N|/(E*VUE|NJ)HLcv/(VUElNl*VUElNJ)); double TLAMBIARRJ. TLSUMIARR): TLAMBfN] - E • Lev • LAMDEfNJ / VUE[NJ; TLSUM|N| - TLAMB|N|*S|N|/3600; // TLSUMIN)-TEIN]*SINI/3600:

TLAMS - TLAMS + TLSUMfN];

}

// Расчет среднего значения степени неполноты тахограммы подъема // за цикл бурения скважины

ALSR - SLAMD / 2. / SiNL|;

// Расчет энергозатрат for(N=l;N<=NL; N++)

{

ANPIN1 * WPLEIN|/fTREIN!/3600.V.

WPLSUM - WPLSUM+WPLEfN]; WUIN] = (05РК1Н]»УиЕ^]*ТиЕ^]/3600)/КРО5иМ^]; WUS - WUS + WU1NI:

W1N| = WPLEIN1 + WUjN];

W_SUM|N1 = WINJ*S|N|;

WSPIN) - WPLEINI + WUIN1:

WSPS - WSPS + WSPIN}; >

for (N=1: N<=LKMAX: N+-H

{

WSUM - WSUM + W_SUMINJ; WPRS - WPRS + WPRINV. WPUS = VVPUS + WPUJNJ;

}

// Формирование заголовка таблипы

<< | >>
Источник: ЖАБАГИЕВ АСЛАН МУХАМЕДИЯРОВИЧ. РАЗРАБОТКА РАСЧЕТНЫХ МЕТОДОВ ОЦЕНКИ КАЧЕСТВА СПУСКО-ПОДЪЕМНОГО КОМПЛЕКСА БУРОВЫХ УСТАНОВОК / Диссертация. 2002

Еще по теме Программы расчета энергозатрат и затрат машинного времени при спус-ко-подъемных операциях за цикл проводки скважины, на примере спуско-подъемного комплекса (СИК) буровых установок различных типов:

  1. 2.6. Анализ затрат машинного времени и энергозатрат при подъеме бурильной колонны в процессе проводки скважины буровыми установками с различными типами привода подъемного комплекса
  2. Вывод результатов расчета энергозатрат и затрат машинного времени буровых установок различных типов
  3. 2.5.2. Оценка затрат машинного времени и энергозатрат при подъеме бурильной колонны за цикл проводки скважины буровой установкой БУ 2500-ДГУ
  4. 2. Методика расчета энергетических затрат и затрат машинного времени при сиуско-иодьемных операциях за цикл бурения скважины
  5. ЖАБАГИЕВ АСЛАН МУХАМЕДИЯРОВИЧ. РАЗРАБОТКА РАСЧЕТНЫХ МЕТОДОВ ОЦЕНКИ КАЧЕСТВА СПУСКО-ПОДЪЕМНОГО КОМПЛЕКСА БУРОВЫХ УСТАНОВОК / Диссертация, 2002
  6. 2.5. Учет характеристик силового привода при расчете энергозатрат и затрат машинного времени при СПО
  7. Ввод исходных данных для расчета производительности буровых установок различного типа
  8. 2.6.2. Влияние максимальной скорости подъема незагруженного талевого блока при СПО на затраты машинного времени
  9. 2.5.3. Учет влияния характеристики оперативной пневматической муфты на затраты машинного времени при СПО.
  10. БЕЗОПАСНОСТЬ ТРУДА ПРИ ЭКСПЛУАТАЦИИ ЭНЕРГОСИЛОВОГО И ПОДЪЕМНО-ТРАНСПОРТНОГО ОБОРУДОВАНИЯ
  11. 2.6.5. Влияние типа привода буровой установки на энергетические затраты при СПО
  12. Программа расчета долговечности зубчатой передачи планетарной КПП буровой установки БУ 2500-ЭПБМ1
  13. Пример 10.7 УМЕНЬШЕНИЕ ВЛИЯНИЯ ОЦЕНОЧНЫХ УСТАНОВОК ПРИ ОЦЕНКЕ РАБОТЫ: «ПЕРЕТАСОВАННЫЕ» ХАРАКТЕРИСТИКИ ШКАЛЫ
  14. 1.4. Показатели транспортабельности и монтажепригодности буровых установок
  15. 1.2. Состояние проблемы оценки качества буровых установок
  16. 1.1. Технический уровень современных буровых установок, выпускаемых в Российской Федерации
  17. 2.1 Способ определения реологических характеристик бурового раствора в бурящейся скважине
  18. ПРИЛОЖЕНИЕ 4 ЦЕЛЕВЫЕ ФУНКЦИИ СНИЖЕНИЯ ЭНЕРГЕТИЧЕСКИХ ЗАТРАТ ДЛЯ РАЗЛИЧНЫХ РЕЖИМОВ РАБОТЫ УСТАНОВКИ ПРИ ИСПОЛЬЗОВАНИИ ОПТИМАЛЬНЫХ ЗНАЧЕНИЙ УПРАВЛЯЮЩИХ ПАРАМЕТРОВ
  19. 4.1 Промысловые испытания способа определения реологических харак- теристик бурового раствора в бурящейся скважине.