#ifndef __AddFunction_H_
#define __AddFunction_H_

#include <FU68xx_5_Type.h>

typedef struct
{
    uint16 Max_ia;                     // IA的最大值
    uint16 Max_ib;                     // IB的最大值
    uint16 Max_ic;                     // IC的最大值
    uint16 Max_is;
    uint16 time;
} CurrentVarible;

typedef struct
{
    int16  mcDcbusFlt;	// 母线电压
    int16  mcDcbus;	// 母线电压
    int16  mcDcbus_max_temp;	// 母线电压最大值
    int16  mcDcbus_min_temp;	// 母线电压最小值
    int16  mcDcbus_max;	// 母线电压最大值
    int16  mcDcbus_min;	// 母线电压最小值
    int16  mcDcbus_chazhi;	// 母线电压最小值
    uint16 CtrlMode;	// 控制模式
    int16  Powerlpf;	// 功率滤波后的值
    int16  IsRef;	// 速度闭环PI计算结果
    
    int16  mcIqref;	// Q轴给定电流
    int16  mcIdref;	// Q轴给定电流
    
    int16  IqRef;	// Q 轴参考电流
    int16  IdRef;	// D 轴参考电流
    int16  UQFlt;	// UQ滤波后的值
    int16  UDFlt;	// UD滤波后的值
    
    uint16 IDQFlt;
    uint16 RunStateCnt;	// 运行状态计数
    uint16 LoopTime;	// 外环时间
    uint16 IND_DEC_LoopTime;	// 外环时间
    uint16 ChargeStep;	// 预充电的步骤
    uint16 State_Count;	// 电机各个状态的时间计数
    int16  foc_comp_temp;
    int16  STT_FOC_THECOMP;
    uint8  CurrentAlignStatus;
} FOCCTRL;


typedef struct
{
    int16  TargetValue;
    int16  ActualValue;
    int16  IncValue;
    int16  DecValue;
} MCRAMP;


extern CurrentVarible xdata   mcCurVarible;
extern FOCCTRL        xdata   mcFocCtrl;
extern MCRAMP         xdata   mcSpeedRamp;

extern void   Fault_Detection(void);
extern void   PFCFault_Detection(void);
extern void   Speed_response(void);
extern void   mc_ramp(MCRAMP * hSpeedramp);
extern void   STT_FOC_THECOMP_CLEAR(void);
extern void   FaultProcess(void);
extern uint32 Abs_F32(int32 value);
extern void   StarRampDealwith(void);

extern void Current_Speed_PI(void);

#endif

