Paramater.c 2.98 KB
#include "Paramater.h"

AGVStruct agv;
navigationPID pid;
navigationStruct navi;
/*定义用于计算的点
StartPoint TargetPoint直线运行当前点(起点)和下一个点(目标点)
CurrentCenterPoint  agv运动中心实时坐标
PointOne,PointTwo,PointThree,PointFour弧线转弯用的四个点,上一个点,当前点,下一个点,下两个点
A,B为单机测试时,放置屏幕可以调整的坐标
*/
CoordinatePoints StartPoint, TargetPoint, CurrentCenterPoint, PointOne, PointTwo, PointThree, PointFour, CircleCenterPoint,FrontViewPoint;

void initPidData()
{
	navi.PIDPara[0].Kp 						  = 0.5;//高速
	navi.PIDPara[0].Ki 						  = 0;
	navi.PIDPara[0].Kd 						  = 0;
	navi.PIDPara[0].PosCofficient 	  = 1;
	navi.PIDPara[0].AngleCofficient  = 8;
	navi.PIDPara[0].MaxLimit 				= 50;
	
	navi.PIDPara[1].Kp 						  = 1;//低速
	navi.PIDPara[1].Ki 						  = 0;
	navi.PIDPara[1].Kd 						  = 0;
	navi.PIDPara[1].PosCofficient 	  = 0.8;
	navi.PIDPara[1].AngleCofficient  =15;
	navi.PIDPara[1].MaxLimit 				= 50;
	
	navi.PIDPara[2].Kp 						  = 1;
	navi.PIDPara[2].Ki 						  = 0;
	navi.PIDPara[2].Kd 						  = 0;
	navi.PIDPara[2].PosCofficient 	  = 0.6;
	navi.PIDPara[2].AngleCofficient  = 15;
	navi.PIDPara[2].MaxLimit 				= 50;
	
	navi.PIDPara[3].Kp 						  = 1;
	navi.PIDPara[3].Ki 						  = 0;
	navi.PIDPara[3].Kd 						  = 0;
	navi.PIDPara[3].PosCofficient 	  = 0;
	navi.PIDPara[3].AngleCofficient  = 15;
	navi.PIDPara[3].MaxLimit 				= 50;
}


void initAgvData()
{
	Uart_Printf(COM1, "参数初始化\r\n");
	
	agv.Command.standSiteID = 1;
	agv.Command.Au_Hand = 0;
	agv.Public.i_StartSig = 0;
	agv.Public.i_StopSig = 0;

	Lifter1.initState = 0;
	Rotate1.initState = 0;
	
	agv.Parameter.HandSpeed 			= 300;//手动速度  你看调多少  按比例
	agv.Parameter.HandTurnSpeed 	= 100;
	agv.Parameter.HandSpeedSlope 	= 1;
	agv.Parameter.AutoSpeedSlope 	= 5;

	agv.Command.LaserState 					= 0;
	agv.Parameter.AdvanceParkPos 		= 800;//预停车距离100
	agv.Parameter.AdvanceParkSpeed	= 60;//预停车速度20
	agv.Parameter.OnlyAnglePos 			= 500;//只纠偏角度距离
	agv.Parameter.LiftSpeed		= 60; //举升速度600
	agv.Command.Barrier_ONOFF = 1;
	agv.Command.Vol 				= 15;
	agv.Command.Music_ONOFF = 1;
	agv.Parameter.AGVID = 0x0000;
	agv.Parameter.SetLift1Height = 70;
	agv.Command.InitShiftSig = 1;
}
void InitParamater()
{
	initPidData();
	initAgvData();
}
void clearPathInfomation()
{
	static int i = 0;

	agv.Command.standSiteID = 1; //执行点位置1复位

	Reset_Alarm(0x92A9); //清除脱线,停稳,系统停车

	
	agv.Public.i_ShiftCenterStopFlag = 0;

	memset(&traffic_land_marksReal,0,sizeof(traffic_land_marksReal));
	
	memset(&traffic_land_marksSys,0,sizeof(traffic_land_marksSys));
	
	agv.Public.finishTaskSig = 0;
		
	if (!agv.Command.Au_Hand)
	{
		agv.Public.chargestate =0;
		agv.Command.LandMarkID = 0;	
		SetAlarm(0x0004);
	}
//	memset(&traffic_land_marks, 0, sizeof(traffic_land_marks)); //清除所有路径信息
	SetAlarm(0x0200);                                           //手动模式下给一个系统停车报警代码,方便系统下发路径指令
}

void initPathInfo()
{
//  memset(&traffic_land_marks,0,sizeof(traffic_land_marks));
	SetAlarm(0x0200);
}