📄 cybform.~pas
字号:
unit cybform;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
Tcybcircumstance = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
xuhao: TEdit;
xinghao: TEdit;
sccj: TEdit;
zdzh: TEdit;
zdnj: TEdit;
ylqb: TEdit;
ylhb: TEdit;
lgcd: TEdit;
qbbj: TComboBox;
chongcheng: TComboBox;
Label13: TLabel;
Label14: TLabel;
Label15: TLabel;
Label16: TLabel;
Label17: TLabel;
Label18: TLabel;
Label19: TLabel;
Label20: TLabel;
Label21: TLabel;
yiji: TEdit;
erji: TEdit;
sanji: TEdit;
siji: TEdit;
wuji: TEdit;
chongci: TComboBox;
xyyl: TEdit;
Button1: TButton;
Label23: TLabel;
Label22: TLabel;
Label24: TLabel;
Label25: TLabel;
Label26: TLabel;
Label27: TLabel;
Label28: TLabel;
bengxing: TEdit;
lgwj: TEdit;
ccfw: TEdit;
llpl: TEdit;
lwzj: TEdit;
Label29: TLabel;
bdzj: TEdit;
ydjbj: TEdit;
xdmxc: TEdit;
yhkd: TEdit;
fqzj: TEdit;
ccff: TEdit;
yhsd: TEdit;
Label30: TLabel;
Label31: TLabel;
Label32: TLabel;
Label33: TLabel;
Label34: TLabel;
Label35: TLabel;
Label36: TLabel;
Label37: TLabel;
Label39: TLabel;
Memo1: TMemo;
pmax: TEdit;
pmin: TEdit;
Label38: TLabel;
Label40: TLabel;
Label41: TLabel;
Label42: TLabel;
wl: TEdit;
Edit4: TEdit;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
type
arr=array[1..3]of real;
arr1=array [1..12]of string[7];
arr2=array[1..12]of real;
arr3=array [1..5]of real;
bengcanshu=record
zhijing:real;
ljygwj:string;
zsccfw:string;
llpl:string;
lwzj:real;
end;
const
bengxiao=0.8;
pi=3.14159;
g=9.8;
temporary=44;
var
cybcircumstance: Tcybcircumstance;
bengcan:array[1..7]of bengcanshu;
ccfh:arr1; //阀球尺寸符号
fqzj1:arr2; //阀球直径
drt,ll:arr3; //you gan zhi jing
result1:arr;
scc,qcc:real;//冲程,排量
ncc:real; //冲程
//i,j:integer;
x1,x2,x3,x4:real;//研合宽度,下段母线长度,圆倒角半径,研合深度
upconst,downconst:real;//上下冲程常量
hp:real; // 起点高度 有待确定
pmax,pmin:real;//最大最小载荷
wl:real; //液柱载荷
midu:real;//液柱密度 有待确定
bj:real;//泵径 有待确定
l:real;//泵下如深度 有待确定
function bengjing(s:real;n:real;q:real):real;
function fqzhijing(dp:real):real;
procedure fqcanshu(df:real);
procedure chouyougan;
function chosepump(d:real):real;
implementation
uses majform,wnform;
{$R *.dfm}
//ccfh[1]:='v11-125';
function bengjing(s:real;n:real;q:real):real;//求泵径
begin
bengjing:=round(sqrt((4*q)/(1440*pi*s*n*bengxiao))*100)/100;
//!!! 单位:q:mm^3/s, s:m, n:/1s;
end;
function fqzhijing(dp:real):real; //球阀球直径
begin
fqzhijing:=round(0.7*dp-3.6);
end;
procedure fqcanshu(df:real);
var
i,m:integer; t,s:real;
begin
t:=abs(df-fqzj1[1]);
for i:=2 to 12 do
begin
s:=abs(fqzj1[i]-df);
if s<t then
begin t:=s; m:=i; end;
end;
cybcircumstance.ccff.Text:=ccfh[m];
cybcircumstance.fqzj.Text:=floattostr(fqzj1[m]);
if df<25 then
begin
x1:=0.8;x2:=0.5;x3:=0.5;
end
else
if(df<50) and (df>25) then
begin
x1:=1.6;x2:=1.0;x3:=1.0;
end
else
begin
x1:=2.4;x2:=1.5;x3:=1.5;
end ;
x4:=round(0.5*(df-sqrt(sqr(df)-sqr(x1)))*100000)/100000;
cybcircumstance.yhkd.Text:=floattostr(x1);
cybcircumstance.xdmxc.Text:=floattostr(x2);
cybcircumstance.ydjbj.Text:=floattostr(x3);
cybcircumstance.yhsd.Text:=floattostr(x4);
end;
function chosepump(d:real):real;
var
i,m:integer;
t,s:real;
begin
with bengcan[1] do
begin
t:=abs(zhijing-d);
end;
for i:=2 to 7 do
begin
s:=0;
with bengcan[i] do
begin
s:=abs(zhijing-d);
end;
if s<t then
begin
t:=s; m:=i;
end;
end;
with bengcan[m] do
begin
cybcircumstance.bengxing.Text:='整体是泵';
cybcircumstance.bdzj.Text:=floattostr(zhijing);
chosepump:=zhijing;
cybcircumstance.lgwj.Text:=ljygwj;
cybcircumstance.ccfw.Text:=zsccfw;
cybcircumstance.llpl.Text:=llpl;
cybcircumstance.lwzj.Text:=floattostr(lwzj);
end;
end;
procedure chouyougan;
label hint1; label hint2; label hint3;
var
i,j:integer;
t1,t2,t3,t4:real;//guo du bian liang
drconst,wl0:real;
fp,fr,fo:real;//活塞,抽油杆,阀空截面积
hvar:real;
h1:real;//末点高度
h0:real;//起点高度
have,tave,ndave:real;
t,niadu:real;
dpmax,dpmin,dwr,diru,dfu,dwr1,dird,dfd:real;
frl,frt,fv:real; //三种摩擦力
fllxs:real;//阀流量系数
ylmax,ylmin,yla,ylc,xyyl:real; //应力
wl:real;
begin
drconst:=22/1000;
fp:=pi*bj*bj/4; //泵径有待确定 单位m^2
fr:=pi*drconst*drconst/4; // 单位m^2
wl0:=midu*(fp-fr)*g*l;
h0:=hp;h1:=0;
fllxs:=0.2; //有待另外确定
fo:=pi*sqr(cybform.fqzhijing(bj*1000)/1000)/4;
t1:=midu*fp*fp*sqr(strtofloat(cybcircumstance.chongcheng.Text))*
sqr(strtofloat(cybcircumstance.chongci.Text)); //密度有待确定
t2:=729*fllxs*fllxs*fo*fo;
fv:=t1/(3600*t2);
hint1:
pmax:=wl0+1717;
pmin:=-1717-fv;
hvar:=1; j:=1;
hint2: ll[j]:=0;
drconst:=drt[j]/1000;
if drconst=0 then
exit;
hint3: h1:=h0+hvar;
if h1>l then
hvar:=l-h0;
h1:=h0+hvar;
have:=h0+hvar/2;
t:=wnform.wendu(have);
wnform.nihe(strtoint(wndata.nhcs.Text),wnform.result);
niadu:=wnform.outputresult(strtoint(wndata.nhcs.Text),wnform.result,t);
//静载荷
fr:=pi*drconst*drconst/4;
dwr:=midu*g*hvar*(fp-fr)+7.86*(1e+3)*g*fr*hvar; //wr+wl
dwr1:=7.86*(1e+3)*g*fr*hvar-midu*g*hvar*fr;
//惯性载荷
diru:=(dwr*strtofloat(cybcircumstance.chongcheng.Text)*
sqr(strtofloat(cybcircumstance.chongci.Text))*(1+0.23))/1790; //0.23是待定系数
dird:=(dwr*strtofloat(cybcircumstance.chongcheng.Text)*
sqr(strtofloat(cybcircumstance.chongci.Text))*(1-0.23))/1790;
//摩擦载荷
t1:=127/(drconst*1000); // 油管内径/抽油杆直径
frl:=2*pi*(niadu/midu)*hvar*((t1*t1-1)/((t1*t1+1)*ln(t1*t1)-(t1*t1-1)))*
(pi*strtofloat(cybcircumstance.chongcheng.Text)*
strtofloat(cybcircumstance.chongci.Text))/60;
frt:=frl/1.3;
dfu:=0.015*7.86*(1e+3)*g*fr*hvar+frt;
dfd:=0.015*7.86*(1e+3)*g*fr*hvar-frl;
//pmax,pmin
dpmax:=dwr+diru+dfu;
dpmin:=dwr1-dird-dfd;
pmax:=pmax+dpmax;
pmin:=pmin+dpmin;
ylmax:=pmax/fr;
ylmin:=pmin/fr;
yla:=(ylmax-ylmin)/2 ;
ylc:=round(sqrt(yla*ylmax)/(1e+6));
xyyl:=strtofloat(cybcircumstance.xyyl.Text);
if ylc>xyyl then
begin
ll[j]:=h1-hp;
j:=j+1;
pmax:=pmax-dpmax;
pmin:=pmin-dpmin;
goto hint2;
end;
ll[j]:=l;
if h1<l then
begin
h0:=h1;
goto hint3;
end;
for i:=j downto 1 do
ll[i]:=ll[i]-ll[i-1];
for i:=1 to j do
begin
t3:=t3+midu*g*pi*drt[i]*drt[i]*ll[i]/(1e+6);
end;
wl:=t;
if (wl-wl0)>1 then
begin
wl0:=(wl+wl0)/2;
goto hint1;
end ;
for i:=1 to j do
cybcircumstance.Memo1.Lines.Add(' '+floattostr(drt[i])+' : '+floattostr(round(ll[i])));
cybcircumstance.pmax.Text:=floattostr(round(pmax*100)/100);
cybcircumstance.pmin.Text:=floattostr(round(pmin*100)/100);
cybcircumstance.wl.Text:=floattostr(round(wl0*100)/100);
end;
procedure Tcybcircumstance.Button1Click(Sender: TObject);
var
t1,t2,t3,pump:real;
begin
qcc:=strtofloat(major.qo.text)/(60*60*24);
scc:=strtofloat(chongcheng.Text);
ncc:=strtofloat(chongci.Text)/60;
//dr.Text:=floattostr(round(bengjing(scc,ncc,qcc)*10000));
midu:=strtofloat(major.tjhsl.Text)*strtofloat(major.yymd.Text)+
(1-strtofloat(major.tjhsl.Text))*strtofloat(major.dcsmd.Text);
t1:=strtofloat(chongcheng.Text);
t2:=strtofloat(chongci.Text)/60;
t3:=strtofloat(major.Qo.Text)*(1e+9)/(24*60*60);
bj:=cybform.bengjing(t1,t2,t3)/1000;
pump:=chosepump(bj*1000);fqcanshu(fqzhijing(pump));
//cybcircumstance.Dr.Text:=floattostr(bj);
hp:=strtofloat(major.Hp.Text);
l:=strtofloat(major.ycsd.Text)-hp;
chouyougan;
end;
procedure Tcybcircumstance.FormCreate(Sender: TObject);
begin
//给抽油杆数组复制
drt[1]:=strtofloat(cybcircumstance.yiji.Text);
drt[2]:=strtofloat(cybcircumstance.erji.Text);
drt[3]:=strtofloat(cybcircumstance.sanji.Text);
drt[4]:=strtofloat(cybcircumstance.siji.Text);
drt[5]:=strtofloat(cybcircumstance.wuji.Text);
//下面付值标准阀球尺寸符号
ccfh[1]:='v11-125';ccfh[2]:='v11-125';ccfh[3]:='v11-125';ccfh[4]:='v11-125';
ccfh[5]:='v11-125';ccfh[6]:='v11-125';ccfh[7]:='v11-125';ccfh[8]:='v11-125';
ccfh[9]:='v11-125';ccfh[10]:='v11-125';ccfh[11]:='v11-125';ccfh[12]:='v11-125';
//下面付值标准阀球直径
fqzj1[1]:=19.050; fqzj1[2]:= 23.813; fqzj1[3]:= 28.575; fqzj1[4]:= 31.750;
fqzj1[5]:= 34.925; fqzj1[6]:= 38.100; fqzj1[7]:= 42.683; fqzj1[8]:= 50.800;
fqzj1[9]:= 57.150; fqzj1[10]:= 63.500; fqzj1[11]:= 69.850; fqzj1[12]:= 76.200;
// 下面付值整体式泵参数
with bengcan[1] do
begin
zhijing:=32;
ljygwj:='60.3,73.0';
zsccfw:='0.6-6';
llpl:= '7-69';
lwzj:= 23.813;
end;
with bengcan[2] do
begin
zhijing:=38;
ljygwj:= '60.3,73.0';
zsccfw:='0.6-6';
llpl:='10-112';
lwzj:=26.988;
end;
with bengcan[3] do
begin
zhijing:=44;
ljygwj:='60.3,73.0';
zsccfw:='0.6-6';
llpl:='14-138';
lwzj:=26.988;
end;
with bengcan[4] do
begin
zhijing:=57;
ljygwj:='73.0';
zsccfw:='0.6-6';
llpl:='22-220';
lwzj:=26.988;
end;
with bengcan[5] do
begin
zhijing:=70;
ljygwj:='88.9';
zsccfw:='0.6-6';
llpl:='33-328';
lwzj:=30.163;
end;
with bengcan[6] do
begin
zhijing:=83;
ljygwj:='101.6';
zsccfw:='1.2-6';
llpl:='93-467';
lwzj:=30.163;
end;
with bengcan[7] do
begin
zhijing:=95;
ljygwj:='114.3';
zsccfw:='1.2-6';
llpl:='122-613';
lwzj:=34.915;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -