Developing Battery Management System using SimulinkSimulink Models C/C++/HDL Generated code...

51
1 © 2015 The MathWorks, Inc. Developing Battery Management System using Simulink Chirag Patel Application Engineer MathWorks

Transcript of Developing Battery Management System using SimulinkSimulink Models C/C++/HDL Generated code...

Page 1: Developing Battery Management System using SimulinkSimulink Models C/C++/HDL Generated code Model-Based Design Verification Workflow Component and system testing Equivalence testing

1© 2015 The MathWorks, Inc.

Developing Battery Management

System using Simulink

Chirag PatelApplication Engineer

MathWorks

Page 2: Developing Battery Management System using SimulinkSimulink Models C/C++/HDL Generated code Model-Based Design Verification Workflow Component and system testing Equivalence testing

2

Agenda

▪ What is BMS and what engineers worry about?

▪ Start with single battery cell and build a pack

▪ Design BMS algorithms

▪ Generate code and deploy

▪ Model V&V

▪ Hardware-in-Loop testing

▪ Summary

Page 3: Developing Battery Management System using SimulinkSimulink Models C/C++/HDL Generated code Model-Based Design Verification Workflow Component and system testing Equivalence testing

3

What is BMS?

Electronics Battery PackSoftware

Supervisory tasks

SOC estimation

Contactor management

Isolation monitoring

Fault detection and recovery

Thermal Management

Current & Power Limits Block Voltage,

Temperature Measurement

Cell Diagnostic

Cell Balancing

Page 4: Developing Battery Management System using SimulinkSimulink Models C/C++/HDL Generated code Model-Based Design Verification Workflow Component and system testing Equivalence testing

4

Motivation

Long Iteration Cycles Safety Critical SystemCollaboration Gap

Simulations and Code

Generation

Model V&V and Hardware-In-

Loop Testing

Multi-Domain Modeling

Environment

Page 5: Developing Battery Management System using SimulinkSimulink Models C/C++/HDL Generated code Model-Based Design Verification Workflow Component and system testing Equivalence testing

5

Where do we start?

Gain insight into cell behavior and model it

Page 6: Developing Battery Management System using SimulinkSimulink Models C/C++/HDL Generated code Model-Based Design Verification Workflow Component and system testing Equivalence testing

6

Equivalent Circuit Model

E

+

I I

C 1 C n

R n n 1 R 1

V

R 0

m

I m

+

Ip

Ep

Zp

[Ex Rx Cx] = f(SOC, Temperature…)

Transient

Dynamics

Parasitic

Losses

Terminal

Resistance

Open-Circuit

Voltage

Page 7: Developing Battery Management System using SimulinkSimulink Models C/C++/HDL Generated code Model-Based Design Verification Workflow Component and system testing Equivalence testing

7

Battery Cell Blocks in Simscape

▪ Chose block for fidelity and simulation speed

▪ Parameterize as function of SOC &

Temperature

▪ Add thermal and fade effects

▪ Create custom battery blocks using

Simscape language or Simulink

Page 8: Developing Battery Management System using SimulinkSimulink Models C/C++/HDL Generated code Model-Based Design Verification Workflow Component and system testing Equivalence testing

8

R0

R1

C1Em

model (Em,R1,R0,C1)

experiment=

inout

out ☺

Parameter Estimation

Goal:

Model should match real data as closely as possible

Page 9: Developing Battery Management System using SimulinkSimulink Models C/C++/HDL Generated code Model-Based Design Verification Workflow Component and system testing Equivalence testing

9

Parameter Estimation

Before

After

Page 10: Developing Battery Management System using SimulinkSimulink Models C/C++/HDL Generated code Model-Based Design Verification Workflow Component and system testing Equivalence testing

11

Look-up Tables

Em

(Volts)

SOC

1

SOC

0.9

SOC

0.8…

SOC

0

5°C

20°C

40°C

Repeat parameter estimation for each

Temperature break-point in LUT

Page 11: Developing Battery Management System using SimulinkSimulink Models C/C++/HDL Generated code Model-Based Design Verification Workflow Component and system testing Equivalence testing

12

Start with Simulation

Battery Cell → Large Battery Pack

System

Cell Dynamics

Pack

Thermal Model

Demo

Page 12: Developing Battery Management System using SimulinkSimulink Models C/C++/HDL Generated code Model-Based Design Verification Workflow Component and system testing Equivalence testing

13

Evaluate System Behavior

Demo

Page 13: Developing Battery Management System using SimulinkSimulink Models C/C++/HDL Generated code Model-Based Design Verification Workflow Component and system testing Equivalence testing

14

Discharge + Charge

Cell Voltages

Pack Current SOC

Temperatures

Page 14: Developing Battery Management System using SimulinkSimulink Models C/C++/HDL Generated code Model-Based Design Verification Workflow Component and system testing Equivalence testing

15

Discharge Only

Cell Voltages

Pack Current SOC

Temperatures

Page 15: Developing Battery Management System using SimulinkSimulink Models C/C++/HDL Generated code Model-Based Design Verification Workflow Component and system testing Equivalence testing

16

Charge Only

Cell Voltages

Pack Current SOC

Temperatures

Page 16: Developing Battery Management System using SimulinkSimulink Models C/C++/HDL Generated code Model-Based Design Verification Workflow Component and system testing Equivalence testing

17

true

Coulomb counting EKF

UKF

Evaluate SOC Estimation

Page 17: Developing Battery Management System using SimulinkSimulink Models C/C++/HDL Generated code Model-Based Design Verification Workflow Component and system testing Equivalence testing

18

Generate C/C++ Code From BMS Algorithm Models

Demo

Page 18: Developing Battery Management System using SimulinkSimulink Models C/C++/HDL Generated code Model-Based Design Verification Workflow Component and system testing Equivalence testing

19

Did we generate code too early?

Is this ready to ship?

What if there are bugs?

Where are they? How do we find them?

Let’s

Find

Out

Page 19: Developing Battery Management System using SimulinkSimulink Models C/C++/HDL Generated code Model-Based Design Verification Workflow Component and system testing Equivalence testing

20

Why Testing, Verification and Validation

Safety Critical System Functional Safety Certification

Page 20: Developing Battery Management System using SimulinkSimulink Models C/C++/HDL Generated code Model-Based Design Verification Workflow Component and system testing Equivalence testing

21

Requirements

Typical Development Workflow

Specification C/C++/HDL

Most errors introducedUnit test finds some

errors

Errors found during

integration or in field

Page 21: Developing Battery Management System using SimulinkSimulink Models C/C++/HDL Generated code Model-Based Design Verification Workflow Component and system testing Equivalence testing

22

Requirements

Challenge: Errors introduced early but found late

Specification C/C++/HDL

Most errors introducedUnit test finds some

errors

Errors found during

integration or in field

Page 22: Developing Battery Management System using SimulinkSimulink Models C/C++/HDL Generated code Model-Based Design Verification Workflow Component and system testing Equivalence testing

23

Validate Design via Desktop Simulation

Requirements C/C++/HDLDesign

Model

Unit test finds some

errors

Errors found during

integration or in field

Page 23: Developing Battery Management System using SimulinkSimulink Models C/C++/HDL Generated code Model-Based Design Verification Workflow Component and system testing Equivalence testing

24

Model-Based Design Workflow

RequirementsDesign

Model

Model used for

production code

generation

Simulink Models

C/C++/HDL

Generated code

Code

Generation

Page 24: Developing Battery Management System using SimulinkSimulink Models C/C++/HDL Generated code Model-Based Design Verification Workflow Component and system testing Equivalence testing

25

Model VerificationDiscover design errors at design time

RequirementsDesign

Model

Model used for

production code

generation

Simulink Models

C/C++/HDL

Generated code

Model-Based Design Verification Workflow

Component

and system

testing

Equivalence

testing

Equivalence

checking

Review and

static analysis

Code VerificationGain confidence in the code

Code

Generation

✓ Faster development

✓ Less hassle

✓ Reduced cost

✓ More Engineering

Page 25: Developing Battery Management System using SimulinkSimulink Models C/C++/HDL Generated code Model-Based Design Verification Workflow Component and system testing Equivalence testing

26

How do we test?

RequirementsDesign

Model

Model used for

production code

generation

Simulink Models

C/C++/HDL

Generated code

Is it functioning

correctly?

Page 26: Developing Battery Management System using SimulinkSimulink Models C/C++/HDL Generated code Model-Based Design Verification Workflow Component and system testing Equivalence testing

27

Test Case

Main Model

Systematic Functional Testing with Simulink Test

AssessmentsInputs

Test Sequence

MAT file (input) MAT file (baseline)

Assessments

MATLAB Unit Test

Excel file (input) Excel file (baseline)

Test Harness

Model Sim through SIL, PIL and HIL

Scale with PCT and CI

and more! and more!

Signal Editor

Page 27: Developing Battery Management System using SimulinkSimulink Models C/C++/HDL Generated code Model-Based Design Verification Workflow Component and system testing Equivalence testing

28

Create Test Harnesses

Page 28: Developing Battery Management System using SimulinkSimulink Models C/C++/HDL Generated code Model-Based Design Verification Workflow Component and system testing Equivalence testing

29

Systematic Functional Testing with Simulink Test

Use Test Manager to:

• Author, execute, manage test cases

• Review, export, report

Page 29: Developing Battery Management System using SimulinkSimulink Models C/C++/HDL Generated code Model-Based Design Verification Workflow Component and system testing Equivalence testing

30

Manage and Organize TestCases

Page 30: Developing Battery Management System using SimulinkSimulink Models C/C++/HDL Generated code Model-Based Design Verification Workflow Component and system testing Equivalence testing

31

How do we know we have enough test?

RequirementsDesign

Model

Model used for

production code

generation

Simulink Models

C/C++/HDL

Generated code

Does the

design meet all

requirements?

Is it functioning

correctly?

Is it

completely

tested?

Page 31: Developing Battery Management System using SimulinkSimulink Models C/C++/HDL Generated code Model-Based Design Verification Workflow Component and system testing Equivalence testing

32

How do we know we have enough test?

RequirementsDesign

Model

Model used for

production code

generation

Simulink Models

C/C++/HDL

Generated code

Does the

design meet all

requirements?

Is it functioning

correctly?

Is it

completely

tested?

Page 32: Developing Battery Management System using SimulinkSimulink Models C/C++/HDL Generated code Model-Based Design Verification Workflow Component and system testing Equivalence testing

33

Integrate with requirements tools and author requirements

Simulink Requirements

Authored Requirements

External Requirements

External

Requirements

Requirements

Managements

Tools

• Import from:

• Word / Excel

• IBM® Rational® DOORS®

• ReqIF™ standard

• Update synchronizes

changes from source

• Edit and add further details to

import

• Author requirements

• Export ReqIF

• Enables roundtrip with

external tools

Import

Update

Export

Page 33: Developing Battery Management System using SimulinkSimulink Models C/C++/HDL Generated code Model-Based Design Verification Workflow Component and system testing Equivalence testing

34

Import External Requirements & Author New Requirements

Page 34: Developing Battery Management System using SimulinkSimulink Models C/C++/HDL Generated code Model-Based Design Verification Workflow Component and system testing Equivalence testing

35

SW Requirements - Implementation Status

Page 35: Developing Battery Management System using SimulinkSimulink Models C/C++/HDL Generated code Model-Based Design Verification Workflow Component and system testing Equivalence testing

36

Track Implementation and Verification

Implementation Status

Implemented

Justified

Missing

Verification Status

Passed

Failed

Unexecuted

Missing

Page 36: Developing Battery Management System using SimulinkSimulink Models C/C++/HDL Generated code Model-Based Design Verification Workflow Component and system testing Equivalence testing

37

Simulink / Stateflow

Test Case

Requirements Verification with Simulink

Implemented

By

Test Harness

Inputs

Test Sequence

Signal Editor

Assessments

Test

Assessments

MATLAB Unit Test

Verified

By

Simulink Test

MAT / Excel

file (input)

MAT / Excel

File (baseline)

Requirements

Page 37: Developing Battery Management System using SimulinkSimulink Models C/C++/HDL Generated code Model-Based Design Verification Workflow Component and system testing Equivalence testing

38

Link Tests to Requirements

Page 38: Developing Battery Management System using SimulinkSimulink Models C/C++/HDL Generated code Model-Based Design Verification Workflow Component and system testing Equivalence testing

40

How do we know we have enough test?

RequirementsExecutable

Specification

Model used for

production code

generation

Simulink Models

C/C++/HDL

Generated code

Does the

design meet all

requirements?

Is it functioning

correctly?

Is it

completely

tested?

Page 39: Developing Battery Management System using SimulinkSimulink Models C/C++/HDL Generated code Model-Based Design Verification Workflow Component and system testing Equivalence testing

41

Coverage Analysis to Measure Testing

Simulink• Identify testing gaps

• Missing requirements

• Unintended Functionality

• Design Errors

Stateflow

Generated Code

Coverage Reports

Page 40: Developing Battery Management System using SimulinkSimulink Models C/C++/HDL Generated code Model-Based Design Verification Workflow Component and system testing Equivalence testing

42

Measure Model Coverage

Page 41: Developing Battery Management System using SimulinkSimulink Models C/C++/HDL Generated code Model-Based Design Verification Workflow Component and system testing Equivalence testing

43

Addressing Missing Coverage

Test Cases from

Functional Requirements

Partial Coverage

Test

Generator

Simulink Design Verifier

Page 42: Developing Battery Management System using SimulinkSimulink Models C/C++/HDL Generated code Model-Based Design Verification Workflow Component and system testing Equivalence testing

44

Addressing Missing Coverage

Test Cases

New Test CasesFull Coverage

Page 43: Developing Battery Management System using SimulinkSimulink Models C/C++/HDL Generated code Model-Based Design Verification Workflow Component and system testing Equivalence testing

45

Automatic Test Generation

Page 44: Developing Battery Management System using SimulinkSimulink Models C/C++/HDL Generated code Model-Based Design Verification Workflow Component and system testing Equivalence testing

46

Systematic Simulation Testing

RequirementsDesign

Model

Model used for

production code

generation

Simulink Models

C/C++/HDL

Generated code

Does the

design meet all

requirements?

Is it functioning

correctly?

Is it

completely

tested?

Page 45: Developing Battery Management System using SimulinkSimulink Models C/C++/HDL Generated code Model-Based Design Verification Workflow Component and system testing Equivalence testing

47

Real-Time Testing of Battery Management System

Main ControllerMeasurement &

DiagnosticsBattery Pack

Testing BMS with Battery Cells

– Longer test cycles

– Difficult to reproduce results

– Difficult to test fault conditions

– Limited test automation

Page 46: Developing Battery Management System using SimulinkSimulink Models C/C++/HDL Generated code Model-Based Design Verification Workflow Component and system testing Equivalence testing

48

Hardware-In-Loop Testing of Battery Management System

Wiring and Signal Conditioning

Automatic

Code Generation

Main ControllerMeasurement &

DiagnosticsBattery Emulation

Testing BMS with Emulated Battery Cells

– Reduce testing time

– Test fault conditions safely

– Automate testing

Page 47: Developing Battery Management System using SimulinkSimulink Models C/C++/HDL Generated code Model-Based Design Verification Workflow Component and system testing Equivalence testing

49

Execute Large Battery Models in Real-time

– Cell Voltages: ~100Hz

– Current: ~1kHz (Accurate Coulomb Counting & current derating

calculations)

– Cell / Pack Temperatures: ~1 to 10Hz (Large time constant for

thermal system)

Sensor and Fault Emulation

– Produce Isolated Voltages

– Sink and Source Current

– Support Series and Parallel Configuration

– Temperature simulation

Challenges in setting up HIL testing for BMS

Page 48: Developing Battery Management System using SimulinkSimulink Models C/C++/HDL Generated code Model-Based Design Verification Workflow Component and system testing Equivalence testing

50

Execute Large Battery Models in Real-time

Prepare Model for Real-time Simulation (if using

Simscape)

– Use Simscape Local Solver

– Configure fixed-cost simulations

– Try “Partitioning” option for non-linear systems*

Webinar on “Real-Time Simulation of

Physical Systems Using Simscape”

Reducing model complexity

– Select right variant of battery block to match

desired model fidelity

– Reduce order of charge dynamics by

selecting fewer number of time-constants

2-3x

5x

2-3x

5x

Page 49: Developing Battery Management System using SimulinkSimulink Models C/C++/HDL Generated code Model-Based Design Verification Workflow Component and system testing Equivalence testing

51

Sensor and Fault Emulation

Battery Emulation (IO991-06)

– 6 independent isolated channels

– Architecture allows series and parallel stack combinations

– Voltage range of 0-7 V with 14-bit resolution

– Source 300mA and sink 100 mA

Temperature Sensor Emulation

– RTD (PT100, PT1000) – low resolution 6 channel module

– Thermocouple – accurate 32 channels

– High precision resistor simulation modules

Fault Insertion

– 1A to 40A current handling; Up to 4 fault buses

– Electromechanical or MOSFET switches

Page 50: Developing Battery Management System using SimulinkSimulink Models C/C++/HDL Generated code Model-Based Design Verification Workflow Component and system testing Equivalence testing

52

Conclusion

Leverage models to

communicate technical

specifications, design

implementation, results

and maintain traceability

Test your design iterations

every step of the way

through simulations and

Hardware-In-Loop testing

Gain confidence in design

and work towards safety

certification