123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389 |
- #ifndef __VAR_H
- #define __VAR_H
- #include "stm32f1xx_hal.h"
- #include "cadence_sensor.h"
- #include "stdlib.h"
- #include "string.h"
- /******************************类型定义Begin*************************/
- typedef enum
- {
- MC_LightSwitch_OFF = 0xF0,
- MC_LightSwitch_ON = 0xF1
- }MC_LightSwitch_Struct_t;
- //电机运行信息,占用空间32bytes
- typedef struct
- {
- uint16_t BikeSpeed; //车速 0.1km/h,地址偏移0
- int16_t MotorSpeed; //输出转速 1rpm,地址偏移2
- uint16_t Power; //电功率 1W,地址偏移4
- uint16_t BusVoltage; //母线电压 1mV,地址偏移6
- uint16_t BusCurrent; //母线电流 1mA,地址偏移8
- uint8_t Cadence; //踏频 1rpm,地址偏移10
- uint8_t Torque; //踩踏力矩 1Nm,地址偏移11
- MC_CadenceDir_Struct_t CadenceDir; //踩踏方向 0-正,1-反,2-停止,地址偏移12
- uint8_t GearSt; //助力档位,地址偏移13
- MC_LightSwitch_Struct_t LightSwitch; //灯开关 0xF0-关,0xF1-开,地址偏移14
- uint8_t SOC; //剩余电量 1%,地址偏移15
- uint16_t RemainDistance; //续航里程 1km,地址偏移16
- uint16_t ODO_Km; //总里程 1km,地址偏移18
- uint8_t PowerPerKm; //平均功耗 0.01Ah/km ,地址偏移20
- uint8_t T_PCB; //PCB温度 +40℃,地址偏移21
- uint8_t T_Roil; //绕组温度 +40℃,地址偏移22
- uint8_t T_MCU; //MCU温度 +40℃,地址偏移23
- uint8_t RS[8]; //预留 8bytes
- }MC_RunInfo_Struct_t;
- //电机故障码,占用空间4bytes
- typedef union MC_ERRORCODE
- {
- struct
- {
- uint32_t Protect_OverCurrent :1;//过流保护
- uint32_t Protect_UnderVoltage :1;//低压保护
- uint32_t Protect_OverVoltage :1;//过压保护
- uint32_t Protect_LockRotor :1;//堵转保护
- uint32_t Protect_OverTemp :1;//过热保护
- uint32_t Fault_SpeedSensor :1;//速度传感器故障
- uint32_t Fault_TorqueSensor :1;//力矩传感器故障
- uint32_t Fault_HallSensor :1;//霍尔传感器故障
- uint32_t Fault_PhaseLine :1;//相线故障
- uint32_t Fault_NtcSensor :1;//温度传感器故障
- uint32_t Fault_BMS_Check :1;//BMS校验失败
- uint32_t Fault_HMI_Check :1;//HMI校验失败
- uint32_t Fault_PBU_Check :1;//PBU校验失败
- uint32_t Fault_MCU :1;//MCU故障
- uint32_t Fault_CadenceSensor :1;//踏频传感器故障
- uint32_t Fault_GasSensor :1;//指拨故障
- uint32_t Fault_MOS :1;//MOS短路
- uint32_t Protect_VoltageChange :1;//电压波动异常
- uint32_t Fault_Circuit :1;//电路故障
- uint32_t RS1 :1;
- uint32_t RS2 :1;
- uint32_t RS3 :1;
- uint32_t RS4 :1;
- uint32_t RS5 :1;
- uint32_t RS6 :1;
- uint32_t RS7 :1;
- uint32_t RS8 :1;
- uint32_t RS9 :1;
- uint32_t RS10 :1;
- uint32_t RS11 :1;
- uint32_t RS12 :1;
- uint32_t RS13 :1;
- }ERROR_Bit;
- uint32_t Code;
- }MC_ErrorCode_Struct_t;
- //在线检测结果,占用空间1byte
- typedef union ONLINE_STATUS
- {
- struct
- {
- uint8_t BMS_OffLine :1;//BMS离线
- uint8_t PBU_OffLine :1;//PBU离线
- uint8_t HMI_OffLine :1;//HMI离线
- uint8_t RS1 :1;
- uint8_t RS2 :1;
- uint8_t RS3 :1;
- uint8_t RS4 :1;
- uint8_t RS5 :1;
- }Status_Bit;
- uint8_t Status;
- }OnLine_Status_Struct_t;
- //授权校验,占用空间24bytes
- typedef struct
- {
- uint32_t MAC_ID[3]; //物理ID
- uint8_t CheckCode[12]; //校验码
- }Device_CheckInfo_Struct_t;
- //BMS设计信息,占用空间16bytes
- typedef struct
- {
- uint16_t Capacity; //电池设计容量,地址偏移0
- uint8_t Voltage; //电池设计电压,地址偏移2
- uint8_t CellMode[8]; //电芯型号,地址偏移3
- uint8_t RS[5];
- }BMS_DesignInfo_Struct_t;
- typedef enum STARMODE
- {
- NC = 0U,
- MC_StarMode_SOFT,
- MC_StarMode_NORM,
- MC_StarMode_DYNAMIC,
- }MC_StarMode_Struct_t;
- typedef struct
- {
- uint8_t Assist_K_GAIN; //0.01 50-150
- uint8_t StarModel_GAIN; //0.01 50-150
- }UserAdjParam_Struct_t;
- typedef enum MC_SUPPORTFLAG
- {
- MC_SUPPORT_ENABLE = (uint8_t)0xAA, //不支持
- MC_SUPPORT_DISABLE = (uint8_t)0x55 //支持
- }MC_SupportFlag_Struct_t;
- //用户配置参数,占用空间32bytes
- typedef struct
- {
- uint8_t RS1; //预留,地址偏移0
- MC_StarMode_Struct_t StarModel; //启动模式,地址偏移1
- uint16_t StopTime; //停机时间 ms,地址偏移2
- uint8_t SpeedLimit; //限速 km/h,地址偏移4
- uint8_t Deceleration; //下降速度,地址偏移5
- uint8_t TeethNum_F; //前齿数 T,地址偏移6
- uint8_t TeethNum_B; //后齿数 T,地址偏移7
- uint8_t CurrentLimit; //限流 A,地址偏移8
- uint8_t TempTH_Alarm; //高温预警值 +40℃,地址偏移9
- uint8_t TempTH_Protect; //高温保护值 +40℃,地址偏移10
- MC_SupportFlag_Struct_t NoPBU_Flag; //0x55-不支持,0x-AA支持,地址偏移11
- uint8_t WheelSize; //轮胎周长 cm,地址偏移12
- uint8_t SerialNum; //系列号,地址偏移13
- UserAdjParam_Struct_t UserAdjParam_ECO; //用户微调助力比增益和加速度增益,地址偏移14
- UserAdjParam_Struct_t UserAdjParam_NORM; //用户微调助力比增益和加速度增益,地址偏移16
- UserAdjParam_Struct_t UserAdjParam_SPORT; //用户微调助力比增益和加速度增益,地址偏移18
- UserAdjParam_Struct_t UserAdjParam_TURBO; //用户微调助力比增益和加速度增益,地址偏移20
- UserAdjParam_Struct_t UserAdjParam_SMART; //用户微调助力比增益和加速度增益,地址偏移22
- uint8_t RS2[8];//地址偏移24
- }MC_ConfigParam_Struct_t;
- //力矩传感器校正信息
- typedef struct
- {
- uint16_t StarData;//启动值,地址偏移0
- uint8_t K; //校正系数,地址偏移2
- uint8_t Rs; //预留1byte,地址偏移3
- }MC_TorqueCorrectParam_Struct_t;
- //马达配置参数,占用空间16bytes
- typedef struct
- {
- uint16_t Rate_Power; //W,地址偏移0
- uint16_t Rate_Speed; //rpm,地址偏移2
- uint16_t Coil_R; //mohm,地址偏移4
- uint16_t Coil_Lq; //mH,地址偏移6
- uint16_t Coil_Ld; //mH,地址偏移8
- uint16_t Back_EMF; //mV,地址偏移10
- uint8_t Rate_Voltage; //V,地址偏移12
- uint8_t RS[3];
- }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; //运行总里程,地址偏移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
- uint8_t RS[4];
- }MC_RunLog_Struct_t;
- //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
- }MC_VerInfo_Struct_t;
- //MC生产信息,占用空间32bytes
- typedef struct
- {
- char Manufacturer[8]; //生产厂商 ASCII,0x2E结束,无效填充0x20
- char MacAddr[8]; //生产地 ASCII,0x2E结束,无效填充0x20
- char MacDate[8]; //生产日期 ASCII,0x2E结束,无效填充0x20
- char RS[8];
- }MC_MacInfo_Struct_t;
- //电池运行状态,占用空间1bytes
- typedef union BMS_STATUS
- {
- struct
- {
- uint8_t Charge :1;//充电
- uint8_t Discharge :1;//放电
- uint8_t RS1 :1;
- uint8_t RS2 :1;
- uint8_t RS3 :1;
- uint8_t RS4 :1;
- uint8_t RS5 :1;
- uint8_t RS6 :1;
- }Status_Bit;
- uint8_t Status;
- }BMS_STATUS_Struct_t;
- //电池运行信息,占用空间16bytes
- typedef struct
- {
- uint16_t Voltage; //电压 1mV,地址偏移0
- uint16_t Current; //电流 1mA,地址偏移2
- uint16_t RC; //剩余容量 1mAh,地址偏移4
- uint16_t FCC; //满充容量 1mAh,地址偏移6
- uint8_t Cell_NTC; //电芯温度 +40℃,地址偏移8
- uint8_t SOC; //剩余电量 1%,地址偏移9
- BMS_STATUS_Struct_t Status; //运行状态,地址偏移10
- uint8_t RS[5];
- }BMS_RunInfo_Struct_t;
- //PBU配置的参数,占用空间8bytes
- typedef struct
- {
- uint8_t GearsNum; //助力档位数量
- MC_SupportFlag_Struct_t NoHMI_Flag; //支持无HMI标识,0x55-不支持,0x-AA支持
- uint8_t RS[6];
- }PBU_ConfigParam_Struct_t;
- typedef union TE_ERROR_CODE
- {
- struct
- {
- uint16_t BikeSpeed :1;//速度传感器
- uint16_t TorqueSensor :1;//力矩传感器
- uint16_t Current :1;//母线电流
- uint16_t T_Roil :1;//绕组温度
- uint16_t HallSensor_A :1;//霍尔传感器A
- uint16_t HallSensor_B :1;//霍尔传感器A
- uint16_t CadenseSensor_1 :1;//踏频传感器1
- uint16_t CadenseSensor_2 :1;//踏频传感器2
- uint16_t StopBreak :1;//刹车信号
- uint16_t VCC :1;//3.3V异常
- uint16_t ClockFreq :1;//系统时钟
- uint16_t RS1 :1;
- uint16_t RS2 :1;
- uint16_t RS3 :1;
- uint16_t RS4 :1;
- uint16_t RS5 :1;
- }Status_Bit;
- uint16_t Code;
- }TE_ErrorCode_Struct_t;
- //TE传回传感器状态
- typedef struct
- {
- TE_ErrorCode_Struct_t TE_ErrorCode;
- uint16_t MCU_Voltage;
- }MC_TE_SensorStatus_Struct_t;
- //发给TE传感器结果
- typedef struct
- {
- uint16_t AD_Torque; //力矩传感器AD值,地址偏移0
- uint16_t AD_BusCurrent; //母线电流AD值,地址偏移2
- uint16_t AD_RoilTemp; //绕组温度AD值,地址偏移4
- uint16_t AD_TE_Voltage; //TE电压AD值,地址偏移6
- uint16_t CadenceHall_1_Cnt; //踏频霍尔1计数,地址偏移8
- uint16_t CadenceHall_2_Cnt; //踏频霍尔2计数,地址偏移10
- uint16_t MotorHall_A_Cnt; //马达霍尔1计数,地址偏移12
- uint16_t MotorHall_B_Cnt; //马达霍尔2计数,地址偏移14
- uint8_t BreakTrgiCnt; //刹车计数,地址偏移16
- uint8_t SpeedSensorTrigCnt; //速度传感器计数,地址偏移17
- uint16_t SynC_Clock_Freq; //地址偏移18
- }MC_TE_SensorData_Struct_t;
- //助力计算参数
- typedef struct
- {
- uint16_t Gain_K; //助力比系数,放大100倍,偏移地址 0
- uint16_t i_Sport_TH; //i-Sport档位力矩阈值,偏移地址 2
- uint16_t Lower_Iq; //助力输出下限值,偏移地址 4
- uint16_t Upper_Iq; //助力输出上限值,偏移地址 6
- uint8_t AccCnt; //力矩控制ref加速斜率, 偏移地址 8
- uint8_t DecCnt; //力矩控制ref减速斜率, 偏移地址 9
- uint16_t CurrentMax_K; //最大电流 / 限流值百分比, 偏移地址 10
- }nGearParam_Struct_t; //n档位控制参数结构体定义
- typedef struct
- {
- nGearParam_Struct_t Gear_ECO; //ECO档控制参数,偏移地址 0
- nGearParam_Struct_t Gear_NORM; //NORM档控制参数,偏移地址 12
- nGearParam_Struct_t Gear_SPORT; //SPORT档控制参数,偏移地址 24
- nGearParam_Struct_t Gear_TURBO; //TURBO档控制参数,偏移地址 36
- nGearParam_Struct_t Gear_SMART; //SMART档控制参数,偏移地址 48
- }MC_AssistParam_Struct_t;
- /******************************类型定义End***************************/
- /**************************全局变量声明Begin*************************/
- extern MC_RunInfo_Struct_t MC_RunInfo;
- extern MC_ErrorCode_Struct_t MC_ErrorCode;
- extern MC_VerInfo_Struct_t MC_VerInfo;
- extern OnLine_Status_Struct_t DeviceOnLine_Status;
- extern BMS_RunInfo_Struct_t BMS_RunInfo;
- extern Device_CheckInfo_Struct_t BMS_CheckInfo;
- extern BMS_DesignInfo_Struct_t BMS_DesignInfo;
- extern Device_CheckInfo_Struct_t PBU_CheckInfo;
- extern PBU_ConfigParam_Struct_t PBU_ConfigParam;
- extern Device_CheckInfo_Struct_t HMI_CheckInfo;
- extern MC_ConfigParam_Struct_t MC_ConfigParam;
- extern MC_TorqueCorrectParam_Struct_t MC_TorqueCorrectParam;
- extern MC_MotorParam_Struct_t MC_MotorParam;
- extern MC_RunLog_Struct_t MC_RunLog;
- extern uint8_t Secret_Key[8];
- extern MC_MacInfo_Struct_t MC_MacInfo;
- extern uint8_t UserString1[16];
- extern uint8_t UserString2[16];
- extern uint8_t UserString3[16];
- extern Device_CheckInfo_Struct_t MC_CheckInfo;
- extern MC_TE_SensorStatus_Struct_t MC_TE_SensorStatus;
- extern MC_TE_SensorData_Struct_t MC_TE_SensorData;
- extern MC_AssistParam_Struct_t MC_AssisParam;
- extern uint8_t MC_WalkMode_Persent;
- #if INSERT_FAULT_TEST_FLAG
- extern uint8_t InsertFault_Flag;
- /*
- 插入故障定义:
- 0:无故障插入
- 1:力矩传感器为0
- 2:力矩传感器为4095
- 3:力矩传感器为固定值1500
- 4:踏频霍尔1开路
- 5:踏频霍尔1短路
- ...
- */
- #define INSERT_FAULT_NC 0
- #define INSERT_FAULT_TORQUESENSOR_0 1
- #define INSERT_FAULT_TORQUESENSOR_4095 2
- #define INSERT_FAULT_TORQUESENSOR_1500 3
- #define INSERT_FAULT_CADENCE_HALL1_OC 4
- #define INSERT_FAULT_CADENCE_HALL1_SC 5
- #endif
- /**************************全局变量声明End***************************/
- /**************************全局函数声明Begin*************************/
- extern void Var_Init(void);
- extern void UpdateGearParam(uint8_t SerialNum);
- /**************************全局函数声明End***************************/
- #endif
|