#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; } /* //20240622取消定时15分钟 amCtrl_counter++; if (amCtrl_counter > 18000) { amCtrl_state = 0; } */ } } #if CONFIG == HIGH_CONFIG #define CHONGQI_TIME 130U 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 >= CHONGQI_TIME) { 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 >= CHONGQI_TIME) { 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 >= CHONGQI_TIME) { 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 >= CHONGQI_TIME) { 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 >= CHONGQI_TIME) { 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 >= CHONGQI_TIME) { 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 >= CHONGQI_TIME) { 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 >= CHONGQI_TIME) { 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 >= CHONGQI_TIME) { 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 >= CHONGQI_TIME) { 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 >= 90U) { 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 >= 90U) { 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 >= 90U) { 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 >= 90U) { 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 >= 90U) { am_state_machine_counter = 0; am_state_machine = 0; } break; default: am_state_machine = 0; break; } } #else #define CHONGQI_TIME 160 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 >= CHONGQI_TIME) { 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 >= CHONGQI_TIME) { 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 >= CHONGQI_TIME) { 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 >= CHONGQI_TIME) { 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 >= CHONGQI_TIME) { 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 >= CHONGQI_TIME) { 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 >= 110) { 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 >= 110) { 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 >= 110) { am_state_machine_counter = 0; am_state_machine = 0; } break; default: break; } } #endif