M20/APP/user/MotorCtrl.c
sunbeam 426fcab722 Merge branch 'master' of http://ikuai.hua-hua.cn:3000/huahua/M20
# Conflicts:
#	APP/QualityReport(ECU_APP,DefaultBuild).txt
2024-06-22 15:50:01 +08:00

523 lines
13 KiB
C

#include "MotorCtrl.h"
#include "hwCtrl.h"
#include "PINdef.h"
#include "appTask.h"
static uint8_t amCtrl_state = 0,am_state_machine = 0;
static uint16_t am_state_machine_counter = 0;
static uint8_t amCtrl_YTstate;
static void amCtrl_Act1(void);
static void amCtrl_Act2(void);
static void amCtrl_Act3(void);
static uint16_t amCtrl_counter;
void amCtrl_Init(void)
{
amCtrl_state = 0;
am_state_machine_counter = 0;
}
void amCtrl_SetState(uint8_t state)
{
amCtrl_state = state;
am_state_machine = 0;
am_state_machine_counter = 0;
amCtrl_YTstate = 0;
}
void amCtrl_SetYTState(QD_STATE_type qd1,QD_STATE_type qd2)
{
if (amCtrl_state != 0)
{
return;
}
switch (qd1)
{
case QD_NONE_ACT:
setValveState(VALVE1,VALVE_OFF);
setValveState(VALVE6,VALVE_OFF);
break;
case QD_CQ:
setPumpState(PUMP_ON);
setValveState(VALVE1,VALVE_ON);
setValveState(VALVE6,VALVE_OFF);
break;
case QD_FQ:
//setPumpState(PUMP_ON);
setValveState(VALVE1,VALVE_OFF);
setValveState(VALVE6,VALVE_ON);
break;
default:
break;
}
switch (qd2)
{
case QD_NONE_ACT:
setValveState(VALVE2,VALVE_OFF);
setValveState(VALVE7,VALVE_OFF);
break;
case QD_CQ:
setPumpState(PUMP_ON);
setValveState(VALVE2,VALVE_ON);
setValveState(VALVE7,VALVE_OFF);
break;
case QD_FQ:
//setPumpState(PUMP_ON);
setValveState(VALVE2,VALVE_OFF);
setValveState(VALVE7,VALVE_ON);
break;
default:
break;
}
if (qd1 == QD_NONE_ACT && qd2 == QD_NONE_ACT)
{
setPumpState(PUMP_OFF);
amCtrl_YTstate = 0;
}
else
{
amCtrl_YTstate = 1;
}
}
void amCtrl_Task(void)//50ms
{
if (amCtrl_state == 0)
{
if (amCtrl_YTstate == 0)
{
setPumpState(PUMP_OFF);
}
setValveState(VALVE3,VALVE_OFF);
setValveState(VALVE4,VALVE_OFF);
setValveState(VALVE5,VALVE_OFF);
am_state_machine = 0;
am_state_machine_counter = 0;
amCtrl_counter = 0;
}
else
{
setPumpState(PUMP_ON);
switch (amCtrl_state)
{
case 1:
amCtrl_Act2();
break;
case 2:
amCtrl_Act1();
break;
case 3:
amCtrl_Act3();
break;
default:
break;
}
amCtrl_counter++;
if (amCtrl_counter > 18000)
{
amCtrl_state = 0;
}
}
}
#if CONFIG == HIGH_CONFIG
static void amCtrl_Act1(void)
{
switch (am_state_machine)
{
case 0:
setValveState(VALVE1,VALVE_ON);
setValveState(VALVE2,VALVE_OFF);
setValveState(VALVE3,VALVE_OFF);
setValveState(VALVE4,VALVE_OFF);
setValveState(VALVE5,VALVE_OFF);
setValveState(VALVE6,VALVE_OFF);
setValveState(VALVE7,VALVE_OFF);
am_state_machine_counter++;
if (am_state_machine_counter >= 100U)
{
am_state_machine_counter = 0;
am_state_machine++;
}
break;
case 1:
setValveState(VALVE1,VALVE_OFF);
setValveState(VALVE2,VALVE_ON);
setValveState(VALVE3,VALVE_OFF);
setValveState(VALVE4,VALVE_OFF);
setValveState(VALVE5,VALVE_OFF);
setValveState(VALVE6,VALVE_ON);
setValveState(VALVE7,VALVE_OFF);
am_state_machine_counter++;
if (am_state_machine_counter >= 100U)
{
am_state_machine_counter = 0;
am_state_machine++;
}
break;
case 2:
setValveState(VALVE1,VALVE_OFF);
setValveState(VALVE2,VALVE_OFF);
setValveState(VALVE3,VALVE_ON);
setValveState(VALVE4,VALVE_OFF);
setValveState(VALVE5,VALVE_OFF);
setValveState(VALVE6,VALVE_OFF);
setValveState(VALVE7,VALVE_ON);
am_state_machine_counter++;
if (am_state_machine_counter >= 100U)
{
am_state_machine_counter = 0;
am_state_machine++;
}
break;
case 3:
setValveState(VALVE1,VALVE_OFF);
setValveState(VALVE2,VALVE_OFF);
setValveState(VALVE3,VALVE_OFF);
setValveState(VALVE4,VALVE_ON);
setValveState(VALVE5,VALVE_OFF);
setValveState(VALVE6,VALVE_OFF);
setValveState(VALVE7,VALVE_OFF);
am_state_machine_counter++;
if (am_state_machine_counter >= 100U)
{
am_state_machine_counter = 0;
am_state_machine++;
}
break;
case 4:
setValveState(VALVE1,VALVE_OFF);
setValveState(VALVE2,VALVE_OFF);
setValveState(VALVE3,VALVE_OFF);
setValveState(VALVE4,VALVE_OFF);
setValveState(VALVE5,VALVE_ON);
setValveState(VALVE6,VALVE_OFF);
setValveState(VALVE7,VALVE_OFF);
am_state_machine_counter++;
if (am_state_machine_counter >= 100U)
{
am_state_machine_counter = 0;
am_state_machine = 0;
}
break;
default:
am_state_machine = 0;
break;
}
}
static void amCtrl_Act2(void)
{
switch (am_state_machine)
{
case 0:
setValveState(VALVE1,VALVE_OFF);
setValveState(VALVE2,VALVE_OFF);
setValveState(VALVE3,VALVE_OFF);
setValveState(VALVE4,VALVE_OFF);
setValveState(VALVE5,VALVE_ON);
setValveState(VALVE6,VALVE_ON);
setValveState(VALVE7,VALVE_ON);
am_state_machine_counter++;
if (am_state_machine_counter >= 100)
{
am_state_machine_counter = 0;
am_state_machine++;
}
break;
case 1:
setValveState(VALVE1,VALVE_OFF);
setValveState(VALVE2,VALVE_OFF);
setValveState(VALVE3,VALVE_OFF);
setValveState(VALVE4,VALVE_ON);
setValveState(VALVE5,VALVE_OFF);
setValveState(VALVE6,VALVE_OFF);
setValveState(VALVE7,VALVE_OFF);
am_state_machine_counter++;
if (am_state_machine_counter >= 100)
{
am_state_machine_counter = 0;
am_state_machine++;
}
break;
case 2:
setValveState(VALVE1,VALVE_OFF);
setValveState(VALVE2,VALVE_OFF);
setValveState(VALVE3,VALVE_ON);
setValveState(VALVE4,VALVE_OFF);
setValveState(VALVE5,VALVE_OFF);
setValveState(VALVE6,VALVE_OFF);
setValveState(VALVE7,VALVE_OFF);
am_state_machine_counter++;
if (am_state_machine_counter >= 100)
{
am_state_machine_counter = 0;
am_state_machine++;
}
break;
case 3:
setValveState(VALVE1,VALVE_OFF);
setValveState(VALVE2,VALVE_ON);
setValveState(VALVE3,VALVE_OFF);
setValveState(VALVE4,VALVE_OFF);
setValveState(VALVE5,VALVE_OFF);
setValveState(VALVE6,VALVE_OFF);
setValveState(VALVE7,VALVE_OFF);
am_state_machine_counter++;
if (am_state_machine_counter >= 100)
{
am_state_machine_counter = 0;
am_state_machine++;
}
break;
case 4:
setValveState(VALVE1,VALVE_ON);
setValveState(VALVE2,VALVE_OFF);
setValveState(VALVE3,VALVE_OFF);
setValveState(VALVE4,VALVE_OFF);
setValveState(VALVE5,VALVE_OFF);
setValveState(VALVE6,VALVE_OFF);
setValveState(VALVE7,VALVE_ON);
am_state_machine_counter++;
if (am_state_machine_counter >= 100)
{
am_state_machine_counter = 0;
am_state_machine = 0;
}
break;
default:
am_state_machine = 0;
break;
}
}
static void amCtrl_Act3(void)
{
switch (am_state_machine)
{
case 0:
setValveState(VALVE1,VALVE_ON);
setValveState(VALVE2,VALVE_ON);
setValveState(VALVE3,VALVE_OFF);
setValveState(VALVE4,VALVE_OFF);
setValveState(VALVE5,VALVE_OFF);
setValveState(VALVE6,VALVE_OFF);
setValveState(VALVE7,VALVE_OFF);
am_state_machine_counter++;
if (am_state_machine_counter >= 60)
{
am_state_machine_counter = 0;
am_state_machine++;
}
break;
case 1:
setValveState(VALVE1,VALVE_OFF);
setValveState(VALVE2,VALVE_ON);
setValveState(VALVE3,VALVE_ON);
setValveState(VALVE4,VALVE_OFF);
setValveState(VALVE5,VALVE_OFF);
setValveState(VALVE6,VALVE_ON);
setValveState(VALVE7,VALVE_OFF);
am_state_machine_counter++;
if (am_state_machine_counter >= 60)
{
am_state_machine_counter = 0;
am_state_machine++;
}
break;
case 2:
setValveState(VALVE1,VALVE_OFF);
setValveState(VALVE2,VALVE_OFF);
setValveState(VALVE3,VALVE_ON);
setValveState(VALVE4,VALVE_ON);
setValveState(VALVE5,VALVE_OFF);
setValveState(VALVE6,VALVE_OFF);
setValveState(VALVE7,VALVE_ON);
am_state_machine_counter++;
if (am_state_machine_counter >= 60)
{
am_state_machine_counter = 0;
am_state_machine++;
}
break;
case 3:
setValveState(VALVE1,VALVE_OFF);
setValveState(VALVE2,VALVE_OFF);
setValveState(VALVE3,VALVE_OFF);
setValveState(VALVE4,VALVE_ON);
setValveState(VALVE5,VALVE_ON);
setValveState(VALVE6,VALVE_OFF);
setValveState(VALVE7,VALVE_OFF);
am_state_machine_counter++;
if (am_state_machine_counter >= 60)
{
am_state_machine_counter = 0;
am_state_machine++;
}
break;
case 4:
setValveState(VALVE1,VALVE_ON);
setValveState(VALVE2,VALVE_OFF);
setValveState(VALVE3,VALVE_OFF);
setValveState(VALVE4,VALVE_OFF);
setValveState(VALVE5,VALVE_ON);
setValveState(VALVE6,VALVE_OFF);
setValveState(VALVE7,VALVE_OFF);
am_state_machine_counter++;
if (am_state_machine_counter >= 60)
{
am_state_machine_counter = 0;
am_state_machine = 0;
}
break;
default:
am_state_machine = 0;
break;
}
}
#else
static void amCtrl_Act1(void)
{
switch (am_state_machine)
{
case 0:
setValveState(VALVE3,VALVE_ON);
setValveState(VALVE4,VALVE_OFF);
setValveState(VALVE5,VALVE_OFF);
am_state_machine_counter++;
if (am_state_machine_counter >= 130)
{
am_state_machine_counter = 0;
am_state_machine = 1;
}
break;
case 1:
setValveState(VALVE3,VALVE_OFF);
setValveState(VALVE4,VALVE_ON);
setValveState(VALVE5,VALVE_OFF);
am_state_machine_counter++;
if (am_state_machine_counter >= 130)
{
am_state_machine_counter = 0;
am_state_machine = 2;
}
break;
case 2:
setValveState(VALVE3,VALVE_OFF);
setValveState(VALVE4,VALVE_OFF);
setValveState(VALVE5,VALVE_ON);
am_state_machine_counter++;
if (am_state_machine_counter >= 130)
{
am_state_machine_counter = 0;
am_state_machine = 0;
}
break;
default:
break;
}
}
static void amCtrl_Act2(void)
{
switch (am_state_machine)
{
case 0:
setValveState(VALVE3,VALVE_OFF);
setValveState(VALVE4,VALVE_OFF);
setValveState(VALVE5,VALVE_ON);
am_state_machine_counter++;
if (am_state_machine_counter >= 130)
{
am_state_machine_counter = 0;
am_state_machine = 1;
}
break;
case 1:
setValveState(VALVE3,VALVE_OFF);
setValveState(VALVE4,VALVE_ON);
setValveState(VALVE5,VALVE_OFF);
am_state_machine_counter++;
if (am_state_machine_counter >= 130)
{
am_state_machine_counter = 0;
am_state_machine = 2;
}
break;
case 2:
setValveState(VALVE3,VALVE_ON);
setValveState(VALVE4,VALVE_OFF);
setValveState(VALVE5,VALVE_OFF);
am_state_machine_counter++;
if (am_state_machine_counter >= 130)
{
am_state_machine_counter = 0;
am_state_machine = 0;
}
break;
default:
break;
}
}
static void amCtrl_Act3(void)
{
switch (am_state_machine)
{
case 0:
setValveState(VALVE3,VALVE_ON);
setValveState(VALVE4,VALVE_ON);
setValveState(VALVE5,VALVE_OFF);
am_state_machine_counter++;
if (am_state_machine_counter >= 80)
{
am_state_machine_counter = 0;
am_state_machine = 1;
}
break;
case 1:
setValveState(VALVE3,VALVE_OFF);
setValveState(VALVE4,VALVE_ON);
setValveState(VALVE5,VALVE_ON);
am_state_machine_counter++;
if (am_state_machine_counter >= 80)
{
am_state_machine_counter = 0;
am_state_machine = 2;
}
break;
case 2:
setValveState(VALVE3,VALVE_ON);
setValveState(VALVE4,VALVE_OFF);
setValveState(VALVE5,VALVE_ON);
am_state_machine_counter++;
if (am_state_machine_counter >= 80)
{
am_state_machine_counter = 0;
am_state_machine = 0;
}
break;
default:
break;
}
}
#endif