📄 jcyhsj.cpp
字号:
//计算二级钢杆的刚度Kr,N
Kr = 1 / (H * Er);
//计算二级钢杆的等效固有频率No
No = (15 * sqrt(9.8 / (Er * Wr * 9.8))) / H;
//计算二级钢杆的固有频率No1
VV = 4978.4;
VV1 = sqrt((egang * 9.8 * F4) / (Q4 * 9.8)); //V1代表声音在玻璃钢抽油杆中的传播速度
VV2 = sqrt((egang * 9.8 * F3) / (Q3 * 9.8)); //V2代表声音在钢抽油杆中的传播速度
CC1 = 3.14 * VV * R1 / (2 * VV1);
CC2 = 3.14 * VV * (1 - R1) / (2 * VV2);
//函数调用
Fc=ggyplyz(F4, F3, F2, L3, egang, VV1, VV2, VV3, CC1, CC2, CC3);
No1 = No * Fc;
//计算二级钢杆在液体中的重量Wrf
Wrf = H * Wr * 9.8 * (1 - RUO / ruogang);
for(int K=1;K<=10;K++)
{
for(int i=1;i<=gcyjsl;i++)//i----不同型号的抽油机
{
for(int j=1;j<=5;j++)
{
if( gcyjxh[i] != scyjxh && scyjxh != "全部")
{
break;
}
for(int jj=1;jj<=5;jj++)
{
if( gchongci[i][j] * gchongcheng[i][jj] == 0)
{
break;
}
//计算考虑沉没压力以及井口回压后,作用在整个活塞截面积上的液柱载荷Fo
FO = 3.14 * pow((DD[K] / 2000),2) * (H * RUO * 9.8 - (pcmyl - pjingkou) * pow(10,6));
//计算无因次变量
M1 = FO / (gchongcheng[i][jj] * Kr);
if( M1 <= 0.5)
{
X1 = gchongci[i][j] / No;
X2 = gchongci[i][j] / No1;
M2 = Wrf / (gchongcheng[i][jj] * Kr);
//计算活塞冲程Sp Y1=Sp/S
Y1=jisuany1(M1, X2);
if( gygmd == 0)//未锚定
{
SP = Y1 * gchongcheng[i][jj] - FO / Kt;
}
else if( gygmd == 1)//锚定
{
SP = Y1 * gchongcheng[i][jj];
}
//计算泵排量PD 此处泵径DD(K)单位为厘米
PD = 0.1131 * SP * gchongci[i][j] * pow((DD[K] / 10),2);
//计算光杆最大载荷PPRL Y2=F1/SKr
Y2=jisuany2(M1, X1);
PPRL = Wrf + Y2 * gchongcheng[i][jj] * Kr;
//计算光杆最小载荷MPRL Y3=F2/SKr
Y3=jisuany3(M1, X1);
MPRL = Wrf - Y3 * gchongcheng[i][jj] * Kr;
//计算光杆功率PRHP Y4=F3/SKr
Y4=jisuany4(M1, X1);
PRHP = Y4 * gchongcheng[i][jj] * Kr * gchongcheng[i][jj] * gchongci[i][j] / 60000;
//计算曲柄最大扭矩PT Y5=2T/(S^2*Kr) Y6:峰值扭矩调整常数 Ta 的调整参数
Y5=jisuany5(M1, X1);
TA = 1;
PT = Y5 * gchongcheng[i][jj] * Kr * gchongcheng[i][jj] / 2 * TA;
//计算有效平衡值(平衡重量)CBE
CBE = 1.06 * (Wrf + FO / 2);
//强度校核
//计算第一级抽油杆的最大载荷PFL,最小载荷MFL,最大应力PFLY,最小应力MFLY
PFL = PPRL;
PFLY = PFL / F4;
MFL = MPRL;
MFLY = MFL / F4;
//计算第二级抽油杆(钢杆)的最大载荷PS1L,最小载荷MS1L,最大应力PS1LY,最小应力MS1LY
PS1L = L2 * Q3 * 9.8 * (1 - RUO / ruogang) + Y2 * gchongcheng[i][jj] * Kr;
MS1L = L2 * Q3 * 9.8 * (1 - RUO / ruogang) - Y3 * gchongcheng[i][jj] * Kr;
PS1LY = PS1L / F3;
MS1LY = MS1L / F3;
//抽油杆(钢杆)的最大许用应力FSmax,MPa
FMAX = SF * (bfff / 4 + 0.5625 * MFLY);
FSmax = SF * (bfff / 4 + 0.5625 * MS1LY);
//设计计算结果输出
if( PD > qsheji && PD < (qsheji * 1.1) && gchongci[i][j] <= (26100.0/H))
{
if( PFLY < FMAX)
{
if( (PPRL * 1.2 < gxdzdzh[i] * 10000) && (PT * 1.2 < gqbzdnj[i] * 1000))
{
sscyjxh[NNN]= gcyjxh[i];
sbj[NNN]= DD[K];
schongci[NNN]= gchongci[i][j];
schongcheng[NNN]= gchongcheng[i][jj];
zscc[NNN]= SP;
bpl[NNN]= PD;
LL1[NNN]= long(L1+0.5);
LL2[NNN]= long(L2+0.5);
zdyl2[NNN]= PS1LY;
zdyl1[NNN]= PFLY;
zhmax[NNN]= PPRL;
zhmin[NNN]= MPRL;
zdnj[NNN]= PT;
phzl[NNN]= CBE;
sdjgl[NNN]= PRHP;
fcj[NNN]= lfcj;
//计算优化目标函数EI(NNN)
EI1 = Y1 + PD / qsheji + 1.1574 * pow(10,(-5)) * qsheji * 9.8 * RUO * H / PRHP;
EI2 = PPRL / gxdzdzh[i] + PT / gqbzdnj[i];
EI[NNN]= EI1 / EI2;
NNN = NNN + 1;
}
}
}
}
}
}
}
}
}
if( NNN > 0)
{
if( NNN > 10)
{
paixu(EI, 0, NNN - 1);
MMM = 10;
}
else
{
MMM = NNN - 1;
for(int K=0;K<=MMM;K++)
{
xuhao[K] = K;
}
}
for(i=0;i<=MMM;i++)
{
if( sfdayin == 0)
{
sfdayin = 1;
title="";
title=title+"\t" + "$0" + "\t" + "[二级抽油杆机抽设计结果(API设计方法)]$0"+"\n";
try
{
f3.WriteString(title);
}
catch (CFileException exception3)
{
AfxMessageBox("Error reading file");
return;
}
title="";
title=title+"$7" + "\t" + " 泵径$7" + "\t" + " 冲次$7" + "\t" + " 冲程$7" + "\t" + " 泵排量$7" + "\t" + " [7/8寸钢杆]$5" + "\t" + "$6" + "\t" + " [1寸钢杆]$5" + "\t" + "$6" + "\t" + " 悬点最$7" + "\t" + " 悬点最$7" + "\t" + " 曲柄最$7" + "\t" + " 平衡$7" + "\t" + " 电机$7" + "\t" + " 防冲距$7"+"\n";
title1="";
title1=title1+"抽油机型号$3" + "\t" + "$3" + "\t" + "$3" + "\t" + "$3" + "\t" + "$3" + "\t" + "抽油杆长$7" + "\t" + "当量应力$7" + "\t" + "抽油杆长$7" + "\t" + "当量应力$7" + "\t" + " 大载荷$3" + "\t" + " 小载荷$3" + "\t" + " 大扭矩$3" + "\t" + " 重量$3" + "\t" + " 功率$3" + "\t" + "$3"+"\n";
title2="";
title2=title2+"$11" + "\t" + " (mm)$11" + "\t" + "(次/分)$11" + "\t" + " (m)$11" + "\t" + "(m^3/d)$11" + "\t" + " (m)$11" + "\t" + " (MPa)$11" + "\t" + " (m)$11" + "\t" + " (MPa)$11" + "\t" + " (KN)$11" + "\t" + " (KN)$11" + "\t" + "(KN·m)$11" + "\t" + " (KN)$11" + "\t" + " (Kw)$11" + "\t" + " (m)$11"+"\n";
try
{
f3.WriteString(title);
f3.WriteString(title1);
f3.WriteString(title2);
}
catch (CFileException exception3)
{
AfxMessageBox("Error reading file");
return;
}
}
G60 = G6;
gtiaojian = "是";
gcvt(sbj[xuhao[i]],100,Temp);
title=Temp;
gcvt(schongci[xuhao[i]],100,Temp);
title1=Temp;
gcvt(schongcheng[xuhao[i]],100,Temp);
title2=Temp;
// gcvt(zscc[xuhao[i]],100,Temp);
// title3=Temp;
gcvt(bpl[xuhao[i]],100,Temp);
title4=Temp;
G6=sscyjxh[xuhao[i]]+"\t"+title+"\t"+title1+"\t"+title2+"\t"+title4+"\t";
gcvt(LL2[xuhao[i]],100,Temp);
title=Temp;
gcvt(zdyl2[xuhao[i]],100,Temp);
title1=Temp;
G6=G6+title+"\t"+title1+"\t";
gcvt(LL1[xuhao[i]],100,Temp);
title=Temp;
gcvt(zdyl1[xuhao[i]],100,Temp);
title1=Temp;
G6=G6+title+"\t"+title1+"\t";
gcvt(zhmax[xuhao[i]],100,Temp);
title=Temp;
G6 = G6 + title+"\t";
gcvt(zhmin[xuhao[i]],100,Temp);
title=Temp;
G6 = G6 + title+"\t";
gcvt(zdnj[xuhao[i]],100,Temp);
title=Temp;
G6 = G6 + title+"\t";
gcvt(phzl[xuhao[i]] / 1000,100,Temp);
title=Temp;
G6 = G6 + title+"\t";
gcvt(sdjgl[xuhao[i]],100,Temp);
title=Temp;
G6 = G6 + title+"\t";
gcvt(fcj[xuhao[i]],100,Temp);
title=Temp;
G6 = G6 + title+"\n";
if( G60 != G6)
{
try
{
f3.WriteString(G6);
}
catch (CFileException exception3)
{
AfxMessageBox("Error reading file");
return;
}
}
}
}
if( sfdayin == 1)
{
G7=G7+"\n";
try
{
f3.WriteString(G7);
}
catch (CFileException exception3)
{
AfxMessageBox("Error reading file");
return;
}
}
// G循环次数 = G循环次数 + 1;
// 主窗口.SSPanel1.FloodPercent = G循环次数 / Max * 100
//三级钢杆柱机抽系统设计程序
sfdayin = 0;
L1 = 0;
L2 = 0;
L3 = 0;
NNN = 0;
//函数调用
cshsz();
for(R1=0.1;R1<=0.7;R1=R1+0.05)//R1代表第一级抽油杆在整个杆串中所占的百分比,级数由上到下为1,2,3...级
{
//G循环次数 = G循环次数 + 1;
//主窗口.SSPanel1.FloodPercent = G循环次数 / Max * 100
//估算每一级抽油杆的长度,L1,L2,L3...分别代表第1,2,3...级抽油杆长度
L1 = H * R1;
for(double R2=0.1;R2<=0.7;R2=R2+0.05)
{
L2 = (H - long(L1+0.5)) * R2;
L3 = H - L1 - long(L2+0.5);
//计算三级钢杆的线密度Wr,kg/m
Wr = ((L1 * Q4) + (L2 * Q3) + (L3 * Q2)) / H;
//计算油管的刚度Kt,N/m E油管--油管的弹性模量 F油管--油管的横截面积
Kt = (fyouguan * eyouguan) / H;
//计算三级钢杆的弹性常数Er:单位--m/N.m
Er = ((L1 / (egang * F4) + L2 / (egang * F3) + L3 / (egang * F2))) / H;
//计算三级钢杆的刚度Kr,N/m
Kr = 1 / (H * Er);
//计算混合抽油杆杆柱的等效固有频率No
No = (15 * sqrt(9.8 / (Er * Wr * 9.8))) / H;
//计算三级钢杆的固有频率No1
VV = 4978.4;
VV1 = sqrt((egang * 9.8 * F4) / (Q4 * 9.8)); //V1代表声音在玻璃钢抽油杆中的传播速度
VV2 = sqrt((egang * 9.8 * F3) / (Q3 * 9.8)); //V2,V3代表声音在钢抽油杆中的传播速度
VV3 = sqrt((egang * 9.8 * F2) / (Q2 * 9.8));
CC1 = 3.14 * VV * (L1 / H) / (2 * VV1);
CC2 = 3.14 * VV * (L2 / H) / (2 * VV2);
CC3 = 3.14 * VV * (L3 / H) / (2 * VV3);
//函数调用
Fc=ggyplyz(F4, F3, F2, L3, egang, VV1, VV2, VV3, CC1, CC2, CC3);
No1 = No * Fc;
//计算三级钢杆在液体中的重量Wrf
Wrf = H * Wr * 9.8 * (1 - RUO / ruogang);
for(int K=1;K<=10;K++)
{
for(int i=1;i<=gcyjsl;i++)//i----不同型号的抽油机
{
for(int j=1;j<=5;j++)
{
if( gcyjxh[i] != scyjxh && scyjxh != "全部")
{
break;
}
for(int jj=1;jj<=5;jj++)
{
if( gchongci[i][j] * gchongcheng[i][jj] == 0)
{
break;
}
//计算考虑沉没压力以及井口回压后,作用在整个活塞截面积上的液柱载荷Fo
FO = 3.14 * pow((DD[K] / 2000),2) * (H * RUO * 9.8 - (pcmyl - pjingkou) * pow(10,6));
//计算无因次变量
M1 = FO / (gchongcheng[i][jj] * Kr);
if( M1 <= 0.5)
{
X1 = gchongci[i][j] / No;
X2 = gchongci[i][j] / No1;
M2 = Wrf / (gchongcheng[i][jj] * Kr);
//计算活塞冲程Sp Y1=Sp/S
Y1=jisuany1(M1, X2);
if( gygmd == 0)//未锚定
{
SP = Y1 * gchongcheng[i][jj] - FO / Kt;
}
else if( gygmd == 1)//锚定
{
SP = Y1 * gchongcheng[i][jj];
}
//计算泵排量PD 此处泵径DD(K)单位为厘米
PD = 0.1131 * SP * gchongci[i][j] * pow((DD[K] / 10),2);
//计算光杆最大载荷PPRL Y2=F1/SKr
Y2=jisuany2(M1, X1);
PPRL = Wrf + Y2 * gchongcheng[i][jj] * Kr;
//计算光杆最小载荷MPRL Y3=F2/SKr
Y3=jisuany3(M1, X1);
MPRL = Wrf - Y3 * gchongcheng[i][jj] * Kr;
//计算光杆功率PRHP Y4=F3/SKr
Y4=jisuany4(M1, X1);
PRHP = Y4 * gchongcheng[i][jj] * Kr * gchongcheng[i][jj] * gchongci[i][j] / 60000;
//计算曲柄最大扭矩PT Y5=2T/(S^2*Kr) Y6:峰值扭矩调整常数 Ta 的调整参数
Y5=jisuany5(M1, X1);
TA = 1;
PT = Y5 * gchongcheng[i][jj] * Kr * gchongcheng[i][jj] / 2 * TA;
//计算有效平衡值(平衡重量)CBE
CBE = 1.06 * (Wrf + FO / 2);
//强度校核
//计算第一级抽油杆的最大载荷PFL,最小载荷MFL,最大应力PFLY,最小应力MFLY
PFL = PPRL;
PFLY = PFL / F4;
MFL = MPRL;
MFLY = MFL / F4;
//计算第二级抽油杆(钢杆)的最大载荷PS1L,最小载荷MS1L,最大应力PS1LY,最小应力MS1LY
PS1L = (L2 * Q3 + L3 * Q2) * 9.8 * (1 - RUO / ruogang) + Y2 * gchongcheng[i][jj] * Kr;
MS1L = (L2 * Q3 + L3 * Q2) * 9.8 * (1 - RUO / ruogang) - Y3 * gchongcheng[i][jj] * Kr;
PS1LY = PS1L / F3;
MS1LY = MS1L / F3;
//计算第三级抽油杆(钢杆)的最大载荷PS2L,最小载荷MS2L,最大应力PS2LY,最小应力MS2LY
PS2L = L3 * Q2 * 9.8 * (1 - RUO / ruogang) + Y2 * gchongcheng[i][jj] * Kr;
MS2L = L3 * Q2 * 9.8 * (1 - RUO / ruogang) - Y3 * gchongcheng[i][jj] * Kr;
PS2LY = PS2L / F2;
MS2LY = MS2L / F2;
//计算各级杆最大许用应力,第一级抽油杆的最大许用应力Fmax
//第二级抽油杆(钢杆)的最大许用应力FSmax1
//第三级抽油杆(钢杆)的最大许用应力FSmax2
FMAX = SF * (bfff / 4 + 0.5625 * MFLY);
FSmax1 = SF * (bfff / 4 + 0.5625 * MS1LY);
FSmax2 = SF * (bfff / 4 + 0.5625 * MS2LY);
//设计计算结果输出
if( PD > qsheji && PD < qsheji * 1.1 && gchongci[i][j] <= 26100 / H)
{
if( PFLY < FMAX)
{
if( PPRL * 1.2 < gxdzdzh[i] * 10000 && PT * 1.2 < gqbzdnj[i] * 1000)
{
sscyjxh[NNN]= gcyjxh[i];
sbj[NNN]= DD[K];
schongci[NNN]= gchongci[i][j];
schongcheng[NNN]= gchongcheng[i][jj];
zscc[NNN]= SP;
bpl[NNN]= PD;
LL1[NNN]= long(L1+0.5);
LL2[NNN]= long(L2+0.5);
LL3[NNN]= long(L3+0.5);
zdyl1[NNN]= PFLY;
zdyl2[NNN]= PS1LY;
zdyl3[NNN]= PS2LY;
zhmax[NNN]= PPRL;
zhmin[NNN]= MPRL;
zdnj[NNN]= PT;
phzl[NNN]= CBE;
sdjgl[NNN]= PRHP;
fcj[NNN]= lfcj;
//计算优化目标函数EI(NNN)
EI1 = Y1 + PD / qsheji + 1.1574 * pow(10,(-5)) * qsheji * 9.8 * RUO * H / PRHP;
EI2 = PPRL / gxdzdzh[i] + PT / gqbzdnj[i];
EI[NNN]= EI1 / EI2;
NNN = NNN + 1;
}
}
}
}
}
}
}
}
}
}
if( NNN > 0)
{
if( NNN > 10)
{
paixu(EI, 0, NNN - 1);
MMM = 10;
}
else
{
MMM = NNN - 1;
for(int K=0;K<=MMM;K++)
{
xuhao[K] = K;
}
}
for(i=0;i<=MMM;i++)
{
if( sfdayin == 0)
{
sfdayin = 1;
title="";
title=title+"\t" + "$0" + "\t" + "[三级抽油杆机抽设计结果(API设计方法)]$0"+"\n";
try
{
f3.WriteString(title);
}
catch (CFileException exception3)
{
AfxMessageBox("Error reading file");
return;
}
title="";
title=title+"$7" + "\t" + " 泵径$7" + "\t" + " 冲次$7" + "\t" + " 冲程$7" + "\t" + " 泵排量$7" + "\t" + " [3/4寸钢杆]$5" + "\t" + "$6" + "\t" + " [7/8寸钢杆]$5" + "\t" + "$6" + "\t" + " [1寸钢杆]$5" + "\t" + "$6" + "\t" + " 悬点最$7" + "\t" + " 悬点最$7" + "\t" + " 曲柄最$7" + "\t
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -