📄 plc_gshd.cld
字号:
case 2:
if((X[2]&R[102]&1)==1)
{ Y[1]&=~2; Y[1]|=1; break;}
else break;
case 0:
if(spdl_dwell>0){spdl_dwell-=1;break;}
//if(spdl_stat==0)
Y[1]&=~3;
}
//-------------------spindle control-------------------------
if((P[25]==0)||(P[25]==1)) spdl_dangwei=0; //set spindle stage
else if(P[25]<5)
{
if ((X[P[26]]&P[27])==P[30]) spdl_dangwei=0;
else if ((X[P[26]]&P[27])==P[31]) spdl_dangwei=1;
else if(((X[P[26]]&P[27])==P[32])&&(P[25]>=3)) spdl_dangwei=2;
else if(((X[P[26]]&P[27])==P[33])&&(P[25]>=4)) spdl_dangwei=3;
else spdl_dangwei=-1;
}
if((mode_sel==MODE_JOG)&&(Manual_GongSi==1)&&(Y[34]&4))
{
if(X[GongSi_L_switch1]&GongSi_L_switch2) spdl_ctrl=2;
if(X[GongSi_H_switch1]&(~R[100+GongSi_H_switch1])&GongSi_H_switch2) spdl_ctrl=0;
}
if((mode_sel==MODE_HANDWHEEL)
&&(X[0+P[97]]==0)
&&((*ch_ctrl(0)&CH_ESTOP)==0)
&&((Y[34]&0x10)==0))
handwheel(0,axis_sel,-handwheel_mul);
else handwheel(0,-1,0);
//protect the Dao Ku and Z Axis
if((X[2]&0xc)!=4)
{
if((mod_M_code(0)!=6)&&(mod_M_code(0)!=41)) *sys_ext_alm()|= 0x8000;
else *sys_ext_alm()&=~0x8000;
if((*axis_stat(2)&AX_COORD_SETUP)==0)
{
*axis_ctrl(2)|=AX_LOCK;
auto_enable=0;
if(spdl_ctrl&3)spdl_ctrl=0;
}
else
{
if((*F_l[23])<(-120000))
// if(get_axis_pos(2)<(-140000))
{
*axis_ctrl(2)|=AX_LOCK;
auto_enable=0;
if(spdl_ctrl&3)spdl_ctrl=0;
}
else if(mod_M_code(0)!=6){
// if(get_axis_pos(2)<(-10000))
if((*F_l[23])<(-10000))
auto_enable=0;
if(spdl_ctrl&3)spdl_ctrl=0;
}
}
}
else *sys_ext_alm()&=~0x8000;
//xjc
if((spdl_ctrl==4)||(spdl_ctrl==0)) out_dac(0);
if((spdl_ctrl&3)==0) *ch_spdl_speed(0)=0;
if((X[3]&(~R[103])&8)&&(Y[1]&8)&&(spdl_ctrl==4))
{
spdl_stat=0x84;
dx_stat_dwell=132; //2 seconds
}
if((spdl_stat==0x84)&&(dx_stat_dwell>1))dx_stat_dwell--;
if((spdl_stat==0x84)&&(dx_stat_dwell<=1))
{
spdl_stat=4;
dx_stat_dwell=0;
dx_dwell=0;
}
if((mod_M_code(0)!=40)&&(mod_M_code(0)!=6))
if(R[500]==0) Y[1]&=~0x10;
if((mod_M_code(0)!=41)&&(mod_M_code(0)!=6)) Y[1]&=~0x20;
if(R[500]!=0)
if((X[2]&0x4)==0x4)
{Y[1]&=~0x10;R[500]=0;}
if(R[150]!=0) //add
if((((X[3])&(~R[103]))&0x8)==0x8)
{R[152]=1;R[150]=0;dxwancheng=1;}
if(R[152]!=0)
if(((X[3]|R[103])&0x08)==0)
{R[150]=0;R[152]=0;dxwancheng=0;} //add
runhua();
magzine();
// atc();
if(mod_M_code(0)==6) atc();
else { atc_ctrl=0;atc_stag=0;}
R_ul[132/4]=X_ul[32/4];
R_ui[130/2]=X_ui[30/2];
R_ui[104/2]=X_ui[4/2];
R_ul[100/4]=X_ul[0/4];
}
void plc2(void)
{
int i,xy_step_mul,not_home_jog_speed;
unsigned char not_home_feedover;
unsigned char not_home_rapidover;
unsigned int da_test_step;
R_ul[272/4]=X_ul[32/4]&(~R_ul[232/4]);
R_ui[270/2]=X_ui[30/2]&(~R_ui[230/2]);
R_ui[244/2]=X_ui[4/2]&(~R_ui[204/2]);
R_ul[240/4]=X_ul[0/4]&(~R_ul[200/4]);
//chao_cheng lamp
if(X[0+P[97]]) Y[34]|= 1;
else Y[34]&=~1;
//runhua();
not_home_jog_speed=P_i[91];
if(P_i[91]>1000) not_home_jog_speed=1000;
if(P_i[91]<=0) not_home_jog_speed=200;
not_home_feedover =P_i[92];
if(P_i[92]>30) not_home_feedover =30;
if(P_i[92]<=0) not_home_feedover =10;
not_home_rapidover=P_i[93];
if(P_i[93]>20) not_home_rapidover=20;
if(P_i[93]<=0) not_home_rapidover=10;
if(reset_dwell>0) return;
if(((sv_en==1)&&(reset_dwell==0)&&(reset_lamp_dwell==3))||(P[99]!=0))
{
switch(R[270]&0x1f)
{
case 0x01: //AUTO
*ch_ctrl(0)&=~CH_SGL_BLK;
mode_sel=(auto_enable)? MODE_AUTO:0;
if(mode_sel==MODE_AUTO){Y[30]&=~0x1f;Y[30]|= 1;}
else Y[30]&=~1;
break;
case 0x02: //SGL BLK
*ch_ctrl(0)|=CH_SGL_BLK;
mode_sel=(auto_enable)? MODE_AUTO:0;
if(mode_sel==MODE_AUTO){Y[30]&=~0x1f;Y[30]|=2;}
else Y[30]&=~2;
break;
case 0x04:mode_sel=MODE_JOG; Y[30]&=~0x1f;Y[30]|=4; break;
case 0x08:mode_sel=MODE_STEP; Y[30]&=~0x1f;Y[30]|=8; break;
case 0x10:mode_sel=MODE_REF_RETURN; Y[30]&=~0x1f;Y[30]|=0x10; break;
}
if(mode_sel==MODE_STEP) {if(X[4]&0xf){mode_sel=MODE_HANDWHEEL;Y[3]|=0x40;}}
if(mode_sel==MODE_HANDWHEEL){if((X[4]&0xf)==0){mode_sel=MODE_STEP;Y[3]&=~0x40;}}
asm cli
*ch_ctrl(0)&=~CH_MODE_MSK;
*ch_ctrl(0)|=mode_sel;
/*
//----------dry run setup-----------
if(Y[30]&1){
if((X[32]&(~R[232])&1)&&((*ch_stat(0)&CH_CYCLE_LAMP)==0)) Y[32]^=1;
if(Y[32]&1) *ch_ctrl(0)|= CH_DRY_RUN;
else *ch_ctrl(0)&=~CH_DRY_RUN;
}
else{
*ch_ctrl(0)&=~CH_DRY_RUN;
Y[32]&=~1;
}
//----------dry run setup-----------
*/
asm sti
}
da_test_step=1<<(4*(((Y[32]&0x1e)+2)/5));
switch(R[271]&7)
{
case 4:
if(spdl_ctrl==0) Y_ui[28/2]+=da_test_step;
spdl_override+=10;
if(spdl_override>=150) spdl_override=150;
break;
case 1:
if(spdl_ctrl==0) Y_ui[28/2]-=da_test_step;
if(spdl_override>=20) spdl_override-=10;
else spdl_override=10;
break;
case 2:
spdl_override=100;
}
Y[31]&=~2; if(spdl_override==100) Y[31]|= 2;
(*G_ui[169])=R_ui[702/2];
switch(R[273]&7)
{
case 4:*ch_rapidover(0)+=(*ch_rapidover(0)>=100)? 0:10;break;
case 2:*ch_rapidover(0)=100; break;
case 1:*ch_rapidover(0)-=(*ch_rapidover(0)>=10)? 10:0; break;
}
if(*ch_rapidover(0)<10) *ch_rapidover(0)=0;
if(*ch_rapidover(0)>100) *ch_rapidover(0)=100;
Y[33]&=~2; if(*ch_rapidover(0)==100) Y[33]|= 2;
switch(R[275]&7)
{
case 4:*ch_feedover(0)+=(*ch_feedover(0)>=200)? 0:10;break;
case 2:*ch_feedover(0)=100; break;
case 1:*ch_feedover(0)-=(*ch_feedover(0)>=10)? 10:0; break;
}
if(*ch_feedover(0)<10) *ch_feedover(0)=0;
if(*ch_feedover(0)>200) *ch_feedover(0)=200;
Y[35]&=~2; if(*ch_feedover(0)==100) Y[35]|= 2;
jog_speed=*ch_feedover(0);
if(((((*axis_stat(0))&(*axis_stat(1))&(*axis_stat(2)))&AX_COORD_SETUP)==0)&&(P[90]==0))
{
if(*ch_feedover(0)>not_home_feedover) *ch_feedover(0)=not_home_feedover;
if(*ch_rapidover(0)>not_home_rapidover) *ch_rapidover(0)=not_home_rapidover;
}
if(X[33]&0x10) jog_speed*=3;
jog_speed=(jog_speed>600)? 600:jog_speed;
// STEP-------
switch(R[272]&0x1E)
{
case 0x02: step_mul=1; Y[32]&=~0X1E;Y[32]|=0x02;break;
case 0X04: step_mul=10; Y[32]&=~0X1E;Y[32]|=0x04;break;
case 0x08: step_mul=100; Y[32]&=~0X1E;Y[32]|=0x08;break;
case 0x10: step_mul=1000;Y[32]&=~0X1E;Y[32]|=0X10;break;
}
switch(X[4]&0x0f)
{
case 0x01: axis_sel=0; break;
case 0x02: axis_sel=1; break;
case 0x04: axis_sel=2; break;
case 0x08: axis_sel=3; break;
default: axis_sel=-1;
}
switch(X[4]&0x70)
{
case 0x10: handwheel_mul=1; break;
case 0x20: handwheel_mul=10; break;
case 0x40: handwheel_mul=100; break;
default: handwheel_mul=1;
}
if(P[95]==1)
{
if(step_mul<=100)handwheel_mul=step_mul;
else handwheel_mul=100;
}
if(((*axis_stat(axis_sel)&AX_COORD_SETUP)==0)&&(P_i[90]==0))
{
if(handwheel_mul>10) handwheel_mul=10;
}
// cycle lamp
if(*ch_stat(0)&CH_CYCLE_LAMP)
{
Y[31]|=0X40;
if(P[75]/100) Y[e_cycle_lamp1]|=e_cycle_lamp2;
}
else
{
Y[31]&=~0X40;
if(P[75]/100) Y[e_cycle_lamp1]&=~e_cycle_lamp2;
}
// feedhold lamp
if(*ch_stat(0)&CH_FEEDHOLD_LAMP)
{
Y[35]|=0X40;
if(P[76]/100) Y[e_feedhold_lamp1]|=e_feedhold_lamp2;
}
else
{
Y[35]&=~0X40;
if(P[76]/100) Y[e_feedhold_lamp1]&=~e_feedhold_lamp2;
}
// axis lock switch and lamp
// if((*ch_stat(0)&CH_CYCLE_LAMP)==0)
if( mode_sel==MODE_JOG)
{
if(Manual_GongSi==1)
{
if(R[274]&4) Y[34]^=4;
}
if(R[274]&0x10) {Y[34]^=0x10;if((Y[34]&0x10)==0)Y[34]&=~0x08;}
if(R[274]&0x08) Y[34]^=0x08;
}
if(Y[34]&0x10) Y[34]|=8;
if((Y[34]&0x10)||((Y[34]&4)&&(Manual_GongSi==1)&&((P[19]/10000)==0)))
{ for(i=0;i<4;i++) *axis_ctrl(i)|= AX_LOCK; }
else { for(i=0;i<4;i++) *axis_ctrl(i)&=~AX_LOCK;
if(Y[34]&0x08) *axis_ctrl(2)|= AX_LOCK; }
/*
//-------------- zi dong huan dang --------------
if((mod_M_code(0)!=11)&&(mod_M_code(0)!=13)) huandang_stag=0;
//-------------- zi dong huan dang --------------
*/
//--------------manual--------------
if(((*ch_stat(0)&CH_CYCLE_LAMP)==0)
&&((*ch_ctrl(0)&CH_ESTOP)==0)
&&((Y[34]&0x10)==0))
{
//manual collant on/off
if(R[270]&0x20) Y[30]^=0x20;
if(Y[30]&0x20) Y[0]|= 0x20;
else Y[0]&=~0x20;
//shou dong huan dao
if((((X[i_sm_z_s1]&i_sm_z_s2)||(P[56]==0)||(P[99]==1))
&&(spdl_ctrl==0)&&((Y[30]&0x80)==0)&&((Y[32]&0x40)==0)))
{
if(R[270]&0x40) Y[30]^=0x40;
}
if((((X[i_sm_z_s1]&i_sm_z_s1)==0)&&(P[56]!=0))||(spdl_ctrl!=0)) Y[30]&=~0x40;
if(Y[30]&0x40)
{
if(((R[270]&0x80)&&((P[77]%100)==0))||
((P[77]%100)&&(R[e_toolctrl_switch1+240]&e_toolctrl_switch2)))
Y[30]^=0x80;
spdl_ctrl=0;
auto_enable=0;
}
else
{
Y[30]&=~0x80;
if(P[77]/100) Y[e_toolctrl_lamp1]&=~e_toolctrl_lamp2;
}
if(Y[30]&0x80)
{
Y[0]|= 0x40;
if(P[77]/100) Y[e_toolctrl_lamp1]|=e_toolctrl_lamp2;
}
else
{
Y[0]&=~0x40;
if(P[77]/100) Y[e_toolctrl_lamp1]&=~e_toolctrl_lamp2;
}
//manual dingxiang
if(((spdl_ctrl==0)&&((Y[30]&0x40)==0)&&((Y[32]&0x80)==0))||(spdl_ctrl==4))
{
if(X[32]&(~R[232])&0x20) Y[32]^=0x20;
if(Y[32]&0x20)
{
// if(spdl_stat!=4){
Y[1]|=1;
if((dx_dwell==0)&&(spdl_stat!=4))dx_dwell=8;
dingxiang();
// spdl_stat=0x84;
// }
}
else
{
dingxiangstop();
//if(spdl_stat&4) spdl_stat=0;
}
}
else Y[32]&=~0x20;
//manual spindle zhi_dong
if((R[272]&0x80)&&(P[22]==1))
{
Y[32]^=0x80;
if(Y[32]&0x80) spdl_zddwll=-1;
else spdl_zddwll=0;
}
if(Y[32]&0x80)
{
Y[1]|=4;
spdl_ctrl=0;
spdlcd_time=0;
spdlcd_eng=0;
Y[32]&=~0x40;
}
else Y[1]&=~4;
if(spdl_zddwll_ahead>plc2_time) spdl_zddwll_ahead-=plc2_time;
else
{
spdl_zddwll_ahead=0;
if(spdl_zddwll>plc2_time) { Y[32]|= 0x80; spdl_zddwll-=plc2_time; }
else if(spdl_zddwll>=0) { Y[32]&=~0x80; spdl_zddwll=0; }
}
//spdl chongdong
if((spdl_ctrl==0)&&((Y[30]&0x40)==0)&&((Y[32]&0x80)==0)&&((Y[32]&0x20)==0))
{
if((R[272]&0x40)||
((P[78]%100)&&(R[e_SpdlStep_switch1+240]&e_SpdlStep_switch2)))
{ spdlcd_eng=1; spdlcd_time=Spdl_CD_Time; }
}
if((spdlcd_time)>0)
{
spdlcd_time-=plc2_time;
spdl_ctrl=1;Y[32]|= 0x40;
if(P[78]/100) Y[e_SpdlStep_lamp1]|=e_SpdlStep_lamp2;
}
else if(spdlcd_eng)
{
spdlcd_time=0;spdlcd_eng=0;spdl_ctrl=0;Y[32]&=~0x40;
if(P[78]/100) Y[e_SpdlStep_lamp1]&=~e_SpdlStep_lamp2;
}
//spdl dingxiang
/* if((spdl_ctrl==0)&&((Y[30]&0x40)==0)&&((Y[32]&0x80)==0))
{
//if(get_axis_pos(2)<=5){//031210
if(*F_l[23]<=5){
if(R[272]&0x20) Y[32]^=0x20;
}
if(Y[32]&0x20) dingxiang();
else dingxiangstop();
}
else Y[32]&=~0x20;*/
//manual spindle control
if(((Y[30]&0xC0)==0)&&((Y[32]&0xA0)==0))
{
switch((X[34])&0xE0)
{
case 0x20: if(spdl_ctrl==0)
spdl_ctrl=1; break;
case 0x80: if(Spdl_Dir_Change_Mode==2) break;
if(spdl_ctrl==0) spdl_ctrl=2; break;
case 0x40: spdl_ctrl=0;
if((Y[32]&0x80)==0)
{
spdl_zddwll_ahead=Spdl_ZD_Dwell;
spdl_zddwll=Spdl_ZD_Time;
}
break;
}
}
for(i=0;i<4;i++)
{
if(mode_sel!=MODE_REF_RETURN) set_axis_home(i,0);
if(mode_sel!=MODE_JOG) set_axis_jog(i,0);
}
Y[31]&=~0X38;Y[33]&=~0X38;Y[35]&=~0X38;//close the JOG lamps
switch(mode_sel)
{
case MODE_REF_RETURN:
if((X[35]&0x40)||
((P[76]%100)&&(X[e_feedhold_switch1]&e_feedhold_switch2)))
for(i=0;i<4;i++) set_axis_home(i,0);
else
{
if((X[31]&0X40)||
((P[75]%100)&&(X[e_cycle_switch1]&e_cycle_switch2)))
{
Home_State=0;
if(((*axis_stat(0)&AX_HOME_GOING)==0)&&((Y[34]&0x08)==0))
set_axis_home(2,1);
}
if(*axis_stat(0)&AX_HOME_GOING) Home_State|=0x10;
if(*axis_stat(1)&AX_HOME_GOING) Home_State|=0x20;
if(*axis_stat(2)&AX_HOME_GOING) Home_State|=0x40;
if(*axis_stat(3)&AX_HOME_GOING) Home_State|=0x80;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -