44#include "bms.h"
55#include "can.h"
66#include "data.h"
7-
7+ #define DEBUG_BMS
88extern data_t * data ;
99
1010int bmsClearFaults (void ){
@@ -30,7 +30,7 @@ int bmsClearFaults(void){
3030 * Receives a CAN Message and updates global BMS_Data struct
3131 */
3232int bmsParseMsg (uint32_t id , uint8_t * msg ) {
33- #ifdef DEBUG_BMS
33+ #if 0 /* DEBUG_BMS*/
3434 printf ("Recieved bms message\n" );
3535 printf ("ID: 0x%3lx\r\n" , (long unsigned int ) id );
3636 printf ("Data: %d, %d, %d, %d, %d, %d, %d\n" , msg [0 ], msg [1 ], msg [2 ],
@@ -45,6 +45,7 @@ int bmsParseMsg(uint32_t id, uint8_t *msg) {
4545 bms -> packVoltage /= 10 ;
4646 bms -> Soc = msg [4 ]/2 ;
4747 bms -> relayStatus = msg [6 ] | msg [5 ] << 8 ;
48+ bms -> cellMaxVoltage = (msg [5 ] << 8 ) /10000.0 ;
4849#ifdef DEBUG_BMS
4950 printf ("V: %f\r\n" , bms -> packVoltage );
5051 printf ("A: %f\r\n" , bms -> packCurrent );
@@ -55,7 +56,7 @@ int bmsParseMsg(uint32_t id, uint8_t *msg) {
5556 case 0x6B1 :
5657 bms -> packDCL = msg [1 ] | msg [0 ] << 8 ;
5758 bms -> highTemp = msg [4 ];
58- bms -> lowTemp = msg [5 ] ;
59+ bms -> cellMinVoltage = ( msg [7 ] | ( msg [ 6 ] << 8 )) / 10000.0 ;
5960#ifdef DEBUG_BMS
6061 printf ("DCL: %d\r\n" , bms -> packDCL );
6162 printf ("High T: %d\r\n" , bms -> highTemp );
@@ -77,22 +78,22 @@ int bmsParseMsg(uint32_t id, uint8_t *msg) {
7778
7879 bms -> packCCL = msg [0 ] | (msg [1 ] << 8 );
7980 bms -> packDCL = msg [2 ] | (msg [3 ] << 8 );
80- bms -> cellMaxVoltage = msg [4 ] | (msg [5 ] << 8 );
81- bms -> cellMaxVoltage /= 10000 ;
82- bms -> cellMinVoltage = msg [6 ] | (msg [7 ] << 8 );
83- bms -> cellMinVoltage /= 10000 ;
81+ /* bms->cellMaxVoltage = msg[4] | (msg[5] << 8);*/
82+ /* bms->cellMaxVoltage /= 10000;*/
83+ /* bms->cellMinVoltage = msg[6] | (msg[7] << 8);*/
84+ /* bms->cellMinVoltage /= 10000;*/
8485#ifdef DEBUG_BMS
8586 printf ("DCL %d\r\n" , bms -> packDCL );
8687 printf ("Cell Min V: %d, Cell Max V: %d\r\n" , bms -> cellMinVoltage , bms -> cellMaxVoltage );
8788#endif
8889 break ;
8990 case 0x651 :
90- bms -> cellMaxVoltage = msg [2 ] | (msg [3 ] << 8 );
91- bms -> cellMinVoltage = msg [0 ] | (msg [1 ] << 8 );
92- bms -> cellAvgVoltage = msg [5 ] | (msg [4 ] << 8 );
93- bms -> cellAvgVoltage /= 1000 ;
94- bms -> cellMaxVoltage /= 1000 ;
95- bms -> cellMinVoltage /= 1000 ;
91+ /* bms->cellMaxVoltage = msg[2] | (msg[3] << 8);*/
92+ /* bms->cellMinVoltage = msg[0] | (msg[1] << 8);*/
93+ /* bms->cellAvgVoltage = msg[5] | (msg[4] << 8);*/
94+ /* bms->cellAvgVoltage /= 1000;*/
95+ /* bms->cellMaxVoltage /= 1000;*/
96+ /* bms->cellMinVoltage /= 1000;*/
9697 bms -> maxCells = msg [6 ];
9798 bms -> numCells = msg [7 ];
9899#ifdef DEBUG_BMS
@@ -122,8 +123,9 @@ int bmsParseMsg(uint32_t id, uint8_t *msg) {
122123
123124 bms -> packCurrent = msg [0 ] | (msg [1 ] << 8 );
124125 bms -> packCurrent /= 10 ;
125- bms -> packVoltage = msg [2 ] | (msg [3 ] << 8 );
126- bms -> packVoltage /= 10 ;
126+ bms -> cellMinVoltage = ((msg [3 ] << 8 ) | msg [4 ]) / 10000.0 ;
127+ /* bms->packVoltage = msg[2] | (msg[3] << 8);*/
128+ /* bms->packVoltage /= 10;*/
127129 bms -> packAh = msg [4 ] | (msg [5 ] << 8 );
128130 bms -> highTemp = msg [6 ];
129131 bms -> lowTemp = msg [7 ];
@@ -160,8 +162,8 @@ void bmsDump () {
160162 printf ("\tRelay Status = %u\n" , bms -> relayStatus );
161163 printf ("\tHigh Temp = %u\n" , bms -> highTemp );
162164 printf ("\tLow Temp = %u\n" , bms -> lowTemp );
163- printf ("\tCell Max Voltage = %u \n" , bms -> cellMaxVoltage );
164- printf ("\tCell Min Voltage = %u \n" , bms -> cellMinVoltage );
165+ printf ("\tCell Max Voltage = %f \n" , bms -> cellMaxVoltage );
166+ printf ("\tCell Min Voltage = %f \n" , bms -> cellMinVoltage );
165167 printf ("\tMax Cells = %u\n" , bms -> maxCells );
166168 printf ("\tNumber of Cells = %u\n" , bms -> numCells );
167169 printf ("---END BMS---\n" );
0 commit comments