Revision changes
BMS controller, 2CN0000
Rev 1.00
09/25/09
- Release
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
- Added the ability to change the configuration through the CAN bus
- Pressing a digit in the cell status screen no longer results in a scrolling screen
Pressing the '<' key goes from cell 0 to cell N-1
- Cell boards work down to 2.06 V
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
Gave "ElCon" a separate flag than "Overcurrent can start a fault"
- Able to work with a "Fault Delay" = 0
- Interlock now causes immediate fault (within 120 ms), regardless of "Fault Delay"
- In the PID for min and max temperature, show both "load off" and "all"
- Added DOD as an option to custom CAN message
- In the System Status screen, pressing the 'K' key also clears a relay fault
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
- Changed the turn-on order of relays: Turn on K1 first, K3 afterward
- Improved instructions in Nominal Capacity screen
Improved the resolution in the SOC calculation when pack capacity < 100 Ah
- Power-up charge delay is now programmable on and off
Rev 1.14
6/14/10
Cell readings rate can be varied (default is still 1/s)
- SOC shown in event log screen was twice the actual value
- HLIM cause shown in status / system screen started with "Power Up Delay" even if the Power Up delay was disabled, now fixed
- Two bytes shown for nybble variables ("0 to 15", such as Number of batteries in parallel) instead of just one ("0 to 9")
- Number of batteries in parallel now can go up to 15
- Custom CAN message data length now limited to valid values
- In RS232 dump, number of banks missing / number of a missing bank now works
- In CAN PID support, number of a missing bank now works
- Missing banks code in RS232 dump was always 0, now works
- When using multiple batteries in parallel, pack voltage is computed correctly {WRONG: see below}
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
Reduced the possibility of Over-current faults: when HLIM/LLIM is disabled, over-current fault occurs if the Pack Current is more than the setting of Minimum Current for SOC calculations
- While charging, if the SOC reaches 100 % , it is set in EEPROM immediately (so that, if the BMS is not able to detect when the charger is unplugged, it can still store it in EEPROM)
- During regen, do only Coulomb Counting, and never Voltage Translation, to avoid setting the SOC to 100 % during high regen
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
- Warning flag turns on Red LED in SOC display (Red LED is turned on in case of Fault or in case of Low Voltage Discharge)
Added way to use FLT output to reflect Warning flag instead of Fault state.
- "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
Added support for the NetGain Warp-drive motor controller
- CAN messages with 0 data bytes that are received, are ignored.
- Changed the Helsinki temperature correction algorithm
- Fixed a bug introduced in rev 1.05, that resulted in a 0 % DCL if the battery pack voltage was 255 V
Rev 1.20
- 11/08/10
Added a preference to disable capacity calibration
Added a test screen that dumps all the cell voltages
- In order to make space for the 2 above nodes, removed the Max Reported SOC node and skipped one step to set the SOH threshold
- Small changes to text in screens
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
- 7/15/11
Ability to select EV mode only (no HEV mode)
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
- 8/30/11
Balancing can be disabled if powered by VL
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
- 9/13/11
Added very low temperature charging (at low current)
- Used RESET instruction
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
Remote HVFE, 2HR0xxx
Rev 1.00
- 10/27/09
- Release
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
- 7/06/10
Added way to use the large current sensor as the source current sensor
Adapted to rev E, P18F2580
- Added support for the Status LED, which blinks once per transmitted status message
Rev 1.05
- 07/13/10
- Status LED: changed variable name, used LATC i/o PORTC
Rev 1.06
- 08/26/11
Added current sensor offset
Added 1 MHz support
