my_speed.c 6.79 KB
//#include "hardware.h"
//#include "sys.h"
//#include "math.h"
//#include "my_math.h"
//#include "all_value.h"
//#include "my_speed.h"
////***************读取马达的数据*****************************///
//u8 get_motor_data(u8 clr)//0 清零, 1直走,2旋转
//{
//	static double positionnew[4];
//	static double positionold[4];
//	static double positiondif[4];
//	static double distance1=0;
//	static double distance2=0;	
//	static double distance3=0;
//	static double distance4=0;
//	static double distance5=0;
//	static double distance6=0;
//	static double distance7=0;
//	static double distance8=0;
//	static double distance9=0;
//	u8 i=0;
//	static u8 j=1;
//	
//	MC_ReadActualPosition(1);
//	MC_ReadActualPosition(2);
//	MC_ReadActualPosition(3);
//	MC_ReadActualPosition(4);

//	positionnew[0]=Motor1.Position;
//	positionnew[1]=Motor2.Position;
//	positionnew[2]=Motor3.Position;
//	positionnew[3]=Motor4.Position;

//	if(j)
//	{
//		positionold[0]=positionnew[0];
//		positionold[1]=positionnew[1];
//		positionold[2]=positionnew[2];
//		positionold[3]=positionnew[3];
//		j=0;
//	}
//	
//	positiondif[0]=positionnew[0]-positionold[0];
//	positiondif[1]=positionnew[1]-positionold[1];
//	positiondif[2]=positionnew[2]-positionold[2];
//	positiondif[3]=positionnew[3]-positionold[3];
//	
//	positionold[0]=positionnew[0];
//	positionold[1]=positionnew[1];
//	positionold[2]=positionnew[2];
//	positionold[3]=positionnew[3];
//	
//  if(clr==0)
//	{
//		distance1=0;
//		distance2=0;
//		distance5=0;
//		distance8=0;
//		distance9=0;
//		i=1;
//	}else 
//	{
//		i=0;
//		distance1+=cos((double)guide_angle*PI/180.0)*(positiondif[0]+positiondif[1])*0.5f;//行走距离
//		distance9+= (positiondif[0]+positiondif[1])*0.5f;
//		distance2+=(fabs(positiondif[0])+fabs(positiondif[1]))*0.5f; //旋转弧长
//		distance5+=positiondif[3];//托盘角度
//		distance8+=(positiondif[0]+positiondif[1])*0.5f;
//	}
//	
//	if(radarstop==0)distance3+=1.0*(-sin(guide_angle*(PI/180.0))*((positiondif[0]+positiondif[1])*0.5f));
////	if(radarstop==1)distance3=0;
//	if(flagcode4==1){distance3=CodeX;flagcode4=0;}
//	
//	if(clrssi==0)
//	{
//		distance6=-dataTrayInitialAngle;
//		clrssiok=1;
//	}else
//	{
//		clrssiok=0;
//		distance6+=positiondif[3];
//	}
//	
//	if(up_flag==1  &&LIMIT_1==1&&LIMIT_2==0)distance4=0;else//升降
//	if(down_flag==1&&LIMIT_1==0&&LIMIT_2==1)distance4=0;
//	distance4+=positiondif[2];
//	
//	if(run_start_flag)
//	{
//		if(flagcode1)distance7=0;else distance7+=(positiondif[0]+positiondif[1])*0.5f;
//	}else
//	{
//		distance7=0;
//	}
//	
////	if(flagcode1)distance8=0;else distance8+=(positiondif[0]+positiondif[1])*0.5f;
//	

//	Distancerun=fabs(distance1);    //行走位置
//	Distancerot=distance2;          //旋转位置
//	Distancex=distance3;            //横向位置
//	Distanceupdown=fabs(distance4); //升降位置
//	Distancephi=fabs(distance5);    //托盘位置
//	Distancessi=distance6;          //
//	Distancetcp=fabs(distance7);	//
////	Distancey=distance8;			//
//	DistanceArc = fabs(distance9);	//走弧距离
//	return i;
//}

///*****************行走速度控制*********************************************************************************************/
//void speedrun(double a)
//{
////	double de_distance;

////	double radar_distancemin;//雷达感应距离的切换 短mm
//	double radar_distancemid;//雷达感应距离的切换 中mm
//	double radar_distancemax;//雷达感应距离的切换 长mm
//	
////	radar_distancemin=200;//雷达最短检测距离
//	radar_distancemid=600;
//	radar_distancemax=1200;
////	runkk=300;
//	if(a<=1400+120)
//	{
//		runkk=160;
//		radarchoice=1;//一个区域切换,检测距离短
//	}else
//	if(a<=2800+120)
//	{
//		runkk=160;
//		radarchoice=1;//一个区域切换,检测距离短
//		if(a-Distancerun<=radar_distancemid)radarchoice=1;else 
//		radarchoice=2;//两个区域切换,检测距离长
//	}else
//	{
//		runkk=160;
//		if(a-Distancerun<=radar_distancemid)radarchoice=1;else 
//		if(a-Distancerun<=radar_distancemax)radarchoice=2;
////		else
////		radarchoice=3;//两个区域切换
//	}
//}

////*****************旋转速度控制******************//
//void speedrot(double a,u8 b,u8 c,double codep)//sever_rotkk//a是总行程,b是耦合en
//{
//	static int ii=0;
//	double dis111=0;
//	double dis222=0;
//	double disde=0;
//	int rotSpeedMax=0;
//	Judge.rotok=Judge_arrive_rot(c,codep,dataRotationAccuracy);//判断旋转到位
//	if(flagcode1)//有二维码就清错
//	{
//		codebad_err=0;
//		ii=0;
//	}else
//	if(flagcode1==0)//走到位扫不到二维码就报错
//	{
//		if(ii<INT32_MAX)ii++;
//	}
//	if(ii>100)codebad_err=1;
//	
//	dis111 = 0.5*((double)dataRotSpeedMax1*PI*(double)dataWheelDiameter/(60.0*(double)dataWheelReductionRatio))*((double)dataRotSpeedMax1/60.0/8.0)
//			+0.5*(((double)dataRotSpeedMax1*PI*(double)dataWheelDiameter/(60.0*(double)dataWheelReductionRatio))+(10.0*PI*(double)dataWheelDiameter/(60.0*(double)dataWheelReductionRatio)))*(((double)dataRotSpeedMax1-10.0)/60.0/20.0);
//	dis222 = 0.5*((double)dataRotSpeedMax2*PI*(double)dataWheelDiameter/(60.0*(double)dataWheelReductionRatio))*((double)dataRotSpeedMax2/60.0/8.0)
//			+0.5*(((double)dataRotSpeedMax2*PI*(double)dataWheelDiameter/(60.0*(double)dataWheelReductionRatio))+(10.0*PI*(double)dataWheelDiameter/(60.0*(double)dataWheelReductionRatio)))*(((double)dataRotSpeedMax2-10.0)/60.0/20.0);
//	
//	if(dis111<a)
//	{
//		rotSpeedMax = dataRotSpeedMax1;
//		disde = 0.5*(((double)dataRotSpeedMax1*PI*(double)dataWheelDiameter/(60.0*(double)dataWheelReductionRatio))+(10.0*PI*(double)dataWheelDiameter/(60.0*(double)dataWheelReductionRatio)))*(((double)dataRotSpeedMax1-10.0)/60.0/20.0);
//	}else
//	if(dis222<a)
//	{
//		rotSpeedMax = dataRotSpeedMax2;
//		disde = 0.5*(((double)dataRotSpeedMax2*PI*(double)dataWheelDiameter/(60.0*(double)dataWheelReductionRatio))+(10.0*PI*(double)dataWheelDiameter/(60.0*(double)dataWheelReductionRatio)))*(((double)dataRotSpeedMax2-10.0)/60.0/20.0);
//	}else
//	{
//		rotSpeedMax = 10;
//		disde=0;
//	}
//	
//	if(Judge.rotok)//旋转到位就停止
//	{
//		rot_speed=0;
//	}else
//	{
//		if(Distancerot>a&&flagcode1==0)
//		{
//			rot_speed=0;
//		}else
//		if(Distancerot<a-disde-dataRotCorrection)
//		{
//			rot_speed=rotSpeedMax;
//		}else 
//		{
//			rot_speed=10;
//		}
//	}
//}

///********************托盘旋转速度控制*******************************************************************/
//void speedtray(double a)
//{
//	if(a<5)
//	{
//		tray_speed=5;
//	}else
//	{
//		if(Distancephi<a-5)
//		{
//			tray_speed=1000;
//		}else
//		if(Distancephi<a)
//		{
//			tray_speed=10;
//		}
//	}
//}

//void speedy(double codey)
//{
//	static int ii=0;
//	if(flagcode1)//有二维码就清错
//	{
//		codebad_err=0;
//		ii=0;
//		if(codey>-2&&codey<2)
//		{
//			yspeed=0;
//			Judge.yadjust=1;
//		}else
//		if(codey>=2)
//		{
//			yspeed=-20;
//			Judge.yadjust=0;
//		}else
//		if(codey<=-2)
//		{
//			yspeed=20;
//			Judge.yadjust=0;
//		}
//		
//	}else
//	if(flagcode1==0)//走到位扫不到二维码就报错
//	{
//		ii++;
//		yspeed=0;
//		Judge.yadjust=0;
//	}
//	if(ii>100)codebad_err=1;

//}