📄 dc.c.bak
字号:
ET0=1;
ET1=1;
ES1=1; //I2C
EAD=1; //AD中断允许
EA=1; //中断总允许
start_t2();
urgent_stop=0;
rw_err=0;
err_ok=0;
err=0;
BEGIN: if(urgent_stop==1)
{
urgent_stop=0;
err_ok=0;
EX1=1;
EX0=1;
}
work=0;
send_enable=0; //关发送使能
start=0;
start_rot=0;
start_wire=0;
stop_wire=0;
decrease=0;
need_para=0;
nonce_sec=0;
in_sector=0;
new_sector=0;
noans_ok=1;
S_ANSW=0;
// R_ANSW=0;
POINTER0=0;
SSUM=0;
POINTER1=0;
RSUM=0;
r_byte_nums=4;
send=0;
overtime=0;
receive_p_out=0;
receive_p_in=0;
demand=0;
resend=0;
ans=0;
p_b=0; //基值
temp_pulse_num=0;
FINISH=0;
rot_front=0;
rot_reverse=0;
rot_ok=0;
rot_stop=0;
rot_stop_ok=0;
wire_add=0;
wire_dec=0;
wire_ok=0;
r_slope_ok=1;
w_slope_ok=1;
motor_stop=0;
retract=0;
c_cm0=0;
c_cm1=0;
k_r_p_add=0;
k_r_b_add=0;
k_r_p_dec=0;
k_r_b_dec=0;
temp_rot_vp=0;
temp_rot_vb=0;
temp_wire_vp=0;
temp_wire_vb=0;
retract_ok=0;
auto_return=0;
return_ok=0;
ask_return_ok=0;
to_begin=0;
PWMP=3; //23.5K
CML0=TML2+0xC8; //CM0,400us,送丝速度变化时间
if(CML0<TML2)
CMH0=TMH2+1+0X00;
else
CMH0=TMH2+0X00;
CML1=TML2+0XC8;
if(CML1<TML2) //CM1,400us,旋转速度变化时间
CMH1=TMH2+1+0X00;
else
CMH1=TMH2+0X00;
CTCON=CTCON|0X02; //CT0捕捉下降沿
tooth_num=11;
EX1=1;
EX0=1;
while(start==0)
{
if(called==1)
{
ini_sbuf(M_main,infor,com_calling,S_ANSW,0,0);
s_byte_nums=get_byte_nums(infor);
TR_noans();
called=0;
}
if(receive_p_out==1)
{
point=&pp.k2;
for(p_sec=0;p_sec<24;p_sec++)
*(point+p_sec)=rbuffer[p_sec*2+2]*256+rbuffer[p_sec*2+3];
pp.k1=rbuffer[50];
ini_sbuf(M_main,answer,S_ANSW,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,S_ANSW,0,0,0);
s_byte_nums=4;
TR_noans();
demand=0;
receive_p_in=0;
}
if(rot_front==1)
{
rot_right=1;
rot_left=0;
PWM0=255;
rot_front=0;
}
if(rot_reverse==1)
{
rot_right=0;
rot_left=1;
PWM0=255;
rot_reverse=0;
}
if(wire_add==1)
{
wire_back=0;
wire_front=1;
PWM1=255;
wire_add=0;
}
if(wire_dec==1)
{
wire_back=1;
wire_front=0;
PWM1=255;
wire_dec=0;
}
if(motor_stop==1)
{
PWM0=0;
PWM1=0;
wire_back=1;
wire_front=1;
rot_right=1;
rot_left=1;
rot_front=0;
rot_reverse=0;
wire_add=0;
wire_dec=0;
motor_stop=0;
}
if(resend==1)
{
ini_sbuf(M_main,answer,S_ANSW,0,0,0);
s_byte_nums=4;
TR_noans();
resend=0;
}
if(urgent_stop==1)
goto BEGIN;
}
pulse_num=pp.rn*tooth_num/20; //pp.rn*tooth_num/2/10, 0.1度的脉冲数
if(pp.k1==0)
K21=OFF;
else
K21=pp.k21;
delt_rot=51*pp.dv21/250;
rot_vp=pp.v21_p*51/250; //pp.v21_p*255/1250
temp_rot_vp=0;
if(K21==ON)
{
rot_vb=pp.v21_b*51/250;
temp_rot_vb=0;
}
n_cm1=pp.t21*1250/pp.v21_p; //pp.t21*100*1000*5/400/pp.v21_p
K3=pp.k3;
if(pp.k1==0)
K31=OFF;
else
K31=pp.k31;
delt_wire=51*pp.dv31/500;
wire_vp=pp.v31_p*51/500;
temp_wire_vp=0;
if(K31==ON)
{
wire_vb=pp.v31_b*51/500;
temp_wire_vb=0;
}
n_cm0=pp.t32*2500/pp.v31_p; //pp.t32*100*1000*10/400/pp.v31_p
work=3;
if(WIRE==ON)
kk=1;
else
kk=0;
nonce_sec=0;
if(K31==ON||K21==ON)
IEN1=IEN1|0X08; //允许CT3,电流脉冲
do
{
if(urgent_stop==1) //急停后返回
goto BEGIN;
if(rot_ok==0&&start_rot==1) //开始旋转
{
ini_sbuf(M_main,answer,S_ANSW,0,0,0);
s_byte_nums=4;
TR_noans();
if(pp.k2==CW)
{
rot_right=0;
rot_left=1;
}
else
{
rot_right=1;
rot_left=0;
}
rot_ok=1;
if(K21==ON)
{
CTCON=CTCON|0x40;
IEN1=IEN1|0x08; //CT3
}
IEN1=IEN1|0X20; //允许CM1
IEN1=IEN1|0x01; //允许CT0
start_rot=0;
}
if(pp.k3==ON&&wire_ok==0&&start_wire==1)//开始送丝
{
ini_sbuf(M_main,answer,S_ANSW,0,0,0);
s_byte_nums=4;
TR_noans();
wire_back=0;
wire_front=1;
wire_ok=1;
IEN1=IEN1|0X10; //CM0
start_wire=0;
}
if(need_para==1) //显示焊接角度
{
ini_sbuf(M_main,parameter1,0,0,0,0);
sbuffer[2]=FINISH/256;
sbuffer[3]=FINISH%256;
s_byte_nums=5;
TR_noans();
need_para=0;
}
if(urgent_stop==1)
goto BEGIN;
if(rot_ok==1&&rot_front==1&&r_slope_ok==1) //旋转速度加
{
if(delt_state==0||delt_state==1)
{
if(temp_rot_vp+delt_rot>=255)
temp_rot_vp=255;
else
temp_rot_vp=temp_rot_vp+delt_rot; //rot_vp=rot_vp-255*pp.dv21/1250
}
if(K21==ON)
{
if(delt_state==1||delt_state==2)
{
if(temp_rot_vb+delt_rot>=255)
temp_rot_vb=255;
else
temp_rot_vb=temp_rot_vb+delt_rot; //rot_vb=rot_vb-255*pp.dv21/1250
}
}
else
PWM0=temp_rot_vp;
rot_front=0;
}
if(rot_ok==1&&rot_reverse==1&&r_slope_ok==1) //旋转速度减
{
if(delt_state==0||delt_state==1)
{
if(temp_rot_vp<=delt_rot)
temp_rot_vp=0;
else
temp_rot_vp=temp_rot_vp-delt_rot; //rot_vp=rot_vp+255*pp.dv21/1250
}
if(K21==ON)
{
if(delt_state==1||delt_state==2)
{
if(temp_rot_vb<=delt_rot)
temp_rot_vb=0;
else
temp_rot_vb=temp_rot_vb-delt_rot; //rot_vb=rot_vb+255*pp.dv21/1250
}
}
else
PWM0=temp_rot_vp;
rot_reverse=0;
}
if(urgent_stop==1)
goto BEGIN;
if(K3==ON&&WIRE==ON&&wire_ok==1&&wire_add==1&&w_slope_ok==1)//送丝速度加
{
if(delt_state==0||delt_state==1)
{
if(temp_wire_vp+delt_wire>=255)
temp_wire_vp=255;
else
temp_wire_vp=temp_wire_vp+delt_wire; //wire_vp=wire_vp-255*pp.dv31/2500
}
if(K31==ON)
{
if(delt_state==1||delt_state==2)
{
if(temp_wire_vb+delt_wire>=255)
temp_wire_vb=255;
else
temp_wire_vb=temp_wire_vb+delt_wire; //wire_vb=wire_vb-255*pp.dv31/2500
}
}
else
PWM1=temp_wire_vp;
wire_add=0;
}
if(K3==ON&&WIRE==ON&&wire_ok==1&&wire_dec==1&&w_slope_ok==1)//送丝速度减
{
if(delt_state==0||delt_state==1)
{
if(temp_wire_vp<=delt_wire)
temp_wire_vp=0;
else
temp_wire_vp=temp_wire_vp-delt_wire; //wire_vp=wire_vp+255*pp.dv31/2500
}
if(K31==ON)
{
if(delt_state==1||delt_state==2)
{
if(temp_wire_vb<=delt_wire)
temp_wire_vb=0;
else
temp_wire_vb=temp_wire_vb-delt_wire; //wire_vb=wire_vb+255*pp.dv31/2500
}
}
else
PWM1=temp_wire_vp;
wire_dec=0;
}
if(urgent_stop==1)
goto BEGIN;
if(wire_ok==1&&WIRE==OFF) //手动关丝
{
PWM1=0;
wire_back=1;
wire_front=1;
kk=0;
}
if(wire_ok==1&&kk==0&&WIRE==ON) //手动开丝
{
wire_back=0;
wire_front=1;
if(K31==OFF)
PWM1=temp_wire_vp;
kk=1;
}
if(decrease==1&&rot_ok==1&&K21==ON)
{
CTCON=CTCON&0x3F;
IEN1=IEN1&0xF7; //CT3
PWM0=temp_rot_vp;
K21=OFF;
}
if(urgent_stop==1)
goto BEGIN;
if(in_sector==1&&new_sector==1) //进入区间
{
K21=pp.x[nonce_sec][1];
K3=pp.x[nonce_sec][5];
K31=pp.x[nonce_sec][6];
if(K21==ON||K3==ON&&K31==ON&&kk==1)
{
if(p_b==0)
CTCON=CTCON|0x40;
else
CTCON=CTCON|0x80;
IEN1=IEN1|0x08; //CT3
}
rot_vp=pp.x[nonce_sec][2]*51/250;
if(K21==ON) //脉动旋转开关
rot_vb=pp.x[nonce_sec][3]*51/250;
r_slope_ok=0;
c_cm1=0;
n_cm1=pp.x[nonce_sec][4]*1250/rot_vp;
IEN1=IEN1|0X20; //CM1
if(K3==ON&&kk==1)
{
wire_ok=1;
wire_vp=pp.x[nonce_sec][8]*51/500;
if(K31==ON)
wire_vb=pp.x[nonce_sec][9]*51/500;
w_slope_ok=0;
c_cm0=0;
n_cm0=pp.x[nonce_sec][7]*2500/wire_vp;
IEN1=IEN1|0X10; //CM0
}
// else
// {
// PWM0=0;
// rot_right=1;
// rot_left=1;
// wire_ok=0;
// }
new_sector=0;
}
if(K3==ON&&WIRE==ON&&wire_ok==1&&stop_wire==1) //停止送丝
{
ini_sbuf(M_main,answer,S_ANSW,0,0,0);
s_byte_nums=4;
TR_noans();
PWM1=0;
wire_back=1;
wire_front=1;
wire_ok=0; //抽丝时没有脉动
delay(2); //79um
if(pp.t34>0)
{
retract=1; //抽丝标志
wire_back=1;
wire_front=0;
CML0=TML2+0X50; //100ms
if(CML0<TML2)
CMH0=TMH2+1+0XC3;
else
CMH0=TMH2+0XC3;
n_cm0=pp.t34;
c_cm0=0;
PWM1=(127500-51*pp.v32)/500; //PWM1=255*(2500-pp.v32)/2500
IEN1=IEN1|0X10; //允许CM0,抽丝
}
stop_wire=0;
}
if(urgent_stop==1)
goto BEGIN;
if(rot_stop==1) //停止旋转
{
PWM0=0;
rot_right=1;
rot_left=1;
IEN1=IEN1&0XF7; //禁止CT3,电流脉冲
IEN1=IEN1&0XFE; //禁止CT0,焊接角度
if(wire_ok==1&&WIRE==ON)
{
PWM1=0;
wire_back=1;
wire_front=1;
wire_ok=0; //抽丝时没有脉动
delay(2); //79us
if(pp.t34>0)
{
retract=1; //抽丝标志
wire_back=1;
wire_front=0;
CML0=TML2+0X50; //100ms
if(CML0<TML2)
CMH0=TMH2+1+0XC3;
else
CMH0=TMH2+0XC3;
n_cm0=pp.t34;
c_cm0=0;
PWM1=51*(2500-pp.v32)/500; //PWM1=255*(2500-pp.v32)/2500
IEN1=IEN1|0X10; //允许CM0,抽丝
}
}
rot_stop_ok=1;
}
/*
if(resend==1)
{
ini_sbuf(M_main,answer,S_ANSW,0,0,0);
s_byte_nums=4;
TR_noans();
resend=0;
}
*/
if(urgent_stop==1)
goto BEGIN;
}while(rot_stop_ok==0);
while(need_para==0)
{
if(urgent_stop==1)
goto BEGIN;
}
ini_sbuf(M_main,parameter1,0,0,0,0);
sbuffer[2]=FINISH/256;
sbuffer[3]=FINISH%256;
s_byte_nums=5;
TR_noans();
need_para=0;
if(retract==1)
{
while(retract_ok==0)
{
if(urgent_stop==1)
goto BEGIN;
}
}
if(pp.b==ON)
{
while(auto_return==0)
{
if(urgent_stop==1)
goto BEGIN;
}
ini_sbuf(M_main,answer,S_ANSW,0,0,0);
s_byte_nums=4;
TR_noans();
if(pp.k2==CW)
{
rot_right=1;
rot_left=0;
}
else
{
rot_right=0;
rot_left=1;
}
PWM0=255;
IEN1=IEN1|0X01; //允许CT0,焊接角度
while(return_ok==0)
{
if(urgent_stop==1)
goto BEGIN;
if(need_para==1)
{
sbuffer[0]=M_main;
sbuffer[1]=parameter1;
sbuffer[2]=FINISH/256;
sbuffer[3]=FINISH%256;
sbuffer[4]=0;
s_byte_nums=5;
TR_noans();
need_para=0;
}
}
ini_sbuf(M_main,answer,S_ANSW,0,0,0);
s_byte_nums=4;
TR_noans();
}
while(to_begin==0)
{
if(urgent_stop==1)
goto BEGIN;
}
goto BEGIN;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -