📄 plc_gshd.cld
字号:
#pragma inline
#include "plc.h"
//#define plc1_time 16
#define plc2_time 128
#define mode_sel R[0]
#define jog_speed R_i[4/2]
#define run_enable R[6]
#define auto_enable R[7]
#define step_mul R_i[8/2] //R_i[2/2]
#define handwheel_mul R[50]
#define axis_sel R[51]
#define dx_dwell R_ui[220] //zibian
#define PMatc_z_pos1 P_i[28]
#define PMatc_z_pos2 P_i[29]
#define baodao R[221]
#define Cur_lock R[222]
#define dxwell R_i[223/2]
#define dwell R[227]
#define dx_stat_dwell R[226]
#define dxwancheng R[154]
#define spdl_ctrl R[40] //1: FWD, 2: RVS, 4: ORD
#define spdl_stat R[41]
#define spdl_dwell R[42]
#define spdlcd_eng R[43]
#define spdlcd_time R_i[44/2]
#define spdl_cmd R_ui[46/2]
#define spdl_out R_ui[48/2]
#define spdl_override R[702]//R[50]
#define spdl_zddwll_ahead R_i[52/2]
#define spdl_zddwll R_i[54/2]
#define spdl_dangwei R_c[56]
#define s_code_dwell R[57]
#define Spdl_Moter_Count_Max_Speed R_i[58/2]
#define sv_en R[60]
#define sv_stag R[61]
#define sv_dwll R_i[62/2]
#define sv_Alm R[64]
#define sv_Rdy R[65]
#define sv_n R[66]
#define reset_lamp_dwell R[67]
#define reset_dwell R_i[68/2]
#define Home_State R[72]//ge zhou hui ling zhuang tai
#define daowei_jishu R_i[500/2]
#define mag_ctrl R[502]
#define mag_stag R[503]
#define mag_fin R[504]
#define cur_mag_pos R[505]
#define new_cutter_p R_c[506]
#define new_cutter_t R_c[507]
#define atc_ctrl R[510]
#define atc_stag R[511]
#define atc_fin R[512]
#define atc_stat R[513]
#define atc_old_pos R_l[520/4]
#define atc_dwell R_i[514/2]
#define mag_dwll R_i[516/2]
#define old_cutter R[524]
#define mod_T_buf (*ch_mst_mod(0,6))
/*
//-------------- zi dong huan dang --------------
#define huandang_stag R[74]
#define huandang_dwell R[75]
#define huandang_dwelltime R[76]
//-------------- zi dong huan dang --------------
*/
#define runhua_opentime R_ul[84/4]
#define runhua_closetime R_ul[88/4]
#define mod_S_buf R_ui[92/2] //(*ch_mst_mod(0,7))//test 20031119
//#define mod_S_buf (*ch_mst_mod(0,7))
#define out_dac(da) (Y_ui[28/2]=da)
#define i_estop1 R[300]
#define i_estop2 R[301]//extern run enable input
#define i_sv_Alm1 R[302]
#define i_sv_Alm2 R[303]//sevor ok input
#define i_sv_Rdy1 R[304]
#define i_sv_Rdy2 R[305]//sevor power ok input
#define i_sv_X_Alm1 R[310]
#define i_sv_X_Alm2 R[311]//sevor X baojing input
#define i_sv_X_Rdy1 R[312]
#define i_sv_X_Rdy2 R[313]//sevor X zhunbeihao input
#define i_sv_Y_Alm1 R[315]
#define i_sv_Y_Alm2 R[316]//sevor Y baojing input
#define i_sv_Y_Rdy1 R[317]
#define i_sv_Y_Rdy2 R[318]//sevor Y zhunbeihao input
#define i_sv_Z_Alm1 R[320]
#define i_sv_Z_Alm2 R[321]//sevor Z baojing input
#define i_sv_Z_Rdy1 R[322]
#define i_sv_Z_Rdy2 R[323]//sevor Z zhunbeihao input
#define i_sv_A_Alm1 R[325]
#define i_sv_A_Alm2 R[326]//sevor 4Th baojing input
#define i_sv_A_Rdy1 R[327]
#define i_sv_A_Rdy2 R[328]//sevor 4Th zhunbeihao input
#define i_Spdl_Alm1 R[330]
#define i_Spdl_Alm2 R[331]//spindle motor alarm input
#define i_sm_z_s1 R[332]
#define i_sm_z_s2 R[333]//spindle zero speed right ok input
#define i_sm_sok1 R[334]
#define i_sm_sok2 R[335]//spindle speed right ok input
#define i_Spdl_Ori_Fin1 R[336]
#define i_Spdl_Ori_Fin2 R[337]//spindle ding xiang wan cheng input
#define i_Tank_QF_OK1 R[340]
#define i_Tank_QF_OK2 R[341]//Dian Gui Nei Kong Kai alarm input
#define i_Cool_Alm1 R[350]
#define i_Cool_Alm2 R[351]//cool alarm input
#define i_YeYa_Alm1 R[352]
#define i_YeYa_Alm2 R[353]//yeya alarm input
#define i_RunHua_Alm1 R[354]
#define i_RunHua_Alm2 R[355]//runhua alarm input
#define e_cycle_switch1 R[360]
#define e_cycle_switch2 R[361]//wai bu xunhuan qidong an niu input
#define e_cycle_lamp1 R[362]
#define e_cycle_lamp2 R[363]//wai bu xunhuan qidong an niu output
#define e_feedhold_switch1 R[365]
#define e_feedhold_switch2 R[366]//wai bu jingei baochi an niu input
#define e_feedhold_lamp1 R[367]
#define e_feedhold_lamp2 R[368]//wai bu jingei baochi an niu output
#define e_toolctrl_switch1 R[370]
#define e_toolctrl_switch2 R[371]//wai bu daoju song/jin an niu input
#define e_toolctrl_lamp1 R[372]
#define e_toolctrl_lamp2 R[373]//wai bu daoju song/jin an niu output
#define e_alm_lamp1 R[375]
#define e_alm_lamp2 R[376]//wai bu baojing zhi shi deng output
#define e_SpdlStep_switch1 R[380]
#define e_SpdlStep_switch2 R[381]//wai bu daoju song/jin an niu input
#define e_SpdlStep_lamp1 R[382]
#define e_SpdlStep_lamp2 R[383]//wai bu daoju song/jin an niu output
#define X_Home_Direction R[440]
#define Y_Home_Direction R[441]
#define Z_Home_Direction R[442]
#define A_Home_Direction R[443]
#define XY_Switch R[445]//X,Y de +,- JOG anniu shifou jiaohuan
#define Manual_GongSi R[450]
#define GongSi_L_switch1 R[451]
#define GongSi_L_switch2 R[452]
#define GongSi_H_switch1 R[453]
#define GongSi_H_switch2 R[454]
//zi dong gong si
#define GS_Mark R[600] //0:fei gongsi;1:zhengxiang;2:fanxiang
#define GS_Spdl_AtBottom R[601]
#define GS_Spdl_Com_Speed R_i[602/2]
#define GS_Spdl_Yuting_Pos R_l[604/4]
#define GS_Spdl_Yuting_Pos_u R_ul[604/4]
#define GS_Delay_AtBottomR R_i[608/2]
#define GS_Z_Begin_Pos R_l[620/4]
#define GS_Z_Move_Lenth R_l[624/4]
#define GS_ToEndSpeed_Z_Move_Lenth R_l[628/4]
#define GS_Z_End_Pos R_l[632/4]
#define GS_Spdl_Begin_Pos R_i[640/2]
#define GS_Spdl_Move_Lenth R_i[644/2]
#define GS_ToEndSpeed_Spdl_Move_Lenth R_i[648/2]
#define GS_Spdl_End_Pos R_i[652/2]
#define GS_Spdl_Now_Pos_R R_i[656/2]
#define GS_Spdl_Now_Pos_N R[660]
#define GS_Spdl_Old_Dir R[661]
#define GS_Spdl_Old_Speed R_i[662/2]
#define GS_Spdl_Speed_Max P[80]
#define GS_Spdl_Speed_Min P[81]
#define GS_Spdl_Speed_AtBottom P_i[82]
#define GS_Spdl_Yuting_ktemp B[30]
#define GS_Spdl_Yuting_k1 P[83]
#define GS_Spdl_Yuting_k2 P[84]
#define GS_Delay_AtBottom P_i[85]
#define Spdl_Dir_Change_Mode P[18]
#define Spdl_CD_Time P[20]
#define Spdl_ZD_Dwell P[23]
#define Spdl_ZD_Time P[24]
#define E_Alm_Lamp P[74]
void reset(void)
{
int i;
for(i=0;i<4;i++) set_axis_stop(i);
handwheel(0,-1,0);
spdl_ctrl=0;
jog_speed=10;
step_mul=1;
*sys_ext_alm()=0;
sv_en=0;
sv_n=1;
sv_stag=0;
if(reset_dwell==0)reset_dwell=40;//1000;
spdlcd_eng=0;
spdlcd_time=0;
spdl_zddwll=0;
dx_dwell=0;
Y[32]&=~0x20;
Y[1]&=~9;
dxwancheng=0;
baodao=0;
Cur_lock=0;
// Y[2]|=0X08;
// mag_ctrl= mag_stag= mag_fin=0;
/*
//-------------- zi dong huan dang --------------
huandang_stag=0;
huandang_dwell=0;
huandang_dwelltime=(P_i[35]>4500)? (4500/16):(P_i[35]/16);
//-------------- zi dong huan dang --------------
*/
if(P[70]==3){ runhua_opentime=P[71]*100L; runhua_closetime=P[72]*100L; }
}
//Spindle Ding Xiang Program
void dingxiang(void)
{
// if(get_axis_pos(2)<=5){//031210
Y[1]|=1;
Y[32]|=0x20;
spdl_ctrl=4;
if(dx_dwell>=2) {dx_dwell-=1; return; }
if((spdl_ctrl==4)&&(Y[1]&1))
Y[1]|=8;
R[150]=1;
Cur_lock=1;
dx_dwell=0;
}
//Spindle Ding Xiang Stop Program
//void dingxiangstop(void){ Y[1]&=~8;}
void dingxiangstop(void){
Y[1]&=~8;
if(spdl_dwell==0)Y[1]&=~1;
spdl_ctrl=0;
Cur_lock=0;
R[150]=0;
R[152]=0;
dxwancheng=0;
dxwell=0;
}
//int to_pp8ms(int f){ return (long) (f/100)*(R_i[696/2]/10)*(*sys_iip_time())/7; }
int to_pp8ms(int f){ return (long) (f/20)*(*sys_iip_time())/3; }
void runhua(void)
{
if(runhua_opentime>200) runhua_opentime-=plc1_time;
else {
if(runhua_opentime!=1){ runhua_opentime=1;runhua_closetime=P[72]*100L;}
if(runhua_closetime>200)runhua_closetime-=plc1_time;
else
{
if(runhua_closetime!=1){runhua_closetime=1;runhua_opentime=P[71]*100L;}
}
}
if((runhua_opentime>20)&&((P[70]==1)||((P[70]>1)&&(sv_en))))Y[0]|= 0x80;
else if(P[70]!=0) Y[0]&=~0x80;
}
int magzine_enable(void)
{
if((*axis_stat(2)&AX_COORD_SETUP)==0){ R[490]++; return 0;}
if(*axis_stat(2)&AX_LOCK) { R[491]++; return 0;}
// if((get_axis_pos(2)/2)<1395*100L) { R[492]++; return 0;}//031210
if((*F_l[23])<1395*100L) { R[492]++; return 0;}//031210
R[493]++;return 1;
}
/*void magzine(void) //xuan dao cheng xu
{
int p1,p2;
long l;
R[699]=1;
*tot_mag_pos()=16+1;
if((mag_ctrl==0)||(magzine_enable()==0))
{
mag_stag=0;
return;
}
// R[499]++; */
void magzine(void) //xuan dao cheng xu //2004
{
int p1,p2;
long l;
R[699]=1;
*tot_mag_pos()=16+1;
if(mag_ctrl==0) { mag_stag=0; return; }
switch(mag_stag) {
case 0:
mag_fin=0;
mag_stag=1;
break;
case 1:
p1=new_cutter_p-(*cutter_in_mag(0)); if(p1<0) p1+=16;
p2=(*cutter_in_mag(0))-new_cutter_p; if(p2<0) p2+=16;
if(p1>p2) p1=-p2;
daowei_jishu=p1;
mag_stag=20;
break;
case 20:
if(daowei_jishu>0){Y[1]&=~0x80;Y[1]|=0x40;}
if(daowei_jishu<0){Y[1]&=~0x40;Y[1]|=0x80;}
// if(daowei_jishu<0){Y[1]|=0x40;Y[1]|=0x80;}
mag_stag=21;
break;
case 21:
// if(((X[1])&(~R[101]))&0x80){
if(((~X[1])&(R[101]))&0x80){
if(daowei_jishu>0){daowei_jishu-=1;}
if(daowei_jishu<0){daowei_jishu+=1;}
}
if(daowei_jishu!=0) break;
// else if(((X[1])&(~R[101]))&0x80)
else if(((~X[1])&(R[101]))&0x80)
{
Y[1]&=~0xc0;
mag_ctrl=0;
mag_stag=0;
mag_fin=1;
break;
}
} //2004
}
/* switch(mag_stag) {
case 0:
mag_fin=0;
mag_stag=1;
break;
case 1:
p1=new_cutter_p-(*cutter_in_mag(0)); if(p1<0) p1+=16;
p2=(*cutter_in_mag(0))-new_cutter_p; if(p2<0) p2+=16;
if(p1>p2) p1=-p2;
daowei_jishu=p1;
mag_dwll=100;
Y[1]|=0x10;
mag_stag=20;
break;
case 20:
if(mag_dwll>=17){mag_dwll-=16;break;}
if(daowei_jishu>0){Y[1]&=~0x80;Y[1]|=0x40;}
if(daowei_jishu<0){Y[1]|=0x40;Y[1]|=0x80;}
mag_dwll=0;
R[496]++;//031210
if(R[496]>10)mag_stag=21;
break;
case 21:
R[496]=0;
if((((~X[1])&R[101])&0x80)==0x80){
if(daowei_jishu>0){daowei_jishu-=1;}
if(daowei_jishu<0){daowei_jishu+=1;}
}
if(daowei_jishu==0){
Y[1]&=~0xd0;
mag_dwll=0;
mag_stag=2;
break;
}
break;
case 2:
if(daowei_jishu!=0) break;
Y[1]&=~0xd0;
mag_ctrl=0;
mag_stag=0;
mag_fin=1;
break;
}
} */
int atc_enable(void)
{
if((*axis_stat(2)&AX_COORD_SETUP)==0) return 0;
if(*axis_stat(2)&AX_LOCK) return 0;
return 1;
}
void atc(void)
{
long l;
dx_dwell=0;
if((*ch_stat(0)&CH_CYCLE_LAMP)==0) return;
if(atc_ctrl==0||(atc_enable()==0)) {
return;
}
atc_stat=atc_ctrl|0x80;
if(atc_dwell){ atc_dwell--; return; }
R_ui[696/2]=*ch_rapidover(0);
switch(atc_stag)
{
case 0: //z zhou dao huan dao wei,zhu zhou dingxiang
if(atc_old_pos==-1) atc_old_pos=*F_l[23];
l=-PMatc_z_pos1*100L;
set_axis_moveto(2,l,to_pp8ms(4000));
Y[1]|=1; //spindle enable
atc_dwell=33;
atc_stag=1;
break;
case 1: //zhu zhou ding xiang , axis z dao wei
dingxiang();
if(dxwancheng!=1) break;
if(((X[31]&0x40)==0)&&(P[34]==1)) break;//test //2004.3.24
atc_stag=100;
break;
case 100: //dingxiang
if((get_axis_den(2)==0)) break;
atc_dwell=33;
atc_stag=101;
break;
case 101: //dingxiang
if((get_axis_den(2)==0)){R[690]++; break;}
R[691]++;
l=*F_l[23]/100; //2004
R_l[692/4]=-l;
if((l==(-PMatc_z_pos1))||((l-1)==(-PMatc_z_pos1)))
// if(((*F_l[23]+(PMatc_z_pos1*100))/100)==0)
{
if(((X[31]&0x40)==0)&&(P[34]==1)) break;//test
atc_stag=2;
break;
}
else
{
l=-PMatc_z_pos1*100L;
set_axis_moveto(2,l,to_pp8ms(4000));
atc_stag=100;
break;
}
case 2: //dao ku jin
if((get_axis_den(2)==0)) break;
if((X[2]&0xC)!=8)
{
R[654]++;
Y[1]|=0x20;
break;
}
else
Y[1]&=~0X20;
if(((X[31]&0x40)==0)&&(P[34]==1)) break;//test
atc_stag=3;
break;
case 3:
if((X[2]&0xc)!=8) break;//2004
atc_dwell=66;
atc_stag=4;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -