Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

диссертация модальная логика

.pdf
Скачиваний:
17
Добавлен:
25.03.2016
Размер:
8.07 Mб
Скачать

-421 -

Приложение 2

#pragma hdrstop #include"Zlmm.h" #include"NY.h" #include"UKa.h" #mclude"podsh.h" #include"Upl.h" #include"Iisp.h" #include"lispl.h" #inc)ude"red.h" #incIude"USFlimb.h"

#pragma resource "*.dfm" TNY *NY;

//Files

FILE *tmp,*fxr,*fdO,*fqO; struct graf

{

float x,y;

};

// Определение Khb float K(float U)

{

float k,l,yb,xb,xk;FILE * f; struct graf g[6];

int i; f^fopen("khb.txt","r"); if(f==NULL)return 1; k=U*0.285/1.715; i=0;

while (!feof(f))

{

fscanf(f,"%f,&l);

g[i].x=l;

fscanf(f,"%f',&l);

g[i].y=I;

i++;

}

for (i=0;i<=4;i++)

{

-422-

ripHjio^eHHe 2

if((k>=g[i].x)&&(k<=g[i+l].x))

{

yb=g[i+l].y-g[i].y; xb=g[i+l].x-g[i].x; xk=k-g[i].x;

retura(g[i] .y+(yb *xk)/xb);

}

}

return 1;

}

float K1 (float U)

{

float k,I,yb,xb,xk;FILE * f; struct graf g[6];

int i; f=fopen("kfl?.txt","r"); if(f==NULL)remrn 1; k=U*0.285/1.715; i=0;

while (!feof(f))

{

fscanf(f,"%f',&l);

g[i].x=l;

fscanf(f,"%f',&l);

g[i].y=i;

i++;

}

for (i=0;i<=4;i++)

{

if((k>=g[i].x)&&(k<=g[i+l].x))

{

yb=g[i+l].y-g[i].y; xb=g[i+l].x-g[i].x; xk=k-g[i].x; return(g[i].y+(yb*xk)/xb);

}

}

return 1;

- 423 - Приложение 2

//

float module(float Mn)

{

float t,E,M;FILE * f; f=fopen("Mn.txt","r"); if(f^=NULL)

{

Application->MessageBox("File not found","File error",MB_OK); return 1;

}

E=1000;

while (!feof(f))

{

fscanf(f,"%f',&t); if(fabs(t-Mn)<E)

{

E=fabs(t-Mn);

M=t;

}

}

return M;

}

float diameter(fIoat De)

{

float t,E,M;FILE*f; f=fopen("De.txt","r"); if(f==NULL)

{

Application->MessageBox("File not found","File error",MB_OK); return 1;

}

E=10000;

while (!feof(f))

{

fscanf(f,"%f',&t); if(fabs(t-De)<E)

{

E=fabs(t-De);

M=t;

-424 -

Приложение 2

}

}

return М;

}

__fastcall TNY::TNY(TComponent* Owner) : TForm(Owner)

{

acad_directory="E:\\ACAD\\"; lsp_directory="E:\\USERS\\SVETA\\MAmrPA~l\\BACKUP\\"; ComboBox]->Items->Add("lJ,eMeHTHpoBaHHe"); ComboBoxl->Items->Add("HHTponeMeHTHpoBaHHe"); ComboBoxl->Items->Add("06beMHaH закалка + нормализация"); ComboBoxl->Items->Add("3aKaiiKa при нагреве ТВЧ"); ComboBox2->Items->Add("LI,eMeHTHpoBaHHe"); ComboBox2->Items->Add("HHTpoueMeHTHpoBaHHe");

ComboBox2->Items->Add("Oбъeмнaя закалка + нормализация"); ComboBox2->Items->Add("Зaкaлкa при нагреве ТВЧ"); ComboBox3->Items->Add("IloKOBKa,uiTaMnoBKa"); ComboBox3->Items->Add("npoKaT"); СотЬоВохЗ->Items->Add("Литье");

)

void _fastcall TNY::ButtonlClick(TObject *Sender)

{

char s[50]; Lh=NY->ELh->Text.ToDouble(); if(Lh==0)

{

Application->MessageBox("He введен один из параметров","",ШОК); return;

}

Н1 =NY->EH 1 ->Text.ToDoubie(); if(HI==0)

{

Application->MessageBox("He введен один из параметров","",ШОК); return;

}

H2=NY->EH2->Text.ToDouble(); if(H2==0)

-425 -

Приложение 2

{

Application->MessageBox("He введен один из параметров","",IDOK); return;

}

StToch=NY->EStToch->Text.ToDouble(); if(StToch==0)

{

Application->MessageBox("He введен один из параметров","",ГООК); return;

}

U=NY->EU->Text.ToDouble(); if(U==0)

{

Application->MessageBox("He введен один из параметров","",IDOK); return;

}

n 1 =NY->En->Text.ToDouble(); if(nl==0)

{

Application->MessageBox("He введен один из параметров","",ШОК); return;

}

T1-NY->ET 1->Text.ToDouble(); if(Tl==0)

{

Application->MessageBox("He введен один из параметров","",1D0K); return;

}

//Эквивалентное число циклов перемены напряжений zl: Nhel=60*nl*l*Lh;

Nhe2=Nhel/U;

T2=U*T1;

n2=nl/U;

Nfel=Nhel;

Nfe2=Nhe2;

if((Hl>56)||(H2>56))

{

Nhliml = i20e6;

Nhlim2=120e6;

}

- 426 -

Приложение 2

else

{

Nhliml=30*pow(Hl*10,2.4); Nhlim2=30*pow(H2* 10,2.4);

};

if(Nhe 1 <=Nhlim 1 )ZN 1 =(float)pow(Nhlim I /Nhe 1,0.17); elseZNl=(float)pow(Nhliml/Nhel,0.05); if(Nhe2<=Nhlim2)ZN2=(float)pow(Nhlim2/Nhe2,0.17); elseZN2=(float)pow(Nhlim2/Nlie2,0.05);

// YN1 =YN2= 1, т.к. Nfe>Nflim if(Hl<35)S_hliml=20*Hl+70; if(H2<35)S_hlim2=20*H2+70;

if((H 1 >35)&&(H 1 <50))S_hlim l=17*Hl+200; if((H2>35)&&(H2<50))S_hlim2=17*H2+200;

if(Hl>50)S_hlim]=23*Hl; if(H2>50)S_hlim2=23*H2; S_hpl=(S_hliml/Sh)*0.9*ZNl; S_hp2=(S_hlim2/Sh)*0.9*ZN2; S_hp=0.45*(S_hp 1 +S_hp2); Yn 1 =pow((Nflim/Nfe 1),(1 /6)); switch(ComboBox 1 ->ltemlndex)

{

case -1:

{

Application->MessageBox("He выбран тип материала","",ГООК);

return;

}

case 0:

{

FSFiimb->ImageI->Picture->LoadFromFile("tl.bmp"); FSFlimb->ShowModal();

break;

}

case 1:

{

FSFlimb->Imagel->Picture->LoadFromFile("t2.bmp"); FSFlimb->ShowModal();

break;

}

case 2:

-427-

Приложение 2

{

FSFlimb->Imagel->Picture->LoadFromFile("t3.bmp"); FSFlimb->ShowModal();

break;

}

caseS:

{

FSFIimb->Imagel->Picture->LoadFromFile("t4.bmp"); FSFlimb->ShowModal();

break;

}

};

if(FSFlimb->flag== 1 )retum; if((FSFlimb->Editl->Text.Length()==0)||(FSFlimb->Edit2->Text.Length()==0)||(FSFlimb->Edit3-

>Text.Length()==0)||(FSFlimb->Edit4->Text.Length()==0))

{

Application->MessageBox("HeBepHoe значение","МЕ88АОЕ",МВ_ОК); return;

}

S_flimb=FSFlimb->Editl->Text.ToDouble(); Yd=FSFlimb->Edit4->Text.ToDoubleO; Yg=FSFlimb->Edit3->Text.ToDouble(); Sf=FSFlimb->Edit2->Text.ToDouble(); if(ComboBox3->ltemlndex==-1)

{

Application->MessageBox("He выбран тип заготовки","МЕ88АОЕ",МВ_ОК); return;

}

S_фl=0.4*S_flimb*Ynl; //Внешний делительный диаметр

if((Hl<=35)&&(H2<=35)) Vh= 1.22+(0.21 *U); if((Hl >=45)&&(H2<=35)) Vh= 1.13+(0.13 *U); if((Hl>=45)&&(H2>=45)) Vh=0.81+(0.15*U); if(U<=6)K_hb=K(U);

elseK_hb=1.3;

ka: Del=1945*pow(TI*K_hb/(Vh*U*8_hp*S_hpX0.333333333333); De 1 =diameter(De 1);

temp=22-9*logl0(U)+(16/U-22)*sin(betta_n)*sin(betta_n)+(6.25-4*logl0(U))*(Del*Del/645); Z1 min=sqrt(fabs(temp));

sprintf(s,"%4.3f',Zlmm);

-428-

Приложение 2

FormZl->Label3->Caption=s; FormZl ->ShowModal(); if(FormZ 1 ->flag== 1 )goto z 1;

sscanf(FomiZl->zl->Text.c_str(),"%f',&Zl); if(Zl<Zlmin)

{

Application->MessageBox("Zl<Zmin","",IDOK); return;

}

Z2=U*Z1;

Z2=floorl(Z2); Zvl=Zl*sqrt(U*U+l)/(U*pow(cos(betta_n),3)); Zv2=Z2*sqrt(U*U+l)/(U*pow(cos(betta_n),3)); x=0; Yfsl=3.47+13.2/Zvl-29.7*x/Zvl+0.092*x*x*x; if((Hl<=35)&&(H2<=35)) Vf=0.94+(0.08*U); if((Hl>=45)&&(H2<=35)) Vf=0.85+(0.04*U); if((Hl>=45)&&(H2>=45)) Vf=0.65+(0.11 *U); K_fb=Kl(U);

//Модуль передачи

Me=20*pow(Tl*K_fb*Yfsl/(Kbe*Vf*Zl*Zl*sqrt(U*U+l)*S_fpl),0.3333333);

Mte=Del/Zl;

Mn=Mte*(l-0.5*Kbe)*cos(betta_n);

Mn=module(Mn);

Me=Mn/(l-0.5*Kbe);

Me=module(Me);

Mte=Mn/(( 1 -0.5 *Kbe)*cos(betta_n));

//Геометрические и кинематические параметры передачи

Zc=sqrt(Zl*Zl+Z2*Z2); R=Mn*Zc/(2*cos(betta_n)); Re=Mte*Zc/2; Mte=2*Re/Zc;

b=Kbe*Re;

Dell=atan(Zl/Z2);

Del2=PI/2-Dell;

X1 =2*( 1 - l/(U*U))*sqrt(pow(cos(betta_n),3)/Z 1);

-429-

Приложение 2

Х2=-Х1; if(U<2.5)Xrl=0;

else Xrl=0.11+0.01 *(U-2.5);

//Уточнение Xr

6a-=fopen("xr.txt","r+"); while(!feof(fxr))

{

fscanf(fxr;'%f/ofyoP/of%f\&finn,&xxrl,&dhf,&xxr2,&xxr3);

if(fmn==Mn)

{

Del_h:^dhf; xdl=fabs(xxrl-Xrl); xd2=fabs(xxr2-Xrl); xd3=fabs(xxr3-Xrl);

if((xd 1 <=xd2)&&(xd 1 <=xd3))Xr 1 =xxr 1; if((xd2<=xd 1 )&&(xd2<=xd3))Xr 1 =xxr2; if((xd3<=xdl)&&(xd3<=xd2))Xrl=xxr3; break;

}

}

if(feof(fxr))

{

АррИса11оп->Ме55а§еВох{"Коэффициент изменения расчетной толщины зуба шестерни не определен","ЕККОК",МВ_ОК);

return;

}

fclose(fxr); Xr2=-Xrl;

Hf1 =(h_a+C-X 1 )*Mn+Del_hf; HG=(h_a+C-X2)*Mn+Del_hf; Snl=(0.5*PI+2*Xl*tan(alfa_n)+Xr])*Mn; Sn2=PI*Mn-Snl;

// Определение DO fdO=fopen("fd0.txt";'r+"); while(!feof(fdO))

{

fscanf(fdO;'%f%P/oP/oP^P/of/of^&dmn_minДdmn_maxДdb_min,&db_max,&dr_min,&dr_max,&ddO);

-430- Приложение 2

if((Mn>=dmn_min)&&(Mn<=dmn_max)&&(b>=db_min)&&(b<=db_max)&&(R>=dr_min)&&(R<=

{

DO=ddO;

break;

}

}

if(feof(fdO))

{

Application->MessageBox("HoMHHa;ibHbm диаметр зуборезной головки не oпpeдeлeн","ERROR^MB_OK);

return;

}

fclose(fdO); k=(10800*tan(betta_n)/(Zc*tan(alfa_n)))*(l-(2*R*sm(betta_n)/D0)); teta_fl=atan(Hfl/R);

teta_f2=atan(Hf2/R);

if(((U>= 1.6)&&(U<=2J)&&(Z 1 >= 12)&&(Z 1 <= 19))||((U>2.5)&&(U <=4)&&(Z 1 >= 1 ^ 1 >=16)&&(Z 1 <=24))||(Z 1 ==8)||(Z 1 ==9))))

{

Kal=0.9;

Ka2=l;

}

else if((U>=1.6)&&(U<=2.5)&&(Zl>=20)&&(Zl<=24))

{

Kal=l;

Ka2=l;

}

else if((((U>=2.5)&&(U<=4))||(U>=4))&&((Zl==10)||(Z2==l 1)))

{

Kal=0.8;

Ka2=l;

}

else if((((U>=2.5)&&(U<=4))&&((Z 1 == 12)||(Z1 == 13)))||((U>=4)&&((Z 1 >= 12)&&(Z 1 <= 15))))

{

Kal=0.85;

Ka2=l;

}