4.3 Parallel Packs
Several packs, each with its own master BMS, can share one DC bus. In Multi-Master mode one of the masters, the main controller, watches the other packs over CAN and allows or holds off their power paths. This page shows when Multi-Master is needed, what each role does, how to set up the CAN line and the IDs, how the main controller compares the pack voltages and what each strategy does to the power paths, and how to check the system. The settings are on the Interface tab of LiMon™.
Applies to
Boards: BMS1820, BMS3610, BCU2002, BMS1601. BMS1810 does not take part in Multi-Master; leave its Multi Master (MM) Config at MM Disabled.
4.3.1 How It Works
When to use it.
- Packs in parallel on one DC bus, each with its own master. Without Multi-Master each BMS switches its own pack and knows nothing about the others, so a pack can close onto the bus at a different voltage and a large current flows from the higher pack into the lower one. With Multi-Master the main controller keeps the other packs OFF until it allows them, and holds a pack OFF when its voltage is too far from the others. This is what this page sets up.
- Packs in series, each with its own master, use the role MM Slave in Series; see the roles below.
- Independent packs that only share a CAN line with a controller, but not a DC bus, do not need Multi-Master; see the example in 4.1 Communication Ports.
Parallel packs and parallel groups. Parallel packs are whole packs, each with its own master. The parallel groups of 3.1 Battery Topology are strings of modules in parallel inside one pack with one BMS1810 master. Pack Delta Voltage Protection serves both: on the main controller it limits the difference between the packs, on a BMS1810 the difference between its groups. Pack Delta Protection Release and the Multi-Master strategies apply to parallel packs only.
Fig.4.3.1: Three Packs in Parallel with Multi-Master
Table.4.3.1: Multi-Master Roles
| Multi Master (MM) Config | Set on | What the BMS does |
|---|---|---|
| MM Disabled | a pack on its own | Switches its own paths only. The default. |
| MM Main Controller | one BMS in the system | Switches its own pack as a single BMS does. Listens to the slave packs, compares their pack voltages, and allows or holds OFF the power paths of each slave pack. |
| MM Slave in Parallel | every other pack on the DC bus | Keeps its charge and discharge paths OFF until the main controller allows them. Its own protections still act on its own paths. |
| MM Slave in Series | every other pack of packs in series | For packs in series, each with its own master. The current firmware handles it exactly as MM Slave in Parallel, including the voltage comparison. |
The CAN line. All masters share one CAN line, wired and terminated as in 4.1 Communication Ports: the same CANBus CH#1 Speed on every pack, CANBus CH#1 Protocol set to LiBat CANbus v2.0, and a CANBus CH#1 Data Period other than Disabled, because the Multi-Master frames go out with the periodic frames. A longer period makes the slave packs react more slowly.
Base Frame IDs. The main controller finds its slave packs by their CANBus CH#1 Base Frame ID: each slave must use the base of the main controller plus 1 to 15, each pack a different one. With the main controller on 0x0AAA, the slaves use 0x0AAB, 0x0AAC and so on up to 0x0AB9. A pack on any other base is not heard and stays OFF. So one main controller takes up to 15 slave packs. The frames are described in Multi-Master Frames.
Start-up. After a start, each slave pack shows (33) M.M. Enable PowerOut Sequence and keeps both paths OFF. A few seconds after the main controller starts to hear it, the main controller allows it: (33) clears and the paths switch ON as far as the slave's own protections allow, with its own precharge (3.9 Precharge). The main controller's own pack does not wait for anything.
Voltage comparison. The main controller compares the pack voltage of each slave pack with the average of all slave packs. When one is Pack Delta Voltage Protection or more away from that average, it sets (35) M.M. Parallel Packs Delta Voltage Error and acts as MM Delta Protection Strategy says (Table.4.3.2). Its own pack is not part of the comparison, which has three results:
- One slave pack: there is nothing to compare, and (35) never appears.
- Two slave packs: each is half the difference away from the average, so the main controller acts when the two differ by twice Pack Delta Voltage Protection.
- The main controller's own pack is never compared with the others. Check its voltage yourself before you connect the packs.
Communication. When the frames of a slave pack stop for a few seconds, the main controller sets (34) M.M.Communication Timeout Error and acts as MM Comm Error Strategy says (Table.4.3.3); it also sets (34) while it hears a different number of slave packs than Multi Master Slave Units. A slave pack that loses the main controller keeps its paths as they are, ON or OFF, and shows (34) unless its MM Comm Error Strategy is Do Nothing. While the main controller is off, the slave packs are protected only by their own limits.
Table.4.3.2: MM Delta Protection Strategy (on the main controller)
| Option | A slave pack too far from the average | The difference below the limit again |
|---|---|---|
| Do Nothing (Manual Recovery) | No comparison at all: every slave pack is allowed at all times and (35) never appears. MM Comm Error Strategy then has no effect on the main controller. | — |
| Disable All Power Out (Manual Recovery) | Holds OFF that slave pack and every slave pack with a higher base frame ID; sets (35). | The packs are allowed again; (35) stays until the main controller restarts. |
| Disable Relevant Power Out Only (Manual Recovery) | Holds OFF that slave pack; sets (35). | The pack is allowed again; (35) stays until the main controller restarts. |
| Disable Relevant Power Out Only and Wait For Equalization | Holds OFF that slave pack; sets (35). A pack above the average can switch on its precharge output for a time, but the current firmware does not equalize the packs reliably. | The pack is allowed again; (35) clears when the difference is at or below Pack Delta Protection Release. |
Table.4.3.3: MM Comm Error Strategy
| Option | On the main controller, when a slave pack goes silent | On a slave pack, when the main controller goes silent |
|---|---|---|
| Do Nothing (Manual Recovery) | Holds OFF that slave pack until its frames are back; sets (34). | Shows no event. |
| Disable All Power Out on Comm Error and Retry | Holds OFF every slave pack at all times, also while the communication works. Do not choose it. | Shows (34). |
| Disable Relevant Power On Comm Error and Retry | Holds OFF that slave pack and allows it again a few seconds after its frames are back; sets (34). | Shows (34). |
The main-controller column applies only while MM Delta Protection Strategy is not Do Nothing.
Events. (33), (34) and (35) have no mark on Pack Status; read them in Events › Event Status. They are not counted against Error Recovery Attempts and set no User Attention Required. On a slave, (33) shows that the main controller holds its paths OFF, and (34) means that the main controller is lost; (35) appears on the main controller only. Causes, checks and what to do are in 6.1 Events and What to Do; the event classes in 5.1 Protection and Recovery.
4.3.2 Settings
Table.4.3.4: Multi-Master Settings (LiMon™ Interface tab)
| Setting | What it does | How to choose | Unit | Default |
|---|---|---|---|---|
| Multi Master (MM) Config | The role of this BMS. | MM Main Controller on exactly one BMS, MM Slave in Parallel on every other pack on the DC bus (Table.4.3.1). Takes effect after a restart. | list | MM Disabled |
| Multi Master Slave Units | Number of slave packs the main controller expects. | On the main controller: the number of slave packs, 1 to 15. LiMon™ takes up to 16, but the main controller hears 15 at most. On the slaves it is not used. | pcs | 0 |
| Pack Delta Voltage Protection | Difference from the average of the slave packs at which the main controller holds a slave pack OFF. On a BMS1810: the limit between its parallel groups. | Above the differences that appear between your packs in normal use, under load as well as at rest, and low enough that the current between packs at that difference stays within the rating of the cables, connectors and fuses. Set on the main controller. | mV | 250 |
| Pack Delta Protection Release | With the equalization strategy, (35) clears at or below this difference. | Clearly below Pack Delta Voltage Protection. Set on the main controller. | mV | 50 |
| MM Comm Error Strategy | What happens when the CAN link is lost (Table.4.3.3). | Disable Relevant Power On Comm Error and Retry on every pack. | list | Disable Relevant Power On Comm Error and Retry |
| MM Delta Protection Strategy | What the main controller does when a slave pack is too far from the others (Table.4.3.2). | Disable Relevant Power Out Only (Manual Recovery) keeps (35) until a restart, so that a mismatch is noticed. Never Do Nothing on parallel packs. Set on the main controller. | list | Disable Relevant Power Out Only and Wait For Equalization |
Restart. Multi Master (MM) Config and the four CANBus CH#1 settings take effect only at the next start; see Table.2.2.1 in 2.2 Managing Settings. When one settings file is copied to several packs, change the role and the base frame ID on each pack afterwards.
Connecting the packs. Bring every pack to the same voltage before you connect it to the DC bus: check Pack Voltage in Live View, then charge or discharge each pack on its own until they agree as closely as you can, and well within Pack Delta Voltage Protection. This matters most for the main controller's pack, which closes onto the bus without waiting and is never compared. The slave packs stay OFF until the main controller allows them, so connect them while their BMS is running.
The LiMon™ reference describes every field of the screen: 7.6 Interface Settings.
4.3.3 Example
Example: three packs on one 48 V bus (chosen values)
Three 16S packs, each with a BMS1820 master, share a DC bus and one CAN line at 500 kbit/s. Pack 1 is the main controller and sits at one end of the CAN line, pack 3 at the other end, so only these two are terminated.
| Setting | Pack 1 | Pack 2 | Pack 3 |
|---|---|---|---|
| Multi Master (MM) Config | MM Main Controller | MM Slave in Parallel | MM Slave in Parallel |
| CANBus CH#1 Base Frame ID | 0x0AAA | 0x0AAB | 0x0AAC |
| Multi Master Slave Units | 2 | 0 | 0 |
| MM Delta Protection Strategy | Disable Relevant Power Out Only (Manual Recovery) | as pack 1 | as pack 1 |
| MM Comm Error Strategy | Disable Relevant Power On Comm Error and Retry | as pack 1 | as pack 1 |
| CANBus CH#1 Speed, Protocol, Data Period | 500 kbit/s, LiBat CANbus v2.0, 500ms | as pack 1 | as pack 1 |
Pack Delta Voltage Protection and Pack Delta Protection Release stay at their defaults. Each pack is charged on its own until Pack Voltage is the same on all three, then all three are restarted and connected. Packs 2 and 3 show (33) for a few seconds and then switch ON. With two slave packs the main controller compares pack 2 with pack 3 only; the voltage of pack 1 was checked by hand before connecting.
4.3.4 Checking the Result
- On each slave pack: after the restart, (33) shows for a few seconds and clears; then CHG PATH and DCHG PATH are ON in Live View (5.2 Monitoring). PCHG PATH is ON only for the short precharge.
- On the main controller: no (34) and no (35) in Events › Event Status. Live View shows its own pack only; LiMon™ connects to one BMS at a time, so connect to each pack to see its values.
- On the CAN line: a CAN analyser shows a Multi-Master Parameters (0xB0) frame from the main controller to each slave base, for example 0x0AAB00B0, and from each slave a Report Device Multi-Master Parameters Status (0xB1) frame whose slave state reads Power Out Enabled by Multi-Master.
- Link test: unplug the CAN cable of one slave pack. After a few seconds the main controller and that slave show (34), and the slave keeps its paths as they were. Plug it back: (34) clears on both, and the slave can switch OFF for a few seconds before it is allowed again.
4.3.5 Common Mistakes
- Slave base IDs that do not follow the main controller. A slave on a base other than the main controller's plus 1 to 15 is never heard: it stays OFF with (33), and the main controller shows (34). Give the slaves the next bases after the main controller.
- Two packs on the same base frame ID. Their frames cannot be told apart; see 4.1 Communication Ports.
- Multi Master Slave Units different from the real number. The main controller shows (34) for as long as it hears a different number of slave packs. Enter the number of slaves, not of all packs.
- Data Period Disabled or another protocol on one pack. No Multi-Master frames go out: the slaves stay OFF with (33). Set LiBat CANbus v2.0 and a period on every pack, then restart.
- No restart after a change of role or port settings. The BMS keeps the old role and the old IDs.
- More than one main controller. Set exactly one BMS to MM Main Controller and every other pack to a slave role.
- Packs connected at different voltages. A large current flows between the packs when they close onto the bus, and (35) holds the different slave pack OFF. Bring each pack to the same voltage on its own first; the main controller's pack is not checked at all.
- Disable All Power Out on Comm Error and Retry. The slave packs never switch ON. Choose Disable Relevant Power On Comm Error and Retry.
- MM Delta Protection Strategy set to Do Nothing. The packs are not compared and a lost slave is not held OFF.
- Only one slave pack, or the main controller's own pack, expected to be compared. The comparison covers the slave packs only; see 4.3.1.
- Slave packs expected to switch off when the main controller is off. They keep their paths as they are and rely on their own protections.
- A BMS1810 in the system. BMS1810 does not take part in Multi-Master. Leave Multi Master (MM) Config at MM Disabled on a BMS1810: set to a slave role, it can keep its paths OFF. Use its parallel groups inside one pack instead (3.1 Battery Topology).