mirror of
https://github.com/dalathegreat/Battery-Emulator.git
synced 2025-10-03 01:39:30 +02:00
Add more PID polls
This commit is contained in:
parent
9626c04233
commit
35f88a8fe2
2 changed files with 596 additions and 20 deletions
|
@ -40,9 +40,21 @@ CAN_frame CMFA_POLLING_FRAME = {.FD = false,
|
|||
.DLC = 8,
|
||||
.ID = 0x79B,
|
||||
.data = {0x03, 0x22, 0x90, 0x01, 0x00, 0x00, 0x00, 0x00}};
|
||||
|
||||
static bool end_of_charge = false;
|
||||
static bool interlock_flag = false;
|
||||
static uint16_t soc_z = 0;
|
||||
static uint16_t soc_u = 0;
|
||||
static uint16_t max_regen_power = 0;
|
||||
static uint16_t max_discharge_power = 0;
|
||||
static uint16_t average_temperature = 0;
|
||||
static uint16_t minimum_temperature = 0;
|
||||
static uint16_t maximum_temperature = 0;
|
||||
static uint16_t maximum_charge_power = 0;
|
||||
static uint16_t SOH_available_power = 0;
|
||||
static uint16_t SOH_generated_power = 0;
|
||||
static uint32_t average_voltage_of_cells = 270000;
|
||||
static uint16_t highest_cell_voltage_mv = 3700;
|
||||
static uint16_t lowest_cell_voltage_mv = 3700;
|
||||
static uint16_t lead_acid_voltage = 12000;
|
||||
static uint8_t highest_cell_voltage_number = 0;
|
||||
static uint8_t lowest_cell_voltage_number = 0;
|
||||
|
@ -50,8 +62,10 @@ static uint64_t cumulative_energy_when_discharging = 0;
|
|||
static uint64_t cumulative_energy_when_charging = 0;
|
||||
static uint64_t cumulative_energy_in_regen = 0;
|
||||
static uint16_t soh_average = 10000;
|
||||
static uint16_t cellvoltages_mv[72];
|
||||
static uint32_t poll_pid = PID_POLL_SOH_AVERAGE;
|
||||
static uint16_t pid_reply = 0;
|
||||
|
||||
static uint8_t counter_10ms = 0;
|
||||
static uint8_t content_125[16] = {0x07, 0x0C, 0x01, 0x06, 0x0B, 0x00, 0x05, 0x0A,
|
||||
0x0F, 0x04, 0x09, 0x0E, 0x03, 0x08, 0x0D, 0x02};
|
||||
|
@ -95,10 +109,13 @@ void update_values_battery() { //This function maps all the values fetched via
|
|||
|
||||
datalayer.battery.status.temperature_max_dC = (highest_cell_temperature * 10);
|
||||
|
||||
datalayer.battery.status.cell_min_voltage_mV = highest_cell_voltage_mv; //Placeholder until we can find minimum
|
||||
datalayer.battery.status.cell_min_voltage_mV = lowest_cell_voltage_mv;
|
||||
|
||||
datalayer.battery.status.cell_max_voltage_mV = highest_cell_voltage_mv;
|
||||
|
||||
//Map all cell voltages to the global array
|
||||
memcpy(datalayer.battery.status.cell_voltages_mV, cellvoltages_mv, 72 * sizeof(uint16_t));
|
||||
|
||||
if (lead_acid_voltage < 11000) { //11.000V
|
||||
set_event(EVENT_12V_LOW, lead_acid_voltage);
|
||||
}
|
||||
|
@ -167,6 +184,12 @@ void handle_incoming_can_frame_battery(CAN_frame rx_frame) {
|
|||
pid_reply = (rx_frame.data.u8[2] << 8) + rx_frame.data.u8[3];
|
||||
|
||||
switch (pid_reply) {
|
||||
case PID_POLL_SOCZ:
|
||||
soc_z = (uint16_t)((rx_frame.data.u8[4] << 8) | rx_frame.data.u8[5]);
|
||||
break;
|
||||
case PID_POLL_USOC:
|
||||
soc_u = (uint16_t)((rx_frame.data.u8[4] << 8) | rx_frame.data.u8[5]);
|
||||
break;
|
||||
case PID_POLL_SOH_AVERAGE:
|
||||
soh_average = (uint16_t)((rx_frame.data.u8[4] << 8) | rx_frame.data.u8[5]);
|
||||
break;
|
||||
|
@ -180,12 +203,51 @@ void handle_incoming_can_frame_battery(CAN_frame rx_frame) {
|
|||
case PID_POLL_CELL_NUMBER_HIGHEST_VOLTAGE:
|
||||
highest_cell_voltage_number = rx_frame.data.u8[4];
|
||||
break;
|
||||
case PID_POLL_LOWEST_CELL_VOLTAGE:
|
||||
lowest_cell_voltage_mv = (uint16_t)((rx_frame.data.u8[4] << 8) | rx_frame.data.u8[5]);
|
||||
break;
|
||||
case PID_POLL_CELL_NUMBER_LOWEST_VOLTAGE:
|
||||
lowest_cell_voltage_number = rx_frame.data.u8[4];
|
||||
break;
|
||||
case PID_POLL_CURRENT_OFFSET:
|
||||
//current_offset =
|
||||
break;
|
||||
case PID_POLL_INSTANT_CURRENT:
|
||||
//instant_offset =
|
||||
break;
|
||||
case PID_POLL_MAX_REGEN:
|
||||
max_regen_power = (uint16_t)((rx_frame.data.u8[4] << 8) | rx_frame.data.u8[5]);
|
||||
break;
|
||||
case PID_POLL_MAX_DISCHARGE_POWER:
|
||||
max_discharge_power = (uint16_t)((rx_frame.data.u8[4] << 8) | rx_frame.data.u8[5]);
|
||||
break;
|
||||
case PID_POLL_12V_BATTERY:
|
||||
lead_acid_voltage = (uint16_t)((rx_frame.data.u8[4] << 8) | rx_frame.data.u8[5]);
|
||||
break;
|
||||
case PID_POLL_AVERAGE_TEMPERATURE:
|
||||
average_temperature = (uint16_t)((rx_frame.data.u8[4] << 8) | rx_frame.data.u8[5]);
|
||||
break;
|
||||
case PID_POLL_MIN_TEMPERATURE:
|
||||
minimum_temperature = (uint16_t)((rx_frame.data.u8[4] << 8) | rx_frame.data.u8[5]);
|
||||
break;
|
||||
case PID_POLL_MAX_TEMPERATURE:
|
||||
maximum_temperature = (uint16_t)((rx_frame.data.u8[4] << 8) | rx_frame.data.u8[5]);
|
||||
break;
|
||||
case PID_POLL_MAX_CHARGE_POWER:
|
||||
maximum_charge_power = (uint16_t)((rx_frame.data.u8[4] << 8) | rx_frame.data.u8[5]);
|
||||
break;
|
||||
case PID_POLL_END_OF_CHARGE_FLAG:
|
||||
end_of_charge = rx_frame.data.u8[4];
|
||||
break;
|
||||
case PID_POLL_INTERLOCK_FLAG:
|
||||
interlock_flag = rx_frame.data.u8[4];
|
||||
break;
|
||||
case PID_POLL_SOH_AVAILABLE_POWER_CALCULATION:
|
||||
SOH_available_power = (uint16_t)((rx_frame.data.u8[4] << 8) | rx_frame.data.u8[5]);
|
||||
break;
|
||||
case PID_POLL_SOH_GENERATED_POWER_CALCULATION:
|
||||
SOH_generated_power = (uint16_t)((rx_frame.data.u8[4] << 8) | rx_frame.data.u8[5]);
|
||||
break;
|
||||
case PID_POLL_CUMULATIVE_ENERGY_WHEN_DISCHARGING:
|
||||
cumulative_energy_when_discharging = (uint64_t)((rx_frame.data.u8[4] << 24) | (rx_frame.data.u8[5] << 16) |
|
||||
(rx_frame.data.u8[6] << 8) | (rx_frame.data.u8[7]));
|
||||
|
@ -197,6 +259,15 @@ void handle_incoming_can_frame_battery(CAN_frame rx_frame) {
|
|||
case PID_POLL_CUMULATIVE_ENERGY_IN_REGEN:
|
||||
cumulative_energy_in_regen = (uint64_t)((rx_frame.data.u8[4] << 24) | (rx_frame.data.u8[5] << 16) |
|
||||
(rx_frame.data.u8[6] << 8) | (rx_frame.data.u8[7]));
|
||||
case PID_POLL_CELL_1:
|
||||
cellvoltages_mv[0] = (uint16_t)((rx_frame.data.u8[4] << 8) | rx_frame.data.u8[5]);
|
||||
break;
|
||||
case PID_POLL_CELL_2:
|
||||
cellvoltages_mv[1] = (uint16_t)((rx_frame.data.u8[4] << 8) | rx_frame.data.u8[5]);
|
||||
break;
|
||||
case PID_POLL_CELL_3:
|
||||
cellvoltages_mv[2] = (uint16_t)((rx_frame.data.u8[4] << 8) | rx_frame.data.u8[5]);
|
||||
break;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
@ -251,6 +322,11 @@ void transmit_can_battery() {
|
|||
case PID_POLL_HIGHEST_CELL_VOLTAGE:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_HIGHEST_CELL_VOLTAGE >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_HIGHEST_CELL_VOLTAGE;
|
||||
poll_pid = PID_POLL_LOWEST_CELL_VOLTAGE;
|
||||
break;
|
||||
case PID_POLL_LOWEST_CELL_VOLTAGE:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_LOWEST_CELL_VOLTAGE >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_LOWEST_CELL_VOLTAGE;
|
||||
poll_pid = PID_POLL_CELL_NUMBER_HIGHEST_VOLTAGE;
|
||||
break;
|
||||
case PID_POLL_CELL_NUMBER_HIGHEST_VOLTAGE:
|
||||
|
@ -281,9 +357,428 @@ void transmit_can_battery() {
|
|||
case PID_POLL_CUMULATIVE_ENERGY_IN_REGEN:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_CUMULATIVE_ENERGY_IN_REGEN >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_CUMULATIVE_ENERGY_IN_REGEN;
|
||||
poll_pid = PID_POLL_SOCZ;
|
||||
break;
|
||||
case PID_POLL_SOCZ:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_SOCZ >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_SOCZ;
|
||||
poll_pid = PID_POLL_USOC;
|
||||
break;
|
||||
case PID_POLL_USOC:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_USOC >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_USOC;
|
||||
poll_pid = PID_POLL_CURRENT_OFFSET;
|
||||
break;
|
||||
case PID_POLL_CURRENT_OFFSET:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_CURRENT_OFFSET >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_CURRENT_OFFSET;
|
||||
poll_pid = PID_POLL_INSTANT_CURRENT;
|
||||
break;
|
||||
case PID_POLL_INSTANT_CURRENT:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_INSTANT_CURRENT >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_INSTANT_CURRENT;
|
||||
poll_pid = PID_POLL_MAX_REGEN;
|
||||
break;
|
||||
case PID_POLL_MAX_REGEN:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_MAX_REGEN >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_MAX_REGEN;
|
||||
poll_pid = PID_POLL_MAX_DISCHARGE_POWER;
|
||||
break;
|
||||
case PID_POLL_MAX_DISCHARGE_POWER:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_MAX_DISCHARGE_POWER >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_MAX_DISCHARGE_POWER;
|
||||
poll_pid = PID_POLL_MAX_CHARGE_POWER;
|
||||
break;
|
||||
case PID_POLL_MAX_CHARGE_POWER:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_MAX_CHARGE_POWER >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_MAX_CHARGE_POWER;
|
||||
poll_pid = PID_POLL_AVERAGE_TEMPERATURE;
|
||||
break;
|
||||
case PID_POLL_AVERAGE_TEMPERATURE:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_AVERAGE_TEMPERATURE >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_AVERAGE_TEMPERATURE;
|
||||
poll_pid = PID_POLL_MIN_TEMPERATURE;
|
||||
break;
|
||||
case PID_POLL_MIN_TEMPERATURE:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_MIN_TEMPERATURE >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_MIN_TEMPERATURE;
|
||||
poll_pid = PID_POLL_MAX_TEMPERATURE;
|
||||
break;
|
||||
case PID_POLL_MAX_TEMPERATURE:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_MAX_TEMPERATURE >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_MAX_TEMPERATURE;
|
||||
poll_pid = PID_POLL_END_OF_CHARGE_FLAG;
|
||||
break;
|
||||
case PID_POLL_END_OF_CHARGE_FLAG:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_END_OF_CHARGE_FLAG >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_END_OF_CHARGE_FLAG;
|
||||
poll_pid = PID_POLL_INTERLOCK_FLAG;
|
||||
break;
|
||||
case PID_POLL_INTERLOCK_FLAG:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_INTERLOCK_FLAG >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_INTERLOCK_FLAG;
|
||||
poll_pid = PID_POLL_CELL_1;
|
||||
break;
|
||||
case PID_POLL_CELL_1:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_CELL_1 >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_CELL_1;
|
||||
poll_pid = PID_POLL_CELL_2;
|
||||
break;
|
||||
case PID_POLL_CELL_2:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_CELL_2 >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_CELL_2;
|
||||
poll_pid = PID_POLL_CELL_3;
|
||||
break;
|
||||
case PID_POLL_CELL_3:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_CELL_3 >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_CELL_3;
|
||||
poll_pid = PID_POLL_CELL_4;
|
||||
break;
|
||||
case PID_POLL_CELL_4:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_CELL_4 >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_CELL_4;
|
||||
poll_pid = PID_POLL_CELL_5;
|
||||
break;
|
||||
case PID_POLL_CELL_5:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_CELL_5 >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_CELL_5;
|
||||
poll_pid = PID_POLL_CELL_6;
|
||||
break;
|
||||
case PID_POLL_CELL_6:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_CELL_6 >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_CELL_6;
|
||||
poll_pid = PID_POLL_CELL_7;
|
||||
break;
|
||||
case PID_POLL_CELL_7:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_CELL_7 >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_CELL_7;
|
||||
poll_pid = PID_POLL_CELL_8;
|
||||
break;
|
||||
case PID_POLL_CELL_8:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_CELL_8 >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_CELL_8;
|
||||
poll_pid = PID_POLL_CELL_9;
|
||||
break;
|
||||
case PID_POLL_CELL_9:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_CELL_9 >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_CELL_9;
|
||||
poll_pid = PID_POLL_CELL_10;
|
||||
break;
|
||||
case PID_POLL_CELL_10:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_CELL_10 >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_CELL_10;
|
||||
poll_pid = PID_POLL_CELL_11;
|
||||
break;
|
||||
case PID_POLL_CELL_11:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_CELL_11 >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_CELL_11;
|
||||
poll_pid = PID_POLL_CELL_12;
|
||||
break;
|
||||
case PID_POLL_CELL_12:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_CELL_12 >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_CELL_12;
|
||||
poll_pid = PID_POLL_CELL_13;
|
||||
break;
|
||||
case PID_POLL_CELL_13:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_CELL_13 >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_CELL_13;
|
||||
poll_pid = PID_POLL_CELL_14;
|
||||
break;
|
||||
case PID_POLL_CELL_14:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_CELL_14 >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_CELL_14;
|
||||
poll_pid = PID_POLL_CELL_15;
|
||||
break;
|
||||
case PID_POLL_CELL_15:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_CELL_15 >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_CELL_15;
|
||||
poll_pid = PID_POLL_CELL_16;
|
||||
break;
|
||||
case PID_POLL_CELL_16:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_CELL_16 >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_CELL_16;
|
||||
poll_pid = PID_POLL_CELL_17;
|
||||
break;
|
||||
case PID_POLL_CELL_17:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_CELL_17 >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_CELL_17;
|
||||
poll_pid = PID_POLL_CELL_18;
|
||||
break;
|
||||
case PID_POLL_CELL_18:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_CELL_18 >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_CELL_18;
|
||||
poll_pid = PID_POLL_CELL_19;
|
||||
break;
|
||||
case PID_POLL_CELL_19:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_CELL_19 >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_CELL_19;
|
||||
poll_pid = PID_POLL_CELL_20;
|
||||
break;
|
||||
case PID_POLL_CELL_20:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_CELL_20 >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_CELL_20;
|
||||
poll_pid = PID_POLL_CELL_21;
|
||||
break;
|
||||
case PID_POLL_CELL_21:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_CELL_21 >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_CELL_21;
|
||||
poll_pid = PID_POLL_CELL_22;
|
||||
break;
|
||||
case PID_POLL_CELL_22:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_CELL_22 >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_CELL_22;
|
||||
poll_pid = PID_POLL_CELL_23;
|
||||
break;
|
||||
case PID_POLL_CELL_23:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_CELL_23 >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_CELL_23;
|
||||
poll_pid = PID_POLL_CELL_24;
|
||||
break;
|
||||
case PID_POLL_CELL_24:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_CELL_24 >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_CELL_24;
|
||||
poll_pid = PID_POLL_CELL_25;
|
||||
break;
|
||||
case PID_POLL_CELL_25:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_CELL_25 >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_CELL_25;
|
||||
poll_pid = PID_POLL_CELL_26;
|
||||
break;
|
||||
case PID_POLL_CELL_26:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_CELL_26 >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_CELL_26;
|
||||
poll_pid = PID_POLL_CELL_27;
|
||||
break;
|
||||
case PID_POLL_CELL_27:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_CELL_27 >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_CELL_27;
|
||||
poll_pid = PID_POLL_CELL_28;
|
||||
break;
|
||||
case PID_POLL_CELL_28:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_CELL_28 >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_CELL_28;
|
||||
poll_pid = PID_POLL_CELL_29;
|
||||
break;
|
||||
case PID_POLL_CELL_29:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_CELL_29 >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_CELL_29;
|
||||
poll_pid = PID_POLL_CELL_30;
|
||||
break;
|
||||
case PID_POLL_CELL_30:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_CELL_30 >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_CELL_30;
|
||||
poll_pid = PID_POLL_CELL_31;
|
||||
break;
|
||||
case PID_POLL_CELL_31:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_CELL_31 >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_CELL_31;
|
||||
poll_pid = PID_POLL_CELL_32;
|
||||
break;
|
||||
case PID_POLL_CELL_32:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_CELL_32 >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_CELL_32;
|
||||
poll_pid = PID_POLL_CELL_33;
|
||||
break;
|
||||
case PID_POLL_CELL_33:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_CELL_33 >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_CELL_33;
|
||||
poll_pid = PID_POLL_CELL_34;
|
||||
break;
|
||||
case PID_POLL_CELL_34:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_CELL_34 >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_CELL_34;
|
||||
poll_pid = PID_POLL_CELL_35;
|
||||
break;
|
||||
case PID_POLL_CELL_35:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_CELL_35 >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_CELL_35;
|
||||
poll_pid = PID_POLL_CELL_36;
|
||||
break;
|
||||
case PID_POLL_CELL_36:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_CELL_36 >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_CELL_36;
|
||||
poll_pid = PID_POLL_CELL_37;
|
||||
break;
|
||||
case PID_POLL_CELL_37:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_CELL_37 >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_CELL_37;
|
||||
poll_pid = PID_POLL_CELL_38;
|
||||
break;
|
||||
case PID_POLL_CELL_38:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_CELL_38 >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_CELL_38;
|
||||
poll_pid = PID_POLL_CELL_39;
|
||||
break;
|
||||
case PID_POLL_CELL_39:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_CELL_39 >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_CELL_39;
|
||||
poll_pid = PID_POLL_CELL_40;
|
||||
break;
|
||||
case PID_POLL_CELL_40:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_CELL_40 >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_CELL_40;
|
||||
poll_pid = PID_POLL_CELL_41;
|
||||
break;
|
||||
case PID_POLL_CELL_41:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_CELL_41 >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_CELL_41;
|
||||
poll_pid = PID_POLL_CELL_42;
|
||||
break;
|
||||
case PID_POLL_CELL_42:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_CELL_42 >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_CELL_42;
|
||||
poll_pid = PID_POLL_CELL_43;
|
||||
break;
|
||||
case PID_POLL_CELL_43:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_CELL_43 >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_CELL_43;
|
||||
poll_pid = PID_POLL_CELL_44;
|
||||
break;
|
||||
case PID_POLL_CELL_44:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_CELL_44 >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_CELL_44;
|
||||
poll_pid = PID_POLL_CELL_45;
|
||||
break;
|
||||
case PID_POLL_CELL_45:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_CELL_45 >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_CELL_45;
|
||||
poll_pid = PID_POLL_CELL_46;
|
||||
break;
|
||||
case PID_POLL_CELL_46:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_CELL_46 >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_CELL_46;
|
||||
poll_pid = PID_POLL_CELL_47;
|
||||
break;
|
||||
case PID_POLL_CELL_47:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_CELL_47 >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_CELL_47;
|
||||
poll_pid = PID_POLL_CELL_48;
|
||||
break;
|
||||
case PID_POLL_CELL_48:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_CELL_48 >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_CELL_48;
|
||||
poll_pid = PID_POLL_CELL_49;
|
||||
break;
|
||||
case PID_POLL_CELL_49:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_CELL_49 >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_CELL_49;
|
||||
poll_pid = PID_POLL_CELL_50;
|
||||
break;
|
||||
case PID_POLL_CELL_50:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_CELL_50 >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_CELL_50;
|
||||
poll_pid = PID_POLL_CELL_51;
|
||||
break;
|
||||
case PID_POLL_CELL_51:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_CELL_51 >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_CELL_51;
|
||||
poll_pid = PID_POLL_CELL_52;
|
||||
break;
|
||||
case PID_POLL_CELL_52:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_CELL_52 >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_CELL_52;
|
||||
poll_pid = PID_POLL_CELL_53;
|
||||
break;
|
||||
case PID_POLL_CELL_53:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_CELL_53 >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_CELL_53;
|
||||
poll_pid = PID_POLL_CELL_54;
|
||||
break;
|
||||
case PID_POLL_CELL_54:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_CELL_54 >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_CELL_54;
|
||||
poll_pid = PID_POLL_CELL_55;
|
||||
break;
|
||||
case PID_POLL_CELL_55:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_CELL_55 >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_CELL_55;
|
||||
poll_pid = PID_POLL_CELL_56;
|
||||
break;
|
||||
case PID_POLL_CELL_56:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_CELL_56 >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_CELL_56;
|
||||
poll_pid = PID_POLL_CELL_57;
|
||||
break;
|
||||
case PID_POLL_CELL_57:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_CELL_57 >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_CELL_57;
|
||||
poll_pid = PID_POLL_CELL_58;
|
||||
break;
|
||||
case PID_POLL_CELL_58:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_CELL_58 >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_CELL_58;
|
||||
poll_pid = PID_POLL_CELL_59;
|
||||
break;
|
||||
case PID_POLL_CELL_59:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_CELL_59 >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_CELL_59;
|
||||
poll_pid = PID_POLL_CELL_60;
|
||||
break;
|
||||
case PID_POLL_CELL_60:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_CELL_60 >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_CELL_60;
|
||||
poll_pid = PID_POLL_CELL_61;
|
||||
break;
|
||||
case PID_POLL_CELL_61:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_CELL_61 >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_CELL_61;
|
||||
poll_pid = PID_POLL_CELL_62;
|
||||
break;
|
||||
case PID_POLL_CELL_62:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_CELL_62 >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_CELL_62;
|
||||
poll_pid = PID_POLL_CELL_63;
|
||||
break;
|
||||
case PID_POLL_CELL_63:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_CELL_63 >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_CELL_63;
|
||||
poll_pid = PID_POLL_CELL_64;
|
||||
break;
|
||||
case PID_POLL_CELL_64:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_CELL_64 >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_CELL_64;
|
||||
poll_pid = PID_POLL_CELL_65;
|
||||
break;
|
||||
case PID_POLL_CELL_65:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_CELL_65 >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_CELL_65;
|
||||
poll_pid = PID_POLL_CELL_66;
|
||||
break;
|
||||
case PID_POLL_CELL_66:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_CELL_66 >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_CELL_66;
|
||||
poll_pid = PID_POLL_CELL_67;
|
||||
break;
|
||||
case PID_POLL_CELL_67:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_CELL_67 >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_CELL_67;
|
||||
poll_pid = PID_POLL_CELL_68;
|
||||
break;
|
||||
case PID_POLL_CELL_68:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_CELL_68 >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_CELL_68;
|
||||
poll_pid = PID_POLL_CELL_69;
|
||||
break;
|
||||
case PID_POLL_CELL_69:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_CELL_69 >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_CELL_69;
|
||||
poll_pid = PID_POLL_CELL_70;
|
||||
break;
|
||||
case PID_POLL_CELL_70:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_CELL_70 >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_CELL_70;
|
||||
poll_pid = PID_POLL_CELL_71;
|
||||
break;
|
||||
case PID_POLL_CELL_71:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_CELL_71 >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_CELL_71;
|
||||
poll_pid = PID_POLL_CELL_72;
|
||||
break;
|
||||
case PID_POLL_CELL_72:
|
||||
CMFA_POLLING_FRAME.data.u8[2] = (uint8_t)(PID_POLL_CELL_72 >> 8);
|
||||
CMFA_POLLING_FRAME.data.u8[3] = (uint8_t)PID_POLL_CELL_72;
|
||||
poll_pid = PID_POLL_SOH_AVERAGE;
|
||||
break;
|
||||
default:
|
||||
poll_pid = PID_POLL_SOH_AVERAGE;
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -9,23 +9,102 @@
|
|||
#define MAX_CELL_VOLTAGE_MV 4250 //Battery is put into emergency stop if one cell goes over this value
|
||||
#define MIN_CELL_VOLTAGE_MV 2700 //Battery is put into emergency stop if one cell goes below this value
|
||||
|
||||
// OBD2 PID polls
|
||||
/*
|
||||
#define PID_POLL_UNKNOWN1 0x9001 //122 in log
|
||||
#define PID_POLL_UNKNOWNX 0x9002 //5531 (Possible SOC candidate)
|
||||
*/
|
||||
// OBD2 PID polls. Some of these have been reverse engineered, but there are many unknown values still
|
||||
#define PID_POLL_SOCZ 0x9001 //122 in log
|
||||
#define PID_POLL_USOC 0x9002 //5531 (Possible SOC candidate)
|
||||
#define PID_POLL_SOH_AVERAGE 0x9003
|
||||
#define PID_POLL_AVERAGE_VOLTAGE_OF_CELLS 0x9006 //Guaranteed pack voltage
|
||||
#define PID_POLL_HIGHEST_CELL_VOLTAGE 0x9007 //Best guess, not confirmed
|
||||
#define PID_POLL_CELL_NUMBER_HIGHEST_VOLTAGE 0x9008 // Cell number with highest voltage
|
||||
#define PID_POLL_CELL_NUMBER_LOWEST_VOLTAGE 0x900A // Cell number with the lowest voltage
|
||||
//#define PID_POLL_UNKNOWNX 0x900D
|
||||
#define PID_POLL_12V_BATTERY 0x9011 //Confirmed 12v lead acid battery
|
||||
#define PID_POLL_AVERAGE_VOLTAGE_OF_CELLS 0x9006
|
||||
#define PID_POLL_HIGHEST_CELL_VOLTAGE 0x9007
|
||||
#define PID_POLL_CELL_NUMBER_HIGHEST_VOLTAGE 0x9008
|
||||
#define PID_POLL_LOWEST_CELL_VOLTAGE 0x9009
|
||||
#define PID_POLL_CELL_NUMBER_LOWEST_VOLTAGE 0x900A
|
||||
#define PID_POLL_CURRENT_OFFSET 0x900C
|
||||
#define PID_POLL_INSTANT_CURRENT 0x900D
|
||||
#define PID_POLL_MAX_REGEN 0x900E
|
||||
#define PID_POLL_MAX_DISCHARGE_POWER 0x900F
|
||||
#define PID_POLL_12V_BATTERY 0x9011
|
||||
#define PID_POLL_AVERAGE_TEMPERATURE 0x9012 //749 in log
|
||||
#define PID_POLL_MIN_TEMPERATURE 0x9013 //736 in log
|
||||
#define PID_POLL_MAX_TEMPERATURE 0x9014 //752 in log
|
||||
#define PID_POLL_MAX_CHARGE_POWER 0x9018
|
||||
#define PID_POLL_END_OF_CHARGE_FLAG 0x9019
|
||||
#define PID_POLL_INTERLOCK_FLAG 0x901A
|
||||
#define PID_POLL_BATTERY_IDENTIFICATION 0x901B // Multi frame message
|
||||
#define PID_POLL_CELL_1 0x9021
|
||||
#define PID_POLL_CELL_2 0x9022
|
||||
#define PID_POLL_CELL_3 0x9023
|
||||
#define PID_POLL_CELL_4 0x9024
|
||||
#define PID_POLL_CELL_5 0x9025
|
||||
#define PID_POLL_CELL_6 0x9026
|
||||
#define PID_POLL_CELL_7 0x9027
|
||||
#define PID_POLL_CELL_8 0x9028
|
||||
#define PID_POLL_CELL_9 0x9029
|
||||
#define PID_POLL_CELL_10 0x902A
|
||||
#define PID_POLL_CELL_11 0x902B
|
||||
#define PID_POLL_CELL_12 0x902C
|
||||
#define PID_POLL_CELL_13 0x902D
|
||||
#define PID_POLL_CELL_14 0x902E
|
||||
#define PID_POLL_CELL_15 0x902F
|
||||
#define PID_POLL_CELL_16 0x9030
|
||||
#define PID_POLL_CELL_17 0x9031
|
||||
#define PID_POLL_CELL_18 0x9032
|
||||
#define PID_POLL_CELL_19 0x9033
|
||||
#define PID_POLL_CELL_20 0x9034
|
||||
#define PID_POLL_CELL_21 0x9035
|
||||
#define PID_POLL_CELL_22 0x9036
|
||||
#define PID_POLL_CELL_23 0x9037
|
||||
#define PID_POLL_CELL_24 0x9038
|
||||
#define PID_POLL_CELL_25 0x9039
|
||||
#define PID_POLL_CELL_26 0x903A
|
||||
#define PID_POLL_CELL_27 0x903B
|
||||
#define PID_POLL_CELL_28 0x903C
|
||||
#define PID_POLL_CELL_29 0x903D
|
||||
#define PID_POLL_CELL_30 0x903E
|
||||
#define PID_POLL_CELL_31 0x903F
|
||||
#define PID_POLL_DIDS_SUPPORTED_IN_RANGE_9041_9060 0x9040
|
||||
#define PID_POLL_CELL_32 0x9041
|
||||
#define PID_POLL_CELL_33 0x9042
|
||||
#define PID_POLL_CELL_34 0x9043
|
||||
#define PID_POLL_CELL_35 0x9044
|
||||
#define PID_POLL_CELL_36 0x9045
|
||||
#define PID_POLL_CELL_37 0x9046
|
||||
#define PID_POLL_CELL_38 0x9047
|
||||
#define PID_POLL_CELL_39 0x9048
|
||||
#define PID_POLL_CELL_40 0x9049
|
||||
#define PID_POLL_CELL_41 0x904A
|
||||
#define PID_POLL_CELL_42 0x904B
|
||||
#define PID_POLL_CELL_43 0x904C
|
||||
#define PID_POLL_CELL_44 0x904D
|
||||
#define PID_POLL_CELL_45 0x904E
|
||||
#define PID_POLL_CELL_46 0x904F
|
||||
#define PID_POLL_CELL_47 0x9050
|
||||
#define PID_POLL_CELL_48 0x9051
|
||||
#define PID_POLL_CELL_49 0x9052
|
||||
#define PID_POLL_CELL_50 0x9053
|
||||
#define PID_POLL_CELL_51 0x9054
|
||||
#define PID_POLL_CELL_52 0x9055
|
||||
#define PID_POLL_CELL_53 0x9056
|
||||
#define PID_POLL_CELL_54 0x9057
|
||||
#define PID_POLL_CELL_55 0x9058
|
||||
#define PID_POLL_CELL_56 0x9059
|
||||
#define PID_POLL_CELL_57 0x905A
|
||||
#define PID_POLL_CELL_58 0x905B
|
||||
#define PID_POLL_CELL_59 0x905C
|
||||
#define PID_POLL_CELL_60 0x905D
|
||||
#define PID_POLL_CELL_61 0x905E
|
||||
#define PID_POLL_CELL_62 0x905F
|
||||
#define PID_POLL_DIDS_SUPPORTED_IN_RANGE_9061_9080 0x9060
|
||||
#define PID_POLL_CELL_63 0x9061
|
||||
#define PID_POLL_CELL_64 0x9062
|
||||
#define PID_POLL_CELL_65 0x9063
|
||||
#define PID_POLL_CELL_66 0x9064
|
||||
#define PID_POLL_CELL_67 0x9065
|
||||
#define PID_POLL_CELL_68 0x9066
|
||||
#define PID_POLL_CELL_69 0x9067
|
||||
#define PID_POLL_CELL_70 0x9068
|
||||
#define PID_POLL_CELL_71 0x9069
|
||||
#define PID_POLL_CELL_72 0x906A
|
||||
/*
|
||||
#define PID_POLL_UNKNOWNX 0x9012 //749 in log
|
||||
#define PID_POLL_UNKNOWN3 0x9013 //736 in log
|
||||
#define PID_POLL_UNKNOWN4 0x9014 //752 in log
|
||||
#define PID_POLL_UNKNOWN4 0x901B // Multi frame message, lots of values ranging between 0x30 - 0x52
|
||||
#define PID_POLL_UNKNOWNX 0x912F // Multi frame message, empty
|
||||
#define PID_POLL_UNKNOWNX 0x9129
|
||||
#define PID_POLL_UNKNOWNX 0x9131
|
||||
|
@ -42,8 +121,10 @@
|
|||
#define PID_POLL_UNKNOWNX 0x913C
|
||||
#define PID_POLL_UNKNOWN5 0x912F
|
||||
#define PID_POLL_UNKNOWNX 0x91B7
|
||||
#define PID_POLL_SOH_AVAILABLE_POWER_CALCULATION 0x91BC // 0-100%
|
||||
#define PID_POLL_SOH_GENERATED_POWER_CALCULATION 0x91BD // 0-100%
|
||||
*/
|
||||
#define PID_POLL_SOH_AVAILABLE_POWER_CALCULATION 0x91BC // 0-100%
|
||||
#define PID_POLL_SOH_GENERATED_POWER_CALCULATION 0x91BD // 0-100%
|
||||
/*
|
||||
#define PID_POLL_UNKNOWNX 0x91C1
|
||||
#define PID_POLL_UNKNOWNX 0x91CD
|
||||
#define PID_POLL_UNKNOWNX 0x91CF
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue