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

📄 current.c.bak

📁 基于485的51单片机多机通讯程序
💻 BAK
📖 第 1 页 / 共 2 页
字号:
		urgent_stop=0;
		err_ok=0;
		EX1=1;
		EX0=1;
	}	
	IEN1=IEN1&0x40;
	current_out=1;
	current_enable=0;
	con_hf=1;
	con_gas1=1;
	con_gas2=1;
	work=0;				//等待状态	
	called=0;
	start=0;
	need_para=0;
	open_gas1=0;
	open_gas2=0;
	ignit_ok=0;
	decrease=0;
	igniting=0;
	pre_melt_ok=0;
	R_ANSW=0;
	S_ANSW=0;
	POINTER1=0;
	RSUM=0;
	POINTER0=0;
	SSUM=0;
	r_byte_nums=4;
	demand=0;
	overtime=0;
	resend=0;
	ans=0;
	receive_p_out=0;
	receive_p_in=0;
	edge=0;
	ad_v=0;
	ad_i=0;
	AD1=0;
	AD2=0;
	AD3=0;
	AD4=0;
	AD5=0;
	tab2=0;
	tab3=0;
	IM8=0;
	IM4=0;
	IB8=0;
	IB4=0;
	UPD=0;
	ad_finish=0;
	i_slope_ok=0;
	nonce_sec=0;
	in_sector=0;
	new_sec=0;
	close_gas1=0;
	close_gas2=0;
	close_gas1_ok=0;
	close_gas2_ok=0;
	close_gas_ok=0;
	c_cm1=0;
	to_begin=0;

	PWMP=51;			//产生采样保持脉冲,1K
	PWM0=128;
	PWM1=128;
	EX1=1;
	EX0=1;
	while(start==0)
	{
		if(called==1)
		{
			ini_sbuf(M_main,infor,com_calling,S_ANSW,0,0,0);
			s_byte_nums=6;
			TR_noans();
			called=0;
		}
		if(receive_p_out==1)
		{
			point=&pp.t01;
			for(p_sec=0;p_sec<25;p_sec++)
				*(point+p_sec)=rbuffer[p_sec*2+2]*256+rbuffer[p_sec*2+3];
			pp.syn_type=rbuffer[52];
			
			ini_sbuf(M_main,answer,OK,0,0,0,0);
			s_byte_nums=4;
			TR_noans();
			demand=0;
			receive_p_out=0;
		}

		if(receive_p_in==1)
		{
                        point=&pp.x[nonce_sec][0];
			for(p_sec=0;p_sec<10;p_sec++)
				*(point+p_sec)=rbuffer[p_sec*2+3]*256+rbuffer[p_sec*2+4];

			ini_sbuf(M_main,answer,OK,0,0,0,0);
			s_byte_nums=4;
			TR_noans();
			demand=0;
			receive_p_in=0;
		}
/*		
		if(new_switch==1)
		{
			ini_sbuf(M_main,answer,S_ANSW,0,0,0,0);
			s_byte_nums=4;
			TR_noans();
			new_switch=0;
		}
*/
		if(urgent_stop==1)
			goto BEGIN;
	}
	
	n_pulse=pp.t14%256;
	n_base=pp.t15%256;
	if(pp.syn_type==ON)
	{
		CTCON=CTCON|0x02;
		IEN1=IEN1|0x01;
	}

	work=3;					//进入焊接过程
	IEN1=IEN1&0xBF;				//禁止CM2,停水计时
	CML1=TML2+0XE2;		//峰值时间
	if(CML1<TML2)
		CMH1=(TMH2+1)+0X04;
	else
		CMH1=TMH2+0X04;
	CML2=TML2+0x24;
	if(CML2<TML2)
		CMH2=TMH2+1+0xF4;
	else
		CMH2=TMH2+0xF4;
	delt1=(pp.t13*1000000)/(pp.i14-pp.i12);
	if(delt1%256>=200)
		delt1=delt1/256+1;
	else
		delt1=delt1/256;
	if(YOUHU==1)
	{
		while(igniting==0)
		{
			if(urgent_stop==1)
				goto BEGIN;
			if(open_gas1==1)
			{
				ini_sbuf(M_main,answer,S_ANSW,0,0,0,0);
				s_byte_nums=4;
				TR_noans();
				con_gas1=0;		//开气1
				con_water=0;		//开水
				open_gas1=0;
			}
			if(open_gas2==1)
			{
				ini_sbuf(M_main,answer,S_ANSW,0,0,0,0);
				s_byte_nums=4;
				TR_noans();
				con_gas2=0;		//开气2
				con_water=0;		//开水
				open_gas2=0;
			}
			if(resend==1)
			{
				ini_sbuf(M_main,answer,S_ANSW,0,0,0,0);
				s_byte_nums=4;
				TR_noans();
				resend=0;
			}
		}
	}
	else
	{
		while(ignit_ok==0)
		{
			if(urgent_stop==1)
				goto BEGIN;
			if(open_gas1==1)
			{
				ini_sbuf(M_main,answer,S_ANSW,0,0,0,0);
				s_byte_nums=4;
				TR_noans();
				con_gas1=0;		//开气1
				con_water=0;		//开水
				open_gas1=0;
			}
			if(open_gas2==1)
			{
				ini_sbuf(M_main,answer,S_ANSW,0,0,0,0);
				s_byte_nums=4;
				TR_noans();
				con_gas2=0;		//开气2
				con_water=0;		//开水
				open_gas2=0;
			}
			if(resend==1)
			{
				ini_sbuf(M_main,answer,S_ANSW,0,0,0,0);
				s_byte_nums=4;
				TR_noans();
				resend=0;
			}
		}
	}
	ini_sbuf(M_main,answer,S_ANSW,0,0,0,0);
	s_byte_nums=4;
	TR_noans();

	I1=pp.i11;
	I2=pp.i11;
	IM=(unsigned int)(I1*0.4096);
	IB=(unsigned int)(I2*0.4096);
	IM8=IM%256;			//(I1*4096/10000)%256
	IM4=IM/256;			//(I1*4096/10000)/256
	IB8=IB%256;			//((I2*4096/10000)%256
	IB4=IB/256;			//(I2*4096/10000)/256
	UPD=0X00;			//引弧电流

	if(YOUHU==1)
	{
		current_enable=1;				//开电源使能
		if(pp.ignit==HF)
			con_hf=0;		//开高频
		avc_ok=P5;
		avc_ok=avc_ok&0X04;
		while(avc_ok==4)
		{
			avc_ok=P5;
			avc_ok=avc_ok&0X04;
			if(urgent_stop==1)
				goto BEGIN;
		}
		delay(2);
RE_IGNIT:	avc_ok=P5;
		avc_ok=avc_ok&0X04;
		if(avc_ok==4)
			goto RE_IGNIT;
		else
		{
			if(pp.ignit==HF)		//引弧方式HF
				con_hf=1;		//关高频
			ini_sbuf(M_main,command,com_ignit_ok,0,0,0,0);
			s_byte_nums=4;
			TR_ans();
//			answer_judge();
		}
	}
	if(urgent_stop==1)
		goto BEGIN;
	I1=pp.i12;
	I2=pp.i12;
	IM=(unsigned int)(I1*0.4096);
	IB=(unsigned int)(I2*0.4096);
	IM8=IM%256;				//(I1*10/10)%256
	IM4=IM/256;				//(I1*10/10)/256
	IB8=IB%256;				//(I2*10/10)%256
	IB4=IB/256;				//(I2*10/10)/256
	UPD=0X00;				//预熔电流

	ad_finish=1;
	if(YOUHU==1)				//焊接时进行电压、电流采样
	{
		c_adc=0;
		i_v=0;
		CTCON=CTCON|0X20;		//捕捉下降沿
		IEN1=IEN1|0X04;			//允许CT2
	}

	while(pre_melt_ok==0)			//预熔时间
	{
		if(urgent_stop==1)
			goto BEGIN;
		if(need_para==1)		//显示焊接电流、焊接电压
		{
			sbuffer[0]=M_main;
			sbuffer[1]=parameter2;
			sbuffer[2]=ad_i/256;
			sbuffer[3]=ad_i%256;
			sbuffer[4]=ad_v/256;
			sbuffer[5]=ad_v%256;
			s_byte_nums=7;
			TR_noans();
			need_para=0;
		}
/*
		if(resend==1)
		{
			ini_sbuf(M_main,answer,S_ANSW,0,0,0,0);
			s_byte_nums=4;
			TR_noans();
			resend=0;
		}
*/
	}

	ini_sbuf(M_main,answer,S_ANSW,0,0,0,0);
	s_byte_nums=4;
	TR_noans();
	
	c_t0=0;
	while(i_slope_ok==0)			//电流上升
	{
		TR0=1;
		while(c_t0<delt1)		//电流增加1A
		{
			if(urgent_stop==1)
				goto BEGIN;
		}
		TR0=0;
		c_t0=0;
		if(I1<pp.i14)
		{
			if((I1+10)>=pp.i14)
				I1=pp.i14;
			else
				I1=I1+10;
		}

		if(pp.k1==PDC)
		{
			if(I2<pp.i15)
			{
				if((I2+10)>=pp.i15)
					I2=pp.i15;
				else
					I2=I2+10;
			}
		}
		IM=(unsigned int)(I1*0.4096);
		IB=(unsigned int)(I2*0.4096);
		IM8=IM%256;			//(I1*10/10)%256
		IM4=IM/256;			//(I1*10/10)/256
		IB8=IB%256;			//(I2*10/10)%256
		IB4=IB/256;			//(I2*10/10)/256
		UPD=0X00;

		if(urgent_stop==1)
			goto BEGIN;

	}
        ini_sbuf(M_main,answer,S_ANSW,0,0,0,0);
        s_byte_nums=4;
        TR_noans();

        I1=pp.i14;				//峰值电流
	I2=pp.i15;				//基值电流
	IM=(unsigned int)(I1*0.4096);
	IB=(unsigned int)(I2*0.4096);
	IM8=IM%256;				//(I1*10/10)%256
	IM4=IM/256;				//(I1*10/10)/256
	IB8=IB%256;				//(I2*10/10)%256
	IB4=IB/256;				//(I2*10/10)/256
	UPD=0X00;
	if(pp.k1==PDC)
		IEN1=IEN1|0X20;			//允许CM1,电流脉冲输出(峰、基值时间))

	k=1;
	nonce_sec=0;				//当前区间号
	//main circle
	do
	{
		work=3;
		if(urgent_stop==1)			//急停后返回
			goto BEGIN;
		if(need_para==1)			//显示焊接电流、焊接电压
		{
			sbuffer[0]=M_main;
			sbuffer[1]=parameter2;
			sbuffer[2]=ad_i/256;
			sbuffer[3]=ad_i%256;
			sbuffer[4]=ad_v/256;
			sbuffer[5]=ad_v%256;
			sbuffer[6]=0;
			s_byte_nums=7;
			TR_noans();
			need_para=0;
		}
		if(current_add==1)				//电流加
		{
			if(delt_state==0||delt_state==1)
			{
				if(I1+pp.di<4000)		//峰值
					I1=I1+pp.di;
				else
					I1=4000;
				IM=(unsigned int)(I1*0.4096);
				IM8=IM%256;
				IM4=IM/256;
			}
			if(delt_state==1||delt_state==2)
			{
				if(pp.k1==PDC)
				{
					if(I2+pp.di<4000)		//基值
						I2=I2+pp.di;
					else
						I2=4000;
					IB=(unsigned int)(I2*0.4096);
					IB8=IB%256;
					IB4=IB/256;
				}
			}
			UPD=0X00;
			current_add=0;
		}

		if(urgent_stop==1)			//急停后返回
			goto BEGIN;
			
		if(current_dec==1)				//电流减
		{
			if(delt_state==0||delt_state==1)
			{
				if(I1>=pp.i17&&I1-pp.i17>pp.di)		//峰值
					I1=I1-pp.di;
				else
					I1=pp.i17;
				IM=(unsigned int)(I1*0.4096);
				IM8=IM%256;
				IM4=IM/256;
			}
			if(delt_state==1||delt_state==2)
			{
				if(pp.k1==PDC)
				{
					if(I2>=pp.i17&&I2-pp.i17>pp.di)		//基值
						I2=I2-pp.di;
					else
						I2=pp.i17;
					IB=(unsigned int)(I2*0.4096);
					IB8=IB%256;
					IB4=IB/256;
				}
			}
			UPD=0X00;
			current_dec=0;
		}

		if(urgent_stop==1)			//急停后返回
			goto BEGIN;
			
		if(in_sector==1&&new_sec==1)
		{	
			delt1=pp.x[nonce_sec][1]*1000000;
			if(nonce_sec==0)
			{
				if(pp.x[nonce_sec][3]>=I1)
					temp_delt_p=pp.x[nonce_sec][3]-I1;
				else
					temp_delt_p=I1-pp.x[nonce_sec][3];
			}
			else
			{
				if(pp.x[nonce_sec][3]>=pp.x[nonce_sec-1][3])
					temp_delt_p=pp.x[nonce_sec][3]-pp.x[nonce_sec-1][3];
				else
					temp_delt_p=pp.x[nonce_sec-1][3]-pp.x[nonce_sec][3];
			}
			if(pp.k1==PDC)
			{
				if(nonce_sec==0)
				{
					if(pp.x[nonce_sec][5]>=I2)
						temp_delt_b=pp.x[nonce_sec][5]-I2;
					else
						temp_delt_b=I2-pp.x[nonce_sec][5];
				}
				else
				{
					if(pp.x[nonce_sec][5]>=pp.x[nonce_sec-1][5])
						temp_delt_p=pp.x[nonce_sec][5]-pp.x[nonce_sec-1][5];
					else
						temp_delt_p=pp.x[nonce_sec-1][5]-pp.x[nonce_sec][5];
				}
			}
			if(temp_delt_p>=temp_delt_b)
				delt1=delt1/temp_delt_p;
			else
				delt1=delt1/temp_delt_b;
			if(delt1%256>=200)
				delt1=delt1/256+1;
			else
				delt1=delt1/256;
				
			k1=0;
			k2=0;
			i_slope_ok=0;
			c_t0=0;
			while(i_slope_ok==0)			
			{
				TR0=1;
				while(c_t0<delt1)		
				{
					if(urgent_stop==1)
						goto BEGIN;
				}
				TR0=0;
				c_t0=0;
				if(I1!=pp.x[nonce_sec][3])
				{
					if(I1<pp.x[nonce_sec][3])
					{
						if((I1+10)>=pp.x[nonce_sec][3])
							I1=pp.x[nonce_sec][3];
						else
							I1=I1+10;
					}
					else
					{
						if(I1-10<=pp.x[nonce_sec][3])
							I1=pp.x[nonce_sec][3];
						else
							I1=I1-10;
					}
				}
				else
					k1=1;

				if(pp.k1==PDC)
				{
					if(I2!=pp.x[nonce_sec][5])
					{
						if(I2<pp.x[nonce_sec][5])
						{
							if((I2+10)>=pp.x[nonce_sec][5])
								I2=pp.x[nonce_sec][5];
							else
								I2=I2+10;
						}
						else
						{
							if(I2-10<=pp.x[nonce_sec][5])
								I2=pp.x[nonce_sec][5];
							else
								I2=I2-10;
						}
					}
					else
						k2=1;
				}
				IM=(unsigned int)(I1*0.4096);
				IB=(unsigned int)(I2*0.4096);
				IM8=IM%256;			//(I1*10/10)%256
				IM4=IM/256;			//(I1*10/10)/256
				IB8=IB%256;			//(I2*10/10)%256
				IB4=IB/256;			//(I2*10/10)/256
				UPD=0X00;
				if(pp.k1==0&&k1==1||pp.k1==1&&k1==1&&k2==1)
					i_slope_ok=1;	
				if(urgent_stop==1)
					goto BEGIN;
			}
			c_cm1=0;
			n_pulse=pp.x[nonce_sec][2]%256;
			n_base=pp.x[nonce_sec][4]%256;
			new_sec=0;
		}
		
		if(decrease==1)				//衰减
			k=0;
	}while(k==1);

	if(urgent_stop==1)				//急停后返回
		goto BEGIN;
	work=4;
	kk=1;
	k1=0;
	k2=0;
	if(I1>pp.i17)
	{
		delt=(pp.t17*1000000)/(I1-pp.i17);
		if(delt%256>=200)
			delt=delt/256+1;
		else
			delt=delt/256;
	}
	else
		delt=0;

	c_t0=0;
	work=4;
	do						//电流衰减
	{
		TR0=1;
		while(c_t0<delt)
		{
			if(urgent_stop==1)
				goto BEGIN;
		}
		TR0=0;
		c_t0=0;
		if(pp.k1==PDC)
		{
			if(I1>pp.i17)
			{
				if((I1-10)<=pp.i17)
					I1=pp.i17;
				else
					I1=I1-10;
				IM=(unsigned int)(I1*0.4096);
				IM8=IM%256;
				IM4=IM/256;
			}
			else
				k1=1;
			if(I2>pp.i17)
			{
				if((I2-10)<=pp.i17)
					I2=pp.i17;
				else
					I2=I2-10;
				IB=(unsigned int)(I2*0.4096);
				IB8=IB%256;
				IB4=IB/256;
			}
			else
				k2=1;
			UPD=0;
			if(k1==1&&k2==1)
				kk=0;
		}
		else
		{
			if(I1>pp.i17)
			{
				if((I1-10)<=pp.i17)
					I1=pp.i17;
				else
					I1=I1-10;
				IM=(unsigned int)(I1*0.4096);
				IM8=IM%256;
				IM4=IM/256;
				UPD=0;
			}
			else
				kk=0;
		}
		if(need_para==1)			//显示焊接电流、焊接电压
		{
			sbuffer[0]=M_main;
			sbuffer[1]=parameter2;
			sbuffer[2]=ad_i/256;
			sbuffer[3]=ad_i%256;
			sbuffer[4]=ad_v/256;
			sbuffer[5]=ad_v%256;
			sbuffer[6]=0;
			s_byte_nums=7;
			TR_noans();
			need_para=0;
		}
		if(urgent_stop==1)			//急停后返回
			goto BEGIN;
	}while(kk==1);
	if(YOUHU==1)
		current_enable=0;					//关电源使能
	IEN1=IEN1&0XDF;					//禁止CM1
	c_cm2=0;
	IEN1=IEN1|0x40;					//允许CM2,停水计时
	while(close_gas_ok==0)
	{
		if(close_gas2==1)
		{
			ini_sbuf(M_main,answer,S_ANSW,0,0,0,0);
			s_byte_nums=4;
			TR_noans();
			con_gas2=1;		//关气2
			close_gas2=0;
			close_gas2_ok=1;
		}
		if(close_gas1==1)
		{
			ini_sbuf(M_main,answer,S_ANSW,0,0,0,0);
			s_byte_nums=4;
			TR_noans();
			con_gas1=1;		//关气1
			close_gas1=0;
			close_gas1_ok=1;
		}
/*
		if(resend==1)
		{
			ini_sbuf(M_main,answer,S_ANSW,0,0,0,0);
			s_byte_nums=4;
			TR_noans();
			resend=0;
		}
*/
		if((pp.gas2==OFF&&close_gas1_ok==1)||(pp.gas2==ON&&close_gas1_ok==1&&close_gas2_ok==1))
			close_gas_ok=1;
		
		if(urgent_stop==1)			//急停后返回
			goto BEGIN;
	}
	while(to_begin==0)
	{
		if(urgent_stop==1)
			goto BEGIN;
	}
	goto BEGIN;
	
}

⌨️ 快捷键说明

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