12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- #include "qingxie_bms.h"
- #include "common.h"
- #include "soft_p_2_c.h"
- #include "soft_can.h"
- qingxie_bms_status_t _qx_bms[4] = {0};
- void send_info_to_Qx(void)
- {
- if(_Aqx_bms_link.connect_status != COMP_NORMAL)
- return;
-
- uint8_t can_buf[8] = {0};
-
- if(planep.lock_status == 0)
- can_buf[0] = 0;
- else if(planep.lock_status == 1)
- can_buf[0] = 1;
- else if(planep.lock_status == 4)
- can_buf[0] = 2;
- can_buf[1] = (planep.thr_pwm - 1000) / 10;
-
- can_send_msg_normal(&can_buf[0], 8, 0x66B);
- }
- Connect_check _qx_bms_link[4] = {0};
- Connect_check _Aqx_bms_link;
- void QxBmsCanRecvHookFunction(uint32_t id, uint8_t data[], uint8_t len)
- {
- int bms_id = 0;
- _Aqx_bms_link.connect_status = COMP_NORMAL;
- if (id == QINGXIE_BMS0_CAN_ID1 || id == QINGXIE_BMS1_CAN_ID1 ||
- id == QINGXIE_BMS2_CAN_ID1 || id == QINGXIE_BMS3_CAN_ID1)
- {
- if (id == QINGXIE_BMS1_CAN_ID1) {
- bms_id = 1;
- } else if (id == QINGXIE_BMS2_CAN_ID1) {
- bms_id = 2;
- } else if (id == QINGXIE_BMS3_CAN_ID1) {
- bms_id = 3;
- }
- _qx_bms_link[bms_id].connect_status = COMP_NORMAL;
- _qx_bms_link[bms_id].recv_time = HAL_GetTick();
- _qx_bms[bms_id].bat_voltage = data[1] + (data[0] << 8);
- _qx_bms[bms_id].servo_current = data[3] + (data[2] << 8);
- _qx_bms[bms_id].stack_voltage = data[5] + (data[4] << 8);
- _qx_bms[bms_id].servo_voltage = data[7] + (data[6] << 8);
-
- }
- else if (id == QINGXIE_BMS0_CAN_ID2 || id== QINGXIE_BMS1_CAN_ID2 ||
- id== QINGXIE_BMS2_CAN_ID2 || id== QINGXIE_BMS3_CAN_ID2)
- {
- if (id == QINGXIE_BMS1_CAN_ID2) {
- bms_id = 1;
- } else if (id == QINGXIE_BMS2_CAN_ID2) {
- bms_id = 2;
- } else if (id == QINGXIE_BMS3_CAN_ID2) {
- bms_id = 3;
- }
- _qx_bms[bms_id].gas_tank_pressure = data[1] + (data[0] << 8);
- _qx_bms[bms_id].pipe_pressure = data[3] + (data[2] << 8);
- _qx_bms[bms_id].pcb_temp = data[5] + (data[4] << 8);
- _qx_bms[bms_id].stack_temp = data[7] + (data[6] << 8);
- } else if (id == QINGXIE_BMS0_CAN_ID3 || id == QINGXIE_BMS1_CAN_ID3 ||
- id == QINGXIE_BMS2_CAN_ID3 || id == QINGXIE_BMS3_CAN_ID3) {
- if (id == QINGXIE_BMS1_CAN_ID3) {
- bms_id = 1;
- } else if (id == QINGXIE_BMS2_CAN_ID3) {
- bms_id = 2;
- } else if (id == QINGXIE_BMS3_CAN_ID3) {
- bms_id = 3;
- }
- _qx_bms[bms_id].work_status = data[0];
- _qx_bms[bms_id].self_chek = data[1];
- _qx_bms[bms_id].falt_status = data[3] + (data[2] << 8);
- _qx_bms[bms_id].bat_refuel_current = data[5] + (data[4] << 8);
- }
- }
|