|
|
|
|
@ -208,122 +208,124 @@ void CAN_SendLoggingFrame(FDCAN_HandleTypeDef* hcan) {
|
|
|
|
|
|
|
|
|
|
uint8_t buffer[8];
|
|
|
|
|
|
|
|
|
|
buffer[0] = ((slavelognum << 4) | framelognum);
|
|
|
|
|
for (int i = 0; i < AMS_LOGGING_FRAMES_PER_LOOP; i++) {
|
|
|
|
|
buffer[0] = ((slavelognum << 4) | framelognum);
|
|
|
|
|
|
|
|
|
|
switch (framelognum) {
|
|
|
|
|
case 0:
|
|
|
|
|
buffer[1] = CAN_convert_logval(slaves[slavelognum].cellVoltages[0],
|
|
|
|
|
BATTERY_VOLTAGE_TYPE);
|
|
|
|
|
buffer[2] = CAN_convert_logval(slaves[slavelognum].cellVoltages[1],
|
|
|
|
|
BATTERY_VOLTAGE_TYPE);
|
|
|
|
|
buffer[3] = CAN_convert_logval(slaves[slavelognum].cellVoltages[2],
|
|
|
|
|
BATTERY_VOLTAGE_TYPE);
|
|
|
|
|
buffer[4] = CAN_convert_logval(slaves[slavelognum].cellVoltages[3],
|
|
|
|
|
BATTERY_VOLTAGE_TYPE);
|
|
|
|
|
buffer[5] = CAN_convert_logval(slaves[slavelognum].cellVoltages[4],
|
|
|
|
|
BATTERY_VOLTAGE_TYPE);
|
|
|
|
|
buffer[6] = CAN_convert_logval(slaves[slavelognum].cellVoltages[5],
|
|
|
|
|
BATTERY_VOLTAGE_TYPE);
|
|
|
|
|
buffer[7] = CAN_convert_logval(slaves[slavelognum].cellVoltages[6],
|
|
|
|
|
BATTERY_VOLTAGE_TYPE);
|
|
|
|
|
break;
|
|
|
|
|
switch (framelognum) {
|
|
|
|
|
case 0:
|
|
|
|
|
buffer[1] = CAN_convert_logval(slaves[slavelognum].cellVoltages[0],
|
|
|
|
|
BATTERY_VOLTAGE_TYPE);
|
|
|
|
|
buffer[2] = CAN_convert_logval(slaves[slavelognum].cellVoltages[1],
|
|
|
|
|
BATTERY_VOLTAGE_TYPE);
|
|
|
|
|
buffer[3] = CAN_convert_logval(slaves[slavelognum].cellVoltages[2],
|
|
|
|
|
BATTERY_VOLTAGE_TYPE);
|
|
|
|
|
buffer[4] = CAN_convert_logval(slaves[slavelognum].cellVoltages[3],
|
|
|
|
|
BATTERY_VOLTAGE_TYPE);
|
|
|
|
|
buffer[5] = CAN_convert_logval(slaves[slavelognum].cellVoltages[4],
|
|
|
|
|
BATTERY_VOLTAGE_TYPE);
|
|
|
|
|
buffer[6] = CAN_convert_logval(slaves[slavelognum].cellVoltages[5],
|
|
|
|
|
BATTERY_VOLTAGE_TYPE);
|
|
|
|
|
buffer[7] = CAN_convert_logval(slaves[slavelognum].cellVoltages[6],
|
|
|
|
|
BATTERY_VOLTAGE_TYPE);
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case 1:
|
|
|
|
|
buffer[1] = CAN_convert_logval(slaves[slavelognum].cellVoltages[7],
|
|
|
|
|
BATTERY_VOLTAGE_TYPE);
|
|
|
|
|
buffer[2] = CAN_convert_logval(slaves[slavelognum].cellVoltages[8],
|
|
|
|
|
BATTERY_VOLTAGE_TYPE);
|
|
|
|
|
buffer[3] = CAN_convert_logval(slaves[slavelognum].cellVoltages[9],
|
|
|
|
|
BATTERY_VOLTAGE_TYPE);
|
|
|
|
|
buffer[4] =
|
|
|
|
|
CAN_convert_logval(slaves[slavelognum].cellTemps[0], BATTERY_TEMP_TYPE);
|
|
|
|
|
buffer[5] =
|
|
|
|
|
CAN_convert_logval(slaves[slavelognum].cellTemps[1], BATTERY_TEMP_TYPE);
|
|
|
|
|
buffer[6] =
|
|
|
|
|
CAN_convert_logval(slaves[slavelognum].cellTemps[2], BATTERY_TEMP_TYPE);
|
|
|
|
|
buffer[7] =
|
|
|
|
|
CAN_convert_logval(slaves[slavelognum].cellTemps[3], BATTERY_TEMP_TYPE);
|
|
|
|
|
break;
|
|
|
|
|
case 1:
|
|
|
|
|
buffer[1] = CAN_convert_logval(slaves[slavelognum].cellVoltages[7],
|
|
|
|
|
BATTERY_VOLTAGE_TYPE);
|
|
|
|
|
buffer[2] = CAN_convert_logval(slaves[slavelognum].cellVoltages[8],
|
|
|
|
|
BATTERY_VOLTAGE_TYPE);
|
|
|
|
|
buffer[3] = CAN_convert_logval(slaves[slavelognum].cellVoltages[9],
|
|
|
|
|
BATTERY_VOLTAGE_TYPE);
|
|
|
|
|
buffer[4] = CAN_convert_logval(slaves[slavelognum].cellTemps[0],
|
|
|
|
|
BATTERY_TEMP_TYPE);
|
|
|
|
|
buffer[5] = CAN_convert_logval(slaves[slavelognum].cellTemps[1],
|
|
|
|
|
BATTERY_TEMP_TYPE);
|
|
|
|
|
buffer[6] = CAN_convert_logval(slaves[slavelognum].cellTemps[2],
|
|
|
|
|
BATTERY_TEMP_TYPE);
|
|
|
|
|
buffer[7] = CAN_convert_logval(slaves[slavelognum].cellTemps[3],
|
|
|
|
|
BATTERY_TEMP_TYPE);
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case 2:
|
|
|
|
|
buffer[1] =
|
|
|
|
|
CAN_convert_logval(slaves[slavelognum].cellTemps[4], BATTERY_TEMP_TYPE);
|
|
|
|
|
buffer[2] =
|
|
|
|
|
CAN_convert_logval(slaves[slavelognum].cellTemps[5], BATTERY_TEMP_TYPE);
|
|
|
|
|
buffer[3] =
|
|
|
|
|
CAN_convert_logval(slaves[slavelognum].cellTemps[6], BATTERY_TEMP_TYPE);
|
|
|
|
|
buffer[4] =
|
|
|
|
|
CAN_convert_logval(slaves[slavelognum].cellTemps[7], BATTERY_TEMP_TYPE);
|
|
|
|
|
buffer[5] =
|
|
|
|
|
CAN_convert_logval(slaves[slavelognum].cellTemps[8], BATTERY_TEMP_TYPE);
|
|
|
|
|
buffer[6] =
|
|
|
|
|
CAN_convert_logval(slaves[slavelognum].cellTemps[9], BATTERY_TEMP_TYPE);
|
|
|
|
|
buffer[7] = CAN_convert_logval(slaves[slavelognum].cellTemps[10],
|
|
|
|
|
BATTERY_TEMP_TYPE);
|
|
|
|
|
break;
|
|
|
|
|
case 2:
|
|
|
|
|
buffer[1] = CAN_convert_logval(slaves[slavelognum].cellTemps[4],
|
|
|
|
|
BATTERY_TEMP_TYPE);
|
|
|
|
|
buffer[2] = CAN_convert_logval(slaves[slavelognum].cellTemps[5],
|
|
|
|
|
BATTERY_TEMP_TYPE);
|
|
|
|
|
buffer[3] = CAN_convert_logval(slaves[slavelognum].cellTemps[6],
|
|
|
|
|
BATTERY_TEMP_TYPE);
|
|
|
|
|
buffer[4] = CAN_convert_logval(slaves[slavelognum].cellTemps[7],
|
|
|
|
|
BATTERY_TEMP_TYPE);
|
|
|
|
|
buffer[5] = CAN_convert_logval(slaves[slavelognum].cellTemps[8],
|
|
|
|
|
BATTERY_TEMP_TYPE);
|
|
|
|
|
buffer[6] = CAN_convert_logval(slaves[slavelognum].cellTemps[9],
|
|
|
|
|
BATTERY_TEMP_TYPE);
|
|
|
|
|
buffer[7] = CAN_convert_logval(slaves[slavelognum].cellTemps[10],
|
|
|
|
|
BATTERY_TEMP_TYPE);
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case 3:
|
|
|
|
|
buffer[1] = CAN_convert_logval(slaves[slavelognum].cellTemps[11],
|
|
|
|
|
BATTERY_TEMP_TYPE);
|
|
|
|
|
buffer[2] = CAN_convert_logval(slaves[slavelognum].cellTemps[12],
|
|
|
|
|
BATTERY_TEMP_TYPE);
|
|
|
|
|
buffer[3] = CAN_convert_logval(slaves[slavelognum].cellTemps[13],
|
|
|
|
|
BATTERY_TEMP_TYPE);
|
|
|
|
|
buffer[4] = CAN_convert_logval(slaves[slavelognum].cellTemps[14],
|
|
|
|
|
BATTERY_TEMP_TYPE);
|
|
|
|
|
buffer[5] = CAN_convert_logval(slaves[slavelognum].cellTemps[15],
|
|
|
|
|
BATTERY_TEMP_TYPE);
|
|
|
|
|
buffer[6] = CAN_convert_logval(slaves[slavelognum].cellTemps[16],
|
|
|
|
|
BATTERY_TEMP_TYPE);
|
|
|
|
|
buffer[7] = CAN_convert_logval(slaves[slavelognum].cellTemps[17],
|
|
|
|
|
BATTERY_TEMP_TYPE);
|
|
|
|
|
break;
|
|
|
|
|
case 3:
|
|
|
|
|
buffer[1] = CAN_convert_logval(slaves[slavelognum].cellTemps[11],
|
|
|
|
|
BATTERY_TEMP_TYPE);
|
|
|
|
|
buffer[2] = CAN_convert_logval(slaves[slavelognum].cellTemps[12],
|
|
|
|
|
BATTERY_TEMP_TYPE);
|
|
|
|
|
buffer[3] = CAN_convert_logval(slaves[slavelognum].cellTemps[13],
|
|
|
|
|
BATTERY_TEMP_TYPE);
|
|
|
|
|
buffer[4] = CAN_convert_logval(slaves[slavelognum].cellTemps[14],
|
|
|
|
|
BATTERY_TEMP_TYPE);
|
|
|
|
|
buffer[5] = CAN_convert_logval(slaves[slavelognum].cellTemps[15],
|
|
|
|
|
BATTERY_TEMP_TYPE);
|
|
|
|
|
buffer[6] = CAN_convert_logval(slaves[slavelognum].cellTemps[16],
|
|
|
|
|
BATTERY_TEMP_TYPE);
|
|
|
|
|
buffer[7] = CAN_convert_logval(slaves[slavelognum].cellTemps[17],
|
|
|
|
|
BATTERY_TEMP_TYPE);
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case 4:
|
|
|
|
|
buffer[1] = CAN_convert_logval(slaves[slavelognum].cellTemps[18],
|
|
|
|
|
BATTERY_TEMP_TYPE);
|
|
|
|
|
buffer[2] = CAN_convert_logval(slaves[slavelognum].cellTemps[19],
|
|
|
|
|
BATTERY_TEMP_TYPE);
|
|
|
|
|
buffer[3] = CAN_convert_logval(slaves[slavelognum].cellTemps[20],
|
|
|
|
|
BATTERY_TEMP_TYPE);
|
|
|
|
|
buffer[4] = CAN_convert_logval(slaves[slavelognum].cellTemps[21],
|
|
|
|
|
BATTERY_TEMP_TYPE);
|
|
|
|
|
buffer[5] = CAN_convert_logval(slaves[slavelognum].cellTemps[22],
|
|
|
|
|
BATTERY_TEMP_TYPE);
|
|
|
|
|
buffer[6] = CAN_convert_logval(slaves[slavelognum].cellTemps[23],
|
|
|
|
|
BATTERY_TEMP_TYPE);
|
|
|
|
|
buffer[7] = CAN_convert_logval(slaves[slavelognum].cellTemps[24],
|
|
|
|
|
BATTERY_TEMP_TYPE);
|
|
|
|
|
break;
|
|
|
|
|
case 4:
|
|
|
|
|
buffer[1] = CAN_convert_logval(slaves[slavelognum].cellTemps[18],
|
|
|
|
|
BATTERY_TEMP_TYPE);
|
|
|
|
|
buffer[2] = CAN_convert_logval(slaves[slavelognum].cellTemps[19],
|
|
|
|
|
BATTERY_TEMP_TYPE);
|
|
|
|
|
buffer[3] = CAN_convert_logval(slaves[slavelognum].cellTemps[20],
|
|
|
|
|
BATTERY_TEMP_TYPE);
|
|
|
|
|
buffer[4] = CAN_convert_logval(slaves[slavelognum].cellTemps[21],
|
|
|
|
|
BATTERY_TEMP_TYPE);
|
|
|
|
|
buffer[5] = CAN_convert_logval(slaves[slavelognum].cellTemps[22],
|
|
|
|
|
BATTERY_TEMP_TYPE);
|
|
|
|
|
buffer[6] = CAN_convert_logval(slaves[slavelognum].cellTemps[23],
|
|
|
|
|
BATTERY_TEMP_TYPE);
|
|
|
|
|
buffer[7] = CAN_convert_logval(slaves[slavelognum].cellTemps[24],
|
|
|
|
|
BATTERY_TEMP_TYPE);
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case 5:
|
|
|
|
|
buffer[1] = CAN_convert_logval(slaves[slavelognum].cellTemps[25],
|
|
|
|
|
BATTERY_TEMP_TYPE);
|
|
|
|
|
buffer[2] = CAN_convert_logval(slaves[slavelognum].cellTemps[26],
|
|
|
|
|
BATTERY_TEMP_TYPE);
|
|
|
|
|
buffer[3] = CAN_convert_logval(slaves[slavelognum].cellTemps[27],
|
|
|
|
|
BATTERY_TEMP_TYPE);
|
|
|
|
|
buffer[4] = CAN_convert_logval(slaves[slavelognum].cellTemps[28],
|
|
|
|
|
BATTERY_TEMP_TYPE);
|
|
|
|
|
buffer[5] = CAN_convert_logval(slaves[slavelognum].cellTemps[29],
|
|
|
|
|
BATTERY_TEMP_TYPE);
|
|
|
|
|
buffer[6] = CAN_convert_logval(slaves[slavelognum].cellTemps[30],
|
|
|
|
|
BATTERY_TEMP_TYPE);
|
|
|
|
|
buffer[7] = CAN_convert_logval(slaves[slavelognum].cellTemps[31],
|
|
|
|
|
BATTERY_TEMP_TYPE);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
case 5:
|
|
|
|
|
buffer[1] = CAN_convert_logval(slaves[slavelognum].cellTemps[25],
|
|
|
|
|
BATTERY_TEMP_TYPE);
|
|
|
|
|
buffer[2] = CAN_convert_logval(slaves[slavelognum].cellTemps[26],
|
|
|
|
|
BATTERY_TEMP_TYPE);
|
|
|
|
|
buffer[3] = CAN_convert_logval(slaves[slavelognum].cellTemps[27],
|
|
|
|
|
BATTERY_TEMP_TYPE);
|
|
|
|
|
buffer[4] = CAN_convert_logval(slaves[slavelognum].cellTemps[28],
|
|
|
|
|
BATTERY_TEMP_TYPE);
|
|
|
|
|
buffer[5] = CAN_convert_logval(slaves[slavelognum].cellTemps[29],
|
|
|
|
|
BATTERY_TEMP_TYPE);
|
|
|
|
|
buffer[6] = CAN_convert_logval(slaves[slavelognum].cellTemps[30],
|
|
|
|
|
BATTERY_TEMP_TYPE);
|
|
|
|
|
buffer[7] = CAN_convert_logval(slaves[slavelognum].cellTemps[31],
|
|
|
|
|
BATTERY_TEMP_TYPE);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
CAN_Transmit(hcan, AMS_LOGGING_ID, buffer, 8);
|
|
|
|
|
CAN_Transmit(hcan, AMS_LOGGING_ID, buffer, 8);
|
|
|
|
|
|
|
|
|
|
framelognum++;
|
|
|
|
|
if ((framelognum >= AMS_LOGGING_NUM_FRAMES)) {
|
|
|
|
|
framelognum = 0;
|
|
|
|
|
slavelognum++;
|
|
|
|
|
}
|
|
|
|
|
if ((slavelognum >= NUMBEROFSLAVES)) {
|
|
|
|
|
slavelognum = 0;
|
|
|
|
|
framelognum = 0;
|
|
|
|
|
framelognum++;
|
|
|
|
|
if ((framelognum >= AMS_LOGGING_NUM_FRAMES)) {
|
|
|
|
|
framelognum = 0;
|
|
|
|
|
slavelognum++;
|
|
|
|
|
}
|
|
|
|
|
if ((slavelognum >= NUMBEROFSLAVES)) {
|
|
|
|
|
slavelognum = 0;
|
|
|
|
|
framelognum = 0;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|