26
БИБЛИОГРАФИЧЕСКИЙ СПИСОК Основная литература
1. Жуков А.В. Проектирование лесопромышленного оборудования / А.В. Жуков. – Минск: Вышэйшая школа, 1990. - 321 с.
2. Попиков П.И. Проектирование самоходных лесных машин: Тексты лекций / П.И. Попиков, Л.Д. Бухтояров. – Воронеж: Воронеж. гос. лесотехн. акад., 2002. – 90 с.
Дополнительная литература
1.Баринов К.Н. Проектирование лесопромышленного оборудования:Учеб. пособие / К.Н. Баринов, В.А. Александров. – Л.:Изд-во ЛГУ, 1988..
–238 с.
2.Нартов П.С. Проектирование и расчёт лесохозяйственных машин: Учеб. пособие / П.С. Нартов, П.И. Попиков – Воронеж.:Изд-во Воронеж. унта, 1978. – 112 с.
3.Попиков П.И. Практикум по проектированию лесохозяйственных машин для рубок ухода:Учеб. пособие / П.И. Попиков - Воронеж: Изд-во ВЛТИ, 1992. – 80 с.
4.Проектирование и расчет специальных лесных машин / Под ред. М.И. Зайчик. - М.:Лесн. пром-ть., 1976. - 208 с.
Оглавление |
|
Занятие №1. Определение силового взаимодействия колёсной |
3 |
транспортной системы с пачкой деревьев с применением ЭВМ |
|
Занятие №2. Составление кинематической и расчётной схем захва- |
|
та модели, и проектирование нового захвата для бесчокерной трелёвки |
8 |
деревьев |
|
Занятие №3. Разработка компоновочно-кинематической и расчёт- |
|
ной схем гидроманипулятора |
13 |
Занятие №4. Оптимизация положений гидроцилиндров манипуля- |
|
тора с применением ЭВМ. |
17 |
Занятие №5. Экспериментальные исследования динамики гидро- |
|
привода рабочего органа машины для фрезерования пней |
20 |
Занятие №6. Исследование динамики гидропривода лесных машин |
|
с применением ЭВМ |
23 |
Библиографический список. |
26 |
Приложения |
27 |
27
Текст программы «Оценка компоновки технологического оборудования на базовой машине»
var Form1: TForm1; |
tt:=int((mph*((f2*cos(alfa)+((1- |
f2,lll,hhh,alfa,ltr,n,r,m,ksdm,l,at,an,h,m10,m |
n)*cotan(sigma)- |
20,p,ld,ht,mph:Real; |
n/f2)*sin(alfa))*9.81)/(f2*cotan(degtorad(si |
|
gma))+1))*100)/100; |
tt,nn,sigma,sinsigma,aa,bb,z1,z2,z1p,z2p,mp |
nn:=int((mph*((f2*cos(alfa)+n*(f2*cotan(de |
:Real; |
gtorad(sigma))+1)*sin(alfa)*9.81))/(f2*cota |
f21,alfa1,ltr1,n1,r1,m1,l1,at1,an1,h1,m101, |
n(degtorad(sigma))+1))*100)/100; |
m201,p1,ld1,ht1:string; |
mp:=int((r*((nn+m*cos(alfa)*9.81)*ksdm+t |
tt1,nn1,sigma1,aa1,bb1,z11,z21,z1p1,z2p1,g |
t+m*sin(alfa)*9.81))*100)/100; |
1,qwe1:string; g:integer; |
mp:=mp+lll*nn+hhh*tt; |
/------- |
z1:=int((1/l*(m*9.81*(at*cos(alfa)-(ht- |
procedure TForm1.FormCreate(Sender: |
r)*sin(alfa))-tt*(h-r)-nn*an-mp))*100)/100; |
TObject); |
z2:=int((m*cos(alfa)*9.81+nn- |
begin |
z1)*100)/100; |
g:=0; f2:=0.5; alfa:=0; ltr:=0.4; n:=0.67; |
z1p:=int((z1+2*m10*cos(alfa)*9.81)*100)/1 |
r:=0.5; m:=2000; ksdm:=0.12; l:=2.86; |
00; |
at:=1.5; an:=0.1; h:=1.8; m10:=200; |
z2p:=int((z2+2*m20*cos(alfa)*9.81)*100)/1 |
m20:=200; p:=50000; ld:=20; ht:=1; end; |
00; |
procedure TForm1.Timer1Timer(Sender: |
Form3.Memo1.Refresh; |
TObject); |
Form3.Memo1.Lines[0]:='Получены зна- |
begin g:=g+5; |
чения:'; |
gauge1.Progress:=g; |
Form3.Memo1.Lines[1]:='Сила |
if g=100 then |
Т='+Floattostr(tt)+' H;'; |
begin Form3.Visible:=True; end; end; |
Form3.Memo1.Lines[2]:='Сила |
implementation |
N='+FloattoStr(nn)+' H;'; |
uses Unit2, Unit3, Unit4,Unit6, Unit7; |
Form3.Memo1.Lines[3]:='Угол |
{$R *.DFM} |
"сигма"='+floattostr(sigma); |
procedure TForm1.N4Click(Sender: TOb- |
Form3.Memo1.Lines[4]:='Суммарный ре- |
ject); |
активный момент Мр='+floattostr(mp)+' |
begin Form1.Close; |
H.м;'; |
Form6.Visible:=True; end; |
Form3.Memo1.Lines[5]:='Опорные реак- |
//------------- |
ции на передние колеса |
procedure TForm1.Button1Click(Sender: |
Z1='+floattostr(z1)+';'; |
TObject); |
Form3.Memo1.Lines[6]:='Опорные реак- |
begin |
ции на задние колеса |
gauge1.Visible:=true; |
Z2='+floattostr(z2)+';'; |
Timer1.Enabled:=true; |
Form3.Memo1.Lines[7]:='Суммарное дав- |
aa:=(ld*(1-n))/ltr; |
ление на грунт:'; |
aa1:=FloatTostr(aa); |
Form3.Memo1.Lines[8]:=' передних колес |
bb:=aa-(1/aa)+ld/((1- |
Z1п='+floattostr(z1p)+' H;'; |
n)*ltr)*((n/f2+n/ld)*(n/f2+n/ld)); |
Form3.Memo1.Lines[9]:=' задних колес |
bb1:=Floattostr(bb); |
Z2п='+floattostr(z2p)+' H.'; |
sinsigma:=(1/bb*(1+sqrt(1+aa*bb))); |
end;end |
sigma:=int((radtodeg(Arcsin(sinsigma)))*10 |
|
0)/100; |
|
28
Текст программы «Оптимизация положений гидроцилиндра в статическом и динамическом режиме»
CONST g = 9.81; var
Form1: TForm1; {formclik : Boolean;}
a1,b1,l,l1,gamma1,delta,diam,s,mc,m,jc,q,ay,dtime,fi n,fik: extended; sin_beta1,fit,fis,fip,pt,pp,ppr,kr,kkr,kt,tn,time,sqrt1: extended; time_ost,time_shot,sn,sk,s_step,proc_time: extended;
opt_a1,opt_b1,beta_n,opt_gamma1,aa1,aa2: Extended; opt_gamma1_1,opt_a1_1,opt_b1_1,fin1,fik1:Extende d;
Flag2,Flag3,Flag4,Flag5:Boolean;
ii:integer;
aaa1,aaa2:TChartValueList;
bbb1,bbb2:Double; {a,b,c,d: TChartTitle;} implementation
{$R *.DFM}
function ScanStr(S:TEdit):Real; Var i:Integer;
Flag_ok, Flag_ok1: Boolean; begin
Flag_ok:=False;
Flag_ok1:=True;
for i:=1 to Length(S.Text) do Begin
if S.Text[i] in ['0'..'9','E','e','-',','] then Flag_ok:=True else Flag_ok:=False;
if Flag_ok = False then Flag_ok1:=False; End;
if S.Text = '' then Flag_ok1:=False; {if S.Text = '0' then Flag_ok1:=False;} if Flag_ok1 = False then
Begin
MessageDlg('Допустимые значения: цифры, запятая, минус, E (лат.) - показатель степени',
mtInformation,[mbOk],0); S.Text:=''; ScanStr:=0; S.SetFocus;
End;
if Flag_ok1 = True then Begin ScanStr:=StrToFloat(S.Text); End; end;
function myarcsin(x:Extended):extended; Begin if x=1 then myarcsin:=pi/2
else myarcsin:=arctan(x/sqrt(1-x*x)); End; function myarccos(x:Extended):Extended; Begin myarccos:=pi/2-myarcsin(x); End; procedure
TForm1.SeriesChange(number_series:integer;chart_c aption:string);
Var i:integer; begin
for i:=0 to 3 do Chart1.Series[i].Active:=False; Chart1.Series[number_series-1].Active:=True; Chart1.Title.Text.Text:=chart_caption;
end; //----------------------------------
{Начало математических расчетов}; pp:=0; pt:=0; kr:=0; fis:=0; time:=0; sqrt1:=0; sin_beta1:=0; kt:=1; time_shot:=0; s:=pi*diam*diam/4; gamma1:=gamma1*pi/180; delta:=delta*pi/180; fin1:=fin*pi/180; fik1:=fik*pi/180; fit:=fin1; fip:=fin1; Series1.Clear; Series1.Active:=False; Series2.Clear; Series2.Active:=False; Series3.Clear; Series3.Active:=False; Series4.Clear; Series4.Active:=False;
while (fit<=fik1) or (time<time_ost+time_shot) do Begin
29
sin_beta1:=a1*sin(gamma1+fit)/sqrt(a1*a1+b1*b1- 2*a1*b1*cos(gamma1+fit)); kr:=kkr/(7.28*pp+106);
if time<tn then kt:=time/tn else kt:=1; if Flag5=True then
Begin pt:=(q*kt*dtime-s*b1*sin_beta1*(fit-fip)- ay*dtime*pp)/kr+pp; fis:=(s*pt*b1*sin_beta1-
g*(m*l+mc*l1)*cos(fit+delta))*dtime*dtime/(jc+m*l
*l)
+2*fit-fip; End;
if Flag5=False then Begin
pt:=(g*(m*l+mc*l1)*cos(fit+delta))/(s*b1*sin_beta1 );
fis:=((q*kt-ay*pt)*dtime)/(s*b1*sin_beta1)+fit; End; fip:=fit; fit:=fis; pp:=pt; time:=time+dtime; Series1.AddXY(time,pt,'',ClRed); Series2.AddXY(time,fit*180/pi,'',ClRed); Series3.AddXY(time,(b1*sin_beta1*(fitfip)/dtime),'',ClRed); Series4.AddXY(time,kr*1000000,'',ClRed);
if (fit>=fik1) and (time_shot=0) and (time_ost<>0) then
Begin q:=0; time_shot:=time; fit:=fip; End; End; Chart1.Visible:=True; Chart1.Title.Text.Text:='Зависимость давления (Па) от времени';
Series1.Active:=True;
End;
procedure TForm1.Button2Click(Sender: TObject); {оптимизация положения}
LABEL lab1,lab2,lab3; VAR Flag1:Boolean;
p_m,p_max:Extended; key:Char;
Begin
If Radiobutton2.Checked=True then Flag5:=True; if Radiobutton1.Checked=True then Flag5:=False; Radiobutton1.Visible:=False; Radiobutton2.Visible:=False;
flag1:=False; p_m:=0; p_max:=10e16; flag3:=False; if flag2=false then Begin opt_b1:=s_step; End; if flag2=true then goto lab1; while opt_b1<l do
Begin lab2:
if flag2=true then if flag4=false then if opt_b1>l then opt_b1:=s_step;
{if flag2=true then if flag4=true then if opt_b1<0 then opt_b1:=l;}
{расчет выражения для arccos для бета начальное}
aa1:=4*sn*opt_b1*sin((fik1-fin1)/2); if aa1=0 then goto lab1;
aa1:=(sn*sn-sk*sk+4*opt_b1*opt_b1*(sin((fik1- fin1)/2))*
(sin((fik1-fin1)/2)))/aa1;
if abs(aa1)>1 then goto lab1; {расчет бета начальное}
beta_n:=myarccos(aa1)-0.5*(pi-fik1+fin1); {расчет подкоренного выражения для a1} sqrt1:=sn*sn+opt_b1*opt_b1- 2*sn*opt_b1*cos(beta_n);
if sqrt1<0 then goto lab1; {расчет оптимизационного a1} opt_a1:=sqrt(sqrt1);
{расчет выражения для arccos gamma1} aa2:=(opt_a1*opt_a1+opt_b1*opt_b1sn*sn)/(2*opt_a1*opt_b1);
if abs(aa2)>1 then goto lab1; opt_gamma1:=myarccos(aa2)-fin1;
{Проверка на отсутсвие мертвой точки. Параметр проверки}
if (opt_gamma1+fik1)>=pi then goto lab1; {Конец проверки}
if opt_a1*opt_a1+opt_b1*opt_b1-2*opt_a1*opt_b1* cos(opt_gamma1+fik1)<>sk*sk
then goto lab1; {инициализация переменных} if Flag2=True then Begin
Series1.Clear; Series2.Clear; Series3.Clear; Series4.Clear; End;
pp:=0; pt:=0; kr:=0; fit:=0; fis:=0; time:=0;
30
p_m:=0; sqrt1:=0; sin_beta1:=0; time_shot:=0; fit:=fin1; fip:=fin1; flag1:=True;
if flag2=true then flag3:=true; {отладка программы}
{MessageDlg(FloatToStr(opt_gamma1*180/pi)+ ' '+ FloatToStr(opt_a1)+ ' '+
FloatToStr(opt_b1)+ ' ', mtInformation,[mbOk],0); {отладка}
{цикл расчета от начального до конечного положения}
while (fit<=fik1) or (time<time_ost+time_shot) do Begin sin_beta1:=sqrt(opt_a1*opt_a1+opt_b1*opt_b1- 2*opt_a1*opt_b1*cos(opt_gamma1+fit)); sin_beta1:=opt_a1*sin(opt_gamma1+fit)/sin_beta1; kr:=(7.28*pp+106);
if kr=0 then goto lab1; kr:=kkr/kr;
if time<tn then kt:=time/tn else kt:=1; if Flag5=True then
Begin pt:=(q*kt*dtime-s*opt_b1*sin_beta1*(fit-fip)- ay*dtime*pp)/kr+pp;
fis:=((s*pt*opt_b1*sin_beta1- g*(m*l+mc*l1)*cos(fit+delta))* (dtime*dtime)/(jc+m*l*l))+2*fit-fip; End; if Flag5=False then
Begin pt:=(g*(m*l+mc*l1)*cos(fit+delta))/(s*b1*sin_beta1 );
fis:=((q*kt-ay*pt)*dtime)/(s*b1*sin_beta1)+fit; End; {Макс. давление за процесс подъема} if pt>=p_m then p_m:=pt;
fip:=fit; fit:=fis; pp:=pt; time:=time+dtime; if Flag2=True then Begin Series1.AddXY(time,pt,'',ClRed); Series2.AddXY(time,fit*180/pi,'',ClRed); Series3.AddXY(time,(b1*sin_beta1*(fitfip)/dtime),'',ClRed); Series4.AddXY(time,kr*1000000,'',ClRed); End;
if (fit>=fik1) and (time_shot=0) and (time_ost<>0) then
Begin q:=0; time_shot:=time; fit:=fip; End; End; if Flag2=True then goto lab1;
{мин. давление за все процессы} if p_m<=p_max then
Begin p_max:=p_m; opt_gamma1_1:=opt_gamma1; opt_a1_1:=opt_a1; opt_b1_1:=opt_b1;
End; {} lab1:
if (flag4=false) and (Flag3=false) then opt_b1:=opt_b1+s_step;
{if (flag4=true) and (Flag3=false) then opt_b1:=opt_b1-s_step;}
if Flag3=True then goto lab3;
if Flag2=true then goto lab2; End; if flag1=False then Begin
MessageDlg('При введенных данных оптимизация невозможна',
mtInformation,[mbOk],0); FormCreate(Form1);goto lab3; End;
Flag2:=True; Flag3:=False; opt_b1:=opt_b1_1; goto lab2; lab3: key:='1'; Flag3:=False; Chart1.Visible:=true; FormKeyPress(Form1,key); End;
procedure TForm1.FormCreate(Sender: TObject); var key: char;
begin with Form1 do Begin caption:='Программа расчета гидроцилндров'; key:='r'; flag2:=False; flag4:=false; Button1.Enabled:=True;
Button1.Visible:=true;
FormKeyPress(Form1,key); Edit22.Enabled:=False; Label22.Enabled:=false; Chart1.Visible:=False;
If Radiobutton2.Checked=True then Flag5:=True; if Radiobutton1.Checked=True then Flag5:=False; End; end;
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
var f: textfile;
f1: file of extended;