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

📄 control2.h

📁 使用MC9S12DP256写的CAN转串口程序。
💻 H
字号:
void Start_Engine()
{
	static uint i = 0;
	static uint j = 0;
	static uint k = 0;	
			
	CMD_AC_Combine = AC_combine;
	
	if(ISG_Real_ON_OFF == 0)//电机不正常
	{
		CMD_ISG_Torque = 0;
		CMD_ISG_Rev = 0;
		CMD_ISG_ON_OFF = 0;
		
		CMD_HVE_Torque = 0;
		CMD_HVE_Rev = 0;
		CMD_HVE_ON_OFF = 0;//关闭发动机
		return;	
	}
	else
	{
		if(j<Second(10))
		{
			j++;
			return;
		}	
	
		CMD_ISG_Torque = 0;
		CMD_ISG_Rev = 0;
		
		CMD_ISG_Mode = Tor_follow;//转矩跟随
		CMD_ISG_ON_OFF = 1;//启动电机
		CMD_HVE_Mode = Tor_follow;//转矩跟随
		CMD_HVE_ON_OFF = 1;//允许启动
	
		if(j < Second(20))
		{
			j++;
			return;
		}
	}

	CMD_AC_Combine = AC_combine;//AC_break;
	
	CMD_HVE_Torque = 13 + Drv_Acc*50;
	
	CMD_ISG_Torque = 70;	

	i = ++i%Second(60);
	if(i == 0)
		j = k = 0;
	
	if((ISG_Real_Rev > 900)||(i > Second(10)))//假定发动机已经点火   (ISG_Real_Rev > 800)||
	{
		if(i < Second(10))
			 i = Second(10);
		
		if(k < Second(4))
		{
			k++;
			
			if(ISG_Real_Rev > 1600)
				k = Second(4);			
		}		
		else
		{
			CMD_ISG_Torque = 0;
		//	CMD_AC_Combine = AC_break;			
		}			
		
		if(i < Second(40))
		{
			i = Second(30);//在此停止
			
	/*		CMD_ISG_Torque = Drv_Brk*50*(-1);
			if(CMD_ISG_Torque < -20)
				CMD_ISG_Torque = -20;
		*/			
		}	
	}
}

void Switch()
{
	static uint i = 0;
	static uint j = 0;
	static float k = 1;
	static uint AC_count = 0;
	static uchar status = 0;
	
	if(ISG_Real_ON_OFF == 0)//电机不正常
	{
		CMD_ISG_Torque = 0;
		CMD_ISG_Rev = 0;
		CMD_ISG_ON_OFF = 0;
		
		CMD_HVE_Torque = 0;
		CMD_HVE_Rev = 0;
		CMD_HVE_ON_OFF = 0;//关闭发动机
		return;	
	}
	else
	{
		if(j<Second(15))
		{
			j++;
			return;
		}			
		
		if(j < Second(30))
		{
			CMD_ISG_Torque = 0;
			CMD_ISG_Rev = 0;
			
			CMD_ISG_Mode = Tor_follow;//转矩跟随
			CMD_ISG_ON_OFF = 1;//启动电机	
			CMD_AC_Combine = AC_break;//
			
			j++;
			return;
		}
	}	
	
	if((ISG_Real_Rev < 1100)||(status == 0x22))//纯电动
	{
		k = 1;
		
		CMD_AC_Combine = AC_break;//
		if(AC_Real_Combine >= 0.8)
		{
			CMD_HVE_ON_OFF = 0;
			CMD_HVE_Torque = 0;
		}
		
		CMD_ISG_Torque = Drv_Acc*70 - Drv_Brk*50;
		if(ISG_Real_Rev > 2400)
			CMD_ISG_Torque = 0;		
		
		if(ISG_Real_Rev > 1200)
			status = 0;
	}
	else if((ISG_Real_Rev > 1200)||(status == 0x11))
	{
		CMD_AC_Combine = AC_combine;
		if(AC_Real_Combine <= 0.1)
		{
			CMD_HVE_Mode = Tor_follow;//转矩跟随
			CMD_HVE_ON_OFF = 1;
		}
		
		if(k > 0)
			k = k - 0.05;
		if(k < 0)
			k = 0;
		
		CMD_ISG_Torque = Drv_Acc*70*k - Drv_Brk*50;			
		CMD_HVE_Torque = Drv_Acc*60*(1-k) + 10;	
		
		if(ISG_Real_Rev < 1100)
			status = 0;		
	}	
	else
	{
		if(CMD_HVE_ON_OFF == 1)
			status = 0x11;
		else
			status = 0x22;
	}
}



void Switch_old()
{
	static uint i = 0;
	static uint j = 0;
	static uint k = 0;	
	static uint AC_count = 0;
	static uchar status = 0;
	static uint TT_counter = 0;
	static uchar start_flg = 0;
	
	if(ISG_Real_ON_OFF == 0)//电机不正常
	{
		CMD_ISG_Torque = 0;
		CMD_ISG_Rev = 0;
		CMD_ISG_ON_OFF = 0;
		
		CMD_HVE_Torque = 0;
		CMD_HVE_Rev = 0;
		CMD_HVE_ON_OFF = 0;//关闭发动机
		return;	
	}
	else
	{
		if(j<Second(2))
		{
			j++;
			return;
		}			
		
		if((Drv_Acc < 0.05)&&(start_flg == 0))
		{
			CMD_ISG_ON_OFF = 0;
			return;
		}
		else
			start_flg = 1;		
			
		if(j < Second(4))
		{
			CMD_ISG_Torque = 0;
			CMD_ISG_Rev = 0;
			
			CMD_ISG_Mode = Tor_follow;//转矩跟随
			CMD_ISG_ON_OFF = 1;//启动电机	
			CMD_AC_Combine = AC_break;//
			
			j++;
			return;
		}
	}	
	
	if((ISG_Real_Rev < 1300)&& (status == 0))//纯电动
	{
		CMD_ISG_Torque = Drv_Acc * 70;
		if(ISG_Real_Rev > 2400)
			CMD_ISG_Torque = 0;
	}
	
	else if(status != 0x02)
	{
		status = 0x01;
		CMD_HVE_Mode = Tor_follow;//转矩跟随
		CMD_HVE_ON_OFF = 1;//允许启动		
		CMD_HVE_Torque = Drv_Acc*30;
		
		CMD_AC_Combine = AC_combine;//
		
	//	CMD_ISG_Torque = Drv_Acc*80 + 55*(1-AC_Real_Combine);
		CMD_ISG_Torque = Drv_Acc * 70;
		
		i = ++i%Second(60);
		if((ISG_Real_Rev > 1300)||(i > Second(10)))//假定发动机已经点火   (ISG_Real_Rev > 800)||
		{
			if(i < Second(10))
				 i = Second(10);				
			
			if(k < Second(0.5))
			{
				k++;
				
				if(ISG_Real_Rev > 2400)
					k = Second(0.5);			
			}
			else
			{
				status = 0x02;	
			}
		}
	}	
	else if(status == 0x02)
	{
		CMD_HVE_Torque = Drv_Acc*30;
		if(CMD_HVE_Torque < 11)
			CMD_HVE_Torque = 11;
		
	/*	if((Drv_Acc < 0.05)&&(ISG_Real_Rev > 900))
			CMD_ISG_Torque = (BMS_SOC-0.6)*50*ISG_Real_Rev*0.001 - Drv_Brk*60;
		
		CMD_ISG_Torque = -Drv_Brk*60;*/
		
//		CMD_ISG_Torque = (BMS_SOC-0.7)*ISG_Real_Rev*0.03 - Drv_Brk*60;
		CMD_ISG_Torque = (BMS_Voltage-165)*0.01*ISG_Real_Rev*0.03 - Drv_Brk*60;
		
		if(CMD_ISG_Torque < -15)
			CMD_ISG_Torque = -15;
		
		if(Drv_Brk > 0.25)
		{
			CMD_HVE_Torque = 0;
			CMD_HVE_ON_OFF = 0;
			CMD_AC_Combine = AC_break;//
		}	
		if(CMD_AC_Combine == AC_break)
		{
			if((AC_Real_Combine > 0.8)&&(ISG_Real_Rev < 1300))
				status = 0;	
		}
	}	
}


void Switch_3()
{
	static uint i = 0;
	static uint j = 0;
	static float k = 1;
	static uint AC_count = 0;
	static uchar status = 0;
	
	if(ISG_Real_ON_OFF == 0)//电机不正常
	{
		CMD_ISG_Torque = 0;
		CMD_ISG_Rev = 0;
		CMD_ISG_ON_OFF = 0;
		
		CMD_HVE_Torque = 0;
		CMD_HVE_Rev = 0;
		CMD_HVE_ON_OFF = 0;//关闭发动机
		return;	
	}
	else
	{
		if(j<Second(15))
		{
			j++;
			return;
		}			
		
		if(j < Second(30))
		{
			CMD_ISG_Torque = 0;
			CMD_ISG_Rev = 0;
			
			CMD_ISG_Mode = Tor_follow;//转矩跟随
			CMD_ISG_ON_OFF = 1;//启动电机	
			CMD_AC_Combine = AC_break;//
			
			j++;
			return;
		}
	}	
	
	if(ISG_Real_Rev < 1200)//纯电动
	{
		k = 1;
		
		CMD_AC_Combine = AC_break;//
		if(AC_Real_Combine >= 0.8)
		{
			CMD_HVE_ON_OFF = 0;
			CMD_HVE_Torque = 0;
		}
		
		CMD_ISG_Torque = Drv_Acc*70 - Drv_Brk*50;
		if(ISG_Real_Rev > 2400)
			CMD_ISG_Torque = 0;			
	}
	else
	{
		CMD_AC_Combine = AC_combine;
		if(AC_Real_Combine <= 0.1)
		{
			CMD_HVE_Mode = Tor_follow;//转矩跟随
			CMD_HVE_ON_OFF = 1;
		}
		
		if(k > 0)
			k = k - 0.05;
		if(k < 0)
			k = 0;
		
		CMD_ISG_Torque = Drv_Acc*70*k - Drv_Brk*50;			
		CMD_HVE_Torque = Drv_Acc*60*(1-k) + 10;			
	}	
}

⌨️ 快捷键说明

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