123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951 |
- /**
- * @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
|