⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 plc_gshd.cld

📁 华中机床的plc程序
💻 CLD
📖 第 1 页 / 共 5 页
字号:
#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 + -