📄 复件 current.c.bak
字号:
c_cm2=0;
}
CML2=TML2+0x24;
if(CML2<TML2)
CMH2=TMH2+1+0xF4;
else
CMH2=TMH2+0xF4;
}
main()
{
unsigned char k,k1,k2;
current_enable=0;
TMOD=0x22; //定时器1,方式2;
TL1=0XFD; //波特率9600
TH1=0XFD;
TR1=1; //启动定时器
PCON=0X00; //SMOD=1
TMOD=0x23; //定时器0,方式3,两个8位定时器;
TR1=0;
TF1=0;
S0CON=0XF8; //串口方式3,SM2=0,REN=1,TB8=1,RB8=0,TI=0,RI=0
IP0=0X98; //S0=1
IP1=IP1|0X20;
// EX0=1;
ES0=1; //开串口中断
ET0=1;
ET1=1;
ES1=1; //I2C
EAD=1; //AD中断允许
EA=1; //中断总允许
start_t2();
pp.t01=10;
pp.t02=50;
pp.gas2=OFF;
pp.t03=20;
pp.t04=50;
pp.k1=PDC;
pp.ignit=HF;
pp.i11=200;
pp.t12=50;
pp.i12=400;
pp.t13=30;
pp.t13_sd=0;
pp.t14=20;
pp.i14=800;
pp.t15=20;
pp.i15=400;
pp.di=20;
pp.ahf=OFF;
pp.i16=50;
pp.f=100;
pp.t16=50;
pp.n11=200;
pp.n11_sd=1;
pp.t17=50;
pp.i17=200;
BEGIN:
current_out=1;
current_enable=0;
con_hf=1;
con_gas1=1;
con_gas2=1;
work=0; //等待状态
err=0;
urgent_stop=0;
called=0;
start=0;
need_para=0;
open_gas1=0;
open_gas2=0;
ignit_ok=0;
decrease=0;
igniting=0;
pre_melt_ok=0;
R_ANSW=0;
S_ANSW=0;
POINTER1=0;
RSUM=0;
POINTER0=0;
SSUM=0;
r_byte_nums=4;
demand=0;
overtime=0;
resend=0;
ans=0;
receive_p_out=0;
receive_p_in=0;
edge=0;
ad_v=0;
ad_i=0;
AD1=0;
AD2=0;
AD3=0;
AD4=0;
AD5=0;
tab2=0;
tab3=0;
IM8=0;
IM4=0;
IB8=0;
IB4=0;
UPD=0;
ad_finish=0;
i_slope_ok=0;
nonce_sec=0;
in_sector=0;
new_sec=0;
close_gas1=0;
close_gas2=0;
close_gas1_ok=0;
close_gas2_ok=0;
close_gas_ok=0;
c_cm1=0;
to_begin=0;
PWMP=51; //产生采样保持脉冲,1K
PWM0=128;
PWM1=128;
// CTCON=CTCON|0X02; //CT0下降沿
// CTCON=CTCON|0X20; //CT2捕捉下降沿
while(start==0)
{
if(called==1)
{
ini_sbuf(M_main,infor,com_calling,S_ANSW,0,0,0);
s_byte_nums=6;
TR_noans();
called=0;
}
if(receive_p_out==1)
{
point=&pp.t01;
for(p_sec=0;p_sec<25;p_sec++)
*(point+p_sec)=rbuffer[p_sec*2+2]*256+rbuffer[p_sec*2+3];
pp.k5=rbuffer[52];
ini_sbuf(M_main,answer,OK,0,0,0,0);
s_byte_nums=4;
TR_noans();
demand=0;
receive_p_out=0;
}
if(receive_p_in==1)
{
point=&pp.x[nonce_sec][0];
for(p_sec=0;p_sec<10;p_sec++)
*(point+p_sec)=rbuffer[p_sec*2+3]*256+rbuffer[p_sec*2+4];
ini_sbuf(M_main,answer,OK,0,0,0,0);
s_byte_nums=4;
TR_noans();
demand=0;
receive_p_in=0;
}
/*
if(new_switch==1)
{
ini_sbuf(M_main,answer,S_ANSW,0,0,0,0);
s_byte_nums=4;
TR_noans();
new_switch=0;
}
*/
if(urgent_stop==1)
goto BEGIN;
}
n_pulse=pp.t14%256;
n_base=pp.t15%256;
// EX0=1;
work=3; //进入焊接过程
IEN1=IEN1&0xBF; //禁止CM2,停水计时
CML1=TML2+0XE2; //峰值时间
if(CML1<TML2)
CMH1=(TMH2+1)+0X04;
else
CMH1=TMH2+0X04;
CML2=TML2+0x24;
if(CML2<TML2)
CMH2=TMH2+1+0xF4;
else
CMH2=TMH2+0xF4;
delt1=(pp.t13*1000000)/(pp.i14-pp.i12);
if(delt1%256>=200)
delt1=delt1/256+1;
else
delt1=delt1/256;
if(YOUHU==1)
{
while(igniting==0)
{
if(urgent_stop==1)
goto BEGIN;
if(open_gas1==1)
{
ini_sbuf(M_main,answer,S_ANSW,0,0,0,0);
s_byte_nums=4;
TR_noans();
con_gas1=0; //开气1
con_water=0; //开水
open_gas1=0;
}
if(open_gas2==1)
{
ini_sbuf(M_main,answer,S_ANSW,0,0,0,0);
s_byte_nums=4;
TR_noans();
con_gas2=0; //开气2
con_water=0; //开水
open_gas2=0;
}
if(resend==1)
{
ini_sbuf(M_main,answer,S_ANSW,0,0,0,0);
s_byte_nums=4;
TR_noans();
resend=0;
}
}
}
else
{
while(ignit_ok==0)
{
if(urgent_stop==1)
goto BEGIN;
if(open_gas1==1)
{
ini_sbuf(M_main,answer,S_ANSW,0,0,0,0);
s_byte_nums=4;
TR_noans();
con_gas1=0; //开气1
con_water=0; //开水
open_gas1=0;
}
if(open_gas2==1)
{
ini_sbuf(M_main,answer,S_ANSW,0,0,0,0);
s_byte_nums=4;
TR_noans();
con_gas2=0; //开气2
con_water=0; //开水
open_gas2=0;
}
if(resend==1)
{
ini_sbuf(M_main,answer,S_ANSW,0,0,0,0);
s_byte_nums=4;
TR_noans();
resend=0;
}
}
}
ini_sbuf(M_main,answer,S_ANSW,0,0,0,0);
s_byte_nums=4;
TR_noans();
I1=pp.i11;
I2=pp.i11;
IM8=I1*41/100%256; //(I1*4096/10000)%256
IM4=I1*41/100/256; //(I1*4096/10000)/256
IB8=I2*41/100%256; //((I2*4096/10000)%256
IB4=I2*41/100/256; //(I2*4096/10000)/256
UPD=0X00; //引弧电流
if(YOUHU==1)
{
current_enable=1; //开电源使能
if(pp.ignit==HF)
con_hf=0; //开高频
avc_ok=P5;
avc_ok=avc_ok&0X04;
// avc_ok=0;
while(avc_ok==4)
{
avc_ok=P5;
avc_ok=avc_ok&0X04;
if(urgent_stop==1)
goto BEGIN;
}
if(pp.ignit==HF) //引弧方式HF
con_hf=1; //关高频
ini_sbuf(M_main,command,com_ignit_ok,0,0,0,0);
s_byte_nums=4;
TR_ans();
// answer_judge();
}
if(urgent_stop==1)
goto BEGIN;
con_avc=0; //弧长控制
I1=pp.i12;
I2=pp.i12;
IM8=I1*41/100%256; //(I1*10/10)%256
IM4=I1*41/100/256; //(I1*10/10)/256
IB8=I2*41/100%256; //(I2*10/10)%256
IB4=I2*41/100/256; //(I2*10/10)/256
UPD=0X00; //预熔电流
ad_finish=1;
if(YOUHU==1) //焊接时进行电压、电流采样
{
c_adc=0;
i_v=0;
CTCON=CTCON|0X20; //捕捉下降沿
IEN1=IEN1|0X04; //允许CT2
}
while(pre_melt_ok==0) //预熔时间
{
if(urgent_stop==1)
goto BEGIN;
if(need_para==1) //显示焊接电流、焊接电压
{
sbuffer[0]=M_main;
sbuffer[1]=parameter2;
sbuffer[2]=ad_i/256;
sbuffer[3]=ad_i%256;
sbuffer[4]=ad_v/256;
sbuffer[5]=ad_v%256;
s_byte_nums=7;
TR_noans();
need_para=0;
}
if(resend==1)
{
ini_sbuf(M_main,answer,S_ANSW,0,0,0,0);
s_byte_nums=4;
TR_noans();
resend=0;
}
}
ini_sbuf(M_main,answer,S_ANSW,0,0,0,0);
s_byte_nums=4;
TR_noans();
c_t0=0;
while(i_slope_ok==0) //电流上升
{
TR0=1;
while(c_t0<delt1) //电流增加1A
{
if(urgent_stop==1)
goto BEGIN;
}
TR0=0;
c_t0=0;
if(I1<pp.i14)
{
if((I1+10)>=pp.i14)
I1=pp.i14;
else
I1=I1+10;
}
if(pp.k1==PDC)
{
if(I2<pp.i15)
{
if((I2+10)>=pp.i15)
I2=pp.i15;
else
I2=I2+10;
}
}
IM8=I1*41/100%256; //(I1*10/10)%256
IM4=I1*41/100/256; //(I1*10/10)/256
IB8=I2*41/100%256; //(I2*10/10)%256
IB4=I2*41/100/256; //(I2*10/10)/256
UPD=0X00;
if(urgent_stop==1)
goto BEGIN;
}
ini_sbuf(M_main,answer,S_ANSW,0,0,0,0);
s_byte_nums=4;
TR_noans();
// CTCON=CTCON|0X02; //CT0下降沿
// IEN1=IEN1|0x01;
I1=pp.i14; //峰值电流
I2=pp.i15; //基值电流
IM8=I1*41/100%256; //(I1*10/10)%256
IM4=I1*41/100/256; //(I1*10/10)/256
IB8=I2*41/100%256; //(I2*10/10)%256
IB4=I2*41/100/256; //(I2*10/10)/256
UPD=0X00;
if(pp.k1==PDC)
IEN1=IEN1|0X20; //允许CM1,电流脉冲输出(峰、基值时间))
k=1;
nonce_sec=0; //当前区间号
//main circle
do
{
work=3;
if(urgent_stop==1) //急停后返回
goto BEGIN;
if(need_para==1) //显示焊接电流、焊接电压
{
sbuffer[0]=M_main;
sbuffer[1]=parameter2;
sbuffer[2]=ad_i/256;
sbuffer[3]=ad_i%256;
sbuffer[4]=ad_v/256;
sbuffer[5]=ad_v%256;
sbuffer[6]=0;
s_byte_nums=7;
TR_noans();
need_para=0;
}
if(current_add==1) //电流加
{
if(I1+pp.di<4000) //峰值
{
I1=I1+pp.di;
IM8=I1*41/100%256; //(I1*10/10)%256
IM4=I1*41/100/256; //(I1*10/10)/256
}
else
{
I1=4000;
IM8=4000%256; //400*10%256
IM4=4000/256;
}
if(pp.k1==PDC)
{
if(I2+pp.di<4000) //基值
{
I2=I2+pp.di;
IB8=I2*41/100%256; //(I2*10/10)%256
IB4=I2*41/100/256; //(I2*10/10)/256
}
else
{
I2=4000;
IB8=4000%256; //400*10%256
IB4=4000/256;
}
}
UPD=0X00;
current_add=0;
}
if(current_dec==1) //电流减
{
if(I1>=pp.i17&&I1-pp.i17>pp.di) //峰值
{
I1=I1-pp.di;
IM8=I1*41/100%256;
IM4=I1*41/100/256;
}
else
{
I1=pp.i17;
IM8=I1*41/100%256;
IM4=I1*41/100/256;
}
if(pp.k1==PDC)
{
if(I2>=pp.i17&&I2-pp.i17>pp.di) //基值
{
I2=I2-pp.di;
IB8=I2*41/100%256;
IB4=I2*41/100/256;
}
else
{
I2=pp.i17;
IB8=I2*41/100%256;
IB4=I2*41/100/256;
}
}
UPD=0X00;
current_dec=0;
}
if(in_sector==1&&new_sec==1)
{
IEN1=IEN1&0XDF; //禁止CM1
current_out=1; //峰值
n_pulse=pp.x[nonce_sec][2]%256;
n_base=pp.x[nonce_sec][4]%256;
CML1=TML2+0XE2; //峰值时间
if(CML1<TML2)
CMH1=(TMH2+1)+0X04;
else
CMH1=TMH2+0X04;
I1=pp.x[nonce_sec][3]; //峰值电流
I2=pp.x[nonce_sec][5]; //基值电流
IM8=I1*41/100%256;
IM4=I1*41/100/256;
IB8=I2*41/100%256;
IB4=I2*41/100/256;
UPD=0;
IEN1=IEN1|0X20; //允许CM1
new_sec=0;
}
if(decrease==1) //衰减
k=0;
}while(k==1);
if(urgent_stop==1) //急停后返回
goto BEGIN;
work=4;
k=1;
k1=0;
k2=0;
if(I1>pp.i17)
{
delt=(pp.t17*1000000)/(I1-pp.i17);
if(delt%256>=200)
delt=delt/256+1;
else
delt=delt/256;
}
else
delt=0;
c_t0=0;
do //电流衰减
{
TR0=1;
while(c_t0<delt)
{
if(urgent_stop==1)
goto BEGIN;
}
TR0=0;
c_t0=0;
if(pp.k1==PDC)
{
if(I1>pp.i17)
{
if((I1-10)<=pp.i17)
I1=pp.i17;
else
{
I1=I1-10;
IM8=I1*41/100%256;
IM4=I1*41/100/256;
}
}
else
k1=1;
if(I2>pp.i17)
{
if((I2-10)<=pp.i17)
I2=pp.i17;
else
{
I2=I2-10;
IB8=I2*41/100%256;
IB4=I2*41/100/256;
}
}
else
k2=1;
UPD=0;
if(k1==1&&k2==1)
k=0;
}
else
{
if(I1>pp.i17)
{
if((I1-10)<=pp.i17)
I1=pp.i17;
else
{
I1=I1-10;
IM8=I1*41/100%256;
IM4=I1*41/100/256;
}
UPD=0;
}
else
k=0;
}
if(need_para==1) //显示焊接电流、焊接电压
{
sbuffer[0]=M_main;
sbuffer[1]=parameter2;
sbuffer[2]=ad_i/256;
sbuffer[3]=ad_i%256;
sbuffer[4]=ad_v/256;
sbuffer[5]=ad_v%256;
sbuffer[6]=0;
s_byte_nums=7;
TR_noans();
need_para=0;
}
if(urgent_stop==1) //急停后返回
goto BEGIN;
}while(k==1);
if(YOUHU==1)
current_enable=0; //关电源使能
con_avc=1;
IEN1=IEN1&0XDF; //禁止CM1
c_cm2=0;
IEN1=IEN1|0x40; //允许CM2,停水计时
while(close_gas_ok==0)
{
if(close_gas2==1)
{
ini_sbuf(M_main,answer,S_ANSW,0,0,0,0);
s_byte_nums=4;
TR_noans();
con_gas2=1; //关气2
close_gas2=0;
close_gas2_ok=1;
}
if(close_gas1==1)
{
ini_sbuf(M_main,answer,S_ANSW,0,0,0,0);
s_byte_nums=4;
TR_noans();
con_gas1=1; //关气1
close_gas1=0;
close_gas1_ok=1;
}
if(resend==1)
{
ini_sbuf(M_main,answer,S_ANSW,0,0,0,0);
s_byte_nums=4;
TR_noans();
resend=0;
}
if((pp.gas2==OFF&&close_gas1_ok==1)||(pp.gas2==ON&&close_gas1_ok==1&&close_gas2_ok==1))
close_gas_ok=1;
}
while(to_begin==0)
{
if(urgent_stop==1)
goto BEGIN;
}
goto BEGIN;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -