M20/APP/user/MotorCtrl.c

523 lines
13 KiB
C
Raw Normal View History

2024-05-19 17:07:18 +08:00
#include "MotorCtrl.h"
#include "hwCtrl.h"
#include "PINdef.h"
#include "appTask.h"
2024-05-19 20:26:03 +08:00
static uint8_t amCtrl_state = 0,am_state_machine = 0;
static uint16_t am_state_machine_counter = 0;
2024-05-26 21:09:14 +08:00
static uint8_t amCtrl_YTstate;
static void amCtrl_Act1(void);
static void amCtrl_Act2(void);
static void amCtrl_Act3(void);
2024-06-04 08:36:56 +08:00
static uint16_t amCtrl_counter;
2024-05-19 20:26:03 +08:00
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;
2024-05-26 21:09:14 +08:00
amCtrl_YTstate = 0;
2024-05-19 20:26:03 +08:00
}
2024-05-26 20:36:33 +08:00
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:
2024-05-26 23:52:58 +08:00
//setPumpState(PUMP_ON);
2024-05-26 20:36:33 +08:00
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:
2024-05-26 23:52:58 +08:00
//setPumpState(PUMP_ON);
2024-05-26 20:36:33 +08:00
setValveState(VALVE2,VALVE_OFF);
setValveState(VALVE7,VALVE_ON);
break;
default:
break;
}
if (qd1 == QD_NONE_ACT && qd2 == QD_NONE_ACT)
{
setPumpState(PUMP_OFF);
2024-05-26 21:09:14 +08:00
amCtrl_YTstate = 0;
}
else
{
amCtrl_YTstate = 1;
2024-05-26 20:36:33 +08:00
}
}
2024-05-19 20:26:03 +08:00
void amCtrl_Task(void)//50ms
{
if (amCtrl_state == 0)
{
2024-05-26 21:09:14 +08:00
if (amCtrl_YTstate == 0)
{
setPumpState(PUMP_OFF);
}
2024-05-19 21:15:43 +08:00
setValveState(VALVE3,VALVE_OFF);
setValveState(VALVE4,VALVE_OFF);
setValveState(VALVE5,VALVE_OFF);
2024-05-19 20:26:03 +08:00
am_state_machine = 0;
am_state_machine_counter = 0;
2024-06-04 08:36:56 +08:00
amCtrl_counter = 0;
2024-05-19 20:26:03 +08:00
}
else
{
setPumpState(PUMP_ON);
switch (amCtrl_state)
2024-05-19 20:26:03 +08:00
{
case 1:
amCtrl_Act1();
2024-05-19 20:26:03 +08:00
break;
case 2:
amCtrl_Act2();
break;
case 3:
amCtrl_Act3();
break;
2024-05-19 20:26:03 +08:00
default:
break;
}
2024-06-04 08:36:56 +08:00
amCtrl_counter++;
if (amCtrl_counter > 18000)
{
amCtrl_state = 0;
}
2024-05-19 20:26:03 +08:00
}
}
2024-05-26 20:36:33 +08:00
#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 >= 80)
{
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 >= 80)
{
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 >= 80)
{
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 >= 80)
{
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 >= 80)
{
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_OFF);
am_state_machine_counter++;
if (am_state_machine_counter >= 80)
{
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 >= 80)
{
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 >= 80)
{
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 >= 80)
{
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 >= 80)
{
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 >= 80)
{
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 >= 80)
{
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 >= 90)
{
am_state_machine_counter = 0;
am_state_machine = 0;
}
break;
2024-05-19 20:26:03 +08:00
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 >= 90)
{
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 >= 80)
{
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 >= 80)
{
am_state_machine_counter = 0;
am_state_machine = 0;
}
break;
2024-05-19 20:26:03 +08:00
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;
}
2024-05-26 20:36:33 +08:00
}
#endif