⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cybform.~pas

📁 随着我国经济的快速发展
💻 ~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 + -