8. Checking-up foxBMS¶
This section describes how to test the BMS-Master Board with one BMS-Slave Board connected. These tests show if the hardware and software components of the BMS-Master Board and BMS-Slave Board are working correctly:
8.1. Required Hardware¶
- 1 * BMS-Master Board including a supply cable
- 1 * BMS-Slave Board
- 1 * Battery voltage simulation at the BMS-Slave Board (e.g., voltage divider)
- 1 * CAN-Bus to PC adapter
- 1 * Normally closed switch for opening the
interlock
(hereafter referred to asemergency off
)- 3 * Contactors with normally open feedback (hereafter referred to as
plus main contactor
,plus precharge contactor
,minus main contactor
)- 1 * Debugger (optionally, but recommended)
8.1.1. Testing Without Debugger¶
It is also possible to get little information if the system is running correctly without variable checking on the debugger. When requesting the later described states to the BMS, the contactors opening and closing can be heard.
8.1.2. Testing With Debugger¶
This test procedure gives more detailed test information when a debugger is used. The following variables should be checked during the test:
os_timer
sys_state
bms_state
ltc_cellvoltage
cont_contactor_states
ilck_interlock_state
8.2. Required Software¶
- foxBMS binaries for MCU0 (latest release on GitHub for primary)
- foxBMS binaries for MCU1 (latest release on GitHub for secondary)
- Debugger-Software
- Software to send CAN messages from the PC on the CAN bus.
- CAN message for Normal and Standby
8.3. Test Procedure¶
The test procedure consists of three steps:
- Preparing the hardware
- Building the software from source
- Requesting bms-states to BMS-Master Board and checking variable values on the debugger
If no debugger is available, only a partially test if all parts of foxBMS are running correctly can be performed. As mentioned above, it can be checked accoustically if the contactors are opening and closing. This is marked in the Test with (H) and the corresponding explanation if needed.
8.3.1. Hardware Setup¶
- Apply voltages to the BMS-Slave Board cell measurement inputs (e.g., voltage divider)
- Connect the daisy chain connector from the BMS-Slave Board to the BMS-Master Board.
- Connect the
emergency off
to theinterlock
of the BMS-Master Board. - Connect the following contactors to the BMS-Master Board:
contactor 0
theplus main contactor
in the positive current pathcontactor 1
theplus precharge contactor
in the positive current pathcontactor 2
theminus main contactor
in the negative current path
- Connect the CAN-interface to the PC
- The debugger is connected from the PC to the JTAG-interface of MCU0 of BMS-Master Board (optional).
8.3.2. Software Setup¶
- Build the foxBMS binaries for both, MCU0 and MCU1.
8.3.3. Test¶
Power BMS-Master Board
Flash foxBMS MCU0 binaries on MCU0
Flash foxBMS MCU1 binaries on MCU1
Start CAN-communication viewer (e.g., PCAN-View when using PCAN-USB)
Restart BMS-Master Board
Send CAN message for Request Standby-state via CAN
Check on the debugger if the system timer is running; variable:
os_timer
Check if BMS-Slave Board reads voltages; variable:
ltc_cellvoltage
Request Standby-state via CAN
- Check on the debugger if
interlock
is closed (variable:ilck_interlock_state
withilck_interlock_state.feedback=ILCK_SWITCH_ON
)
- Check on the debugger if
Request Normal-state via CAN
- Check on the debugger if contactors are closed in the correct order (variable:
cont_contactor_states
)- close
minus main contactor
- close
plus precharge contactor
- close
plus main contactor
- open
plus precharge contactor
- close
(H): If this test is performed with no debugger, contactors can be clicking four times.
- Check on the debugger if contactors are closed in the correct order (variable:
Request Standby-state via CAN
- Check on the debugger if
interlock
is closed (variable:ilck_interlock_state
) - Check on the debugger if contactors are opened (variable:
cont_contactor_states
)
(H): If this test is performed with no debugger, each contactor can be heard clicking one time.
- Check on the debugger if
Request Normal-state via CAN
- Check on the debugger if contactors are closed in the correct order (variable:
cont_contactor_states
)- close
minus main contactor
- close
plus precharge contactor
- close
plus main contactor
- open
plus precharge contactor
- close
(H): If this test is performed with no debugger, contactors can be heard clicking four times.
- Check on the debugger if contactors are closed in the correct order (variable:
Open
interlock
by pressingemergency off
- Check on the debugger if
interlock
is opened (variable:ilck_interlock_state
) - Check on the debugger if contactors are opened (variable:
cont_contactor_states
)
(H): If this test is performed with no debugger, each contactor can be heard clicking one time.
- Check on the debugger if
Request Normal-state via CAN
- BMS should switch to
bms_state.state=BMS_STATEMACH_ERROR
as theinterlock
is still open (variablebms_state
)
- BMS should switch to
Close
interlock
by releasingemergency off
- Check on the debugger if
interlock
is still open (variable:ilck_interlock_state
) - BMS has to stay in error state (check variable
bms_state
)
- Check on the debugger if
Request Standby-state via CAN
- Check on the debugger if
interlock
is closed (variable:ilck_interlock_state
) - Check on the debugger if contactors are still open (variable:
cont_contactor_states
)
- Check on the debugger if
Request Normal-state via CAN
- Check on the debugger if contactors are closed in the correct order (variable:
cont_contactor_states
)- close
minus main contactor
- close
plus precharge contactor
- close
plus main contactor
- open
plus precharge contactor
- close
(H): If this test is performed with no debugger, contactors can be heard clicking four times.
- Check on the debugger if contactors are closed in the correct order (variable:
Request Standby-state via CAN
- Check on the debugger if
interlock
is closed (variable:ilck_interlock_state
) - Check on the debugger if contactors are still open (variable:
cont_contactor_states
)
- Check on the debugger if
done