📄 current_1027.c.bak
字号:
AD4=0;
tab2=0;
}
ad_finish=1;
CTCON=CTCON|0X20;
IEN1=IEN1|0X04; //允许CT2
}
if(c_adc>5&&c_adc<=10)
{
if(c_adc==10) //电压——电流
{
i_v=0; //电流采样标志
c_adc=0;
AD1=0;
AD2=0;
AD3=0;
AD4=0;
tab3=0;
}
ad_finish=1;
CTCON=CTCON|0X20;
IEN1=IEN1|0X04; //允许CT2
}
}
void CM1_int (void) interrupt 12 //电流脉冲输出(峰、基值时间)
{
CMI1=0;
c_cm1++;
if(current_out==1&&c_cm1==n_pulse||current_out==0&&c_cm1==n_base)
{
if(decrease==1||ahf_ok==0)
{
if(current_out==1)
{
IM8=IBL;
IM4=IBH;
IB8=IBL;
IB4=IBH;
UPD=0X00;
}
else
{
IM8=IML;
IM4=IMH;
IB8=IML;
IB4=IMH;
UPD=0X00;
}
}
else
{
if(current_out==1)
{
IM8=IBL_ahf;
IM4=IBH_ahf;
IB8=IBBL_ahf;
IB4=IBBH_ahf;
UPD=0X00;
}
else
{
IM8=IML_ahf;
IM4=IMH_ahf;
IB8=IMML_ahf;
IB4=IMMH_ahf;
UPD=0X00;
}
}
current_out=~current_out;
c_cm1=0;
}
CML1=TML2+0XE2; //峰值时间
if(CML1<TML2)
CMH1=(TMH2+1)+0X04;
else
CMH1=TMH2+0X04;
}
void CM2_int (void) interrupt 13 //关水计时
{
CMI2=0;
IEN1=IEN1&0XBF; //CM2
if(gas_stop==1)
{
c_cm21++;
if(c_cm21==20)
{
con_gas1=1;
gas_stop=0;
c_cm21=0;
}
}
if(con_water!=1)
{
c_cm2++;
if(c_cm2==240)
{
con_water=1; //关水
IEN1=IEN1&0xDF; //禁止CM1
c_cm2=0;
}
}
if(gas_stop==1||con_water!=1)
{
CML2=TML2+0x24;
if(CML2<TML2)
CMH2=TMH2+1+0xF4;
else
CMH2=TMH2+0xF4;
IEN1=IEN1|0X40; //CM2
}
}
main()
{
unsigned char k,k1,k2;
unsigned int temp_delt_p,temp_delt_b;
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;
ES0=1; //开串口中断
ET0=1;
ET1=1;
ES1=1; //I2C
EAD=1; //AD中断允许
EA=1; //中断总允许
start_t2();
urgent_stop=0;
current_err=0;
err_ok=0;
err=0;
gas_stop=0;
BEGIN:
if(urgent_stop==1)
{
urgent_stop=0;
err_ok=0;
// EX1=1;
EX0=1;
}
IEN1=IEN1&0x40;
gate=0;
COM=0X76;
COUNT1=0;
COUNT1=0;
COM=0XB2;
COUNT2=0;
COUNT2=0;
current_out=1;
current_enable=0;
con_hf=1;
// con_gas1=1;
con_gas2=1;
work=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;
ahf_ok=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;
tight=0;
lose=0;
PWMP=51; //产生采样保持脉冲,1K
PWM0=128;
PWM1=128;
EX0=1;
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.syn_type=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(tight==1)
{
tight_lose=0;
tight=0;
}
if(lose==1)
{
tight_lose=1;
lose=0;
}
if(urgent_stop==1)
goto BEGIN;
}
EX1=1;
n_pulse=pp.t14%256;
n_base=pp.t15%256;
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;
if(pp.k1==PDC) //05-12-28
{
if(pp.i14>pp.i12)
{
if(pp.i15>=pp.i12)
delt1=pp.i14-pp.i12;
else if(pp.i14-pp.i12>=pp.i12-pp.i15)
delt1=pp.i14-pp.i12;
else
delt1=pp.i12-pp.i15;
}
else if(pp.i14==pp.i12)
{
if(pp.i15>=pp.i12)
delt1=pp.i15-pp.i12;
else
delt1=pp.i12-pp.i15;
}
else
{
if(pp.i15>pp.i12)
{
if(pp.i15-pp.i12>=pp.i12-pp.i14)
delt1=pp.i15-pp.i12;
else
delt1=pp.i12-pp.i14;
}
else if(pp.i15==pp.i12)
delt1=pp.i12-pp.i14;
else
{
if(pp.i12-pp.i14>=pp.i12-pp.i15)
delt1=pp.i12-pp.i14;
else
delt1=pp.i12-pp.i15;
}
}
}
if(delt1>0)
{
delt1=1000000/delt1;
delt1=delt1*pp.t13;
// 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;
IM=(unsigned int)(I1*0.41);
IM8=IM%256; //(I1*4096/10000)%256
IM4=IM/256; //(I1*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;
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; //关高频
delay(1);
RE_IGNIT: avc_ok=P5;
avc_ok=avc_ok&0X04;
if(avc_ok==4)
{
if(pp.ignit==HF)
con_hf=0; //开高频
goto RE_IGNIT;
}
else
{
/*
delay(1);
avc_ok=P5;
avc_ok=avc_ok&0X04;
if(avc_ok==4)
{
if(pp.ignit==HF)
con_hf=0; //开高频
goto RE_IGNIT;
}
else
{
*/
if(pp.ignit==HF) //引弧方式HF
con_hf=1; //关高频
while(ignit_ok==0)
{
if(urgent_stop==1)
goto BEGIN;
}
ignit_ok=0;
ini_sbuf(M_main,command,com_ignit_ok,0,0,0,0);
s_byte_nums=4;
TR_noans();
// }
}
}
if(urgent_stop==1)
goto BEGIN;
I1=pp.i12;
IM=(unsigned int)(I1*0.41);
IML=IM%256; //(I1*10/10)%256
IMH=IM/256; //(I1*10/10)/256
IM8=IML;
IM4=IMH;
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;
}
}
ini_sbuf(M_main,answer,S_ANSW,0,0,0,0);
s_byte_nums=4;
TR_noans();
if(pp.k1==PDC)
{
I2=pp.i12;
IB=(unsigned int)(I2*0.41);
IBL=IB%256;
IBH=IB/256;
c_cm1=0;
IEN1=IEN1|0X20;
}
if(delt1>0)
{
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(pp.k1==PDC)
{
if(pp.i14>pp.i12)
{
if(I1<pp.i14)
{
if((I1+10)>=pp.i14)
I1=pp.i14;
else
I1=I1+10;
}
}
if(pp.i14<pp.i12)
{
if(I1>pp.i14)
{
if(I1>=pp.i14+10)
I1=I1-10;
else
I1=pp.i14;
}
}
if(pp.i15>pp.i12)
{
if(I2<pp.i15)
{
if((I2+10)>=pp.i15)
I2=pp.i15;
else
I2=I2+10;
}
}
if(pp.i15<pp.i12)
{
if(I2>pp.i15)
{
if(I2>=pp.i15+10)
I2=I2-10;
else
I2=pp.i15;
}
}
}
else
{
if(I1<pp.i14)
{
if((I1+10)>=pp.i14)
I1=pp.i14;
else
I1=I1+10;
}
}
IM=(unsigned int)(I1*0.41);
IML=IM%256;
IMH=IM/256;
if(pp.k1==PDC)
{
IB=(unsigned int)(I2*0.41);
IBL=IB%256;
IBH=IB/256;
}
if(pp.k1==DC)
{
IM8=IML;
IM4=IMH;
IB8=IML;
IB4=IMH;
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();
I1=pp.i14; //峰值电流
IM=(unsigned int)(I1*0.41);
IML=IM%256;
IMH=IM/256;
if(pp.k1==PDC)
{
I2=pp.i15; //基值电流
IB=(unsigned int)(I2*0.41);
IBL=IB%256;
IBH=IB/256;
if(pp.ahf==ON)
{
delt_ahf=pp.i16/2;
if(I1+delt_ahf<4000)
I11=I1+delt_ahf;
else
I11=4000;
if(I1>delt_ahf+pp.i17)
I12=I1-delt_ahf;
else
I12=pp.i17;
if(I2+delt_ahf<4000)
I21=I2+delt_ahf;
else
I21=4000;
if(I2>delt_ahf+pp.i17)
I22=I2-delt_ahf;
else
I22=pp.i17;
ahf_p_b=1;
ahf_ok=1;
IM_ahf=(unsigned int)(I11*0.41);
IMM_ahf=(unsigned int)(I12*0.41);
IB_ahf=(unsigned int)(I21*0.41);
IBB_ahf=(unsigned int)(I22*0.41);
IML_ahf=IM_ahf%256;
IMH_ahf=IM_ahf/256;
IMML_ahf=IMM_ahf%256;
IMMH_ahf=IMM_ahf/256;
IBL_ahf=IB_ahf%256;
IBH_ahf=IB_ahf/256;
IBBL_ahf=IBB_ahf%256;
IBBH_ahf=IBB_ahf/256;
IM8=IML_ahf;
IM4=IMH_ahf;
IB8=IMML_ahf;
IB4=IMMH_ahf;
UPD=0X00;
out1=4000000/pp.f;
out2=out1*(100-pp.t16)/100;
COM=0X76;
COUNT1=out1%256;
COUNT1=out1/256;
COM=0XB2;
COUNT2=out2%256;
COUNT2=out2/256;
gate=1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -