/** * @file canAppl.h * @author Zhang, Kai(zhangkai71@midea.com) * @brief * @version 0.1 * @date 2022-03-02 * * @copyright Copyright (c) 2022 * */ #ifndef CANAPPL_H #define CANAPPL_H #include "typedefine.h" #include "AssistCurve.h" #include "bikeinformation.h" #include "bikeRatioCal.h" /**************************************** * * Definitions & Macros * ****************************************/ #define CAN_MC_ALARMCODE_DEFAULT \ { \ 0x00000000 \ } #define CAN_MC_ALARMCODE_CNT_RECORD_DEFAULT \ { \ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ } #define ALAM_DETECT_CNT_IN_1ms 120000 #define ALAM_DISPLAY_CNT_0LEVEL 1 #define ALAM_DISPLAY_CNT_1LEVEL 3 #define ALAM_DISPLAY_CNT_2LEVEL 1 #define ALAM_DISPLAY_CNT_3LEVEL 30 /*************************************** * * Type Definations * ***************************************/ typedef enum { MC_Cadence_Forward = 0x00, MC_Cadence_Backward = 0x01, MC_Cadence_Stop = 0x02 } MC_CadenceDir_Struct_t; typedef enum { MC_LightSwitch_OFF = 0xF0, MC_LightSwitch_ON = 0xF1 } MC_LightSwitch_Struct_t; /** * @brief 电机运行信息,占用空间32bytes * */ typedef struct { UWORD BikeSpeed; ///>车速 0.1km/h,地址偏移0 SWORD MotorSpeed; ///>输出转速 1rpm,地址偏移2 UWORD Power; ///>电功率 1W,地址偏移4 UWORD BusVoltage; ///>母线电压 1mV,地址偏移6 UWORD BusCurrent; ///>母线电流 1mA,地址偏移8 UBYTE Cadence; ///>踏频 1rpm,地址偏移10 UBYTE Torque; ///>踩踏力矩 1Nm,地址偏移11 MC_CadenceDir_Struct_t CadenceDir; ///>踩踏方向 0-正,1-反,2-停止,地址偏移12 UBYTE GearSt; ///>助力档位,地址偏移13 MC_LightSwitch_Struct_t LightSwitch; ///>灯开关 0xF0-关,0xF1-开,地址偏移14 UBYTE SOC; ///>剩余电量 1%,地址偏移15 UWORD RemainDistance; ///>续航里程 1km,地址偏移16 UWORD TorqueReg; ///>力矩传感器AD值,地址偏移18 UBYTE PowerPerKm; ///>平均功耗 0.01Ah/km ,地址偏移20 UBYTE T_PCB; ///>PCB温度 +40℃,地址偏移21 UBYTE T_Coil; ///>绕组温度 +40℃,地址偏移22 UBYTE T_MCU; ///>MCU温度 +40℃,地址偏移23 UWORD Ride_Km; ///>开机后骑行里程 0.1km, 地址偏移24 UWORD Ride_Time; ///>开机后骑行时间 1s,地址偏移26 UBYTE TorqueSensorData1; ///>力矩传感器 1 原始值27 UBYTE TorqueSensorData2; ///>力矩传感器 2 原始值28 UBYTE TorqueSensorData3; ///>力矩传感器 3 原始值29 UBYTE RS2; ///>预留 1bytes } MC_RunInfo_Struct_t; /** * @brief 电机调试信息,占用空间32bytes * */ typedef struct { UBYTE SysFSM1; //系统功能状态机1,系统状态机 UBYTE SysFSM2; //系统功能状态机2,二层状态机 UBYTE SysFSM3; //系统功能状态机3,电机状态机 UBYTE SysFSM4; //系统功能状态机4,助力状态机 SWORD IdRef; //D轴参考电流 SWORD IqRef; //Q轴参考电流 SWORD UdRef; //D轴参考电压 SWORD UqRef; //Q轴参考电压 UWORD PedalTorquePer; //踩踏瞬时力矩 UWORD PedalTorqueAvg; //踩踏时域滤波力矩 UWORD PedalTorqueByCad; //踩踏踏频滤波力矩 SWORD IdFdb; //D轴反馈电流 SWORD IqFdb; //Q轴反馈电流 UWORD AssistOut; //助力输出值 UBYTE RS[8]; }MC_DebugInfo_Struct_t; /** * @brief 电机故障码 * */ typedef union MC_ERRORCODE { struct { ULONG Protect_OverCurrent : 1; ///>过流保护 ULONG Protect_UnderVoltage : 1; ///>低压保护 ULONG Protect_OverVoltage : 1; ///>过压保护 ULONG Protect_LockRotor : 1; ///>堵转保护 ULONG Protect_OverTemp : 1; ///>过热保护 ULONG Fault_BikeSpdSensor : 1; ///>速度传感器故障 ULONG Fault_TorqueSensor : 1; ///>力矩传感器故障 ULONG Fault_HallSensor : 1; ///>霍尔传感器故障 ULONG Fault_PhaseLine : 1; ///>相线故障 ULONG Fault_PCBNTC : 1; ///>PCB温度传感器故障 ULONG Fault_BMS_Check : 1; ///>BMS校验失败 ULONG Protect_MotorOverTemp : 1; ///>电机过热保护 ULONG Fault_PBU_Check : 1; ///>PBU校验失败 ULONG Fault_MCU : 1; ///>MCU故障 ULONG Fault_CadenceSensor : 1; ///>踏频传感器故障 ULONG Fault_GasSensor : 1; ///>指拨故障 ULONG Fault_MOS : 1; ///>MOS短路 ULONG Protect_VoltageChange : 1; ///>电压波动异常 ULONG Fault_Circuit : 1; ///>电路故障 ULONG Fault_TE_MCU : 1; ///>TE MCU故障 ULONG Fault_TE_Circuit : 1; ///>TE 电路故障 ULONG Fault_MC_Check : 1; ///>MC校验失败 ULONG Fault_SpiPosSensor : 1; ///>SPI位置故障 ULONG Fault_Throttle : 1; ///>转把故障 ULONG RS3 : 1; ULONG RS4 : 1; ULONG RS5 : 1; ULONG RS6 : 1; ULONG RS7 : 1; ULONG RS8 : 1; ULONG RS9 : 1; ULONG RS10 : 1; } ERROR_Bit; ULONG Code; } MC_ErrorCode_Struct_t; /** * @brief 电机故障码 * */ typedef struct MC_ERROR_CNT_RECORD { ULONG ulAlamCntTimeCnt_1ms; UWORD Protect_OverCurrentCnt; ///>过流保护 UWORD Protect_UnderVoltageCnt; ///>低压保护 UWORD Protect_OverVoltageCnt; ///>过压保护 UWORD Protect_LockRotorCnt; ///>堵转保护 UWORD Protect_OverTempCnt; ///>过热保护 UWORD Fault_SpeedSensorCnt; ///>速度传感器故障 UWORD Fault_TorqueSensorCnt; ///>力矩传感器故障 UWORD Fault_HallSensorCnt; ///>霍尔传感器故障 UWORD Fault_PhaseLineCnt; ///>相线故障 UWORD Fault_NtcSensorCnt; ///>温度传感器故障 UWORD Fault_BMS_CheckCnt; ///>BMS校验失败 UWORD Protect_MotorOverTempCnt; ///>电机过热保护 UWORD Fault_PBU_CheckCnt; ///>PBU校验失败 UWORD Fault_MCUCnt; ///>MCU故障 UWORD Fault_CadenceSensorCnt; ///>踏频传感器故障 UWORD Fault_GasSensorCnt; ///>指拨故障 UWORD Fault_MOSCnt; ///>MOS短路 UWORD Protect_VoltageChangeCnt; ///>电压波动异常 UWORD Fault_CircuitCnt; ///>电路故障 UWORD Fault_TE_MCUCnt; ///>TE MCU故障 UWORD Fault_TE_CircuitCnt; ///>TE 电路故障 UWORD Fault_MC_CheckCnt; ///>MC校验失败 } MC_ErrorCode_CNT_RECORD_Struct_t; /** * @brief 在线检测结果,占用空间1byte * */ typedef union ONLINE_STATUS { struct { UBYTE BMS_OffLine : 1; // BMS离线 UBYTE PBU_OffLine : 1; // PBU离线 UBYTE HMI_OffLine : 1; // HMI离线 UBYTE RS1 : 1; UBYTE RS2 : 1; UBYTE RS3 : 1; UBYTE RS4 : 1; UBYTE RS5 : 1; } Status_Bit; UBYTE Status; } OnLine_Status_Struct_t; /** * @brief MC版本信息,占用空间64bytes * */ typedef struct { char Mode[16]; ///>型号 ASCII,0x2E结束,无效填充0x20 char SN_Num[16]; ///>序列号 ASCII,0x2E结束,无效填充0x20 char HW_Version[16]; ///>硬件版本 ASCII,0x2E结束,无效填充0x20 char FW_Version[16]; ///>软件版本 ASCII,0x2E结束,无效填充0x20 char ProductLabel[32]; ///>电机标签 ASCII,0x2E结束,无效填充0x20 } MC_VerInfo_Struct_t; /** * @brief MC骑行历史信息,占用空间16bytes * */ typedef struct { ULONG ODO_Km; ///>ODO里程,地址偏移0 ULONG ODO_Time; ///>ODO时间,地址偏移4 ULONG TRIP_Km; ///>TRIP里程,地址偏移8 ULONG TRIP_Time; ///>TRIP时间,地址偏移12 } MC_RideLog_Struct_t; /** * @brief BMS状态信息,占用空间1byte * */ typedef union BMS_STATUS { struct { UBYTE Charge : 1; ///>充电 UBYTE Discharge : 1; ///>放电 UBYTE RS1 : 1; UBYTE RS2 : 1; UBYTE RS3 : 1; UBYTE RS4 : 1; UBYTE RS5 : 1; UBYTE RS6 : 1; } Status_Bit; UBYTE Status; } BMS_STATUS_Struct_t; /** * @brief 电池运行信息,占用空间16bytes * */ typedef struct { UWORD Voltage; ///>电压 1mV,地址偏移0 UWORD Current; ///>电流 1mA,地址偏移2 UWORD RC; ///>剩余容量 1mAh,地址偏移4 UWORD FCC; ///>满充容量 1mAh,地址偏移6 UBYTE Cell_NTC; ///>电芯温度 +40℃,地址偏移8 UBYTE SOC; ///>剩余电量 1%,地址偏移9 BMS_STATUS_Struct_t Status; ///>运行状态,地址偏移10 UBYTE SOH; ///>电池健康电量,地址偏移11 UWORD RecyclNm; ///>循环次数,地址偏移12 UBYTE RS[2]; } BMS_RunInfo_Struct_t; /** * @brief 助力档位信息 * */ typedef enum { MC_GearSt_OFF = 0x00, MC_GearSt_Torque_ECO = 0x01, MC_GearSt_Torque_NORM = 0x02, MC_GearSt_Torque_SPORT = 0x03, MC_GearSt_Torque_TURBO = 0x04, MC_GearSt_SMART = 0x33, MC_GearSt_WALK = 0x22 } MC_GearSt_Struct_t; /** * @brief 电机控制指令,占用空间2bytes * */ typedef struct { MC_GearSt_Struct_t GearSt; ///>助力档位 MC_LightSwitch_Struct_t LightSwitch; ///>灯开关 0xF0-关,0xF1-开 } MC_ControlCode_Struct_t; /** * @brief 电机运行信息,占用空间32bytes * */ typedef struct { UBYTE Torque; ///>踩踏力矩 1Nm,地址偏移0 MC_CadenceDir_Struct_t CadenceDir; ///>踩踏方向 0-正,1-反,2-停止,地址偏移1 UBYTE Cadence; ///>踏频 1rpm,地址偏移2 UBYTE GearSt; ///>助力档位,地址偏移3 UBYTE T_PCB; ///>PCB温度 +40℃,地址偏移4 UBYTE T_Coil; ///>绕组温度 +40℃,地址偏移5 UWORD BusVoltage; ///>母线电压 1mV,地址偏移6 UWORD BusCurrent; ///>母线电流 1mA,地址偏移8 SWORD MotorSpeed; ///>输出转速 1rpm,地址偏移10 UWORD BikeSpeed; ///>车速 0.1km/h,地址偏移12 SWORD IqCurrent; ///> Iq电流反馈 1mA 地址偏移14 UBYTE AlarmCode; ///> 故障码最多8个故障 地址偏移16 UBYTE RS2; ///> 预留 地址偏移17 } MC_RunInfoToCDL_Struct_t; /** * @brief 小牙盘原协议 * */ typedef struct { UBYTE Assist_K_GAIN; //0.01 50-150 UBYTE StarModel_GAIN; //0.01 50-150 }UserAdjParam1_Struct_t; typedef struct { UBYTE MaxCurrent_K_GAIN; //0.01 50-150 UBYTE MaxTorque_K_GAIN; //0.01 50-150 }UserAdjParam2_Struct_t; //用户配置参数1,占用空间32bytes typedef struct { UBYTE GasCtrlMode_Param; //指拨模式参数,地址偏移0 UBYTE StarModel; //启动模式,地址偏移1 UWORD StopTime; //停机时间 ms,地址偏移2 UBYTE SpeedLimit; //限速 km/h,地址偏移4 UBYTE Deceleration; //下降速度,地址偏移5 UBYTE TeethNum_F; //前齿数 T,地址偏移6 UBYTE TeethNum_B; //后齿数 T,地址偏移7 UBYTE CurrentLimit; //限流 A,地址偏移8 UBYTE TempTH_Alarm; //高温预警值 +40℃,地址偏移9 UBYTE TempTH_Protect; //高温保护值 +40℃,地址偏移10 UBYTE NoPBU_Flag; //0x55-不支持,0x-AA支持,地址偏移11 UBYTE WheelSize; //轮胎周长 cm,地址偏移12 UBYTE SerialNum; //系列号,地址偏移13 UserAdjParam1_Struct_t UserAdjParam1_ECO; //用户微调助力比增益和加速度增益,地址偏移14 UserAdjParam1_Struct_t UserAdjParam1_NORM; //用户微调助力比增益和加速度增益,地址偏移16 UserAdjParam1_Struct_t UserAdjParam1_SPORT; //用户微调助力比增益和加速度增益,地址偏移18 UserAdjParam1_Struct_t UserAdjParam1_TURBO; //用户微调助力比增益和加速度增益,地址偏移20 UserAdjParam1_Struct_t UserAdjParam1_SMART; //用户微调助力比增益和加速度增益,地址偏移22 UBYTE SpeedSensorPoles; //速度传感器极数,地址偏移24 UBYTE CadenceStarNum; //踏频启动信号个数,地址偏移25 UBYTE SpeedSignal; //0x55-车轮触发,0x-AA踏频计算,0xEE-通讯获取车轮旋转周期,地址偏移26 SBYTE WheelSizeAdj; //周长微调值,地址偏移27 UWORD UV_Protect_TH; //低压保护值,地址偏移28 UBYTE WalkMode_SpeedLimit; //推行模式限速,地址偏移30 UBYTE WalkMode_MotorSpeedSet; //推行模式电机转速设置,地址偏移31 }MC_ConfigParam1_Struct_t; //用户配置参数2,占用空间32bytes typedef struct { SWORD ZeroAngle_Pitch; //俯仰角零度偏移,地址偏移0 SWORD ZeroAngle_Roll; //横滚角零度偏移,地址偏移2 UBYTE UseAttitudeAngle_Flag; //支持姿态角度传感器标志,地址偏移4 UBYTE MC_Light_Mode; //前后灯功能,地址偏移5 UBYTE HeadLightVol; //前灯电压 UBYTE TailLightVol; //后灯电压 UWORD u16OverspeedWarnVal; //超速告警值 UWORD u16EffectVal; //尾灯亮起有效值 UWORD u16Prediv; //尾灯亮起时间的分频系数 SBYTE SpeedLimitStartAdj; SBYTE SpeedLimitEndAdj; SBYTE SpeedLimitAdj; //限速微调,默认0,与限速值相同,地址偏移15 UBYTE RS1; //预留,0x00,地址偏移16 UserAdjParam2_Struct_t UserAdjParam2_ECO; //用户微调最大电流增益和最大力矩增益,地址偏移14,地址偏移18 UserAdjParam2_Struct_t UserAdjParam2_NORM; //用户微调最大电流增益和最大力矩增益,地址偏移14,地址偏移20 UserAdjParam2_Struct_t UserAdjParam2_SPORT; //用户微调最大电流增益和最大力矩增益,地址偏移14,地址偏移22 UserAdjParam2_Struct_t UserAdjParam2_TURBO; //用户微调最大电流增益和最大力矩增益,地址偏移14,地址偏移24 UserAdjParam2_Struct_t UserAdjParam2_SMART; //用户微调最大电流增益和最大力矩增益,地址偏移14,地址偏移26 UBYTE RS2[4]; }MC_ConfigParam2_Struct_t; //马达配置参数,占用空间16bytes typedef struct { UWORD Rate_Power; //W,地址偏移0 UWORD Rate_Speed; //rpm,地址偏移2 UWORD Coil_R; //mOhm,地址偏移4 UWORD Coil_Lq; //mH,地址偏移6 UWORD Coil_Ld; //mH,地址偏移8 UWORD Back_EMF; //Peak Voltage, mV@1000rpm,地址偏移10 UBYTE Rate_Voltage; //Rate Voltage, V,地址偏移12 UBYTE Pole; //极对数 UBYTE RS[2]; }MC_MotorParam_Struct_t; //MC运行历史,占用空间48bytes typedef struct { uint32_t PowerOnCnt; //开机次数,地址偏移0 uint32_t RunTime; //运行总时间 min,地址偏移4 uint16_t OC_ProtectCnt; //过流保次数 ,地址偏移8 uint16_t UV_ProtectCnt; //低压保护次数,地址偏移10 uint16_t OV_ProtectCnt; //高压保护次数,地址偏移12 uint16_t LockRotor_ProtectCnt; //堵转保护次数 ,地址偏移14 uint16_t OT_ProtectCnt; //温度保护次数,地址偏移16 uint16_t SPS_FaultCnt; //速度传感器错误次数,地址偏移18 uint16_t TQS_FaultCnt; //力矩传感器错误次数 ,地址偏移20 uint16_t Hall_FaultCnt; //霍尔传感器错误次数 ,地址偏移22 uint16_t PhaseLine_FaultCnt; //马达相线错误次数,地址偏移24 uint16_t NTC_FaultCnt; //NTC错误次数,地址偏移26 uint16_t BMS_Check_FaultCnt; //BMS校验错误次数,地址偏移28 uint16_t HMI_Check_FaultCnt; //HMI校验错误次数,地址偏移30 uint16_t PBU_Check_FaultCnt; //PBU校验错误次数 ,地址偏移32 uint8_t T_PCB_Max; //PCB历史最高温,地址偏移34 uint8_t T_PCB_Min; //PCB历史最低温,地址偏移35 uint32_t ODO_Km; //出厂后ODO里程,地址偏移36 uint8_t T_Coil_Max; //绕组历史最高温,地址偏移40 uint8_t T_Coil_Min; //绕组历史最低温,地址偏移41 uint8_t T_MCU_Max; //MCU历史最高温,地址偏移42 uint8_t T_MCU_Min; //MCU历史最低温,地址偏移43 uint32_t ODO_Time; //出厂后ODO时间,地址偏移44 }MC_RunLog1_Struct_t; //MC运行历史,占用空间24bytes typedef struct { uint16_t MCU_FaultCnt; uint16_t CadenceSensor_FaultCnt; uint16_t GasSensor_FaultCnt; uint16_t MOS_ShortCircuit_FaultCnt; uint16_t VoltageChangeOrOverSpeed_FaultCnt; uint16_t Circuit_FaultCnt; uint16_t TE_MCU_FaultCnt; uint16_t TE_Circuit_FaultCnt; }MC_RunLog2_Struct_t; /*************************************** * * Host computer Type Definations * ***************************************/ typedef struct { UWORD uwSaveFlg; UWORD uwPolePairs; UWORD uwRsmOhm; UWORD uwLduH; UWORD uwLquH; UWORD uwFluxmWb; UWORD uwIdMaxA; UWORD uwIdMinA; UWORD uwRSpdRpm; UWORD uwRPwrWt; UWORD uwRCurA; UWORD uwRVolV; UWORD uwJD; UWORD uwTorMaxNm; UWORD reserve1; UWORD reserve2; UWORD reserve3; UWORD reserve4; UWORD reserve5; UWORD reserve6; UWORD reserve7; UWORD reserve8; } UPC_MotorInfo_Struct_t; typedef struct { UWORD uwSaveFlg; UWORD uwWheelPerimeter; //轮胎周长 cm UWORD uwMechRationMotor; //传动比 0.001 UWORD uwThrottleMaxSpdKmH; //限速 1km/h UWORD uwCartSpdKmH; //推行模式限速 1km/h UWORD uwNmFrontChainring; //前牙盘 T UWORD uwNmBackChainring; //后牙盘 T UWORD uwAssistSelect1; //助力方案1 UWORD uwAssistSelect2; //助力方案2 UWORD uwLightConfig; //灯压配置 6/12V SWORD swWheelSizeAdjust; //周长微调 ±10cm UWORD uwStartMode; //启动模式 1-柔和,2-正常,3-强劲 UWORD uwAutoPowerOffTime; //自动关机时间 1min,0-不自动关机 UWORD reserve1; } UPC_BikeInfo_Struct_t; typedef struct { UWORD uwSaveFlg; UWORD uwSPIPosOffsetOrigin; UWORD uwSPIPosOffsetNow; UWORD uwIPeakMaxA; UWORD uwAlamOCurA; UWORD uwAlamOVolV; UWORD uwAlamUVolV; UWORD uwAlamOverSpdRpm; UWORD uwAlamOverHeatCe; UWORD uwAlamRecHeatCe; UWORD uwPwrLimitStartCe; UWORD uwAlamMotorOverHeatCe; UWORD uwAlamMotorRecHeatCe; UWORD uwPwrLimitMotorStartCe; UWORD uwControlFunEN; UWORD reserve1; UWORD reserve2; } UPC_MControlInfo_Struct_t; typedef struct { UWORD uwSaveFlg; UWORD uwTorSensorOffsetOrigin; UWORD uwTorSensorOffsetNow1; UWORD uwTorSensorOffsetNow2; UWORD uwTorSensorOffsetNow3; UWORD uwTorSensorOffsetNow4; UWORD uwBikeTorMaxNm; UWORD uwBikeTor1StepRealNm; UWORD uwBikeTor1StepADC; UWORD uwBikeTor2StepRealNm; UWORD uwBikeTor2StepADC; UWORD uwBikeTor3StepRealNm; UWORD uwBikeTor3StepADC; UWORD uwBikeTor4StepRealNm; UWORD uwBikeTor4StepADC; UWORD uwTorque_SensorPulseNm;//uwCadSensorPulseNm; UWORD uwBikeSpdSensorPulseNm; UWORD uwCad_SensorPulseNm; UWORD reserve2; UWORD reserve3; UWORD reserve4; } UPC_SensorInfo_Struct_t; typedef struct { UWORD uwTorqueCurveNum; UWORD uwCadenceCurveNum; } UPC_CurveOrderInfo_Struct_t; typedef struct { UWORD uwSaveFlg; UWORD reserve0; UWORD swStartupGain; UWORD swStartcruiseGain; UPC_CurveOrderInfo_Struct_t stCurveOrderInfo; SLONG slTorquePolyA; SLONG slTorquePolyB; SLONG slTorquePolyC; SLONG slTorquePolyD; SLONG slCadencePolyA; SLONG slCadencePolyB; SLONG slCadencePolyC; SLONG slCadencePolyD; UWORD uwAssistStartNm; UWORD uwAssistStopNm; UWORD uwStartUpGainStep; UWORD uwStartUpCadNm; UWORD uwTorLPFCadNm; UWORD uwSpeedAssistSpdRpm; UWORD uwSpeedAssistIMaxA; UWORD uwAssistLimitBikeSpdStart; UWORD uwAssistLimitBikeSpdStop; UWORD uwCadenceAssistWeight; UWORD uwCadAssPidKp; //踏频助力控制比例系数 SWORD swCadAssPidLimMax; //踏频助力加速限制 SWORD swCadAssPidVolDec; //踏频助力退保和步进量 SWORD swCadAssTargetAssCurAcc; //踏频助力电流步进量 UWORD uwMaxCadRpm; UWORD reserve2; UWORD reserve3; UWORD reserve4; } UPC_AssistInfo_Struct_t; typedef struct { UWORD uwSaveFlg; UWORD uwOpenTimes; UWORD uwUsedTimeH; UWORD uwUsedTimeL; SWORD swNTCTempMaxCe; SWORD swNTCTempMinCe; UWORD uwAlamHOcurTimes; UWORD uwAlamSOcurTimes; UWORD uwAlamOHeatTimes; UWORD uwAlamRotorLockTimes; UWORD uwAlamPhsLossTimes; UWORD uwAlamOVolTimes; UWORD uwAlamUVolTimes; UWORD uwAlamComOTimeTimes; UWORD uwG1AvgPwrConsumption; UWORD uwG2AvgPwrConsumption; UWORD uwG3AvgPwrConsumption; UWORD uwG4AvgPwrConsumption; UWORD uwG5AvgPwrConsumption; UWORD uwODOTripH; UWORD uwODOTripL; UWORD uwODOTimeH; UWORD uwODOTimeL; UWORD uwTripSumH; UWORD uwTripSumL; UWORD uwTripSumTimeH; UWORD uwTripSumTimeL; UWORD uwTorSensorAlamTimes; UWORD uwCadSensorAlamTimes; UWORD uwBikeSpdSensorAlamTimes; UWORD uwPosSensorAlamTimes; UWORD uwRealODOTripH;//不可清除 UWORD uwRealODOTripL; UWORD uwRealODOTimeH; UWORD uwRealODOTimeL; UWORD reserve1; UWORD reserve2; UWORD reserve3; UWORD reserve4; } UPC_HistoryInfo_Struct_t; typedef struct { UWORD uwSaveFlg; UWORD Coeff1; UWORD Coeff2; UWORD Coeff3; SWORD Coeff4; SWORD Coeff5; UWORD reserve1; UWORD reserve2; UWORD reserve3; } UPC_ResistanceCalib_Struct_t; typedef struct { UWORD uwSaveFlg; UBYTE ucAssistRatioGain1; //1% UBYTE ucAssistAccelerationGain1; //1% UBYTE ucAssistRatioGain2; //1% UBYTE ucAssistAccelerationGain2; //1% UBYTE ucAssistRatioGain3; //1% UBYTE ucAssistAccelerationGain3; //1% UBYTE ucAssistRatioGain4; //1% UBYTE ucAssistAccelerationGain4; //1% UBYTE ucAssistRatioGain5; //1% UBYTE ucAssistAccelerationGain5; //1% UBYTE ucMaxCurrentGain1; //1% UBYTE ucMaxTorqueGain1; //1% UBYTE ucMaxCurrentGain2; //1% UBYTE ucMaxTorqueGain2; //1% UBYTE ucMaxCurrentGain3; //1% UBYTE ucMaxTorqueGain3; //1% UBYTE ucMaxCurrentGain4; //1% UBYTE ucMaxTorqueGain4; //1% UBYTE ucMaxCurrentGain5; //1% UBYTE ucMaxTorqueGain5; //1% UBYTE reserve1; UBYTE reserve2; UBYTE reserve3; UBYTE reserve4; UBYTE reserve5; UBYTE reserve6; UBYTE reserve7; UBYTE reserve8; UBYTE reserve9; UBYTE reserve10; UBYTE reserve11; UBYTE reserve12; } UPC_RideParaInfo_Struct_t; typedef struct { UWORD uwSaveFlg; UWORD uwNoneOBCEnable; UWORD uwRearLightCycle; UWORD uwRearLightDuty; SWORD swDeltaBikeSpeedLimit; UWORD reserve1; UWORD reserve2; UWORD reserve3; UWORD reserve4; UWORD reserve5; UWORD reserve6; UWORD reserve7; UWORD reserve8; UWORD reserve9; UWORD reserve10; UWORD reserve11; UWORD reserve12; } UPC_BikeInfo2_Struct_t; typedef struct { UWORD uwSaveFlg; UWORD MOSResA; UWORD MOSResB; UWORD MOSResC; UWORD Coeff1; UWORD Coeff2; UWORD Coeff3; SWORD Coeff4; SWORD Coeff5; UWORD reserve1; UWORD reserve2; UWORD reserve3; UWORD reserve4; UWORD reserve5; UWORD reserve6; UWORD reserve7; UWORD reserve8; } UPC_WriteResistanceCalib_Struct_t; typedef struct { UPC_MotorInfo_Struct_t stMotorInfo; UPC_BikeInfo_Struct_t stBikeInfo; UPC_MControlInfo_Struct_t stMContorlInfo; UPC_SensorInfo_Struct_t stSensorInfo; UPC_CurveOrderInfo_Struct_t stCurveOrderInfo; UPC_AssistInfo_Struct_t stAssistInfo; UPC_HistoryInfo_Struct_t stHistoryInfo; UPC_TestParaInfo_Struct_t stTestParaInfo; UPC_RideParaInfo_Struct_t stRideParaInfo; UPC_BikeInfo2_Struct_t stBikeInfo2; UPC_ResistanceCalib_Struct_t stResistanceCalibInfo; UPC_WriteResistanceCalib_Struct_t stWriteResistanceCalibInfo; } MC_UpperPCInfo_Struct_t; typedef struct { UBYTE uwWheelPerimeter; ///>车轮默认长度 1cm UBYTE StartUpMod; ///>1-柔和,2-正常,3-强劲,地址偏移1 UBYTE BikeSpeedLimit; /// km/h SBYTE DeltDiameter; ///>有符型,单位1cm,±10.0cm 1Nm,地址偏移0 UBYTE AssistMod; ///>助力模式1-2,地址偏移2 UBYTE AutoPowerOffTime; UBYTE scDeltaBikeSpeedLimit; UBYTE ubControlFunCruise;//0xaa-巡航 } OBC_SetCustomPara_Struct_t; //仪表按键状态 typedef union OBC_BUTTON_STATU { struct { UBYTE Set : 1; UBYTE Light : 1; UBYTE Walk : 1; UBYTE Dec : 1; UBYTE Acc : 1; UBYTE Power : 1; UBYTE RS1 : 1; UBYTE RS2 : 1; } Status_Bit; UBYTE KeyStatus; } OBC_ButtonStatu_Struct_t; typedef struct { UBYTE Reserver; OBC_ButtonStatu_Struct_t ButtonStatu; ULONG ulButtonSetTimeCnt; BOOL blOBCbuttonPress; } OBC_ButtonStatus_Struct_t; typedef struct { SWORD swIdcPu; UWORD uwInterResistpu; UWORD uwVdcCompPu; } BMS_VoltEstimat_Struct_t; typedef struct { SWORD swMaxpower; SWORD swPowerFdb; SWORD PowerPoit; }POWER_STRUCT; typedef struct { UBYTE ubControlFunCruise; UBYTE ubControlSta; }CONTORLFUN_STRUCT; typedef struct { ULONG ulErrAStart_Address; ULONG ulErrEnd_Address; } MC_Error_Address_Struct; /**************************************** * * Exported variable * ****************************************/ extern MC_RunInfo_Struct_t MC_RunInfo; extern MC_DebugInfo_Struct_t MC_DebugInfo; extern MC_ErrorCode_Struct_t MC_ErrorCode; extern MC_ErrorCode_CNT_RECORD_Struct_t MC_ErrorCntRecord; extern MC_VerInfo_Struct_t MC_VerInfo; extern char Firmware_Special[32];//软件版本标识,包含客户定制化信息 extern MC_MacInfo_Struct_t MC_MacInfo; extern MC_RideLog_Struct_t MC_RideLog; extern BMS_RunInfo_Struct_t BMS_RunInfo; extern MC_ControlCode_Struct_t MC_ControlCode; extern MC_RunInfoToCDL_Struct_t MC_RunInfoToCDL; extern MC_RS_ASCII_Struct_t MC_RsASSCII; extern MC_UpperPCInfo_Struct_t MC_UpcInfo; extern BMS_VoltEstimat_Struct_t BMS_VoltEstimat; extern MC_Error_Address_Struct ManageError_Address; extern CONTORLFUN_STRUCT OBC_ControlFUN; extern OBC_SetCustomPara_Struct_t OBC_SetCustomPara; extern OBC_ButtonStatus_Struct_t OBC_ButtonStatus; extern ULONG ulOBC_ComTimeOutCount; extern ULONG ulBMS_ComTimeOutCount; extern UBYTE MC_MotorSPD_rpm_Percent; extern UBYTE MC_WorkMode; extern BOOL blBMSCommFault; extern UWORD LightSwitch; extern ULONG ODO_T, TRIP_T; extern BOOL blFlashSaveflg; /************************************************************************ Ram Allocation *************************************************************************/ /*************************************** * * Function Definations * ***************************************/ /** * @brief MC_UpcInfo上电初始化 * */ void Can_voUpdateMC_UpcInfo(void); /** * @brief MC运行状态初始化 * */ void Can_voInitMC_Run(void); /** * @brief 1ms中的MC运行状态更新 * */ void Can_voMC_Run_1ms(void); /** * @brief 5ms中的MC运行状态更新 * */ void Can_voMC_Run_5ms(void); /** * @brief 200ms中的MCMC运行状态更新 * */ void Can_voMC_Run_200ms(void); /** * @brief 接收挡位指令 * */ void Can_GearSt_switch(void); /** * @brief 接收开关灯指令 * */ void Can_Light_switch(void); /** * @brief 里程计算 * */ void Can_Trip_Cal(void); /** * @brief 根据电池反馈计算续航里程 * */ void Can_RemainTrip_Cal(void); /** * @brief 根据电压估算电量 * */ UWORD Can_SOC_Cal(void); /** * @brief 根据协议显示助力曲线 * */ void Can_AssistCoef_Read(UPC_CurveOrderInfo_Struct_t *order); /** * @brief 根据协议写入助力曲线 * */ void Can_AssistCoef_Write(UPC_CurveOrderInfo_Struct_t *order); /** * @brief 历史最高最低温度计算 * */ void Can_MaxMinTempHistory(void); /** * @brief 更新error_log * */ void ErrorLog_Updata(void); #endif