123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173 |
- /**
- * @file ctrlmdfsm1.c
- * @author Zhang, Kai(zhangkai71@midea.com)
- * @brief Control mode FSM
- * @version 0.1
- * @date 2021-09-27
- *
- * @copyright Copyright (c) 2021
- *
- */
- #include "syspar.h"
- #include "user.h"
- #include "FSM_1st.h"
- #include "FSM_2nd.h"
- #include "canAppl.h"
- #include "hwsetup.h"
- /******************************
- *
- * Parameter
- *
- ******************************/
- FSM_RUN_HOOK FSM2nd_Run_state;
- FSM_RUN_HOOK Exit_state = {Exit, Exit_hook, Exit_tbcuphook, Exit_tbcdownhook, Exit_tbshook};
- FSM_RUN_HOOK Assistance_state = {Assistance, Assistance_hook, Assistance_tbcuphook, Assistance_tbcdownhook, Assistance_tbshook};
- FSM_RUN_HOOK Boost_state = {Boost, Boost_hook, Boost_tbcuphook, Boost_tbcdownhook, Boost_tbshook};
- CTRLMD_FSM_FLG1 cmfsm_stFlg = CTRLMD_FSM_FLG_DEFAULT;
- void RUN_FSM_voInit(void)
- {
- FSM2nd_Run_state = Exit_state;
- cmfsm_stFlg.blMotorStopFlg = TRUE;
- }
- void FSM_2nd_Main(void)
- {
- switch (FSM2nd_Run_state.state)
- {
- case Exit:
- /* code */
- if (switch_flg.SysRun_Flag == 1)
- {
- if (signal_state.Sensor == 1) // 力矩或踏频模式中
- {
- /* PWM on */
- pwm_stGenOut.uwNewTIM1COMPR[0] = HW_HHPWM_PERIOD;
- pwm_stGenOut.uwNewTIM1COMPR[1] = HW_HHPWM_PERIOD;
- pwm_stGenOut.uwNewTIM1COMPR[2] = HW_HHPWM_PERIOD;
- pwm_stGenOut.uwNewTIM1COMPR[3] = HW_HHPWM_PERIOD;
- pwm_stGenOut.uwNewTIM1COMPR[4] = HW_HHPWM_PERIOD;
- pwm_stGenOut.uwNewTIM1COMPR[5] = HW_HHPWM_PERIOD;
- hw_voPWMOn();
- /* Init */
- Switch_speed_FSMInit();
- /* switch to Boost FSM */
- Switch_Second_FSM(&Assistance_state);
- }
- if (signal_state.Assist == 1)
- {
- /* PWM on */
- pwm_stGenOut.uwNewTIM1COMPR[0] = HW_HHPWM_PERIOD;
- pwm_stGenOut.uwNewTIM1COMPR[1] = HW_HHPWM_PERIOD;
- pwm_stGenOut.uwNewTIM1COMPR[2] = HW_HHPWM_PERIOD;
- pwm_stGenOut.uwNewTIM1COMPR[3] = HW_HHPWM_PERIOD;
- pwm_stGenOut.uwNewTIM1COMPR[4] = HW_HHPWM_PERIOD;
- pwm_stGenOut.uwNewTIM1COMPR[5] = HW_HHPWM_PERIOD;
- hw_voPWMOn();
- /* Init */
- Switch_speed_FSMInit();
- /* switch to Boost FSM */
- Switch_Second_FSM(&Boost_state);
- }
- }
- break;
- case Assistance:
- if ((!switch_flg.SysRun_Flag) && cmfsm_stFlg.blMotorStopFlg && (curSpeed_state.state == Stop))
- {
- Switch_Second_FSM(&Exit_state);
- }
- break;
- case Boost:
- // if ((signal_state.Sensor == 1) && (switch_flg.SysRun_Flag))
- // {
- // Switch_Second_FSM(&Assistance_state);
- // }
- if ((!switch_flg.SysRun_Flag) && cmfsm_stFlg.blMotorStopFlg && (curSpeed_state.state == Stop))
- {
- Switch_Second_FSM(&Exit_state);
- }
- break;
- case Cruise:
- /* code */
- break;
- default:
- break;
- }
- }
- void Assistance_hook(void)
- {}
- void Assistance_tbcuphook(void)
- {
- scm_voSpdCtrMdUpTbc();
- }
- void Assistance_tbcdownhook(void)
- {
- scm_voSpdCtrMdDownTbc();
- }
- void Assistance_tbshook(void)
- {
- scm_voTorqCtrMdTbs();
- }
- void Boost_hook(void)
- {}
- void Boost_tbcuphook(void)
- {
- scm_voSpdCtrMdUpTbc();
- }
- void Boost_tbcdownhook(void)
- {
- scm_voSpdCtrMdDownTbc();
- }
- void Boost_tbshook(void)
- {
- scm_voSpdCtrMdTbs();
- }
- void Exit_hook(void)
- {
- scm_voSpdCtrMdInit();
- }
- void Exit_tbcuphook(void)
- {}
- void Exit_tbcdownhook(void)
- {}
- void Exit_tbshook(void)
- {}
- void Switch_Second_FSM(FSM_RUN_HOOK *in)
- {
- swSwitchStateCnts = 0;
- FSM2nd_Run_state = *in;
- }
- /************************************************************************
- Local Functions: N/A
- ************************************************************************/
- /************************************************************************
- Copyright (c) 2018 Welling Motor Technology(Shanghai) Co. Ltd.
- All rights reserved.
- ************************************************************************/
- #ifdef _CTRLMDFSM1_C_
- #undef _CTRLMDFSM1_C_
- #endif
- /************************************************************************
- End of this File (EOF)!
- Do not put anything after this part!
- ************************************************************************/
|