Автор работы: Пользователь скрыл имя, 30 Ноября 2012 в 13:15, лабораторная работа
Задание
Разработать программу для виртуальной лабораторной работы по дисциплине “Теория сварочных процессов” раздел “Сварка в среде защитного газа”.
1. Постановка задачи………………………………………………………………………………….…..4
2. Физическо-математическая модель……………………...…………………..................4
3. Метод и алгоритм численного решения…………………….………………………….....5
4. Постановка лабораторной работы……………………………………………………………..8
if (t>time/2) then Pow_vap_mid:=Pow_vap_mid+ Pow_vap*dt;
// TemKap:=(Temkip+Tpl)/2;
end else Pow_vap:=0;
if (Ldn>lv) then
Ldn:=lv;
Ld:=Ldn;//полная длина дуги
if Ld<=0 then
begin //Короткое замыкание
Ldn:=0;
PizDug:=True;
if i>4*iter div 5 then
Pot_El:=(TemKap-Te[1])*2/(dx+
(* if (Vkap<Fe*de/4) {or (Dkap<de)} {or (TemKap<Tpl){ and (t>time/2)} then
begin
if (t>time/2) then
KZ_pri:=8;
Vkap:=0;//Fe*de/32;
kap:=0;
// Ldn:=0;
// Dkap:=0;
end else //Признак приварки электрода
*) begin
if (t>time/2) then
KZ_pri:=0;
KzamDug:=True;
Z1:=Dkap/6/1.41; Z2:=Dkap/6*(1-de/Dkap); Z3:=Dkap/6*(1+de/Dkap);
FsigKap:=3.14*Sigma/2*de{Dkap}
// if Zkap>Z1 then
FtokKap:=10*k0*sqr(Dkap/de)*
// FtokKap:=0;
MasKap:=Vkap*plot;//g
UskKap:=(FtokKap + FsigKap)/MasKap*1e+5 + 981;//cm/s^2
SkorKap:=SkorKap+UskKap*dt; //cm/s
Zkap:=Zkap+SkorKap*dt; //cm
if Zkap<0 then Zkap:=0;
if (abs(Zkap)>Dkap) then Zkap:=Dkap;
t_kz:=t_kz+dt;
R_Kap_Pr:=R_Kap;
R_Kap:=ro[0]*Dkap/(de*sqrt((
if {(Dkap>de) AND} (Zkap>z3{(Dkap+de*0.7)/12}) then
begin //отрыв капли при кз
if (t>time/2) then
begin TkzMid:=TkzMid+t_kz; N_kz:=N_kz+1;Per_kz:=Per_kz+1; end;
Zkap:=0; SkorKap:=Vp; t_kz:=0;
KzamDug:=False;
stad_proc:=1;
Kap:=1;
FsigKap:=0; FtokKap:=0;
end;
//Конец короткое замыкание
end;
end Else
if (Dkap>de) and ((3.14*sigma*de)<(k0/4*Tok*
{ or ((Vkap*plot*0.0981)>(3.14*
begin //Электромагнитной силой
Kap:=1;
if (t>time/2) then
Per_kap:=Per_kap+1;//
end else
if (Pow_vap>0) and (Dkap>1.5*De) and (Pow_vap>DE*500) //Кипение капли
or ((Vkap*plot*0.0981)>(2*3.14*
begin
if (t>time/2) then
Per_Vap:=Per_Vap+1;//
Kap:=1;
end;
if Kap=1 then
begin //при отрыве капли
if (t>time/2) then
begin
N_kap:= N_kap+1;
DkapMid:=DkapMid+Dkap;
TemKapMid:=TemKapMid+TemKap;
end;
t_imp:=0; //Сброс капли
Vkap:=Fe*de/3;
TemKap:=Tpl;//+C1G/C2g;
Qkap:=(Tpl*C2g+c1g)*Vkap;
end;
Ld:=Ldn;
if (Ld<=0{de/8}){ or (kz_pri=8)} then
Ud:=(R_kap+Rvyl)*Tok
else if Tok>10 then //Вольтамперная характеристика дуги
Ud:=U0+Ld*Q +Tok*0.002*sqr(40/Tok-1)+Rvyl*
else Ud:= Uxx;
IF (t<time/4) THEN t_imp:=Time_Zad;
//Ток дуги//////////////////////////
if (Ld<=0.0) and {(t_kz>0.001) and (R_kap<0.025) and }(R_kap>=R_Kap_Pr) and (stad_proc=2) then
begin time_fin_kz:=1; Stad_Proc:=3; Tim_Imp_kz:=0; end; //включить импульс кз
if ((R_kap>0.025) or (Ud>U0) {or (stad_proc=4)}) and (time_fin_kz=1) and (stad_proc=3) then
begin time_fin_kz:=0; stad_proc:=4;
if (t>4*time/5) THEN
Tim_Imp_kz:= Tim_Imp_kz;
end; //выкл. импульс кз
if STT=0 then
begin
Tok:=Tok+dt*(Uxx-Ud-Tok*R)/L;
if (Tok>TokKZ) and (Ld<=0) then//Ограничение тока короткого замыкания
Tok:=TokKZ;
if (Tok<=10) and (ld>0.01) then
begin
IF (t>time/2) THEN
if (PizDug=True) then
Per_obr:=Per_obr+1;
PizDug:=False;
Tok:=0;
end;//обрыв дуги
end else
If STT<3 then
begin //STT
t_imp:=t_imp+dt; //Время с момента сброса капли
IF (t>time/4) THEN
begin
Tok_Kl:=Tok_Kl+dt*(Uxx-Ud-Tok_
If Stt=1 then
begin
if (t_imp<Time_imp) then
Tok:=Tok_kl
else Tok:=Tok_0;
end else
if (t_imp<Time_imp) and (t_imp>Time_Zad) or (t_kz>Time_Zad) and (R_kap>R_Kap_Pr){ and (time_fin_kz=1){(R_kap<10e-3)} then
Tok:=Tok_kl
else Tok:=Tok_0;
end else
begin
Tok:=Tok+dt*(Uxx-Ud-Tok*R)/L;
Tok_kl:=Tok;
end;
if Tok<Tok_0 then Tok:=Tok_0;
end else begin //Stt=3,4
t_imp:=t_imp+dt;//Время с момента сброса капли
IF (t>time/4) THEN
begin
Tok:=Tok_0;
if (t_imp<Time_imp) and (t_imp>Time_Zad) then begin Tok:=Tok_Kap; stad_proc:=2; end;
if (STT=4 ) and (Stad_proc=3) and (time_fin_kz=1) then
begin Tok:=Tok_kz; Tim_Imp_kz:=Tim_Imp_kz+dt; end;
end else Tok:=Tok+dt*(Uxx-Ud-Tok*R)/L;
end;
//изменение удельного
сопротивления от температуры//
for k:=0 to kvyl do
if Te[k]<=723 then ro[k]:=ro0+ro0*alfa1*Te[k]
else ro[k]:=ro0+ro0*723*alfa1+ro0*
//расчет полного сопротивления цепи во времени
Rvyl:=0;
for k:=0 to kvyl do Rvyl:=Rvyl+ro[k]/Fe*dx;
R:=Rvyl+Rist;
// for k:=kvyl to 100 do Te[k]:=20;
//расчет изменения температуры вылета электрода
Te[kVyl]:=20; Te[0]:=TemKap;
if ld>0 then
for k:=1 to kvyl do
Te[k]:=Te[k]+(Lamb/Cg*dt/dx/
else
begin
for k:=1 to kvyl do
Te[k]:=Te[k]+(Lamb/Cg*dt/dx/
//Выгорание части вылета при перегреве
k:=1;
while (Te[k]>Tpl) and (Te[k]>Te[k-1]) and (k<5) do k:=k+1;
if k>1 then
begin
Ldn:=Ldn+(k-1)*dx;
Ld:=Ldn;
Vkap:=fe*de/3;
Qkap:=(Tpl*C2g+c1g)*Vkap;
for j:=1 to kvyl do Te[j]:=Te[k+j-1];
if (t>time/2) then
begin TkzMid:=TkzMid+t_kz; N_kz:=N_kz+1;Per_kz:=Per_kz+1; end;
Zkap:=0; SkorKap:=0; t_kz:=0;
KzamDug:=False;
Kap:=1;
end;
end;
{
if ((PizDug=True) and (temKap<Tpl+C1G/Cg)) and (t>time/2) then
begin
MessageDlg('Процесс не существует. Введите другие параметры', mtInformation, [mbOk], 0);
Calc:=False;
exit;
end;
}
{
ff:=(2*k0*sqr(Tok)*Ln(B/de)-4*
w:=w+dt*ff; //Скорость поверхности ванны, m/s
Ls:=Ls+w*dt;//Глубина кратера, m
If Ls>H/2 then Ls:=H/2;
if Ls<0 then Ls:=0; }
if (t>time/2) then
begin
if LdMin>Ldn then LdMin:=Ldn;
if LdMax<Ldn then LdMax:=Ldn;
LdMid:=LdMid+Ld*dt;
POwVyl:=POwVyl+Tok*Tok*Rvyl*
if Ld>0 then POwDuEl:=POwDuEl+Tok*Uel*dt;
POwSw:=POwSw+Tok*Ud*dt;
PowObh:=PowObh+Tok*Uxx*dt;
TokMid:=TokMid+Tok*dt;
NapMid:=NapMid+Ud*dt;
// TemKapMid:=TemKapMid+TemKap*
TemVyl:=TemVyl+Te[1]*dt;
// DkapMid:=DkapMid+Dkap*dt;
{ if (KZ_pri=1) then
begin
MessageDlg('Процесс не существует. Примерзание электрода', mtInformation, [mbOk], 0);
Calc:=False;
exit;
end;
}
end;
if iii=0 then
begin
with PostF.Chart1 do PostF.Series1.AddXY(i*dt,Tok,'
with PostF.Chart2 do PostF.LineSeries1.AddXY(i*dt,
with PostF.Chart3 do PostF.LineSeries2.AddXY(i*dt,{
with PostF.Chart4 do PostF.LineSeries3.AddXY(i*dt,
end;
end;//Конец имитации процесса
if (Per_Vap+Per_kap+Per_kz)>1 then
begin
Dol_El:=Per_kap/(Per_Vap+Per_
Dol_Kz:=Per_kz/(Per_Vap+Per_
Dol_Vap:=Per_Vap/(Per_Vap+Per_
Per_kap:=time/2/(Per_Vap+Per_
end else Per_kap:=0;
if Per_kz>1 then Per_kz:=time/2/Per_kz*1000 else Per_kz:=0;
LdMid:=2*LdMid/time*10;//mm
LdMin:=LdMin*10;
LdMax:=LdMax*10;
Pow_vap:=2*Pow_vap_mid/Time;
PowSw:=2*PowSw/time;
POwVyl:=2*POwVyl/time;
POwDuEl:=2*POwDuEl/time;
POwObh:=2*POwObh/time;
TokMid:=2*TokMid/time;
NapMid:=2*NapMid/time;
//TemKapMid:=TemKapMid-C1G/Cg;
// (exp(ln(Vkap)/3))
TemVyl:=2*TemVyl/time;
If Per_kap>0 then Dkap:= 10*(exp(ln(Vp*Per_kap/1000*fe)
if N_kap>0 then TemKapMid:=TemKapMid/N_kap Else TemKapMid:=TemKap;
if N_kz>1 then tkzMid:=tkzMid*1000/N_kz else tkzMid:=0;
//if Vkap>0 then Dkap:=(exp(ln(vkap)/3)*10*2*3.
if Per_obr>1 then Per_obr:=time/2/Per_obr*1000;/
Ls:=Ls*10;
KZ_pri:=KZ_pri;
qn:=NapMid*TokMid*nd/Vcv; //мощность дуги
Lvan:=qn/2/3.14/lamb/(Tpl+C1g/
B:=2*sqrt(2*qn/3.14/Cg/e/(Tpl+
H:=sqrt(qn/(6.28*cg*(Tpl+C1g/
MasW:=3.14*plot*H*B*Lvan/6; //Масса ванны, г
//LS:=(2*k0*sqr(Tok)*Ln(B/de))
Lvan:=Lvan*10; B:=B*10; H:=H*10; Ls:=Ls*10;
Res[0,iii]:=round(Uxx);
Res[1,iii]:=round(TokMid);
Res[2,iii]:=round(NapMid);
Res[3,iii]:=round(TemVyl);
Res[4,iii]:=round(TemKapMid); // (((TemKapMid-TemVyl)*Cg+C1G)*
Res[5,iii]:=round(LdMax*10);
Res[6,iii]:=round(Dkap*10);
Res[7,iii]:=round(Per_kap*10);
Res[8,iii]:=round(Per_kz*10);
Res[9,iii]:=round(tkzMid*100)/
if LdMax/10>de/2 then Res[10,iii]:=round(Dol_Kz*100)
else Res[10,iii]:=-KZ_pri;
Tim_Imp_kz:=Tim_Imp_kz;
end;//цикл параметрического исследования
N_kz:=N_kz;
if (LdMax<de/8) then
begin
MessageDlg('Примерзание электрода. Введите другие параметры', mtInformation, [mbOk], 0);
Calc:=False;
exit;
end;
//Rvyl:=Rvyl*1000;
//Результаты имитации - вывести в протокол
//PowObh - Потребляемая мощность
//PowSw - Мощность процесса
//PowDuEl - мощность дуги на электроде
//POwVyl - мощность тепловыделения в вылете электрода
//Pow_Vap - затраты мощности
на испарение электродного
//TokMid, NapMid - ток и напряжение дуги
//LdMax, LLdMid, dMin - максимальная, средняя и минимальная длина дуги
//Ls - Глубина кратера под дугой, мм
//Te[10] - температура подогрева вылета током
//Rvyl - сопротивление вылета, миллиОм (mOm)
//TemKapMid - температура капель
//Dkap - диаметр капель
//Per_kap - период переноса капель
//tkzMid - длительность короткого замыкания, msec
//Per_kz - период следования коротких замыканий, msec
//Per_obr - период следования обрывов дуги, мсек
//T_obrDug - длительность обрыва дуги, мсек
end;
Литература