4.2 Charger Integration
A charger with a CAN interface can take its voltage and current from the BMS instead of from its own settings. This page shows when that is worth doing, how the BMS asks the charger for current, how to fill the charging current table, how the BMS detects the charger and what it can do with the paths while a charger is connected, and how to check that it works. The settings are on the Integration tab of LiMon™.
Applies to
Boards: BMS1820, BMS3610, BCU2002, BMS1601, BMS1810. Where BMS1810 differs, the text says so.
4.2.1 How It Works
When to use it. Three cases:
- A charger without CAN control charges with its own voltage and current. The BMS protects the cells by switching the charge path OFF (3.8 Power Path) and can signal the charger through an output, for example Cell Over Voltage Warning (3.10 Inputs and Outputs). Leave Charger Canbus Comm. off.
- A CAN charger that accepts a charge request can be driven by the BMS: the BMS sets the voltage, lowers the current by SoC and temperature, and asks the charger to stop when the pack is full. The charger then slows down before a protection has to open the charge path. This is what this page sets up.
- A CAN charger that only sends its own frames can still be detected, so that the BMS switches the paths while it is connected (charger detection, below). Turn on Charger Connection Detection and leave Charger Canbus Comm. off.
Fig.4.2.1: Charge Request and Charger Detection
The charge request. With Charger Canbus Comm. on, the BMS sends a charge request on its CAN port with the identifier Charge Request TxD ID. It carries three values: the Target Charge Voltage, the current from the Charging Current Table (Amp), and charge or stop. The BMS sends it at every CANBus CH#1 Data Period, also when no charger is detected, and sends none while that period is Disabled. BMS1810 sends it every second, whatever the period. The CAN port, its speed and its period are set up as in 4.1 Communication Ports. The frame layout is in OEM Type 1 Digital Charger.
Voltage and current. The requested current is a limit: the charger delivers up to that current until the pack reaches the target voltage, and then lowers the current itself while it holds the voltage. This constant-voltage phase is what FULL detection waits for (3.2 Capacity and SoC).
Charging current table. The table has one row per SoC band and one column per temperature band. The BMS takes the cell where the present SoC and temperature meet:
- Rows: 0-10, 10-20, 20-80, 80-90, 90-95 and 95-100 %. The upper value belongs to the band, so a SoC of 10 % uses the 0-10 row.
- Columns: the highest sensor temperature, Max Ext. Temp. in Live View, selects 0-10 (above 0 °C up to 10 °C), 10-50, 50-60 or >60 °C. The <0 column is used while the average of the temperature sensors is 0 °C or below.
- Steps: the current changes in steps when the SoC or the temperature crosses a band edge. The BMS does not blend neighbouring cells.
- Values: whole amperes. A 0 asks the charger for no current.
When the request says stop. The request asks the charger to stop:
- while the BMS precharges the load (3.9 Precharge);
- when the SoC reaches 100 %. With Hold %99 until FULL SoC on, that happens only when the pack is really full (3.2 Capacity and SoC). The BMS asks for charge again once the SoC is below 100 %, for example after a discharge;
- with Stop Charger on Error on, while a protection is active or User Attention Required is set, with zero current (5.1 Protection and Recovery). With the option off the request goes on, and only an open charge path stops the current.
The BMS does not compare the request with its own limits. The table current must stay below the charge current limits of 3.7 Current Limits, and the target voltage must keep every cell below O.V. Protection (3.3 Cell Voltage Limits); otherwise the protection, not the request, ends the charge.
Charger detection. With Charger Connection Detection on, the BMS watches the CAN port for a frame with the identifier Charger Detection RxD ID, usually a status frame that the charger sends on its own. The content of the frame does not matter. The charger counts as connected as soon as such a frame arrives, and as disconnected when none has arrived for Comm. Lost Delay. After every start of the BMS it counts as disconnected until the first frame. Detection changes only the paths, through the options below; it does not start or stop the charge request.
- DCHG Path Force Disable: while a charger is detected, the discharge path is held OFF, so the system cannot drive or discharge during the charge.
- CHG Path Force Enable: while no charger is detected, the charge path is held OFF. Once a charger is detected, the charge path follows the BMS again and a charge protection can still open it.
- Set Drive to INOP: has no function in the standard firmware. Leave it off.
Both path options need separate charge and discharge contactors, layout B of 3.8 Power Path. With one main contactor, which is ON only while both paths are ON, DCHG Path Force Disable opens the main contactor as soon as the charger is detected, so the pack can never be charged; CHG Path Force Enable keeps it open while no charger is detected, so the load never runs without a charger. The input function CHG Power Path Interlock (3.10 Inputs and Outputs) does a similar job with a wire from the charge socket; CAN detection needs no input but needs a charger that sends a frame.
Canbus Standard ID Enable applies to both identifiers: on, the request is sent and the detection frame is accepted only with an 11-bit standard ID; off, both use 29-bit extended IDs.
4.2.2 Settings
Table.4.2.1: Charger Integration Settings (LiMon™ Integration tab)
| Setting | What it does | How to choose | Unit | Default |
|---|---|---|---|---|
| Charger Canbus Comm. | Sends the charge request. | On for a charger that the BMS drives. | on/off | off |
| Charger Type | Layout of the charge request. | OEM Type #1, the layout of the CAN reference. OEM Type #2 to #4 are for single OEM projects; choose one only when LiBat™ tells you to. | list | OEM Type #1 |
| Canbus Standard ID Enable | 11-bit standard IDs for both identifiers instead of 29-bit extended IDs. | As the charger documentation says. Set it before you enter the IDs: when it changes, LiMon™ rewrites both ID fields. Switched on, an ID above 0xFFF becomes 0x000 and one from 0x800 to 0xFFF stays, although it is no standard ID; switched off, an extended ID that was reset does not come back. Check both IDs after the change. | on/off | off |
| Charge Request TxD ID | Identifier of the charge request. | The ID that the charger listens to, from its documentation: 0x000 to 0x7FF as a standard ID, up to 0x1FFFFFFF as an extended ID. | hex | 0x1806E5F4 |
| Target Charge Voltage | Voltage the charger is asked to hold at the end of the charge. | The end-of-charge voltage of your pack: cell count × the end voltage per cell from the cell datasheet. Above FULL SoC Pack Voltage (3.2), and per cell below O.V. Protection with room for imbalance (3.3). | V, 0.1 V steps | 57.6 |
| Charging Current Table (Amp) | Current requested in each band of SoC and temperature. | From the charge rating of the cells and of the charger, lower in the cold, hot and nearly full bands; 0 where the cell datasheet allows no charge. Every value below CHG O.C. Warning (3.7). The 95-100 row above 0, or the pack never reaches FULL. | A | 5 in every cell |
| Charger Connection Detection | Detects the charger by its frame. | On to use DCHG Path Force Disable or CHG Path Force Enable. | on/off | off |
| Charger Detection RxD ID | Identifier of the frame that the charger sends. | A frame that the charger sends all the time while it is connected, usually its status frame. | hex | 0x18FF50E5 |
| Comm. Lost Delay | Time without a detection frame before the charger counts as disconnected. | Several times the interval at which the charger sends its frame; never 0. A longer delay keeps the paths in the charge state longer after the charger is unplugged. | s, 0…255 | 15 |
| DCHG Path Force Disable | Discharge path OFF while a charger is detected. | On when the system must not drive or discharge during the charge, for example a vehicle. | on/off | off |
| CHG Path Force Enable | Charge path OFF while no charger is detected. | On when the charge port must be dead without a charger. | on/off | off |
| Set Drive to INOP | No function in the standard firmware. | Leave it off. | on/off | off |
| Stop Charger on Error | Stop and zero current in the request while the BMS has an error. | See 5.1 Protection and Recovery. | on/off | off |
Default identifiers. The default Charge Request TxD ID and Charger Detection RxD ID with OEM Type #1 are the identifiers and the layout that many CAN chargers use. Compare them with the documentation of your charger all the same, together with the CAN speed.
The LiMon™ reference describes every field of the screen: 7.7 Integration Settings.
4.2.3 Example
Calculation example: 16S LFP pack, 100 Ah, CAN charger up to 50 A
These are chosen values to show the method; take yours from the datasheets of your cells and your charger. The pack uses the values of the examples in 3.2 and 3.7: FULL SoC Pack Voltage 53760 mV, FULL SoC Charge Cutoff Curr. 20000 mA, Hold %99 until FULL SoC on, CHG O.C. Warning 45 A. Separate charge and discharge contactors (layout B); the system must not drive while the charger is connected.
- Charger Canbus Comm. on, Charger Type OEM Type #1, Canbus Standard ID Enable off, both IDs at their defaults, as the charger documentation gives them.
- Target Charge Voltage: 56.0 V, above 53.76 V, so that the FULL voltages are reached in the constant-voltage phase.
- Charger Connection Detection on, Comm. Lost Delay 15 s, DCHG Path Force Disable on, CHG Path Force Enable on, Stop Charger on Error on.
Table.4.2.2: Example Charging Current Table (A)
| SoC (%) | <0 °C | 0-10 °C | 10-50 °C | 50-60 °C | >60 °C |
|---|---|---|---|---|---|
| 95-100 | 0 | 5 | 25 | 10 | 0 |
| 90-95 | 0 | 10 | 30 | 10 | 0 |
| 80-90 | 0 | 10 | 40 | 10 | 0 |
| 20-80 | 0 | 10 | 40 | 20 | 0 |
| 10-20 | 0 | 10 | 40 | 20 | 0 |
| 0-10 | 0 | 5 | 20 | 10 | 0 |
At 50 % SoC and 25 °C the charger is asked for 40 A at 56.0 V, 5 A below the warning limit. Above 95 % the request drops to 25 A, still above the 20 A of the FULL current condition, so FULL waits for the constant-voltage phase. When the current has stayed at or below 20 A for 60 s with the FULL voltages reached, the SoC goes to 100 % and the request says stop. While the charger is detected the discharge path stays OFF; 15 s after its CAN frames stop, the charge path switches OFF and the discharge path ON.
4.2.4 Checking the Result
- On the bus: a CAN analyser shows the request with your Charge Request TxD ID once every period, with the target voltage, the current of the table cell that matches Live View, and charge or stop as in the frame description.
- On the charger: its display or status frame shows the requested voltage and current, and the charger runs.
- In Live View: Current is positive and close to the table value, or lower in the constant-voltage phase, Battery Power shows CHARGING and CHG PATH is ON (5.2 Monitoring).
- Detection: with DCHG Path Force Disable, DCHG PATH is OFF while the charger is connected. Disconnect the charger's CAN cable: after Comm. Lost Delay, CHG PATH goes OFF with CHG Path Force Enable, and DCHG PATH comes back ON.
- End of the charge: the SoC goes to 100 % and the charger stops, with no (16) CHG Over Current Warning Limit Exceeded and no (8) Cell Over Voltage Warning Limit Exceeded in Events › Event Status (6.1 Events and What to Do).
4.2.5 Common Mistakes
- Wrong identifier or wrong ID type. The charger ignores the request, or the detection frame is never accepted. Compare both IDs and Canbus Standard ID Enable with the charger documentation.
- IDs entered before Canbus Standard ID Enable was changed. LiMon™ rewrites the ID fields: an ID above 0xFFF becomes 0x000, one from 0x800 to 0xFFF stays although a standard ID ends at 0x7FF, and a reset extended ID does not come back. Change the option first, then enter both IDs, check them and save.
- CAN speed, termination or data period not set up. No frame reaches the charger, or none comes back. The charger needs the same CAN speed, the line a termination at each end, and the BMS a CANBus CH#1 Data Period other than Disabled; see 4.1 Communication Ports. These port settings take effect only after a restart.
- Detection without a detection frame. The charger never counts as connected: with CHG Path Force Enable the charge path never switches ON. Use a frame that the charger really sends all the time, or turn detection off.
- Comm. Lost Delay shorter than the charger's send interval. The charger counts as disconnected between two frames, and the paths switch back and forth. Choose several intervals.
- Path options with one main contactor. DCHG Path Force Disable opens the main contactor when the charger is detected, so the pack never charges. CHG Path Force Enable keeps it open while no charger is detected, so the load does not run. Use separate contactors (layout B).
- Table current above the charge limits. CHG O.C. Warning shows during every charge, or CHG O.C. Protection opens the charge path again and again until the retry count runs out. Keep every value below CHG O.C. Warning.
- Target voltage too high or too low. Too high: the highest cell reaches O.V. Protection at the end of every charge (3.3). Too low: the FULL voltages are never reached and the SoC stays at 99 % (3.2).
- A 0 in the row or column in use. The charger gets a request for no current and the pack stops charging, for example at 95 % with a 0 in the 95-100 row.
- Hold %99 until FULL SoC off. The count can reach 100 % before the pack is full, and the request then stops the charger early (3.2).
- Charger running when the discharge path switches ON. The request says stop during the precharge, but a charger that keeps its output on can still end in Pre-Charge Fault, event (31) (3.9 Precharge).
- Set Drive to INOP expected to stop the drive. It has no function in the standard firmware. Use DCHG Path Force Disable.