4297
.pdf31
F2,F3,F4: TextFile; i1:LongInt;
begin if Chart1.Visible=True then Begin if flag2=true then Form1.Caption:='
gamma1='+FloatToStr(opt_gamma1*180/pi) +' град '+ 'a1='+FloatToStr(opt_a1)+' м '+ 'b1='+FloatToStr(opt_b1)+ ' м ';
if key='1' then SeriesChange(1,'Зависимость давления (Па) от времени');
if key='2' then SeriesChange(2,'Зависимость угла фи (град) от времени');
if key='3' then SeriesChange(3,'Зависимость скорости штока (м/с) от времени');
if key='4' then SeriesChange(4,'Зависимость коэффициента Кр от времени');
if (key='g') or (key='G') then Chart1.SaveToMetafile('chart.wmf'); if (key='t') or (key='T') then
Begin
if Series1.Active=true then Begin aaa1:=Series1.XValues; aaa2:=Series1.YValues; End;
if Series2.Active=true then Begin aaa1:=Series2.XValues; aaa2:=Series2.YValues; End;
if Series3.Active=true then Begin aaa1:=Series3.XValues; aaa2:=Series3.YValues; End;
if Series4.Active=true then Begin aaa1:=Series4.XValues; aaa2:=Series4.YValues; End;
{bbb1:=aaa1.Value[0];} AssignFile(F2,'datax.txt'); Rewrite(F2); AssignFile(F3,'datay.txt'); Rewrite(F3); AssignFile(F4,'dataxy.txt'); Rewrite(F4);
for i1:=0 to aaa1.count-1 do Begin bbb1:=aaa1.Value[i1];
bbb2:=aaa2.Value[i1]; Write(F2,FloatToStrF(bbb1,ffGeneral,9,18)+' '); Write(F3,FloatToStrF(bbb2,ffGeneral,9,18)+' '); Write(F4,FloatToStrF(bbb1,ffGeneral,9,18)+':'+
FloatToStrF(bbb2,ffGeneral,9,18)+' '); End;
CloseFile(F2);CloseFile(F3);CloseFile(F4);
End;
End;
if (key='0') and (Button1.Visible=False) then Begin Chart1.Visible:=not Chart1.Visible; Button2.Visible:=not Button2.Visible; Radiobutton1.Visible:=not Radiobutton1.Visible; Radiobutton2.Visible:=not Radiobutton2.Visible; End;
if (Flag2=True) and (key='+') then Begin Flag4:=False; Button2Click(Form1); End; {if (Flag2=True) and (key='-') then Begin Flag4:=True; Button2Click(Form1); End;}
if (flag2=true) and (key='0') then Begin Flag2:=false; Flag4:=False;
FormCreate(Form1);End;
if (Button1.Visible=True) and ((key='r') or (key='R')) then Begin AssignFile(f,'default.set'); Reset(f);
Read(f,q,a1,diam,ay,tn,b1,dtime,jc,m,l,mc,l1,kkr,gam
ma1,delta, fin,fik,time_ost,sn,sk,s_step,proc_time); EditFill; CloseFile(f); key:=#0; End;
if (Button1.Visible=True) and ((key='l') or (key='L')) then Begin AssignFile(f1,'save.set'); Reset(f1);
Read(f1,q,a1,diam,ay,tn,b1,dtime,jc,m,l,mc,l1,kkr,ga
mma1,delta, fin,fik,time_ost,sn,sk,s_step,proc_time); EditFill;
CloseFile(f1); key:=#0; End;
if (Button1.Visible=True) and ((key='s') or (key='S')) then
Begin AssignFile(f1,'save.set'); Rewrite(f1); Write(f1,q,a1,diam,ay,tn,b1,
dtime,jc,m,l,mc,l1,kkr,gamma1,delta,fin,fik,time_ost, sn,sk,s_step,proc_time);
CloseFile(f1); key:=#0; End; end; end.
32
Текст программы «Исследование динамики гидропривода кустореза с инер- ционно-рубящими рабочими органами»
float e=2.718, ay=0.00001569, Jm=0.2, Jel=0, Jpr=0, et0=0.95, etp=0.85, Kp=0.00005,
qn=0.000251, qm=0.000251, wn=160, mel=3, R=0.75, w[5000], wp_ud=0, chislit=0, Mc=0; int Fl=10, udar=0, T=-1, Tgasch=0, Tkorr=0; float wp_nom=1.96; int DN=0; ay=StrToFloat(Edit1->Text)*0.000001; Jm=StrToFloat(Edit2->Text); etp=StrToFloat(Edit3->Text); et0=StrToFloat(Edit4->Text); qn=StrToFloat(Edit5->Text)*0.000001; wn=StrToFloat(Edit6->Text); mel=StrToFloat(Edit7->Text); R=StrToFloat(Edit8->Text); Mc=StrToFloat(Edit9->Text); Kp=StrToFloat(Edit10->Text)*0.000001; ArUdar[0]=StrToInt(Edit11->Text); Jel=mel*pow(R,2);
Jpr=Jm+Jel; chislit=((2*Jpr*M_PI*et0*pow(ay,2))- (4*Kp*etp*qn*qm));
for (int i=0; i<5000; i++) w[i]=0; for (int t=0; t<2000; t++)
{ for (int y=0; y<30; y++) if (ArUdar[y]==t) udar=1;
T=T+1; w[t+Tkorr]=pow(e,(-
ay/(2*Kp)*(T*0.1)))*(sin(sqrt(chislit/(Jpr*M_PI*et0) )/(2*Kp)*(T*0.1))- cos(sqrt(chislit/(Jpr*M_PI*et0))/(2*Kp)*(T*0.1)))+2
;
if (Tgasch>0)
{ Tgasch=Tgasch+1;
if (wp_ud>w[t]) {Tkorr=Tkorr-Tgasch; Tgasch=0;}
}
if (udar==1)
{udar=0;
wp_ud=w[t]+Mc;
for (int k=0; k<T; k++)
{ if (wp_ud>wp_nom) {Tgasch=1; break;} if (w[t-T+k+Tkorr]>=wp_ud) {T=k; break;} if (k==t) T=0;
} } }
//Вывод графика Image1->Canvas->MoveTo(0,400);
StringGrid1->Cells[0][0]="t"; StringGrid1- >Cells[0][1]="w";
StringGrid1->Cells[0][2]="t"; StringGrid1- >Cells[0][3]="w";
for (int t=0; t<200; t++) {Image1->Canvas->LineTo(0+t*5,250-
w[t*5]*(wn/2));
//wn - уроевень угловой скорости на котором происходит стабилизация
}
//Заполнение таблицы for (int t=0; t<50; t++)
{if (t==25) DN=1; StringGrid1->Cells[t+1-DN*25][0+DN*2]=t*5; StringGrid1->Cells[t+1-
DN*25][1+DN*2]=w[t*10]*wn/2;
}}
void __fastcall TForm1::Button2Click(TObject *Sender)
{pBitmap0- >LoadFromFile("C:\\WINDOWS\\Рабочий стол\\Cpp_Leo\\grafik_01\\bmp\\Бел_экр.bmp"); Form1->Image1->Canvas->Draw(0,0,pBitmap0);
}
void __fastcall TForm1::Button3Click(TObject *Sender)
{Form1->Print();
}