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

📄 main_stop2.c.bak

📁 基于485的51单片机多机通讯程序
💻 BAK
📖 第 1 页 / 共 5 页
字号:
 			}break;
     	case	V32:	{
     				pp.v32=rbuffer[3]*256+rbuffer[4];
     				general_param=pp.v32;
     			}break;
 	case	T34:	{
 				pp.t34=rbuffer[3]*256+rbuffer[4];
 				general_param=pp.t34;
 			}break;
	case	K4:	{
				pp.k4=rbuffer[3]*256+rbuffer[4];
				general_param=pp.k4;
			}break;
 	case	Syn_type:{
 				pp.syn_type=rbuffer[3]*256+rbuffer[4];
 				general_param=pp.syn_type;
 			}break;
 	case	T41:	{
 				pp.t41=rbuffer[3]*256+rbuffer[4];
 				general_param=pp.t41;
 			}break;
 	case    T41_SD:	{
 				pp.t41_sd=rbuffer[3]*256+rbuffer[4];
 				general_param=pp.t41_sd;
 			}break;
 	case	T42_L:	{
 				pp.t42_l=rbuffer[3]*256+rbuffer[4];
 				general_param=pp.t42_l;
 			}break;
 	case	T42_R:	{
 				pp.t42_r=rbuffer[3]*256+rbuffer[4];
 				general_param=pp.t42_r;
 			}break;
	case	V41:	{
				pp.v41=rbuffer[3]*256+rbuffer[4];
				general_param=pp.v41;
			}break;
 	case	A41:	{
 				pp.a41=rbuffer[3]*256+rbuffer[4];
 				general_param=pp.a41;
 			}break;
 	case	DC41:	{
 				pp.dc41=rbuffer[3]*256+rbuffer[4];
 				general_param=pp.dc41;
 			}break;
 	case	DA41:	{
 				pp.da41=rbuffer[3]*256+rbuffer[4];
 				general_param=pp.da41;
 			}break;
 	case	T43:	{
 				pp.t43=rbuffer[3]*256+rbuffer[4];
 				general_param=pp.t43;
 			}break;
 	case	T43_SD:	{
 				pp.t43_sd=rbuffer[3]*256+rbuffer[4];
 				general_param=pp.t43_sd;
 			}break;
	case	K5:	{
				pp.k5=rbuffer[3]*256+rbuffer[4];
				general_param=pp.k5;
			}break;
	case	PGJ:	{
				pp.pgj=rbuffer[3]*256+rbuffer[4];
				general_param=pp.pgj;
			}break;
 	case	H51:	{
 				pp.h51=rbuffer[3]*256+rbuffer[4];
 				general_param=pp.h51;
 			}break;
 	case	T51:	{
 				pp.t51=rbuffer[3]*256+rbuffer[4];
 				general_param=pp.t51;
 			}break;
 	case    T51_SD:	{
 				pp.t51_sd=rbuffer[3]*256+rbuffer[4];
 				general_param=pp.t51_sd;
 			}break;
 	case	T52:	{
 				pp.t52=rbuffer[3]*256+rbuffer[4];
 				general_param=pp.t52;
 			}break;
 	case    T52_SD:	{
 				pp.t52_sd=rbuffer[3]*256+rbuffer[4];
 				general_param=pp.t52_sd;
 			}break;
 	case	AVC_type:{
 				pp.avc_type=rbuffer[3]*256+rbuffer[4];
 				general_param=pp.avc_type;
 			}break;
 	case	U51_P:	{
 				pp.u51_p=rbuffer[3]*256+rbuffer[4];
 				general_param=pp.u51_p;
 			}break;
 	case	U51_B:	{
 				pp.u51_b=rbuffer[3]*256+rbuffer[4];
 				general_param=pp.u51_b;
 			}break;
 	case	SENS:	{
 				pp.sens=rbuffer[3]*256+rbuffer[4];
 				general_param=pp.sens;
 			}break;
 	case	DU51:	{
 				pp.du51=rbuffer[3]*256+rbuffer[4];
 				general_param=pp.du51;
 			}break;
 	case	H52:	{
 				pp.h52=rbuffer[3]*256+rbuffer[4];
 				general_param=pp.h52;
 			}break;
 	case	NUM_BB:	general_param=pp.sec_num;break;
	case	N_BB:	{
				pp.x[nonce_sec][0]=rbuffer[3]*256+rbuffer[4];
				general_param=pp.x[nonce_sec][0];
			}break;
	case	T13_BB:	{
				pp.x[nonce_sec][1]=rbuffer[3]*256+rbuffer[4];
				general_param=pp.x[nonce_sec][1];
			}break;
	case	T14_BB:	{
				pp.x[nonce_sec][2]=rbuffer[3]*256+rbuffer[4];
				general_param=pp.x[nonce_sec][2];
			}break;
	case	I14_BB:	{
				pp.x[nonce_sec][3]=rbuffer[3]*256+rbuffer[4];
				general_param=pp.x[nonce_sec][3];
			}break;
	case	T15_BB:	{
				pp.x[nonce_sec][4]=rbuffer[3]*256+rbuffer[4];
				general_param=pp.x[nonce_sec][4];
			}break;
	case	I15_BB:	{
				pp.x[nonce_sec][5]=rbuffer[3]*256+rbuffer[4];
				general_param=pp.x[nonce_sec][5];
			}break;
	case	AHF_BB:	{
				pp.x[nonce_sec][6]=rbuffer[3]*256+rbuffer[4];
				general_param=pp.x[nonce_sec][6];
			}break;
	case	I16_BB:	{
				pp.x[nonce_sec][7]=rbuffer[3]*256+rbuffer[4];
				general_param=pp.x[nonce_sec][7];
			}break;
	case	F_BB:	{
				pp.x[nonce_sec][8]=rbuffer[3]*256+rbuffer[4];
				general_param=pp.x[nonce_sec][8];
			}break;
	case	T16_BB:	{
				pp.x[nonce_sec][9]=rbuffer[3]*256+rbuffer[4];
				general_param=pp.x[nonce_sec][9];
			}break;
	case	D_BB:	{
				pp.x[nonce_sec][10]=rbuffer[3]*256+rbuffer[4];
				general_param=pp.x[nonce_sec][10];
			}break;
	case	K21_BB:	{
				pp.x[nonce_sec][11]=rbuffer[3]*256+rbuffer[4];
				general_param=pp.x[nonce_sec][11];
			}break;
	case	V21P_BB:{
				pp.x[nonce_sec][12]=rbuffer[3]*256+rbuffer[4];
				general_param=pp.x[nonce_sec][12];
			}break;
	case	V21B_BB:{
				pp.x[nonce_sec][13]=rbuffer[3]*256+rbuffer[4];
				general_param=pp.x[nonce_sec][13];
			}break;
	case	T21_BB:	{
				pp.x[nonce_sec][14]=rbuffer[3]*256+rbuffer[4];
				general_param=pp.x[nonce_sec][14];
			}break;
	case	K3_BB:	{
				pp.x[nonce_sec][15]=rbuffer[3]*256+rbuffer[4];
				general_param=pp.x[nonce_sec][15];
			}break;
	case	K31_BB:	{
				pp.x[nonce_sec][16]=rbuffer[3]*256+rbuffer[4];
				general_param=pp.x[nonce_sec][16];
			}break;
	case	T32_BB:	{
				pp.x[nonce_sec][17]=rbuffer[3]*256+rbuffer[4];
				general_param=pp.x[nonce_sec][17];
			}break;
	case	V31P_BB:{
				pp.x[nonce_sec][18]=rbuffer[3]*256+rbuffer[4];
				general_param=pp.x[nonce_sec][18];
			}break;
	case	V31B_BB:{
				pp.x[nonce_sec][19]=rbuffer[3]*256+rbuffer[4];
				general_param=pp.x[nonce_sec][19];
			}break;
	case	K4_BB:	{
				pp.x[nonce_sec][20]=rbuffer[3]*256+rbuffer[4];
				general_param=pp.x[nonce_sec][20];
			}break;
	case	T42L_BB:{
				pp.x[nonce_sec][21]=rbuffer[3]*256+rbuffer[4];
				general_param=pp.x[nonce_sec][21];
			}break;
	case	T42R_BB:{
				pp.x[nonce_sec][22]=rbuffer[3]*256+rbuffer[4];
				general_param=pp.x[nonce_sec][22];
			}break;
	case	V41_BB:	{
				pp.x[nonce_sec][23]=rbuffer[3]*256+rbuffer[4];
				general_param=pp.x[nonce_sec][23];
			}break;
	case	A41_BB:	{
				pp.x[nonce_sec][24]=rbuffer[3]*256+rbuffer[4];
				general_param=pp.x[nonce_sec][24];
			}break;
	case	T43_BB:	{
				pp.x[nonce_sec][25]=rbuffer[3]*256+rbuffer[4];
				general_param=pp.x[nonce_sec][25];
			}break;
	case	U51P_BB:{
				pp.x[nonce_sec][26]=rbuffer[3]*256+rbuffer[4];
				general_param=pp.x[nonce_sec][26];
			}break;
	case	U51B_BB:{
				pp.x[nonce_sec][27]=rbuffer[3]*256+rbuffer[4];
				general_param=pp.x[nonce_sec][27];
			}break;
	case	SENS_BB:{
				pp.x[nonce_sec][28]=rbuffer[3]*256+rbuffer[4];
				general_param=pp.x[nonce_sec][28];
			}break;
	case	DU51_BB:{
				pp.x[nonce_sec][29]=rbuffer[3]*256+rbuffer[4];
				general_param=pp.x[nonce_sec][29];
			}break;
	default:break;
	}
	get_SLA();			//根据程序号,获取SLA和temp_PRG
	get_secondDDR();
	COMM=(mainDDR+secondDDR)/256;
	writeEEP_word();
	if(change_sec_num==1)
	{
		nonce_sec=rbuffer[6];
		change_sec_num=0;
	}
	param=0;
}

void com_type()
{
	switch(rbuffer[2])
  	{
		case com_edit:		{
						editing=1;	//编程
						p_out=1;
					}break;

		case com_start:		if(start==0)//编程未结束,禁止启动焊接
					{
						FINISH=0;
						start=1;
					}break;
		case com_start_again:	if(start==0)
					{
						start=1;
						start_again=1;
					}break;
		case com_ignit_ok:	ignit_ok=1;break;
		case com_decrease:	decrease=1;break;	//衰减
		case com_current_add:	if(rc_forbided==0)
						current_add=1;break;	//电流加
		case com_current_dec:	if(rc_forbided==0)
						current_dec=1;break;	//电流减
		case com_rot_front:	if(rc_forbided==0)
						rot_front=1;break;
		case com_rot_reverse:	if(rc_forbided==0)
						rot_reverse=1;break;
		case com_wire_add:	if(rc_forbided==0)
						wire_add=1;break;
		case com_wire_dec:	if(rc_forbided==0)
						wire_dec=1;break;
		case com_osc_l:		{
						if(rc_forbided==0&&osc_l==0)
							osc_l=1;
					}break;
		case com_osc_r:		{
						if(rc_forbided==0&&osc_r==0)
							osc_r=1;
					}break;
		case com_breadth_add:	{
						if(rc_forbided==0&&breadth_add==0)
							breadth_add=1;
					}break;
		case com_breadth_dec:	{
						if(rc_forbided==0&&breadth_dec==0)
							breadth_dec=1;
					}break;
		case com_avc_up:	if(rc_forbided==0)
						avc_up=1;break;
		case com_avc_down:	if(rc_forbided==0)
						avc_down=1;break;
		case com_motor_stop:	{
						if(rc_forbided==0&&motor_stop==0)
							motor_stop=1;
					}break;

		case com_lift_ok:	lift_ok=1;break;
		case com_return_ok:	return_ok=1;break;
		default:		break;
	}
	if(ans==0)
	{
		POINTER1=0;
		RSUM=0;
		r_byte_nums=4;
	}
}

void data_type()						//对接收到的数据分辨类型
{
	switch(rbuffer[1])
	{
		case command:	com_type();
				break;
		case answer:	R_ANSW=rbuffer[2];
				break;
		case err_infor:	err=rbuffer[3];
				break;
		case edit_sec:	if(in_sector==0)
				{
					nonce_sec=rbuffer[2];
					p_out=0;
					in_sector=1;
				}
				break;
		case parameter:	param=1;break;
		case program:	if(work==0)
					change_prg=1;		//将程序号存入EEPROM
				break;
		case infor:	{						
					switch(rbuffer[2])
					{
						case com_calling:	R_ANSW=rbuffer[3];break;
						case com_switch:	{
										YOUHU=rbuffer[3];
										WIRE=rbuffer[4];
									}break;
						case com_weld_simu:	new_switch11=1;break;
						case com_wire_on_off:	new_switch22=1;break;
						case com_delt_switch:	delt_switch=1;break;
						default:		break;
					}

				}
				break;
		case p_section:	{
					nonce_sec=rbuffer[5];
					change_sec_num=1;
					param=1;
				}break;
		case p_edit_finish:{
					nonce_sec=rbuffer[5];
					pp.sec_num=rbuffer[6];
					if(rbuffer[2]!=0xFF)
					{
						param=1;
						temp_edit_finish=1;
					}
					else
						edit_finish=1;
					work=0;
				}break;
		default:	break;
	}
}

void call_slave()
{
	unsigned char call_add[]={M_current,M_RW,M_OSC,M_AVC,M_P,M_RC};//电流、旋转/送丝、横摆/弧长、面板、线控器、等离子、热丝
	unsigned char i,c_call[6];
	calling=1;
	for(i=0;i<6;i++)
	{
		existent[i]=0;
		c_call[i]=0;
	}
	for(i=0;i<6;i++)
	{
RECALL:		R_ANSW=0;
		if(existent[i]==0&&c_call[i]<3)
		{
				ini_sbuf(call_add[i],command,com_calling,0,0,0,0);
				s_byte_nums=4;
				TR_ans();
				if(overtime==1)
					overtime=0;
				if(overtime==0&&R_ANSW==OK)
					existent[i]=1;
				else
				{
					c_call[i]=c_call[i]+1;
					if(overtime==1)
						overtime=0;
					goto RECALL;
				}
		}
/*
		if(i==0&&c_call[0]==3&&existent[0]==0)
		{
			main_err=1;
			err=19;
			stop=0;
			while(main_err==1);
I_RECALL:		ini_sbuf(call_add[i],command,com_calling,0,0,0,0);
			s_byte_nums=4;
			TR_ans();
			if(overtime==1)
				overtime=0;
			if(overtime==0&&R_ANSW==OK)
				existent[i]=1;
			if(existent[0]==0)
				goto I_RECALL;
		}
*/
	}
	sbuffer1[0]=M_P;
	sbuffer1[1]=call_result;
	for(i=0;i<6;i++)
		sbuffer1[i+2]=existent[i];
	sbuffer1[8]=0;
	s_byte_nums=9;
	s_p=1;
	TR_noans();
	s_p=0;
	R_ANSW=0;
	calling=0;
}

void readPRG()
{
	getPRG=1;
	readEEP_byte();
	getPRG=0;
	PRG=GET;
}

void send_param()
{
	unsigned char	axis[]={M_current,M_RW,M_OSC,M_AVC},
	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;		//电流和面板接收
		sbuffer1[1]=p_out_sec;			//电流区间外参数
		sbuffer1[52]=pp.syn_type%256;
		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;
				main_err=1;
				err=2;
				stop=0;
				while(urgent_stop==0);
				goto END_P;
			}
		}
		else
			c_err=0;
	}
	if(existent[1]==1)
	{
		s_p=1;
		point=&pp.k2;
		temp_delt=2;
		sbuffer1[0]=M_RW;			//旋转/送丝和面板接收
		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;
		}
		sbuffer1[50]=pp.k1%256;
		for(temp_pc=51;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;
				main_err=1;
				err=2;
				stop=0;
				while(urgent_stop==0);
				goto END_P;
			}
		}
		else
			c_err=0;
	}

	if(existent[2]==1)
	{
		s_p=1;
		point=&pp.k4;
		temp_delt=2;
		sbuffer1[0]=M_OSC;			//横摆和面板接收
		sbuffer1[1]=p_out_sec;			//横摆区间外参数
		for(temp_pc=2;temp_pc<26;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;
		}
		sbuffer1[26]=pp.t17/256;
		sbuffer1[27]=pp.t17%256;
		sbuffer1[28]=0;
		sbuffer1[29]=pp.sec_num%256;
		for(temp_pc=30;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;
				main_err=1;
				err=2;
				stop=0;
				while(urgent_stop==0);
				goto END_P;
			}
		}
		else
			c_err=0;
	}
	if(existent[3]==1)
	{
		s_p=1;
		point=&pp.k5;
		temp_delt=2;
		sbuffer1[0]=M_AVC;			//横摆和面板接收
		sbuffer1[1]=p_out_sec;			//横摆区间外参数
		for(temp_pc=2;temp_pc<28;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;
		}
		if(pp.sec_num>11)
			pp.sec_num=0;
		sbuffer1[28]=pp.k1/256;
		sbuffer1[29]=pp.k1%256;
		for(temp_pc=30;temp_pc<55;temp_pc++)
			sbuffer1[temp_pc]=0;
		s_byte_nums=55;
		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;
				main_err=1;
				err=2;
				stop=0;
				while(urgent_stop==0);
				goto END_P;
			}
		}
		else
			c_err=0;
	}
	if(pp.sec_num>0)
	{
		for(anum=0;anum<4;anum++)
		{
			if(existent[anum]==1)
			{
				s_p=1;
				for(snum=0;snum<pp.sec_num;snum++)
				{
					s_p=1;
					temp_delt=3;
					sbuffer1[0]=axis[anum];
					sbuffer1[1]=p_in_sec;
					sbuffer1[2]=snum;
					switch(anum)
					{
						case 0:	{
								point=&pp.x[snum][0];
								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++;
									}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -