Программы расчета энергозатрат и затрат машинного времени при спус-ко-подъемных операциях за цикл проводки скважины, на примере спуско-подъемного комплекса (СИК) буровых установок различных типов
^include
/*
Программа расчета энергозатрат и затрат машинного времени при спуско-подъемиых операциях за цикл проводки скважины, на примере спуско-полъемного комплекса (СГТК) буровой установки БУ 2500-ЛГУ
*/ /*
Расчет машинного времени с<ушествляется поэтапно:
- исходя из характеристики силового привода, приведенных масс системы в веса бурильной колонны рассчитываются элементы тахограммы подъема каждой свечи (период разгона, период замедления и период установившегося движения) и ее время подъема:
• исходя из параметров кривой проходки рассчитывается количество подъемов каждой свечи за цикл проводки скважины;
- исходя из времени подъема каждой свечи и количества ее подъемов, рассчитывается суммарное машинное время подъема за цикл проводки скважины.
»/
const int ARR=132000: /// 66000: int SIARRI, SUM{ARR|, NJVIARRJ;
double M. 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.
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. 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; if double t - 1/KJPDO + (0.04*(GC V*(NL-l)+P+ }
// Расчет скоростей подъема колонны бурильных труб
/*
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. 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 « 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)< COUT « "MPZIOJ = "< COUT « "TREfOj - "«sctJosIlagsl?os^Icttiiosiifixcd^setwiX^'sctprcasionliK-^IKhlNI
« " - время разгона незагруженного элеватора, с: и<< cndl: COUT « TUE|0J = "< COUT«"NJVI01 « "«setiosflaesrkwrrlen) «serivT4K COUT « cndl « " «« Машинное время подъема КБТ за цикл бурения скважины »» " « endl: COUT «endl;
COUT « "SSUM = "« SSUM «
H - СУММ. кол. свече подъемов колонны за цикл бурения скважины: " « endl; ?UT< 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; i 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( 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
^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 = doublc )
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 ^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;
}
// Формирование заголовка таблипы
Еще по теме Программы расчета энергозатрат и затрат машинного времени при спус-ко-подъемных операциях за цикл проводки скважины, на примере спуско-подъемного комплекса (СИК) буровых установок различных типов:
- 2.6. Анализ затрат машинного времени и энергозатрат при подъеме бурильной колонны в процессе проводки скважины буровыми установками с различными типами привода подъемного комплекса
- Вывод результатов расчета энергозатрат и затрат машинного времени буровых установок различных типов
- 2.5.2. Оценка затрат машинного времени и энергозатрат при подъеме бурильной колонны за цикл проводки скважины буровой установкой БУ 2500-ДГУ
- 2. Методика расчета энергетических затрат и затрат машинного времени при сиуско-иодьемных операциях за цикл бурения скважины
- ЖАБАГИЕВ АСЛАН МУХАМЕДИЯРОВИЧ. РАЗРАБОТКА РАСЧЕТНЫХ МЕТОДОВ ОЦЕНКИ КАЧЕСТВА СПУСКО-ПОДЪЕМНОГО КОМПЛЕКСА БУРОВЫХ УСТАНОВОК / Диссертация, 2002
- 2.5. Учет характеристик силового привода при расчете энергозатрат и затрат машинного времени при СПО
- Ввод исходных данных для расчета производительности буровых установок различного типа
- 2.6.2. Влияние максимальной скорости подъема незагруженного талевого блока при СПО на затраты машинного времени
- 2.5.3. Учет влияния характеристики оперативной пневматической муфты на затраты машинного времени при СПО.
- БЕЗОПАСНОСТЬ ТРУДА ПРИ ЭКСПЛУАТАЦИИ ЭНЕРГОСИЛОВОГО И ПОДЪЕМНО-ТРАНСПОРТНОГО ОБОРУДОВАНИЯ
- 2.6.5. Влияние типа привода буровой установки на энергетические затраты при СПО
- Программа расчета долговечности зубчатой передачи планетарной КПП буровой установки БУ 2500-ЭПБМ1
- Пример 10.7 УМЕНЬШЕНИЕ ВЛИЯНИЯ ОЦЕНОЧНЫХ УСТАНОВОК ПРИ ОЦЕНКЕ РАБОТЫ: «ПЕРЕТАСОВАННЫЕ» ХАРАКТЕРИСТИКИ ШКАЛЫ
- 1.4. Показатели транспортабельности и монтажепригодности буровых установок
- 1.2. Состояние проблемы оценки качества буровых установок
- 1.1. Технический уровень современных буровых установок, выпускаемых в Российской Федерации
- 2.1 Способ определения реологических характеристик бурового раствора в бурящейся скважине
- ПРИЛОЖЕНИЕ 4 ЦЕЛЕВЫЕ ФУНКЦИИ СНИЖЕНИЯ ЭНЕРГЕТИЧЕСКИХ ЗАТРАТ ДЛЯ РАЗЛИЧНЫХ РЕЖИМОВ РАБОТЫ УСТАНОВКИ ПРИ ИСПОЛЬЗОВАНИИ ОПТИМАЛЬНЫХ ЗНАЧЕНИЙ УПРАВЛЯЮЩИХ ПАРАМЕТРОВ
- 4.1 Промысловые испытания способа определения реологических харак- теристик бурового раствора в бурящейся скважине.