Hierarchical Dynamic Load Management
1. Introduction
Hierarchical Dynamic Load Management (Hierarchical DLM) is an advanced power management system designed to coordinate multiple DLM groups within a larger electrical infrastructure. It addresses the challenges of efficiently distributing limited power resources across numerous charging stations while preventing system overloads.
1.1. Why Hierarchical DLM is necessary
As EV charging infrastructure grows, several challenges emerge:
- Limited Power Capacity: Main electrical supplies often have fixed capacity limits that must be shared among multiple charging stations
- Variable Demand: Different charging stations experience varying levels of usage throughout the day
- System Complexity: Managing multiple DLM groups independently can lead to inefficient power allocation
- Safety Concerns: Without coordination, there's risk of overloading electrical lines
Hierarchical DLM solves these challenges by implementing a hierarchical approach where a central coordinator oversees multiple DLM groups, each managed by its own master controller.
2. Topology
Hierarchical DLM follows a structured hierarchy with clearly defined roles and relationships:
Charging Stations
The primary power consumers in the system, capable of adjusting their current consumption based on instructions from controllers.
- Hiarchical DLM Coordinator: Central station that manages the entire hierarchy (e.g., F1-S1)
- DLM Masters: Stations that manage individual groups (e.g., F1-S1, F2-S1, F3-S1)
- DLM Slaves: Stations that receive instructions from their group's master
External Loads
Devices that consume power but cannot be directly controlled by the Hierarchical DLM system.
- Building systems
- Lighting
- Other electrical equipment
The system must account for these loads when allocating power to charging stations.
Meters
Devices that measure power consumption at various points in the system.
- Main Meter: Measures total power consumption
- External Load Meters: Monitor non-charging loads
Connection Types:
- In-line: Measures all current passing through a line
- Branch: Measures only a specific load
2.1. Communication flow
Hierarchical DLM uses a structured communication pattern:
- The Hierarchical DLM Coordinator collects power usage data from all DLM Masters
- Based on constraints and current usage, it calculates optimal power allocation
- Instructions are sent to DLM Masters
- DLM Masters distribute power among their Charging Stations
- This process repeats continuously, adapting to changing conditions
3. Configuration
Hierarchical DLM is configured through a structured JSON file called the "constraints file" that defines all components and their relationships.
3.1. Key configuration elements
The constraints file contains these main parts:
- Lines: Defines the electrical lines and their properties, including current limits and hierarchical relationships.
- Groups: Defines collections of charging stations that share common properties and their connection to power lines.
- Meters: Defines the meters used to monitor power consumption and their connection to the electrical system.
3.2. Configuration structure
{
"lines": {
"<line-name>": {
"CurrentLimit": {
"L1": <number>, /* Amperes for phase 1 */
"L2": <number>, /* Amperes for phase 2 */
"L3": <number> /* Amperes for phase 3 */
},
"Parent": "<parent-line-name>" /* Omit for main supply line */
},
...
},
"groups": {
"<group-name>": {
"Elements": [ /* At least one required */
"<device-id>", /* Charge Controller identifier. In Dashboard: Backend > OCPP > ChargeBoxIdentity (ChargePointID) */
...
],
"Parent": "<line-name>" /* Must reference existing line */
},
...
},
"meters": {
"<meter-name>": {
"Parent": "<line-name>", /* Line being monitored */
"Interface": {
"Type": "modbus-tcp", /* Meter type: "modbus-tcp" or "modbus-rtu". Currently only modbus-tcp is supported for Hierarchical DLM */
"IPAddress": "<ip-address>" /* Network address of meter */
}
},
...
}
}
3.3. Naming requirements
Each name in the configuration must:
- Be 1 to 63 characters long
- Contain only letters (a-z, A-Z), numbers (0-9), and dashes (-)
- Not begin or end with a dash
- Be unique within its category (lines, groups, or meters)
3.4. Phase configuration
The system supports both three-phase and single-phase installations:
Three-Phase System (Standard)
{
"lines": {
"MainSupply": {
"CurrentLimit": {
"L1": 63,
"L2": 63,
"L3": 63
}
}
}
}
Single-Phase System
{
"lines": {
"MainSupply": {
"CurrentLimit": {
"L1": 32, /* Active phase */
"L2": 0, /* Unused phases are set to 0 */
"L3": 0
}
}
}
}
3.5. Configuration rules
Power line configuration
- One main supply line serves as the source (no Parent field)
- Each additional line connects to a single upstream line
- Direct or indirect self-connection is not permitted
- All referenced lines must exist in the configuration
- Unused phases must be explicitly set to 0
- All chargers on a line must match its phase configuration
Charging group configuration
- Each group requires a valid power line connection
- Groups must contain at least one Charge Controller
- Charge Controllers may belong to only one group
- Groups inherit phase availability from their parent line
Meter configuration
- Each meter must reference an existing power line
- Meters may monitor total line current or external loads
- Meter phase configuration must match the line's configuration
3.6. Charge Controller identification
The following field is used to identify individual Charge Controllers in the constraints file:
The OCPP ChargeBoxIdentity (ChargePointID)
value:
- Can be any unique identifier (e.g., serial number, MAC address, OCPP Backend Charge Controller ID, and other)
- Complies to the following rules:
- Doesn't begin with a forward slash (/)
- Doesn't end with a forward slash (/)
- Doesn't contain hash symbol (#)
3.7. Meter type specification
When configuring meters in the constraints file, define the meter type through the Interface.Type field:
Example meter configuration in the constraints file:
"meters": {
"<meter-name>": {
"Parent": "<line-name>",
"Interface": {
"Type": "modbus-tcp", /* Currently only modbus-tcp supported for Hierarchical DLM */
"IPAddress": "<ip-address>"
}
},
...
}
3.8. System layout examples
Three-Phase Installation
MainSupply (63A per phase) # All phases active
├── Wing-A (32A per phase) # All phases active
│ ├── Group-1 # Three-phase chargers
│ └── Section-1 (16A per phase)
│ ├── Group-2
│ └── Meter-1
└── Wing-B (32A per phase)
├── Meter-2
└── Group-3
Mixed-Phase Installation
MainSupply (63A per phase) # All phases active
├── Wing-A (32A on L1 only) # Single-phase section
│ ├── Group-1 # Single-phase chargers
│ └── Meter-1
└── Wing-B (32A per phase) # Three-phase section
└── Group-2 # Three-phase chargers
3.9. Complete configuration examples
Three-Phase Installation
{
"lines": {
"MainSupply": {
"CurrentLimit": {
"L1": 63,
"L2": 63,
"L3": 63
}
},
"Section1": {
"CurrentLimit": {
"L1": 32,
"L2": 32,
"L3": 32
},
"Parent": "MainSupply"
}
},
"groups": {
"Group1": {
"Elements": ["charger1", "charger2"],
"Parent": "Section1"
}
}
}
Single-Phase Installation
{
"lines": {
"MainSupply": {
"CurrentLimit": {
"L1": 32,
"L2": 0,
"L3": 0
}
},
"Section1": {
"CurrentLimit": {
"L1": 16,
"L2": 0,
"L3": 0
},
"Parent": "MainSupply"
}
},
"groups": {
"Group1": {
"Elements": ["single-phase-charger1"],
"Parent": "Section1"
}
}
}
4. Deep dive into the constraint file
The following interactive diagram provides a visual representation of a complete Hierarchical DLM configuration:
Hover over the elements in the diagram to see the constraints.json equivalent.
- The diagram is simplified to focus on the Hierarchical DLM aspect
- All Charging Stations and Meters are connected to the same network
{
"lines": {
"main": {
"CurrentLimit": {
"L1": 40,
"L2": 40,
"L3": 40
}
},
"line1": {
"CurrentLimit": {
"L1": 32,
"L2": 32,
"L3": 32
},
"Parent": "main"
},
"line2": {
"CurrentLimit": {
"L1": 20,
"L2": 20,
"L3": 20
},
"Parent": "main"
},
"line3": {
"CurrentLimit": {
"L1": 20,
"L2": 20,
"L3": 20
},
"Parent": "main"
}
},
"groups": {
"floor-1": {
"Elements": ["F1-S1", "F1-S2", "F1-S3", "F1-S4", "F1-S5"],
"Parent": "line1"
},
"floor-2": {
"Elements": ["F2-S1", "F2-S2", "F2-S3"],
"Parent": "line2"
},
"floor-3": {
"Elements": ["F3-S1", "F3-S2", "F3-S3"],
"Parent": "line3"
}
},
"meters": {
"Main": {
"Model": "EEM-MB371",
"Parent": "main",
"Interface": {
"Type": "modbus-tcp",
"IPAddress": "10.1.2.3"
}
},
"externalLoad": {
"Model": "EEM-MB371",
"Parent": "line3",
"Interface": {
"Type": "modbus-tcp",
"IPAddress": "10.2.3.4"
}
}
}
}
Let's break down the elements and their attributes: