Skip to content

Commit

Permalink
Updated unit tests for the 5000ms delay
Browse files Browse the repository at this point in the history
  • Loading branch information
jhwang04 committed Jul 9, 2024
1 parent 4c11918 commit 507da84
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 22 deletions.
16 changes: 8 additions & 8 deletions lib/interfaces/src/AMSInterface.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -116,14 +116,6 @@ void AMSInterface::calculate_SoC_acu(const SysTick_s &tick) {

void AMSInterface::tick(const SysTick_s &tick) {

// If AMSInterface has a valid reading in bms_voltages_ and enough time has passed since init(), then initialize charge
if (!has_initialized_charge_ && ((tick.millis - timestamp_start_) > DEFAULT_INITIALIZATION_WAIT_INTERVAL)) {

initialize_charge();
has_initialized_charge_ = true;

}

// Only calculate the updated SoC if charge has been properly initialized.
if (has_initialized_charge_) {
// Do not edit this block! If both calculate_SoC_em AND calculate_SoC_acu are run,
Expand All @@ -135,6 +127,14 @@ void AMSInterface::tick(const SysTick_s &tick) {
}
}

// If AMSInterface has a valid reading in bms_voltages_ and enough time has passed since init(), then initialize charge
if (!has_initialized_charge_ && ((tick.millis - timestamp_start_) >= DEFAULT_INITIALIZATION_WAIT_INTERVAL)) {

initialize_charge();
has_initialized_charge_ = true;

}

// Send CAN message
// enqueue_state_of_charge_CAN();
STATE_OF_CHARGE_t soc_struct;
Expand Down
37 changes: 23 additions & 14 deletions test/test_interfaces/Coulomb_Counting_Tests.h
Original file line number Diff line number Diff line change
Expand Up @@ -79,9 +79,13 @@ void test_calculate_SoC_em()
interface.retrieve_em_measurement_CAN(em_measurements_can); // Reads CAN message into the acu_shunt_measurements_ member variable


// TEST CASE ZERO - 5000ms to allow initialization to happen
SysTick_s tick_zero;
tick_zero.millis = starting_millis + 5000;
tick_zero.micros = starting_micros + 1000000;

// Call tick() once (with no delta t) so that initialize_charge() will be called
interface.tick(starting_tick);
interface.tick(tick_zero);

// assert initial SoC is correct
TEST_ASSERT_EQUAL_FLOAT(75.0, interface.get_SoC());
Expand All @@ -91,8 +95,8 @@ void test_calculate_SoC_em()

// TEST CASE ONE - 10ms - 25amps
SysTick_s tick_one;
tick_one.millis = starting_millis + 10;
tick_one.micros = starting_micros + 10000;
tick_one.millis = tick_zero.millis + 10;
tick_one.micros = tick_zero.micros + 10000;

// 25 amps of current * 0.01sec = 0.25 coulombs of charge.
// Starting charge = 75%, so 36450 coulombs. After this,
Expand All @@ -104,8 +108,8 @@ void test_calculate_SoC_em()

// TEST CASE TWO - 20ms - 50amps
SysTick_s tick_two;
tick_two.millis = starting_millis + 10 + 20;
tick_two.micros = starting_micros + 10000 + 20000;
tick_two.millis = tick_zero.millis + 10 + 20;
tick_two.micros = tick_zero.micros + 10000 + 20000;

em_measurements_can = generate_can_msg_from_uint_32s(HYTECH_em_current_ro_toS(50.0f), HYTECH_em_voltage_ro_toS(530.5f), true);
interface.retrieve_em_measurement_CAN(em_measurements_can); // Reads CAN message into the acu_shunt_measurements_ member variable
Expand All @@ -125,8 +129,8 @@ void test_calculate_SoC_em()

for (int i = 0; i <= 10000000; i += 20000) {
SysTick_s curr_tick;
curr_tick.millis = starting_millis + 10 + 20 + i/1000;
curr_tick.micros = starting_micros + 10000 + 20000 + i;
curr_tick.millis = tick_zero.millis + 10 + 20 + i/1000;
curr_tick.micros = tick_zero.micros + 10000 + 20000 + i;
interface.tick(curr_tick);
}

Expand Down Expand Up @@ -165,8 +169,13 @@ void test_calculate_SoC_acu()



// TEST CASE ZERO - 5000ms to allow initialization to happen
SysTick_s tick_zero;
tick_zero.millis = starting_millis + 5000;
tick_zero.micros = starting_micros + 1000000;

// Call tick() once (with no delta t) so that initialize_charge() will be called
interface.tick(starting_tick);
interface.tick(tick_zero);
// assert initial SoC is correct
TEST_ASSERT_EQUAL_FLOAT(75.0, interface.get_SoC());

Expand All @@ -175,8 +184,8 @@ void test_calculate_SoC_acu()

// TEST CASE ONE - 10ms - 25amps
SysTick_s tick_one;
tick_one.millis = starting_millis + 10;
tick_one.micros = starting_micros + 10000;
tick_one.millis = tick_zero.millis + 10;
tick_one.micros = tick_zero.micros + 10000;

// 25 amps of current * 0.01sec = 0.25 coulombs of charge.
// Starting charge = 75%, so 36450 coulombs. After this,
Expand All @@ -188,8 +197,8 @@ void test_calculate_SoC_acu()

// TEST CASE TWO - 20ms - 50amps
SysTick_s tick_two;
tick_two.millis = starting_millis + 10 + 20;
tick_two.micros = starting_micros + 10000 + 20000;
tick_two.millis = tick_zero.millis + 10 + 20;
tick_two.micros = tick_zero.micros + 10000 + 20000;

acu_measurements_can = generate_can_msg_from_uint_16s(2458, HYTECH_pack_filtered_read_ro_toS(0.0), HYTECH_ts_out_filtered_read_ro_toS(0.0), 0, false);
interface.retrieve_current_shunt_CAN(acu_measurements_can); // Reads CAN message into the acu_shunt_measurements_ member variable
Expand All @@ -209,8 +218,8 @@ void test_calculate_SoC_acu()

for (int i = 0; i <= 10000000; i += 20000) {
SysTick_s curr_tick;
curr_tick.millis = starting_millis + 10 + 20 + i/1000;
curr_tick.micros = starting_micros + 10000 + 20000 + i;
curr_tick.millis = tick_zero.millis + 10 + 20 + i/1000;
curr_tick.micros = tick_zero.micros + 10000 + 20000 + i;
interface.tick(curr_tick);
}

Expand Down

0 comments on commit 507da84

Please sign in to comment.