hitl_tester.test_cases.bms.test_bms_state_checks
A simple test case to test states.
1""" 2A simple test case to test states. 3""" 4 5import pytest 6 7from hitl_tester.modules.bms.bms_serial import serial_monitor 8from hitl_tester.modules.bms.bms_hw import BMSHardware 9 10bms_hardware = BMSHardware(pytest.flags) # type: ignore[arg-type] 11bms_hardware.init() 12 13 14def power_on_test(): 15 """Power on the system.""" 16 # Default power up settings 17 bms_hardware.plateset.ce_switch = False # BMS configured as off the charger 18 bms_hardware.plateset.thermistor1 = 25 # set THERM1 to degrees C 19 bms_hardware.plateset.thermistor2 = 25 # set THERM2 to degrees C 20 bms_hardware.load.disable() # load relay off 21 bms_hardware.charger.disable() # charger relay off 22 23 bms_hardware.delay(2) # Delay before BMS powers on 24 25 v = 3.7 # start test with cell voltages at 3.7 26 27 bms_hardware.cells[1].volts = v # sets cell1 voltage 28 bms_hardware.cells[2].volts = v # sets cell2 voltage 29 bms_hardware.cells[3].volts = v # sets cell3 voltage 30 bms_hardware.cells[4].volts = v # sets cell4 voltage 31 32 bms_hardware.delay(5) 33 34 35def test_startup(): 36 """Test resting state.""" 37 bms_hardware.load.disable() # disable load 38 bms_hardware.delay(2) # wait for load to disable and isolate 39 bms_hardware.plateset.ce_switch = True # Enable charging 40 bms_hardware.charger.enable() # Turn on charger relay 41 bms_hardware.charger.set_profile(16.8, 0.035) 42 bms_hardware.delay(2) 43 states = serial_monitor.read() 44 assert bms_hardware.max_time <= 14 # set to 14 not zero because of various delays in startup 45 assert states["flags.state_resting"] is True # Put actual state check here when found 46 47 48def test_charging_state(): 49 """Test charging state.""" 50 bms_hardware.load.disable() # disable load 51 bms_hardware.delay(2) # wait for load to disable and isolate 52 bms_hardware.plateset.ce_switch = True # Enable charging 53 bms_hardware.charger.enable() # Turn on charger relay 54 bms_hardware.charger.set_profile(16.8, 0.035) 55 bms_hardware.delay(2) 56 bms_hardware.charge_rate = 146 57 states = serial_monitor.read() 58 59 assert bms_hardware.max_time == 0 60 assert states["flags.state_charging"] is True # Put actual state check here when found 61 62 63def test_discharging_state(): 64 """Test discharging state.""" 65 bms_hardware.load.disable() # disable load 66 bms_hardware.delay(2) # wait for load to disable and isolate 67 bms_hardware.plateset.ce_switch = True # Enable charging 68 bms_hardware.charger.enable() # Turn on charger relay 69 bms_hardware.charger.set_profile(16.8, 0.035) 70 bms_hardware.delay(2) 71 bms_hardware.charge_rate = -114 72 states = serial_monitor.read() 73 assert bms_hardware.max_time == 0 74 assert states["flags.state_discharging"] is True # Put actual state check here when found 75 76 77def test_discharging_to_resting(): 78 """Test discharging to resting state.""" 79 bms_hardware.load.disable() # disable load 80 bms_hardware.delay(2) # wait for load to disable and isolate 81 bms_hardware.plateset.ce_switch = True # Enable charging 82 bms_hardware.charger.enable() # Turn on charger relay 83 bms_hardware.charger.set_profile(16.8, 0.035) 84 bms_hardware.delay(2) 85 bms_hardware.charge_rate = -114 86 bms_hardware.max_time = 10798 87 bms_hardware.delay(3) 88 states = serial_monitor.read() 89 assert bms_hardware.max_time <= 10 90 assert states["flags.state_resting"] is True # Put actual state check here when found 91 92 93def test_charging_to_resting(): 94 """Test charging to resting state.""" 95 bms_hardware.load.disable() # disable load 96 bms_hardware.delay(2) # wait for load to disable and isolate 97 bms_hardware.plateset.ce_switch = True # Enable charging 98 bms_hardware.charger.enable() # Turn on charger relay 99 bms_hardware.charger.set_profile(16.8, 0.035) 100 bms_hardware.delay(2) 101 bms_hardware.charge_rate = 146 102 bms_hardware.max_time = 10798 103 bms_hardware.delay(3) 104 states = serial_monitor.read() 105 assert bms_hardware.max_time <= 10 106 assert states["flags.state_resting"] is True # Put actual state check here when found 107 108 109def test_charging_to_discharging(): 110 """Test charging to discharging state.""" 111 bms_hardware.load.disable() # disable load 112 bms_hardware.delay(2) # wait for load to disable and isolate 113 bms_hardware.plateset.ce_switch = True # Enable charging 114 bms_hardware.charger.enable() # Turn on charger relay 115 bms_hardware.charger.set_profile(16.8, 0.035) 116 bms_hardware.delay(2) 117 bms_hardware.charge_rate = 146 118 bms_hardware.delay(2) 119 bms_hardware.charge_rate = -114 120 states = serial_monitor.read() 121 122 assert bms_hardware.max_time == 0 123 assert states["flags.state_discharging"] is True # Put actual state check here when found 124 125 126def test_discharging_to_charging(): 127 """Test discharging to charging state.""" 128 bms_hardware.load.disable() # disable load 129 bms_hardware.delay(2) # wait for load to disable and isolate 130 bms_hardware.plateset.ce_switch = True # Enable charging 131 bms_hardware.charger.enable() # Turn on charger relay 132 bms_hardware.charger.set_profile(16.8, 0.035) 133 bms_hardware.delay(2) 134 bms_hardware.charge_rate = -114 135 bms_hardware.delay(2) 136 bms_hardware.charge_rate = 146 137 states = serial_monitor.read() 138 139 assert bms_hardware.max_time == 0 140 assert states["flags.state_charging"] is True # Put actual state check here when found
bms_hardware =
<hitl_tester.modules.bms.bms_hw.BMSHardware object>
def
power_on_test():
15def power_on_test(): 16 """Power on the system.""" 17 # Default power up settings 18 bms_hardware.plateset.ce_switch = False # BMS configured as off the charger 19 bms_hardware.plateset.thermistor1 = 25 # set THERM1 to degrees C 20 bms_hardware.plateset.thermistor2 = 25 # set THERM2 to degrees C 21 bms_hardware.load.disable() # load relay off 22 bms_hardware.charger.disable() # charger relay off 23 24 bms_hardware.delay(2) # Delay before BMS powers on 25 26 v = 3.7 # start test with cell voltages at 3.7 27 28 bms_hardware.cells[1].volts = v # sets cell1 voltage 29 bms_hardware.cells[2].volts = v # sets cell2 voltage 30 bms_hardware.cells[3].volts = v # sets cell3 voltage 31 bms_hardware.cells[4].volts = v # sets cell4 voltage 32 33 bms_hardware.delay(5)
Power on the system.
def
test_startup():
36def test_startup(): 37 """Test resting state.""" 38 bms_hardware.load.disable() # disable load 39 bms_hardware.delay(2) # wait for load to disable and isolate 40 bms_hardware.plateset.ce_switch = True # Enable charging 41 bms_hardware.charger.enable() # Turn on charger relay 42 bms_hardware.charger.set_profile(16.8, 0.035) 43 bms_hardware.delay(2) 44 states = serial_monitor.read() 45 assert bms_hardware.max_time <= 14 # set to 14 not zero because of various delays in startup 46 assert states["flags.state_resting"] is True # Put actual state check here when found
Test resting state.
def
test_charging_state():
49def test_charging_state(): 50 """Test charging state.""" 51 bms_hardware.load.disable() # disable load 52 bms_hardware.delay(2) # wait for load to disable and isolate 53 bms_hardware.plateset.ce_switch = True # Enable charging 54 bms_hardware.charger.enable() # Turn on charger relay 55 bms_hardware.charger.set_profile(16.8, 0.035) 56 bms_hardware.delay(2) 57 bms_hardware.charge_rate = 146 58 states = serial_monitor.read() 59 60 assert bms_hardware.max_time == 0 61 assert states["flags.state_charging"] is True # Put actual state check here when found
Test charging state.
def
test_discharging_state():
64def test_discharging_state(): 65 """Test discharging state.""" 66 bms_hardware.load.disable() # disable load 67 bms_hardware.delay(2) # wait for load to disable and isolate 68 bms_hardware.plateset.ce_switch = True # Enable charging 69 bms_hardware.charger.enable() # Turn on charger relay 70 bms_hardware.charger.set_profile(16.8, 0.035) 71 bms_hardware.delay(2) 72 bms_hardware.charge_rate = -114 73 states = serial_monitor.read() 74 assert bms_hardware.max_time == 0 75 assert states["flags.state_discharging"] is True # Put actual state check here when found
Test discharging state.
def
test_discharging_to_resting():
78def test_discharging_to_resting(): 79 """Test discharging to resting state.""" 80 bms_hardware.load.disable() # disable load 81 bms_hardware.delay(2) # wait for load to disable and isolate 82 bms_hardware.plateset.ce_switch = True # Enable charging 83 bms_hardware.charger.enable() # Turn on charger relay 84 bms_hardware.charger.set_profile(16.8, 0.035) 85 bms_hardware.delay(2) 86 bms_hardware.charge_rate = -114 87 bms_hardware.max_time = 10798 88 bms_hardware.delay(3) 89 states = serial_monitor.read() 90 assert bms_hardware.max_time <= 10 91 assert states["flags.state_resting"] is True # Put actual state check here when found
Test discharging to resting state.
def
test_charging_to_resting():
94def test_charging_to_resting(): 95 """Test charging to resting state.""" 96 bms_hardware.load.disable() # disable load 97 bms_hardware.delay(2) # wait for load to disable and isolate 98 bms_hardware.plateset.ce_switch = True # Enable charging 99 bms_hardware.charger.enable() # Turn on charger relay 100 bms_hardware.charger.set_profile(16.8, 0.035) 101 bms_hardware.delay(2) 102 bms_hardware.charge_rate = 146 103 bms_hardware.max_time = 10798 104 bms_hardware.delay(3) 105 states = serial_monitor.read() 106 assert bms_hardware.max_time <= 10 107 assert states["flags.state_resting"] is True # Put actual state check here when found
Test charging to resting state.
def
test_charging_to_discharging():
110def test_charging_to_discharging(): 111 """Test charging to discharging state.""" 112 bms_hardware.load.disable() # disable load 113 bms_hardware.delay(2) # wait for load to disable and isolate 114 bms_hardware.plateset.ce_switch = True # Enable charging 115 bms_hardware.charger.enable() # Turn on charger relay 116 bms_hardware.charger.set_profile(16.8, 0.035) 117 bms_hardware.delay(2) 118 bms_hardware.charge_rate = 146 119 bms_hardware.delay(2) 120 bms_hardware.charge_rate = -114 121 states = serial_monitor.read() 122 123 assert bms_hardware.max_time == 0 124 assert states["flags.state_discharging"] is True # Put actual state check here when found
Test charging to discharging state.
def
test_discharging_to_charging():
127def test_discharging_to_charging(): 128 """Test discharging to charging state.""" 129 bms_hardware.load.disable() # disable load 130 bms_hardware.delay(2) # wait for load to disable and isolate 131 bms_hardware.plateset.ce_switch = True # Enable charging 132 bms_hardware.charger.enable() # Turn on charger relay 133 bms_hardware.charger.set_profile(16.8, 0.035) 134 bms_hardware.delay(2) 135 bms_hardware.charge_rate = -114 136 bms_hardware.delay(2) 137 bms_hardware.charge_rate = 146 138 states = serial_monitor.read() 139 140 assert bms_hardware.max_time == 0 141 assert states["flags.state_charging"] is True # Put actual state check here when found
Test discharging to charging state.