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

📄 main_1013.c.bak

📁 基于485的51单片机多机通讯程序
💻 BAK
📖 第 1 页 / 共 5 页
字号:
 				general_param=pp.k21;
 			}break;
 	case	V21_P:	{
 				pp.v21_p=rbuffer[3]*256+rbuffer[4];
 				general_param=pp.v21_p;
 			}break;
 	case	V21_B:	{
 				pp.v21_b=rbuffer[3]*256+rbuffer[4];
 				general_param=pp.v21_b;
 			}break;
 	case	T21:	{
 				pp.t21=rbuffer[3]*256+rbuffer[4];
 				general_param=pp.t21;
 			}break;
 	case    T21_SD:	{
 				pp.t21_sd=rbuffer[3]*256+rbuffer[4];
 				general_param=pp.t21_sd;
 			}break;
 	case	DV21:	{
 				pp.dv21=rbuffer[3]*256+rbuffer[4];
 				general_param=pp.dv21;
 			}break;
 	case	B:	{
 				pp.b=rbuffer[3]*256+rbuffer[4];
 				general_param=pp.b;
 			}break;
	case	K3:	{
				pp.k3=rbuffer[3]*256+rbuffer[4];
				general_param=pp.k3;
			}break;
 	case	K31:	{
 				pp.k31=rbuffer[3]*256+rbuffer[4];
 				general_param=pp.k31;
 			}break;
 	case	WN:	{
 				pp.wn=rbuffer[3]*256+rbuffer[4];
 				general_param=pp.wn;
 			}break;
	case	T31:	{
				pp.t31=rbuffer[3]*256+rbuffer[4];
				general_param=pp.t31;
			}break;
 	case    T31_SD:	{
 				pp.t31_sd=rbuffer[3]*256+rbuffer[4];
 				general_param=pp.t31_sd;
 			}break;
 	case    T32:	{
 				pp.t32=rbuffer[3]*256+rbuffer[4];
 				general_param=pp.t32;
 			}break;
 	case    T32_SD:	{
 				pp.t32_sd=rbuffer[3]*256+rbuffer[4];
 				general_param=pp.t32_sd;
 			}break;
 	case	V31_P:	{
 				pp.v31_p=rbuffer[3]*256+rbuffer[4];
 				general_param=pp.v31_p;
 			}break;
 	case	V31_B:	{
 				pp.v31_b=rbuffer[3]*256+rbuffer[4];
 				general_param=pp.v31_b;
 			}break;
 	case	DV31:	{
 				pp.dv31=rbuffer[3]*256+rbuffer[4];
 				general_param=pp.dv31;
 			}break;
 	case	T33:	{
 				pp.t33=rbuffer[3]*256+rbuffer[4];
 				general_param=pp.t33;
 			}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(current_add!=1)
					{
						if(work==3)
							scan=1;
						current_add=1;
					}break;	//电流加
		case com_current_dec:	if(current_dec!=1)
					{
						if(work==3)
							scan=1;
						current_dec=1;
					}break;	//电流减
		case com_rot_front:	if(rot_front!=1)
					{
						if(work==3)
							scan=1;
						rot_front=1;
					}break;
		case com_rot_reverse:	if(rot_front!=1)
					{
						if(work==3)
							scan=1;
						rot_reverse=1;
					}break;
		case com_wire_add:	if(wire_add!=1)
					{
						if(work==3)
							scan=1;
						wire_add=1;
					}break;
		case com_wire_dec:	if(wire_dec!=1)
					{
						if(work==3)
							scan=1;
						wire_dec=1;
					}break;
		case com_osc_l:		if(osc_l!=1)
					{
						if(work==3)
							scan=1;
						osc_l=1;
					}break;
		case com_osc_r:		if(osc_r!=1)
					{
						if(work==3)
							scan=1;
						osc_r=1;
					}break;
		case com_breadth_add:	if(breadth_add!=1)
					{
						if(work==3)
							scan=1;
						breadth_add=1;
					}break;
		case com_breadth_dec:	if(breadth_dec!=1)
					{
						if(work==3)
							scan=1;
						breadth_dec=1;
					}break;
		case com_avc_up:	if(avc_up!=1)
					{
						if(work==3)
							scan=1;
						avc_up=1;
					}break;
		case com_avc_down:	if(avc_down!=1)
					{
						if(work==3)
							scan=1;
						avc_down=1;
					}break;
		case com_motor_stop:	if(motor_stop!=1)
						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;
		}
		if(pp.t13_sd==1)
		{
			sbuffer1[22]=n_t13/256;
			sbuffer1[23]=n_t13%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;
		if(pp.t21_sd==1)
		{
			sbuffer1[14]=n_t21/256;
			sbuffer1[15]=n_t21%256;
		}
		if(pp.t32_sd==1)
		{
			sbuffer1[32]=n_t32/256;
			sbuffer1[33]=n_t32%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;
			}
		}

⌨️ 快捷键说明

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