Battery knowledge · Data, communication and electronics
Plant model
A model of the system being controlled — cells, pack, cooling loop, charger — as distinct from the controller itself. Engineers tune and verify BMS software against it in model-, software- and hardware-in-the-loop tests, so its fidelity, often an equivalent circuit model coupled to a thermal model, limits how much those tests prove.
- Also called
- system model
Example
Data, communication and electronics: an example situation
2500 in a log might mean 25.00 °C, 2.5 V or raw counts. Units and scale must accompany the value.
Read Plant model alongside Battery and cell emulator in this context. A programmable power source that behaves like a battery or like each cell of a string, so a BMS or charger can be tested at any voltage, state of charge or fault without real cells. Cell emulators drive every AFE input separately.
Use in Lemonergy
Lemonergy Studio blocks
Update nested battery telemetry
Replaces selected bus fields while preserving every other field.
Blocks to use
- Bus assignment
Replacement ports inherit the exact declared field types. The original bus value remains unchanged for other consumers.
Inputs & settings
- Use the block reference for settings and connections.
- Bundled example verified on the production release of 28 October 2026.
This overview identifies the components to use. Follow the example in Lemonergy for their connections and settings.
- Review the interface, units and model limits.
- Open the Studio example and run its bundled model.
- Compare outputs with the numerical checks; change one input and run again.
Example. Initial-SOC = 0.5; Updated-SOC = 0.6; Cell-voltage = 3.7. Before at 1 s = 0.5; After at 1 s = 0.6.
Observe. Inspect the output channels and checks on the block reference page.
A field and one of its descendants cannot be replaced in the same assignment; replacement paths must be distinct.
Open Studio example →Lemonergy Studio blocks
Update nested battery telemetry
Collects typed named fields into a bus, including nested buses.
Blocks to use
- Bus creator
Field names, quantities and nested bus types come from an explicit versioned declaration; no numerical values are changed.
Inputs & settings
- Use the block reference for settings and connections.
- Bundled example verified on the production release of 28 October 2026.
This overview identifies the components to use. Follow the example in Lemonergy for their connections and settings.
- Review the interface, units and model limits.
- Open the Studio example and run its bundled model.
- Compare outputs with the numerical checks; change one input and run again.
Example. Initial-SOC = 0.5; Updated-SOC = 0.6; Cell-voltage = 3.7. Before at 1 s = 0.5; After at 1 s = 0.6.
Observe. Inspect the output channels and checks on the block reference page.
Bus declarations must be acyclic, at most 16 levels deep, with at most 4096 leaves.
Open Studio example →Lemonergy Studio blocks
Update nested battery telemetry
Selects one declared field or nested field from a named bus.
Blocks to use
- Bus selector
A dotted field path selects the original typed value; missing fields are rejected before simulation.
Inputs & settings
- Use the block reference for settings and connections.
- Bundled example verified on the production release of 28 October 2026.
This overview identifies the components to use. Follow the example in Lemonergy for their connections and settings.
- Review the interface, units and model limits.
- Open the Studio example and run its bundled model.
- Compare outputs with the numerical checks; change one input and run again.
Example. Initial-SOC = 0.5; Updated-SOC = 0.6; Cell-voltage = 3.7. Before at 1 s = 0.5; After at 1 s = 0.6.
Observe. Inspect the output channels and checks on the block reference page.
Paths must exist in the declared bus version; dynamic field names are not supported.
Open Studio example →All connected Lemonergy block references
- Bus assignment
- Bus creator
- Bus selector
- Bus to vector
- Storage declaration
- Storage reader
- Storage writer
- Enumeration code
- Enumeration constant
- Named signal receiver
- Named signal sender
- Signal visibility scope
- Submodel input boundary
- Manual variant sink
- Manual variant source
- Adjustable gain
- Algebraic residual constraint
- Arithmetic bit shift
- Array element submodel
- Assertion
- Array assignment
- Bias
- Clear bit
- Pack Boolean bits
- Set bit
- Bitwise operator
- Boolean operator
- Bounded continuous integrator
- Detect change
- Dynamic forbidden interval check
- Dynamic lower-bound check
- Dynamic range check
- Dynamic upper-bound check
- Signal gap check
- Sample difference check
- Static lower-bound check
- Static range check
- Input resolution check
- Forbidden interval check
- Static upper-bound check
- Linear frequency sweep
- Compare to constant
- Compare to zero
- Complex to real and imaginary
- Complex to magnitude and angle
- Conditional hold
- Array constant
- Bounded counter
- Cross product
- Sampled storage
- Dead zone
- Detect decrease
- Sample delay
- Vector splitter
- Nonsingular descriptor state model
- Create diagonal matrix
- Sample difference
- Digital clock
- Direct N-D lookup
- Discrete derivative
- Discrete transfer function
- Discrete first-order filter
- Discrete integrator
- Discrete lead-lag filter
- Discrete real-zero filter
- Discrete state space
- Discrete pole-zero model
- Live signal display
- Dot product
- Sampled duty-controlled PWM
- Dynamic dead zone
- Dynamic interval test
- Dynamic 1-D lookup
- Sampled dynamic rate limiter
- Dynamic saturation
- Expand scalar
- Extract bit range
- Extract diagonal
- Detect fall negative
- Detect fall nonpositive
- Detect falling edge
- Filtered continuous derivative
- Find nonzero elements
- FIR filter
- Float32 bit pattern
- Coulomb and viscous friction
- Gram matrix
- Hermitian transpose
- Identity matrix
- Detect increase
- Initial value override
- Integer to Boolean bits
- Interpolate from prelookup
- Interval test
- Is Hermitian
- Is symmetric
- Is triangular
- Causal first-order hold
- 1-D lookup table
- 2-D lookup table
- N-D lookup table
- Manual switch
- Math function
- Matrix concatenate
- Matrix multiply
- Multiport switch
- Neighborhood submodel
- Normal random source
- Real and imaginary to complex
- Permute array dimensions
- Permute matrix rows and columns
- Pixel channel submodel
- Recorded signal
- Magnitude and angle to complex
- Polynomial
- Prelookup
- Product of elements
- Boolean transport propagation delay
- Pulse generator
- Quantized sine in cycles
- Quantizer
- Ramp
- Rate transition
- Signal recorder
- Sum or mean of elements
- Repeating sequence
- Resettable sample delay
- Resettable running minimum and maximum
- Reshape array
- Detect rise nonnegative
- Detect rise positive
- Detect rising edge
- Rounding
- Running minimum and maximum
- Zero-order hold
- Weighted sample time math
- Sampled backlash
- Sampled rate limiter
- Sampled hysteresis relay
- Signal scope
- Second-order integrator
- Element selector
- Signal specification
- Signal width
- Sine source
- Sine wave function
- Remove singleton dimensions
- Continuous state space
- Array step
- Accepted solver-step memory
- Stop simulation
- Extract submatrix
- Tapped sample delay
- Signal terminator
- Simulation time
- Continuous transfer function
- Continuous transport delay
- Matrix transpose
- Trigonometric function
- Truth table
- Numeric type conversion
- Uniform random source
- Variable integer delay
- Sampled variable pulse generator
- Variable time delay
- Variable transport progress delay
- Vector concatenate
- Reset above threshold
- Continuous pole-zero model
- Submodel output boundary
- Scaled integer constant
- Scaling strip
- Owned signal copy
- Reusable submodel
- Same-type constraint
- Inherited numeric conversion
- Declared type propagation
- Authored unit policy
- Variant branch end
- Variant sink
- Variant source
- Variant branch start
- Variant submodel
- Vector assembly
- Vector selector
References & further reading
Further reading on this topic
These sources provide broader context; they are not presented as citations for every statement in this entry.
- 3rd generation of the CAN data link layer
CAN in Automation, CAN Newsletter · 2020
Topic background · Classical CAN, CAN FD and CAN XL data-link concepts; publication describes the 2020 state.
- Getting Started with the BQ76925
Texas Instruments · 2019
Topic background · A concrete BMS analog front-end example: cell voltage, current, temperature measurement and MCU integration.