Revision changes
BMS Master, hardware
Lithiumate Pro, 2CN0000
- Rev B*, May 2009 - Release, patched (2 units)
- Rev C*, May 2009 - Patched (10 units)
- Rev D*, June 2009 - Replaced Schottky diodes, patched(25 units)
- Rev E, July 2009 - Updated PCB, improved bank inputs circuit (50 units)
- Rev F, Sept 2009 - Changed pin-out of programming port to match PICkit programmer. Present production rev (since Sept 2009, 1650 units through 2014)
(*) NOTE: Not compatible with newer positive cell boards with 470 Ohm resistors
Lithiumate HD, 2CN0002
- Rev B, Jan 2015 - Release
BMS controller, 2CN0000 software 1.xx
Rev 0.80
11/02/08
Rev 1.00
09/25/09
Rev 1.01
09/25/09
- Added status table screen
Rev 1.02
10/15/09
- Fixed status table screen
- Added support for the HVFE remote
Rev 1.03
11/29/09
Rev 1.04
12/28/09
- If the most charged cell voltage exceeds the Maximum Cell Voltage, clear the DOD
- Heating using balance resistors
- Removed Macros to preset cable mounted source current sensor, to make space for more menus
- Hardware rev is placed on CAN bus and About screen
- FAN can be controlled through the CAN bus
Rev 1.05
2/6/10
- CAN:
- instantaneous cell voltage, not averaged
- fixed code to use a particular bit and polarity the contactor control CAN message
- now reads the pack voltage from the HVFE
- implemented PID support, including a way to clear the stored fault code and to clear the fault state through the CAN bus
- Pack Resistance units are now consistently 100 uOhm throughout the program
- removed the ability to reprogramm the EEPROM through address 7FFh, as it is now possible to do so through PIDs
- Added 1 Mb CAN rate
- Turn on red LED in case of warning
- Added CAN control of outflags
- Added support for the Prius
- RS232
- added way to clear the stored fault code in the System Status screen
- added 'k' as a way to clear stored faults / fault state, and to clear numeric entries
- removed unused QSI codes
- removed DEL as an entry, as it wasn't usable
- removed test for Escape key, as it was duplicated, and the ESC key is already used to go back down one level
- added node to select method to read pack voltage: sum of cell voltages or from HVFE
- pack stats shows both methods of pack voltage: sum of cell voltages and from HVFE
- in any Status screen, Resistance is now shown with 1 decimal
- added load off temperature to the cell status screen
- 1 Mb CAN rate selector
- Added a selection to reverse the direction of the analog outputs
- Removed Clamp SOC option, no longer used
- In the pack status screen show actual capacity, as well as nominal capacity
- Added a couple of J1939 CAN messages to meet X-Prize requirements
- added programmable filtering time constant on averages
- FAULTS
- cleaned up the current limit warning and faults, so that a CCL or DCL of 100 % (= FFh) will never fail when the current is exactly at the limit
- CURRENT LIMITS
- without cells (and therefore a pack voltage of 0) the DCL was set to 0%, even if the Low and Min Pack Voltage settings were cleared
- changed the Low and Min Pack Voltage settings defaults to 0, and tweaked the Pack Voltage so that the comparison to the settings wouldn't trigger a 0 DCL
- MISC
- improved the calculation of pack resistance: with only 1 battery, do a straight sum or cell resistances (no conversion to conductance)
- added 1 byte to the conductance, to get improved resolution
- increased the max power in power calculation above 160 kW. Now, max power is 3.2 MW
- operation with no cell boards (X-Prize) is now possible
- Removed code that drives the Current LED, as recent hardware does not use it
- Added low SOH warning
- Changed units for stateOfCharge from [%] to {0.5%}, to get increased resolution
- Totally rewritten the SOC and DOD algorithms
- Squeezed 2 nybbles in 1 byte in a few variables in EEPROM, which affects the EEPROM locations of a few settings
- Added PRIUS code
Rev 1.06
3/6/10
- Prius: DCL and CCL were swapped
Rev 1.07
3/24/10
Added support for Elcon charger's CAN bus
Completely redefined SOH
Added a way to select IR drop compensation, through the Resistance set-up menu
- Fixed error in the CAN dump message: since I added the table with the temperature with the load off in rev 0.97, the bytes in the dump were wrong
- Completely changed the SOH menu: now it only has a single item: minimum SOH, below which a warning is issued
- Added a comma between items in the list of faults and warnings
- Added as way to select the current below which we don't calculate SOC and DOD
- The Monitor screen for the A/D inputs used to show only 3 digits, now shows 5
- When resetting factory defaults, reset the relative capacity and the SOC as well
- If no data on the Source or Load current, clear its value (such as after the CAN messages end)
- Updated the message ID to the Morey for the X-Prize
Rev 1.08
4/4/10
- Changed the default for X-Prize: CAN speed to 250 kHz, external Load current sensor on, 0 to 100 % SOC regardless of cell voltage, no unnecessary messages on the CAN bus
- Corrected the Pack Voltage sent to the Morey: the Alternate Pack Voltage, from the HVFE
Rev 1.09
4/12/10
- Added a delay before charging is enabled, to keep the Brusa from generating an error, and to allow the cell boards to read the resistance correctly
Rev 1.10
4/21/10
Rev 1.11
5/21/10
- Turn on K3 first, K1 afterward
Rev 1.12
5/26/10
- Programmable charger turn on delay (by direct manipulation of a EEPROM bit); default is on
Rev 1.13
6/1/10
Rev 1.14
6/14/10
Rev 1.15
6/15/10
- Restored code to calculate pack voltage for multiple batteries in parallel, which was correct before
Rev 1.16
6/30/10
Rev 1.17
8/8/10
Save the SOC is EEPROM more often, in case the BMS controller is not able to see when the power goes away
Significantly rewritten the SOC / DOD code, automatically distinguishing between EV, HEV, PHEV, UPS and Peak Shaver, and calculating SOC in the best way for each application
- Warning flag set if discharging, and any cell voltage is below V-low
- "cell number with max resistance" byte in standard messages now shows the right value
- Added rounding to the Power calculation, to improve the accuracy at low power levels
- Fixed bug that resulted in the wrong value occasionally appearing in the RS232 terminal when checking the settings
- Added a screen that lists all the settings and their values
- Removed "VS NOT USED" setting, as it is no longer used
- Red LED in SOC display now flashes
- Removed nominal capacity from pack status screen, as it is available elsewhere (now just shows actual capacity)
- Cleaned up a few messages in RS232 user interface
Rev 1.18
10/12/10
The menu "in case of Fault, turn off contactors ", now also affects HLIM/CCL and LLIM/DCL; the default is that, in case of Fault, contactors are turned off, and HLIM and LLIM are activated
- Fixed overflow in max voltage to the Brusa
- Added code special to the Helsinki University of Technology: use external thermistors, 4 kHz PWM frequency
- Corrected bug introduced in rev 1.14: was not allowing 8-byte custom messages
- Cleaned up a bit the way the cause for a limit is shown on the screen
Rev 1.19
10/29/10
Rev 1.20
Rev 1.21
- 11/16/10
- Improvements to Helsinki code
Rev 1.22
- 4/19/11
- Fixed bug in custom CAN message code: was reporting minimum cell voltage instead of max
Rev 1.23
- 5/20/11
- University of Helsinki code: removed Hot cell board temperature during balancing test
Rev 1.24
Rev 1.25
- 8/1/11
Added support for the Current Ways charger
Added support for the Eltek charger
Added more variables available for a custom message
- Added blank time after the HLIM or LLIM become active, to disable over-current detection for a few seconds
- Show the HVFE test voltage bit in the test dump screen
- If overriding the outputs, clear the Relay State, so that, when the override is done, the relays start from off
- Overriding the outputs now does prevent the normal code from setting a fault
Rev 1.26
Rev 1.27
- 9/7/11
- Added support for 1 MHz CAN speed programmed through the CAN bus
- Tweaked the Current Ways code
- Loss of CAN messages from the HVFE results in a Contactor fault
Rev 1.28
Rev 1.29
- 11/29/11
- Increased the number of digits shown in the Pack Status screen for the Capacity
- Display the actual capacity with 5 digits i/o 3
Rev 1.30
- 1/5/12
- Special for Orun: Slowed Baud rate, slowed data reporting rate
Rev 1.31
- 1/9/12
- Special for Helsinki: Max precharge time set at 30 s
Rev 1.32
- 4/16/12
- Extended the time-out for current messages from the Current Ways charger
- Added display current limits in Amps and charger voltage limit in the system status screen
Rev 1.33
BMS controller, 2CN0000 software 2.xx
Rev 2.01
- 6/12/12
Support for GUI
Self service software upgrades
Support for Torque PIDs on Android
Adjustable RS232 baud rate
Parallel charging / series discharging
Variable report rate for "Status, as a table" and for RS232 dump
Adjustable isolation test time
Repeated isolation tests
Added a test screen for the CAN bus
- Removed all Orun Energy, Escape and Prius code
- Removed HVFE A/D reading, as the local HVFE is obsolete
- If overriding the outputs, the relay state stays stuck in test battery voltage
- Better handling of end of over-current, to allow the fault to be cleared
- Cell reading: speed up recovery: don't wait for the end of the aux data to restart
- No longer refreshes the RS232 screen every 16 s
- Load factory defaults at first power-up to avoid duplicating settings in eedata
- Add a termination character at the end of a screen in plain RS232 screens
- After restoring factory defaults, it resets the program
Rev 2.02
Rev 2.03
- 7/30/12
- Fix to time-out for current messages from a charger
- Doubled the time-out for receiving data from the GUI, to help when computer is too slow, and BMS times out and doesn't accept new settings
Rev 2.04
- 8/7/12
- Forcing FLT output for testing now work even if the FLT output is used as a Warning output
- Gain of load current sensor works (it was halved in rev 2.01)
Rev 2.05
- 9/28/12
- Added DOD in 1/256 Ah to the custom message items list
- Resistance is calculated and reported, but not used internally (not used for for IR compensation); nominal value is used instead
- Nominal cell resistance can be compensated based on temperature and SOC (GUI is required to set-up compensation parameters)
- Added support for TIM 600 motor driver, by CEBI / MES
Rev 2.06
- 10/28/12
- Fixes (HLIM and LLIM were swapped, Discharge limit was controlled by CCL instead of DCL), changes (Vmax is now the same as the V-Pack_max setting) and additions (Vmin is now the same as the V-Pack_min setting) to TIM inverter support
- Warning uses averaged instead instantaneous minimum cell voltage: slows down warning response
Rev 2.07
Rev 2.08
Rev 2.09
Rev 2.16
- 1/13/13
- Was not checking the precharge resistor through the HVFE (since rev 2.01)
- When turning on contactors, during the precharge test, request a message from the HVFE every 10 ms
- If the pack voltage reading from the HVFE was selected as the pack voltage, the value shown was jumping between 0 and a high, bogus number
- Contactor test for presence of battery voltage uses reading from the HVFE instead of the isolation sensors
Rev 2.17
- 2/5/13
- On CAN bus, standard message ID 626h reports actual capacity instead of nominal capacity
- Added PID 57h, to report actual capacity
- Capacity is calculated when the average minimum cell voltage reaches a new setting, instead of the empty voltage in the SOC points
Rev 2.18
Rev 2.19
- 3/17/13
- Fixed EEPROM reading / writing through PIDs, broken in rev 2.08
Rev 2.20
- 4/15/13
Added many additional options for isolation detection, algorithm that may help in noisy situations
Added ability to keep LLIM off until precharge is completed
Rev 2.21
- 4/25/13
- Fixed endianness for CAN messages to MES-CEBI TIM inverter
Rev 2.22
- 5/30/13
- Fixed FAN PWM (broken in rev 2.02)
Rev 2.23
Rev 2.24
Rev 2.25
- 10/15/13
- Custom message gave minimum voltage for cell voltage, now gives average voltage
Rev 2.26
- 11/6/13
- For strings in parallel, GUI histogram now shows all cells, not just the 1st string
- Restored the proper format for the RS232 data dump for cell data
- Cell voltage must remain below the threshold for a full 10 s (does not have to be consecutive) before capacity is recalculated
Rev 2.27
Rev 2.28
Rev 2.29
- Feb 22 2014
- With 256 cells in series, reports correct pack voltage
Rev 2.30
- March 3 2014
- Removed test code in the default table
- Powerful Battery Solutions tag
Rev 2.31
- March 24 2014
- Cleared Temperature compensation of cell voltages
Rev 2.32
- Feb 5 2015
- Support for HD master
Rev 2.33
- Apr 1 2015
- Ability to disable faults in case of HVFE lost comm
- Added support for strings in parallel in the Lithiumate HD Master
Rev 2.34
Rev 2.35
- Jul 1 2015
- Relay task uses instantaneous current instead of averaged
Rev 2.37
Rev 2.38
Rev 2.39
Rev 2.40
- Jun 2016
- Fix to Zivan support
Rev 2.41
- Aug 9 2016
- Fix to Zivan support
Rev 2.44
- Aug 11 2016
- Fix to Zivan support
- Current below the SOC current threshold will not cause an over-current fault
Rev 2.47
- Feb 8 2017
- Fix for masters without an HVFE (hvVtgAbsent)
Rev 2.56
- Oct 12 2017
- Small fixes for SMA inverter: from 100 ms to 1 s, moved SOC to byte 0 of message 0x355
Rev 2.57
- Oct 25 2017
- Clamp current limit for Brusa NLG6 charger to max it can handle
- If bank comm error, wait 2 seconds for cell boards to go to sleep, then start from scratch
Rev 2.71
- Nov 11 2017
- Fix comm for Brusa NLG6 charger
Rev 2.72
- Jan 3 2018
- Fixed Number of Missing Banks
- Bank comm fault issued after a number of cycles with comm faults
Rev 2.73
- Jan 8 2018
- Increased time off while cell boards reset after a bank comm error
Rev 2.74
Rev 2.76
- Feb 22 2018
- Bank comm error restarts bank comm machine in BMS
Rev 2.78
Rev 2.80
- Mar 4 2018
- Reduced the amount of initialization of the bank comm machine in BMS in case of bank comm error
Rev 2.81
- Mar 4 2018
- Clean up of cell code
Rev 2.82
- Mar 22 2018
- Issue faults to the SMA inverter only if the BMS Fault line is active
Rev 2.83
- Mar 25 2018
- Improved resilience to register corruption, in particular to avoid random clearing the number of cell in bank 0
Rev 2.84
- Mar 31 2018
- Fixed bug introduced in previous rev: received only the first CAN message, then no more
Rev 2.89
Rev 2.90
Rev 2.91
- 9/19/19
- Automatic threshold detection for bank communications
Rev 2.92
Remote HVFE, 2HR0xxx
Rev 1.00
Rev 1.01
- 11/04/09
- Changed the code to select a load sensor, so that no 0 ohm resistors = no sensors
Rev 1.02
- 12/19/09
- Reduced current consumption from 24 mA to 19 mA by going to IDLE mode (for the entire board)
- Fixed bug: when responding to a request from the BMS controller, the current reported was incorrect
- Now it's possible to have a low current sensor and no high current sensor
- Added variable rate for the Status messages
Rev 1.03
- 04/01/10
- Adapted to rev D
- Added X-Prize preset
Rev 1.04
Rev 1.05
- 07/13/10
- Status LED: changed variable name, used LATC i/o PORTC
Rev 1.06
Rev 1.07
- 10/10/11
- Recompile for 2480
Rev 1.08
- 6/21/12
Variable CAN Rx timing