Редактирование и транслирование подпрограммы пользователя - Оптимизация параметров двухступенчатого цилиндрического редуктора

Подпрограмма пользователя представляет собой проблемно-ориентированный модуль следующего вида:

Program FUNC;

Var

T, Imax, bmax, hmax: integer;

N1, n11, n111, u, hrc, hb, kpd, Tl: real;

Ul, u2, psil, psi2, ml, m2, B, xl, x2, TII, TIII: real;

SigmaHLiml, SigmaHLim2, NHE1, NHE2, omega1, omega11, omega111, NHlim1, NHlim2: real;

ZN1, ZN2: real;

SigmaH1, sigmaH2, sigmamin, sigmaHP, sigmaH, NFE1, NFE2, sigmaHk: real;

YN1,YN2, sigmaflim1, sigmaflim2, sigmaFP1, sigmaFP2:real;

PsiBA, aw, awz, m11, mz, zsum, dw2, Ft, d2, b2, Z1C, Z1K, zl, zsum1, z2, Cz1, Cz2, Czsum1: real;

I: integer;

Awl: array [1..20] of real;

Mo: array [1..18] of real;

CSigmaHLiml, CSigmaHLim2, CNHE1, CNHE2, Comega1, Comega11, Comega111, CNHIim1, CNHIim2: real;

CZN1, CZN2: real;

CsigmaH1, CsigmaH2, Csigmamin, CsigmaHP, CsigmaH, CNFE1, CNFE2: real;

CYN1, CYN2, Csigmaflim1, Csigmaflim2, CsigmaFP1, CsigmaFP2, V, Y1, Y2:real;

CpsiBD, Caw, Cawz, Cm11, Cmz, Czsum, Cdw2, CFt, Cd2, Cb2, dm1, cb, re, ssinB, del, de2, dae1, dae2, dfe1, dfe2: real;

Awfl, flagaw, flagaw1: integer;

X: array[1..100] of real;

F: array[1..100] of real;

F1: text;

ParameterNumber, criterionnumber, opt1: integer;

Kood: char;

Sigf, sigf1, sigf2: real;

Filename: string;

Lim: boolean;

Begin

Lim:=true;

Tl:=300;

U:=12.4;

Nl:=950;

T:=3504;

Hrc:=45;

Hb:=302;

Kpd:=0.913;

Awf1:=0;

Flagaw:=0;

Assign(fl, 'e:optimoptlpar. opt');

Reset(fl);

For i:=l to 7 do readln(fl, x[i]);

Close(fl);

U2:=x[l];

Psi1:=x[2];

Psi2:=x[3];

Ml:=x[4];

M2:=x[5];

Z1c:=x[6];

Z1k:=x[7];

Flagaw:=l;

Flagawl:=0;

Ul:=(u/u2);

If ((z1c<16) or (z1c>100)) then writeln('недопустимое количество зубьев цилиндрической шестерни');

If ((zlk<16) or (zlk>100)) then writeln('недопустимое количество зубьев конической шестерни');

TII:=TI*0.97*ul;

TIII:=TII*0.98*u2;

N11:=nl/ul;

N111:=n11/u2;

Omega1 :=n1*3.14/30;

Omega11:=n11*3.14/30;

Omega111:=n111*3.14/30;

SigmaHLim1 =965;

SigmaHLim2:=674;

NHE1:=60*n1*t*0.578;

NHE2:=60*n1*t*0.578;

NHIim1:=60990000;

NHIim2:=25810000;

ZN1:=exp((l/6)*ln(NHlim1/nhe1));

ZN2:=exp((l/6)*ln(NHlim2/nhe2));

SigmaH1:=0.9*sigmaHlim1*ZN1*1.07/1.2;

SigmaH2:=0.9*sigmaHlim2*ZN2* 1.038/1.1;

SigmaHP:=0.5*(sigmaHl+sigmaH2);

If sigmaH1<sigmaH2 then sigmamin:=sigmaH1 else sigmamin:=sigmaH2;

NFE1:=60*nl*t*0.503;

NFE2:=60*n1*t*0.515;

YN1 :=exp((l/6)*ln(4000000/NFE1));

YN2:=exp((l/6)*ln(4000000/NFE2));

If YN1<l then YN1:=l;

If YN2<l then YN2:=l;

SigmaFlim1:=600;

SigmaFlim2:=519.75;

SigmaFP1:=0.4*sigmafiim1;

SigmaFP2:=0.4*sigmaflim2;

PsiBA:=2*psi2/(u2+l);

Aw:=10*(u2+l)*exp(l/3*ln(TII/u2));

Writeln('aw');

Awz:=430*2*(u2+l)*exp((l/3)*ln(TII* 1.07/(psiba*706.5389*706.53 9*u2*u2)));

Zsum:=2*aw*0.9659/m2;

Zsum1:=round(zsum)+l;

Zl:=zlc;

Z2:=zsum1-zl;

If (z1+z2)<60 then writeln('не выполняется параметрическое ограничение для суммарного числа зубьев цилиндрической передачи');

Dw2:=2*aw*z2/zsum;

Ft:=2*TII[/(dw2*0.001);

D2:=2*aw-(z1*m1/0.975);

B2:=psiBA*aw;

SigmaH:=376*sqrt(l. l*l. l*1.07*(z2/z1)*Ft/(b2*d2));

If sigmaH>sigmaHP then writeln ('значение sigmah>sigmaHP');

CSigmaHLim1:=965;

CSigmaHLim2:=674;

CNHEl:=60*nl*t*0.578;

CNHE2:=60*n1*t*0.578;

CNHIiml:=6.099* 10000000;

CNHIim2:=2.686* 10000000;

CZN1 :=exp((l /6)*ln(CNHIim1/Cnhe1));

CZN2:=exp((l/6)*ln(CNHIim2/Cnhe2));

CsigmaH1:=CsigmaHlim1*CZN1/l.2;

CsigmaH2:=CsigmaHlim2*CZN2/l.09;

CsigmaHP:=0.5*(CsigmaH1+CsigmaH2);

If CsigmaH1<CsigmaH2 then Csigmamin:=CsigmaH1 else Csigmamin:=CsigmaH2;

CNFE1:=60*n1*t*0.503;

CNFE2:=60*n1*t*0.515;

CYN1:=exp(( l/6)*ln(4000000/CNFE1));

CYN2:=exp((l/6)*ln(4000000/CNFE2));

If CYN1<1 then CYN1:=l;

If CYN2<1 then CYN2=l;

CsigmaFlim1:=600;

CsigmaFlim2:=528.5;

CsigmaFP1:=Csigmafliml/1.7;

CsigmaFP2:=Csigmaflim2/l.7;

Dml:=68*exp((l/3)*ln(TI*1.0863*(sqrt(u1*u1+1))*l000/(0.85*psi1*CsigmaHP*CsignaHP)));

Cb:=psi1*dm1;

Re:=0.5*(dm1/sin(17.61));

De1:=dm1*re/(re-0.5*cb);

Cz1:=zlk;

Cz2:=round(u1*cz1);

Dae2:=m1*cz2+2*m1*cos(17.52);

Dae1:=m1*cz1+2*m1*cos(72.48);

V:=(2*aw+0.5*dae2)*(dae1+30)*(dae1+30)/1000000;

Sigmahk:=1500*sqrt((1.04* 1.08*TI)/(cz2*m2*1.5915));

If(sigmaFP1/stgmaFlim1)>(sigmaFP2/sigmaFlim2) then sigf1:=(sigmaFP1/sigmaFiim1) else sigf1:=(sigmaFP2/sigmaFlim2);

If (CsigmaFP1/CsigmaFlim1)>(CsigmaFP2/CsigmaFlim2) then sigf2:=(CsigmaFP1/CsigmaFlim1) else sigf2:=(CsigmaFP2/CsigmaFlim2);

If (sigmaFP1>sigmaFlim1) then writeln('1');

If (sigmaFP2>sigmaFlim2) then writeln('2');

If (CsigmaFP1>csigmaFlim1) then writeln('3');

If (CsigmaFP2>CsigmaFlim2) then writeln('4');

If (CsigmaHP<sigmaHK) then writeln('5');

If (sigmaHP<sigmaH) then writeln('6');

Y1:=abs((sigmaHP/sigmaH)-sigf1);

Y2:=abs((sigmaHP/sigmaHK)-sigf2);

If (sigmaFP1>sigmaFlim1) or (sigmaFP2>sigmaFlim2) or (CsigmaFP1>CsigmaFliml) or (CsigmaFP2>CsigmaFlim2) then begin

Writeln('The functional limitation in the program FUNC has been violated');

Lim:=false;

End;

If (CsigmaHP<sigmaHK) or (sigmaHP<sigmaH) or ((dae2*0.5+25)>aw) then begin

WritelnCThe functional limitation in the program FUNC has been violated');

Lim:=false;

End;

If lim=true then begin

F[l]:=aw;

F[2}:=V;

F[3]:=abs((sigmaHP/sigmaH)-sigf1); {цилиндрическая}

F[4]:=abs((CsigmaHP/sigmaHK)-sigf2); {коническая}

FI5]:=abs(Yl-Y2);

End;

Else begin

F[l]:=9999;

F[2]:=9999;

F[3]:=9999;

F[4]:=9999;

F[5]:=9999;

End;

Writeln('value aw=(',f[1],')');

Writeln(value V=(',f[2],')');

Writeln('value 3=(',f[3],')');

Writeln(value 4=(',f[4],')');

Writeln(value 5=(',f[5],')');

Assign(f1, e:optimoptlFUN. OPT');

Rewrite(f1);

Writeln(f1,f[1]);

Writeln(f1,f[2]);

Writeln(f1,f[3]);

Writeln(f1,f[4]);

Writeln(f1,fI5]);

Close(f1);

End.

Похожие статьи




Редактирование и транслирование подпрограммы пользователя - Оптимизация параметров двухступенчатого цилиндрического редуктора

Предыдущая | Следующая