📄 control2.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 + -