📄 复件 main_stop1.c.bak
字号:
{
sbuffer1[temp_pc]=*(point+temp_pc-temp_delt)/256;
temp_delt++;
}
else
sbuffer1[temp_pc]=*(point+temp_pc-temp_delt)%256;
}
sbuffer1[23]=0;
}break;
case 2: {
point=&pp.x[snum][20];
for(temp_pc=3;temp_pc<15;temp_pc++)
{
if(temp_pc%2==1)
{
sbuffer1[temp_pc]=*(point+temp_pc-temp_delt)/256;
temp_delt++;
}
else
sbuffer1[temp_pc]=*(point+temp_pc-temp_delt)%256;
}
for(temp_pc=15;temp_pc<24;temp_pc++)
sbuffer1[temp_pc]=0;
}break;
case 3: {
point=&pp.x[snum][26];
for(temp_pc=3;temp_pc<11;temp_pc++)
{
if(temp_pc%2==1)
{
sbuffer1[temp_pc]=*(point+temp_pc-temp_delt)/256;
temp_delt++;
}
else
sbuffer1[temp_pc]=*(point+temp_pc-temp_delt)%256;
}
for(temp_pc=11;temp_pc<24;temp_pc++)
sbuffer1[temp_pc]=0;
}break;
default:break;
}
s_byte_nums=get_byte_nums(p_in_sec);
TR_ans();
RESEND4: if(resend==1||overtime==1)
{
c_err++;
resend=0;
overtime=0;
if(c_err<5)
{
TR_ans();
goto RESEND4;
}
else
{
c_err=0;
main_err=1;
err=2;
stop=0;
while(urgent_stop==0);
goto END_P;
}
}
else
c_err=0;
}
}
}
}
END_P: p_send=0;
s_p=0;
}
void send_param1()
{
unsigned char axis[]={M_current_P,M_RW_P,M_OA_P},temp_pc,temp_delt,snum,anum,c_err;
p_send=1;
s_p=1;
c_err=0;
if(existent[0]==1)
{
point=&pp.t01;
temp_delt=2;
sbuffer1[0]=M_current_P; //电流和面板接收
sbuffer1[1]=p_out_sec; //电流区间外参数
sbuffer1[52]=0;
sbuffer1[53]=0;
sbuffer1[54]=0;
for(temp_pc=2;temp_pc<52;temp_pc++)
{
if(temp_pc%2==0)
{
sbuffer1[temp_pc]=*(point+temp_pc-temp_delt)/256;
temp_delt++;
}
else
sbuffer1[temp_pc]=*(point+temp_pc-temp_delt)%256;
}
s_byte_nums=55;
TR_ans();
RESEND: if(resend==1||overtime==1)
{
c_err++;
resend=0;
overtime=0;
if(c_err<5)
{
TR_ans();
goto RESEND;
}
else
{
c_err=0;
err=2;
stop=0;
while(urgent_stop==0);
goto END_P1;
}
}
else
c_err=0;
}
if(existent[1]==1)
{
s_p=1;
point=&pp.k2;
temp_delt=2;
sbuffer1[0]=M_RW_P; //旋转/送丝和面板接收
sbuffer1[1]=p_out_sec; //旋转/送丝区间外参数
for(temp_pc=2;temp_pc<50;temp_pc++)
{
if(temp_pc%2==0)
{
sbuffer1[temp_pc]=*(point+temp_pc-temp_delt)/256;
temp_delt++;
}
else
sbuffer1[temp_pc]=*(point+temp_pc-temp_delt)%256;
}
for(temp_pc=50;temp_pc<55;temp_pc++)
sbuffer1[temp_pc]=0;
s_byte_nums=55;
TR_ans();
RESEND1: if(resend==1||overtime==1)
{
c_err++;
resend=0;
overtime=0;
if(c_err<5)
{
TR_ans();
goto RESEND1;
}
else
{
c_err=0;
err=2;
stop=0;
while(urgent_stop==0);
goto END_P1;
}
}
else
c_err=0;
}
if(existent[2]==1)
{
s_p=1;
point=&pp.k4;
temp_delt=2;
sbuffer1[0]=M_OA_P; //横摆和面板接收
sbuffer1[1]=p_out_sec; //横摆区间外参数
for(temp_pc=2;temp_pc<52;temp_pc++)
{
if(temp_pc%2==0)
{
sbuffer1[temp_pc]=*(point+temp_pc-temp_delt)/256;
temp_delt++;
}
else
sbuffer1[temp_pc]=*(point+temp_pc-temp_delt)%256;
}
for(temp_pc=52;temp_pc<55;temp_pc++)
sbuffer1[temp_pc]=0;
s_byte_nums=55;
TR_ans();
RESEND2: if(resend==1||overtime==1)
{
c_err++;
resend=0;
overtime=0;
if(c_err<5)
{
TR_ans();
goto RESEND2;
}
else
{
c_err=0;
err=2;
stop=0;
while(urgent_stop==0);
goto END_P1;
}
}
else
c_err=0;
}
if(pp.sec_num>0)
{
for(anum=0;anum<3;anum++)
{
s_p=1;
for(snum=0;snum<pp.sec_num;snum++)
{
if(existent[anum]==1||(anum==2&&(existent[anum]==1||existent[anum+1]==1)))
{
s_p=1;
switch(anum)
{
case 0: point=&pp.x[snum][0];break;
case 1: point=&pp.x[snum][10];break;
case 2: point=&pp.x[snum][20];break;
default:break;
}
temp_delt=3;
sbuffer1[0]=axis[anum];
sbuffer1[1]=p_in_sec;
sbuffer1[2]=snum;
for(temp_pc=3;temp_pc<23;temp_pc++)
{
if(temp_pc%2==1)
{
sbuffer1[temp_pc]=*(point+temp_pc-temp_delt)/256;
temp_delt++;
}
else
sbuffer1[temp_pc]=*(point+temp_pc-temp_delt)%256;
}
sbuffer1[23]=0;
s_byte_nums=get_byte_nums(p_in_sec);
TR_ans();
RESEND3: if(resend==1||overtime==1)
{
c_err++;
resend=0;
overtime=0;
if(c_err<5)
{
TR_ans();
goto RESEND3;
}
else
{
c_err=0;
err=2;
stop=0;
while(urgent_stop==0);
goto END_P1;
}
}
else
c_err=0;
}
}
}
END_P1: p_send=0;
s_p=0;
}
void ini_ram()
{
for(times=0;times<6;times++)
{
readEEP_page();
delay(13);
}
}
void switch_state()
{
ini_sbuf(M_P_RC,program,PRG,0,0,0,0);
s_byte_nums=4;
TR_noans();
ini_sbuf(M_RC,command,com_weld_simu,0,0,0,0);
s_byte_nums=4;
wait_ans=1;
TR_ans();
wait_ans=0;
YOUHU=rbuffer[3];
new_switch11=0;
ini_sbuf(M_current,infor,com_weld_simu,YOUHU,0,0,0);
s_byte_nums=6;
TR_noans();
// TR_ans();
ini_sbuf(M_RC,command,com_wire_on_off,0,0,0,0);
s_byte_nums=4;
wait_ans=1;
TR_ans();
wait_ans=0;
WIRE=rbuffer[3];
new_switch22=0;
ini_sbuf(M_RW,infor,com_wire_on_off,WIRE,0,0,0);
s_byte_nums=6;
TR_noans();
// TR_ans();
ini_sbuf(M_RC,command,com_delt_switch,0,0,0,0);
s_byte_nums=4;
wait_ans=1;
TR_ans();
wait_ans=0;
delt_state=rbuffer[3];
delt_switch=0;
ini_sbuf(M_ALL,infor,com_delt_switch,delt_state,0,0,0);
s_byte_nums=6;
TR_noans();
// TR_ans();
}
void edit()
{
while(editing==1)
{
if(edit_finish==1)
{
p_name=76;
param=1;
para_table();
param=0;
edit_finish=0;
editing=0;
}
else if(param==1)
{
p_name=rbuffer[2];
para_table();
if(temp_edit_finish==1)
{
edit_finish=1;
temp_edit_finish=0;
delay(10);
}
}
while(in_sector==1)
{
get_SLA();
point=&pp.x[nonce_sec][0];
for(p_sec=0;p_sec<30;p_sec++)
{
*(point+p_sec)=rbuffer[p_sec*2+3]*256+rbuffer[p_sec*2+4];
COMM=(mainDDR+152+nonce_sec*60+p_sec*2)/256;
writeEEP_word();
delay(5);
}
in_sector=0;
}
}
}
void start_t2()
{
TM2CON=0x8D; /*16位溢出,分频系数8,f/12*/
EA=1;
TM2IR=0;
}
void count()
{
n_t01=pp.t01;
n_t02=pp.t02;
if(pp.gas2==ON)
{
n_t03=pp.t03;
n_t04=pp.t04;
}
n_t12=pp.t12;
n_t17=pp.t17;
n_t34=pp.t34;
if(pp.t13_sd==0)
n_t13=pp.t13;
if(pp.n11_sd==0)
n_n11=pp.n11;
if(pp.t21_sd==0)
n_t21=pp.t21;
if(pp.t31_sd==0)
n_t31=pp.t31;
if(pp.t32_sd==0)
n_t32=pp.t32;
if(pp.t33_sd==0)
n_t33=pp.t33;
if(pp.t41_sd==0)
n_t41=pp.t41;
if(pp.t43_sd==0)
n_t43=pp.t43;
if(pp.t51_sd==0)
n_t51=pp.t51;
if(pp.t52_sd==0)
n_t52=pp.t52;
}
void start_woa() //送丝、横摆、弧长哪个时间短先启动哪个
{
if(pp.k3==1&&WIRE==ON&&t31OK==0&&wire_stoped==0)
{
if((pp.t31_sd==0&&c_flow>=c_current+n_t31)||(pp.t31_sd==1&&FINISH>=pp.t31))
{
ini_sbuf(M_RW,command,com_wire,0,0,0,0);
s_byte_nums=4;
wait_ans=1;
TR_ans();
wait_ans=0;
t31OK=1;
}
}
if(pp.k4==1&&t41OK==0)
{
if((pp.t41_sd==0&&c_flow>=c_current+n_t41)||(pp.t41_sd==1&&FINISH>=pp.t41))
{
ini_sbuf(M_OSC,command,com_osc,0,0,0,0);
s_byte_nums=4;
wait_ans=1;
TR_ans();
wait_ans=0;
t41OK=1;
}
}
if(YOUHU&&pp.k5==1&&t51OK==0&&avc_stoped==0)
{
if((pp.t51_sd==0&&c_flow>=c_current+n_t51)||(pp.t51_sd==1&&FINISH>=pp.t51))
{
ini_sbuf(M_AVC,command,com_avc,0,0,0,0);
s_byte_nums=4;
wait_ans=1;
TR_ans();
wait_ans=0;
t51OK=1;
}
}
}
void EX0_INT (void) interrupt 0 //急停
{
EX0=0;
EA=0;
POINTER0=0;
SSUM=0;
POINTER1=0;
RSUM=0;
s_p=0;
if(rc_err==1)
{
rc_err=0;
last_FINISH=FINISH;
delay(5);
EA=1;
stop=1;
}
else if(main_err==1)
{
main_err=0; //清主板出错标志
EA=1;
ini_sbuf(M_P_RC,err_infor,M_main,err,0,0,0);
s_byte_nums=5;
TR_noans();
err=0;
stop=1;
urgent_stop=1;
}
else
{
EA=1;
ini_sbuf(M_current,command,com_calling,0,0,0,0);
s_byte_nums=4;
TR_ans(); // 对方给正常时应答类型,出错时错误信息类型
if(rbuffer[1]==answer)
{
ini_sbuf(M_RW,command,com_calling,0,0,0,0);
s_byte_nums=4;
TR_ans();
if(rbuffer[1]==answer)
{
ini_sbuf(M_OSC,command,com_calling,0,0,0,0);
s_byte_nums=4;
TR_ans();
if(rbuffer[1]==answer)
{
ini_sbuf(M_AVC,command,com_calling,0,0,0,0);
s_byte_nums=4;
TR_ans();
if(rbuffer[1]==err_infor)
{
if(work!=0)
{
ini_sbuf(M_P_RC,err_infor,M_AVC,err,0,0,0);
s_byte_nums=5;
TR_noans();
}
else
{
if(err==18)
{
ini_sbuf(M_AVC,command,com_lift,0,0,0,0);
s_byte_nums=4;
TR_noans();
}
}
}
}
else
{
ini_sbuf(M_P_RC,err_infor,M_OSC,err,0,0,0);
s_byte_nums=5;
TR_noans();
}
}
else
{
ini_sbuf(M_P_RC,err_infor,M_RW,err,0,0,0);
s_byte_nums=5;
TR_noans();
}
}
else
{
ini_sbuf(M_P_RC,err_infor,M_current,err,0,0,0);
s_byte_nums=5;
TR_noans();
}
urgent_stop=1;
}
delay(5);
ini_sbuf(M_ALL,command,com_err_ok,0,0,0,0);
s_byte_nums=4;
TR_noans();
POINTER1=64;
wait_ans=0;
}
void EX1_INT(void) interrupt 2 //响应线控器申请
{
EX1=0;
c_ex1++;
if(c_ex1==3)
{
EX1=0;
c_ex1=0;
rc_demand=1;
}
else
EX1=1;
}
void T1_INT (void) interrupt 3
{
c_t1++;
if(send==1)
{
if(c_t1==7)
{
if(s_p==0)
S0BUF=sbuffer[POINTER0];
else
S0BUF=sbuffer1[POINTER0];
c_t1=0;
}
}
else
{
if(p_send==1)
{
if(c_t1==4000)
{
TR1=0;
c_t1=0;
overtime=1;
}
}
else
{
if(c_t1==100)
{
TR1=0;
c_t1=0;
overtime=1;
}
}
}
}
void TR_INT (void) interrupt 4 //串行口中断
{ //关中断
if(TI==1) //发送完成
{
TI=0;
POINTER0++; //发送缓冲指针加1
if(POINTER0==1)
TB8=0;
if(POINTER0<s_byte_nums)
{
if(POINTER0<s_byte_nums-1)
{
if(s_p==1)
SSUM=SSUM+sbuffer1[POINTER0];
else
SSUM=SSUM+sbuffer[POINTER0]; //6个数据字节求和
}
else
{
if(s_p==1)
sbuffer1[s_byte_nums-1]=SSUM+sbuffer1[0];
else
sbuffer[s_byte_nums-1]=SSUM+sbuffer[0]; //数据和加地址生成校验码
}
}
}
if(RI==1) //接收完成
{
RI=0;
POINTER1++; //接收缓冲指针加1
rbuffer[POINTER1-1]=S0BUF; //从接收缓冲读出数据
if(rbuffer[0]==M_main)
{
if(POINTER1==2)
r_byte_nums=get_byte_nums(rbuffer[1]);
if(POINTER1<r_byte_nums)
RSUM=RSUM+rbuffer[POINTER1-1]; //生成校验码
else
{
if(rbuffer[r_byte_nums-1]==RSUM)
{
if(ans==0)
{
POINTER1=0;
RSUM=0;
}
S_ANSW=OK;
data_type();
}
else
{
S_ANSW=FAIL;
if(resend==0)
resend=1;
}
}
}
else
POINTER1=0;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -