123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184 |
- #ifndef SOFT_POWERAMP_H
- #define SOFT_POWERAMP_H
- #include "stdint.h"
- #include "stdbool.h"
- #include "common.h"
- ///////////////////
- #define POWERAMP_CRC8_KEY (0x2A)
- /*
- Number Item Data Index Remark
- 1 电池总电压 Data[0-1] unsigned int, 16bits, mV,Range: 0 – 60000mV
- 2 充放电电流 Data[2-3] signed int, 16bits, 10mA
- Range: – 300000 to 80000mA
- Positive for charging
- Negative for discharging.
- 3 Max allowable charging current
- Data[4-5] signed int, 16bits, 10mA
- Range: – 300000 to 80000mA
- Positive for charging
- Negative for discharging.
- Remark:
- If communicating with UAV, this value
- will be 0.
- 4 最大电芯温度 Data[6-7] signed int, 16bits, 0.1 Degree C, range: -40 to 125 degree C
- 5 最小电芯温度 Data[8-9] signed int, 16bits, 0.1 Degree C, range: -40 to 125 degree C
- 6 相对充电状态 Data[10-11] unsigned int, 16bits, 0.1% 0 to 1000 (0 to 1000‰)
- 7 绝对充电状态 Data[12-13] unsigned int, 16bits, 0.1% 0 to 1000 (0 to 1000‰)
- 8 剩余容量 Data[14-15] unsigned int, 16bits, mAH 0 mA to 20000 mAH
- 9 最大电芯压差 Data[16-17] unsigned int, 16bits, mV, 0mV to 1000mV
- 10 Cell 1 电压 Data[18-19] unsigned int, 16bits, mV 0 to 4500mV
- 11 Cell 2 电压 Data[20-21] unsigned int, 16bits, mV 0 to 4500mV
- 12 Cell 3 电压 Data[22-23] unsigned int, 16bits, mV 0 to 4500mV
- 13 Cell 4 电压 Data[24-25] unsigned int, 16bits, mV 0 to 4500mV
- 14 Cell 5 电压 Data[26-27] unsigned int, 16bits, mV 0 to 4500mV
- 15 Cell 6 电压 Data[28-29] unsigned int, 16bits, mV 0 to 4500mV
- 16 Cell 7 电压 Data[30-31] unsigned int, 16bits, mV 0 to 4500mV
- 17 Cell 8 电压 Data[32-33] unsigned int, 16bits, mV 0 to 4500mV
- 18 Cell 9 电压 Data[34-35] unsigned int, 16bits, mV 0 to 4500mV
- 19 Cell 10 电压 Data[36-37] unsigned int, 16bits, mV 0 to 4500mV
- 20 Cell 11 电压 Data[38-39] unsigned int, 16bits, mV 0 to 4500mV
- 21 Cell 12 电压 Data[40-41] unsigned int, 16bits, mV 0 to 4500mV
- 22 Cell 13 电压 Data[42-43] unsigned int, 16bits, mV 0 to 4500mV
- 23 Warning level Data[44-45] Unsigned char, 8 bits,
- Value:
- 0: no warning
- 1: level 1 warning, UAV shall return
- 2: level 2 warning, UAV shall land
- 24 系统状态 Data[46-47] unsigned int, 16 bits
- Permanent Fault Alarm:
- Bit0: 1:电芯压差大, 0: 正常
- Bit1: 1:循环寿命结束, 0: 正常
- Bit2: 1:电芯温度高, 0: 正常
- Bit3: 1:其他失效, 0: 正常
- Cell Fault Alarm:
- Bit4: 1: 电芯压差较大, 0: 正常
- Discharging Alarm:
- Bit5: 1:电池放电过温, 0: 正常
- Bit6: 1:电池放电低温, 0: 正常
- Bit7, Bit8: 放电低压告警
- value: 0: 正常
- value: 1: level 1, 电芯电压 3.4V 或
- SOC 30%, See Spec for details.
- value: 2: level 2, 电芯电压 3.0V 或
- SOC 20%, See Spec for details.
- value: 3: level 3, 电芯电压 2.8V 或
- SOC 10%, See Spec for details.
- Bit9: 1:放电过流, 0: 正常
- Charging Alarm:
- Bit10: 1:充电过温, 0: 正常
- Bit11: 1:充电低温, 0: 正常
- Bit12: 1:充电过压, 0: 正常
- Bit13: 1:充电过流, 0: 正常
- Bit14: 1:充电满, 0: 正常
- Remark:
- For charger: when BMS encounters
- the Charging Alarm or Cell fault
- alarm, BMS will turn off the charging
- MOSFET to stop charging.For UAV: when BMS encounters the
- Discharging Alarm or Cell fault alarm
- (UAV not in operation), BMS will turn
- off the discharging MOSFET.
- */
- #pragma pack(1)
- typedef struct
- {
- short amp_data[24]; //
- }_POWERAMP_INF;
- #pragma pack()
- extern _POWERAMP_INF poweramp_inf;
- /*
- Number Item Data Index Remark
- 1 软件版本号 Data[0-1] unsigned char, 2 bytes.
- Data[0]: major version
- Data[1]: minor version
- e.g.: v02.60, Data [0]=2, Data[1]=60
- 2 硬件版本号 Data[2-3] unsigned char, 2 bytes.
- Data[0]: major version
- Data[1]: minor version
- e.g.: v02.60, Data [0]=2, Data[1]=60
- 3 通信协议版本号 Data[4-5] unsigned char, 2 bytes.
- Data[0]: major version
- Data[1]: minor version
- e.g.: v02.60, Data [0]=2, Data[1]=60
- */
- #pragma pack(1)
- typedef struct
- {
- unsigned char amp_ver[6]; //
- }_POWERAMP_VER;
- #pragma pack()
- extern _POWERAMP_VER poweramp_ver;
- /*
- Number Item Data Index Remark
- 1 BMS 设计容量 Data[0-1] unsigned int, 16bits, 0.1AH Max value 6553.5 AH
- 2 电池串数 Data[2] unsigned char, 8bits, unit: 1 Value: 13
- 3 电池健康度 Data[3-4] unsigned int, 16bits, 0.1% Range: 0 to 1000 (0 to 1000‰)
- 4 电池循环次数 Data[5-6] unsigned int, 16bits, unit: 1 time
- 5 电池过充次数 Data[7-8] unsigned int, 16bits, unit: 1 time
- 6 电池过放次数 Data[9-10] unsigned int, 16bits, unit: 1 time
- 7 电池过温次数 Data[11-12] unsigned int, 16bits, unit: 1 time
- 8 电池过流次数 Data[13-14] unsigned int, 16bits, unit: 1 time
- 9 单体电池满充电压 Data[15-16] unsigned int, 16bits, mV
- 10 单体电池过放电压 Data[17-18] unsigned int, 16bits, mV
- 11 电池编号 Data[19-25] 7 bytes,
- Data [19-20]: ‘J’’M’
- Data [21]: year, 19-50, offset 2000,
- 2019-2050
- Data [22]: month, 0-12
- Data [23]: day,0-31max
- Data [24-25]: unsigned int, production
- line SN
- 12 年 Data[26] unsigned char, 8 bits, offset 2000 E.g.: 19+2000 = 2019
- 13 月 Data[27] unsigned char, 8 bitsRange: 0 - 12
- 14 日 Data[28] unsigned char, 8 bitsRange: 0 – 31 max
- 15 时 Data[29] unsigned char, 8 bitsRange: 0 - 23
- 16 分 Data[20] unsigned char, 8 bitsRange: 0 - 59
- 17 秒 Data[31] unsigned char, 8 bitsRang
- */
- #pragma pack(1)
- typedef struct
- {
- uint16_t amp_cap; //容量
- uint8_t amp_cellnum; //串数
- uint16_t amp_soh; //健康度
- uint16_t amp_cycle; //循环次数
- uint16_t amp_chg_count; //
- uint16_t amp_dsg_count;
- uint16_t amp_otp_count;
- uint16_t amp_ocp_count;
- uint16_t amp_fullchg_cellvolt;
- uint16_t amp_uvd_cellvolt;
- uint8_t amp_sn[14]; //编号
- uint8_t amp_year;
- uint8_t amp_month;
- uint8_t amp_day;
- uint8_t amp_hour;
- uint8_t amp_min;
- uint8_t amp_sencond;
- }_POWERAMP_SYS;
- #pragma pack()
- extern _POWERAMP_SYS poweramp_sys;
- extern Connect_check Poweramp_Link;
- void PowerAmpCanRecvHookFunction(uint32_t cellCanID, uint8_t* data, uint8_t len);
- void send_msg_to_poweramp(void);
- void check_poweramp_link(void);
- extern uint32_t time_poweramp_lastrecv;
- #endif
|