#ifndef __CUSTOMER_H_ #define __CUSTOMER_H_ ////// ------------ 文件规范化 ------------------------------- // 1.电机相关参数: 电阻(Ω) DQ电感(H) 反电动势常数(V/RPM) 转向(CW/CCW) 基准转速(RPM) 极对数 #define RS (0.5) #define LD (0.004) #define LQ (0.004) #define Ke (38.3) #define Psi (float)(Ke * 207.84 / 1000.0 / 2.0 / 1.732 / Pole_Pairs / _2PI ) #define IRMODE (CCW) #define MOTOR_SPEED_BASE (12000.0) #define Pole_Pairs (2) #define ID_Limit I_Value(-Psi/LD/2) // 2.硬件相关:载波频率(KHz) 死区(us) 单电阻最小窗口(us) 驱动电平 基准电压(V) #define PWM_FREQUENCY (5.0) #define PWM_DEADTIME (5.0) #define MIN_WIND_TIME (5.9) #define PWM_Level_Mode (High_Level) #define HW_ADC_VREF (VREF5_0) // ADC相关滤波使能 运放配置 运放倍数 #define VREF_OUT_EN (1) #define VHALF_OUT_EN (1) #define HW_AMP_MODE (AMP_PGA_DUAL) #define HW_AMPGAIN (AMP2x) #define I_ValueX(Curr_Value) (Curr_Value * HW_RSHUNT * HW_AMPGAIN / (HW_ADC_REF)) #define I_Value(Curr_Value) _Q15(I_ValueX(Curr_Value)) #define MCU_CLOCK (24.0) // (MHz) 主频 #define HW_RSHUNT (0.04) // (Ω) 采样电阻 #define HW_ADC_REF (5.0) // (V) ADC参考电压 //5.0 #define HW_ADC_REF_HALF (2.5) // (V) ADC参考电压 //5.0 #define RV1 (940.0) // (kΩ) 母线电压分压电阻1 #define RV2 (940.0) // (kΩ) 母线电压分压电阻2 #define RV3 (0.3) // (kΩ) 母线电压分压电阻3 #define VC1 (1.0) // 电压补偿系数 // #define RV ((RV1 + RV2 + RV3) / RV3) // 分压比 #define RV (250.7 / 1.0) // 分压比 ((RV1 + RV2 + RV3) / RV3/8/7.5*2.4) #define HW_BOARD_VOLT_MAX (HW_ADC_REF * RV) // (V) ADC可测得的最大母线电压 #define RL1 (450.0) // (kΩ) 母线电压分压电阻1 #define RL2 (2.0) // (kΩ) 母线电压分压电阻2 #define RL ((RL1 + RL2) / RL2) // 分压比 #define HW_L_VOLT_MAX (HW_ADC_REF * RL) // (V) ADC可测得的最大母线电压 #define Udcmax_ms (20.0* PWM_FREQUENCY ) // 60*ms读取一次UDC最大值和最小值 /*电流偏执采样时间设置-------------------------------------------------------------------*/ #define Calib_Time (1000) // 校正次数,固定1000次,单位:次 /*预充电设置值-------------------------------------------------------------------*/ #define Charge_Time (100) //30 // (ms) 预充电时间,单位:ms #define Calib_Duty (0.1) // 预充电占空比 /*正常运行时估算算法的参数设置值-------------------------------------------------*/ #define OBS_KSLIDE _Q15(0.85) //0.65 // SMO算法里的滑膜增益值 #define E_BW1 (80.0) // PLL算法里的反电动势滤波值 #define E_BW2 (80.0) // PLL算法里的反电动势滤波值 #define E_BW3 (80.0) // PLL算法里的反电动势滤波值 #define E_BW4 (80.0) // PLL算法里的反电动势滤波值 #define E_BW5 (80.0) // PLL算法里的反电动势滤波值 /*启动参数参数值----------------------------------------------------------------*/ /*********** RPD parameter ***********/ /******* 初始位置检查参数 **********/ #define AlignTestMode (0) // 预定位测试模式 /***预定位的Kp、Ki****/ #define DQKP_Alignment _Q12(5.0) // 预定位的KP #define DQKI_Alignment _Q15(0.01) // 预定位的KI #define IQ_Align_CURRENT I_Value(0.0) /* (A) D轴定位电流 */ #define ID_Align_CURRENT_Start I_Value(15.0) /* (A) Q轴定位初始电流 */ #define ID_Align_CURRENT_End ID_Align_CURRENT_Start /* (A) Q轴定位保持电流 */ #define Align_Angle1 _Q15((float)0.0 / 180.0) /* 定位角度1,固定为 0 度 用于检测缺相 */ #define Align_Angle2 _Q15((float)90.0 / 180.0) /* 定位角度2,二次预定位 */ #define Align_Start (Align_Angle2 - _Q15((float)30.0 / 180.0)) /* 启动角度 */ #define AlignmentRampTime (500.0) /* (ms) 预定位电流爬坡时间 */ #define AlignmentHoldTime1 (500.0) /* (ms) 预定位电流保持时间 */ #define AlignmentHoldTime2 (500.0) /* (ms) 预定位电流保持时间 */ #define Align_Time (AlignmentRampTime + AlignmentHoldTime1+AlignmentHoldTime2) /***启动电流****/ #define ID_Start_CURRENT I_Value(0.0) // (A) D轴启动电流 #define IQ_Start_CURRENT I_Value(25.0) // (A) Q轴启动电流 #define IQ_Start_CURRENT2 I_Value(25.0) // (A) Q轴启动电流 /***运行电流****/ #define ID_RUN_CURRENT I_Value(0.0) // (A) D轴运行电流 #define IQ_RUN_CURRENT I_Value(1.5) // (A) Q轴运行电流 #define Start_FOC_THECOMP _Q15(10.0/180.0) //启动补偿角度 /*************Omega启动的参数***************/ #define ATO_BW (120.0) // 观测器带宽的滤波值,经典值为1.0-200.0 #define ATO_BW_RUN (130.0) #define ATO_BW_RUN1 (140.0) #define ATO_BW_RUN2 (150.0) #define ATO_BW_RUN3 (160.0) #define ATO_BW_RUN4 (190.0) #define SPD_BW (25.0) // 速度带宽的滤波值,经典值为5.0-40.0 #define ATT_COEF (0.95) // 无需改动 /*转速参数值-------------------------------------------------------------------*/ /* motor start speed value */ //open 算法启动参数 #define MOTOR_OPEN_ACC (1.0) //30.0 // 强拖启动的增量(每载波周期加一次) #define MOTOR_OPEN_ACC_MIN (100.0) //20.0 // 强拖启动的初始速度 #define MOTOR_OPEN_ACC_CNT (250.0) //100.0 // 强拖启动的执行次数(MOTOR_OPEN_ACC_CNT*256) #define MOTOR_OPEN_ACC_CYCLE (100) //5 // 强拖启动循环拖动的次数 //OMEGA启动参数 #define Motor_Omega_Ramp_ACC (300.0) //(50.00) //5.0 //60 // omega启动的增量 12 #define MOTOR_OMEGA_ACC_MIN (200.0) //(800.0) //20.0 //100 // (RPM) omega启动的最小切换转速 #define MOTOR_OMEGA_ACC_END (400.0) //50.0 // (RPM) omega启动的限制转速 /* motor loop control speed value */ #define MOTOR_LOOP_RPM (500.0) //(450.0) //20.0 //200 // (RPM) 由mode 0到mode1切换转速,即闭环切换转速 /* motor run speed value */ //电机运行时最大最小转速、堵转保护转速 #define MOTOR_SPEED_SMOMIN_RPM (400.0) //60.0 // (RPM) SMO运行最小转速 #define MOTOR_SPEED_MIN_RPM (900.0) //100.0 // (RPM) 运行最小转速 #define MOTOR_SPEED_MAX_RPM (5400.0) //4000 //8000 // (RPM) 运行最大转速 #define MOTOR_SPEED_STAL_MAX_RPM (7000.0) //(6000.0) // (RPM) 堵转保护转速 #define MOTOR_SPEED_STAL_MIN_RPM (800.0) //(200.0) #define MOTOR_SPEED_STOP_RPM (1300.0) // (RPM) 运行最小转速 /*******运行时的参数*****************/ /*电流环参数设置值--------------------------------------------------------------*/ /*启动*/ #define DQKPStart _Q12(4.0) //1.1 #define DQKIStart _Q15(0.0081) //0.01 /*低速*/ #define DQKP _Q12(2.0) //带载时5.0 #define DQKI _Q15(0.002) //此值不能太大,大了后影响低速性能(与转矩补偿冲突) /*中速*/ #define DQKP_zhong _Q12(1.5) //带载时5.0 #define DQKI_zhong _Q15(0.002) // /*高速*/ #define DQKP_highspeed _Q12(1.5) //4.0 切换时易导致转速波动 #define DQKI_highspeed _Q15(0.002) //0.02 0.011 /* D轴参数设置 */ #define DOUTMAX _Q15(0.95) //0.9 // D轴最大限幅值,单位:输出占空比 #define DOUTMIN _Q15(-0.95) //-0.9 /* Q轴参数设置,默认0.99即可 */ #define QOUTMAX _Q15(0.99) // Q轴最大限幅值,单位:输出占空比 #define QOUTMIN _Q15(-0.99) // Q轴最小限幅值,单位:输出占空比 #define QOUTINC (1) //25 // Q轴电流增大步进值,开环控制时有效 /*外环参数设置值----------------------------------------------------------------*/ #define SPEED_LOOP_TIME (1) //2 // (ms) 速度环调节周期 SPEED_INC_DEC_TIME #define WEAK_LOOP_TIME (1) //2 // (ms) 速度环调节周期 SPEED_INC_DEC_TIME #define SPEED_INC_DEC_TIME (200) // (ms) 速度环爬坡周期 /*启动*/ #define SKP _Q12(0.65) //0.25 // 外环KP #define SKI _Q15(0.010) //0.00251 /*低速*/ #define SKPRun _Q12(0.45) //0.35 // 外环KP #define SKIRun _Q15(0.03) //0.03 // 外环KI 0.01 ,影响转矩补偿 /*中速*/ #define SKPRun1 _Q12(0.30)//0.2 太大高速时波动,太小 #define SKIRun1 _Q15(0.01) //0.0005 /*高速*/ #define SKPRun2 _Q12(0.30)//0.15 太大高速时波动,太小 #define SKIRun2 _Q15(0.01) //0.0002 // 外环KI #define SOUTMAX I_Value(60.0) //7.0 //16 // (A) 外环最大限幅值 #define SOUTMIN I_Value(0.0) //0.02 // (A) 外环最小限幅值 #define I_OVER I_Value(78.0) // 降频点 超过此值降频率 #define I_LIMIT I_Value(77.0) // 限制电流值 #define P_OVER P_Power(15180) // 降频点 超过此值降频率 #define P_LIMIT P_Power(15150) // 限制功率值 /*外环增量*/ #define SPEED_INC_Start (200.0) #define SPEED_INC (200.0) //150 // 速度环增量 #define SPEED_DEC (200.0) //150 // 速度环减量 #define SPEED_DEC1 (800.0) //150 // 速度环减量 停机时使用 #define SpeedRampStartInc (S_Value(SPEED_INC_Start))/(1000/SPEED_INC_DEC_TIME) #define Motor_Speed_Inc (S_Value(SPEED_INC)) /(1000/(SPEED_LOOP_TIME*20.0)) #define Motor_Speed_Dec (S_Value(SPEED_DEC)) /(1000/(SPEED_LOOP_TIME*20.0)) #define Motor_Speed_Dec1 (S_Value(SPEED_DEC1)) /(1000/SPEED_INC_DEC_TIME) #define MotorStartHoldTime (15000) //上油时间 15000 #define MotorStartSpeed (2700) //上油转速 #define Motor_Start_Hold_Speed _Q15(MotorStartSpeed / MOTOR_SPEED_BASE) /*外环使能*/ #define OUTLoop_Disable (0) // 关闭外环 #define OUTLoop_Enable (1) // 使能外环 #define OUTLoop_Mode (OUTLoop_Enable) /*外环选择功率环或速度环*/ #define POWER_LOOP_CONTROL (0) //恒功率 #define SPEED_LOOP_CONTROL (1) //恒转速 #define Motor_Speed_Control_Mode (SPEED_LOOP_CONTROL) //调速模式 #define UARTMODE (0) // 模拟调速 #define NONEMODE (1) // 直接给定值,不调速 #define SPEED_MODE (UARTMODE) /*估算器模式选择*/ #define SMO (0) // SMO ,滑膜估算 #define PLL (1) // PLL ,锁相环 #define AO (2) // PLL ,锁相环 #define EstimateAlgorithm (AO) /*开环启动模式选择*/ #define Open_Start (0) // 开环强拖启动 #define Omega_Start (1) // Omega启动 #define Open_Omega_Start (2) // 先开环启,后Omega启动 #define Open_Start_Mode (Omega_Start) /*电流采样模式*/ #define Single_Resistor (0) // 单电阻电流采样模式 #define Double_Resistor (1) // 双电阻电流采样模式 #define Three_Resistor (2) // 三电阻电流采样模式 #define Shunt_Resistor_Mode (Double_Resistor) #define OverModulation (0) // 0-禁止过调制,1-使能过调制 #define StopBrakeFlag (0) #define StopWaitTime (2000) // (ms) 刹车等待时间 /* -----弱磁使能位----- */ #define FiledWeakenCompEnable (0) // 弱磁使能; 1:使能,0:关闭 /* -----弱磁电压比例系数----- */ #define DcbusK _Q15(0.8)//(90) // 如果进不了弱磁可以把该系数改小些 100对应1 /* -----弱磁电压环参数----- */ #define FiledWeakenKp _Q12(0.4) //0.4 #define FiledWeakenKi _Q15(0.0001) //0.0001 /* -----风机控制参数----- */ #define FENG_SPEED_LOOP_TIME (20) //风机控制周期 #define fengSKP _Q12(1.0) //0.25 高低速分档 #define fengSKI _Q15(0.01) //0.00051 #define TIM_3_T (1000) // time3 周期值 #define TIM_4_T (375000) //定时器4频率 #define TIM_4_T_Pole_Pairs (4) //风机脉冲数 #define TIM_4_fengji_speedxishu ((60*TIM_4_T)/TIM_4_T_Pole_Pairs) //60f/p /*膨胀阀控制*/ #define Pengzhangfa_CW (1) //换相顺序,0:正序。1:反序 #define Pengzhangfa_Contro_Mode (0) //控制逻辑,0:指令连续。1:指令不连续 #define valvemotorsudu (30) //电子膨胀阀换相时间ms #define valvemotorstime (500) //电子膨胀阀停留时间ms #define Uart_MoNi (0) //模拟串口 #define Uart_Yingjian (1) //硬件串口 #define Uart_Select (Uart_Yingjian) // 通信模式选择,380bps及其选择软件,否则硬件 #define Uart_COMMUNICATION (1) // 通信协议 0:格力 1;月兔 #define Debugg (1) // 调试工具选择 #define IFFDebugg (0) // 强拖测试模式 #define IF_I_Value I_Value(10.0) // 强拖测试电流 #define VoltageCompensationEn (0)//电压补偿使能位 #define TempCtrol_Select (0)//温控逻辑室内or室外 0室内 1室外 //电压限频 #define VAC_Min_F 900 #define VAC_Max_F 900 #define VAC_Min _Q15((290.0*1.414) / HW_L_VOLT_MAX) #define VAC_Max _Q15((360.0*1.414) / HW_L_VOLT_MAX) #define VAC_Max_K ((float)(VAC_Max_F-VAC_Min_F)/(float)(VAC_Max-VAC_Min)) #endif