How to choose a solver, Simulation start and stop time for auto-code generation of simulink model??
18 views (last 30 days)
Show older comments
Dileepa B S on 6 Mar 2020
Commented: lee stone on 23 Nov 2021
Iam doing a SIMULINK model to estimate the State of charge of the battery-pack. I need to generate the autocode to integrate with my real system.
Iam confused with how to choose a solver and how to set start and stop simulation time??
when i run the model i set stop time to 1000 seconds. In Powergui i selected discrete solver with sample time of 50e-6. Will this solver time affects the real-system performance?? Please suggest me how to select solver and sample time to generate the auto-code??
Joel Van Sickel on 6 Mar 2020
if you are generating code for a controller, you should use a model reference. This will allow you to have a simulation where the plant model (power gui model of the battery pack) runs at a smaller time step, in this case 50e-6, while allowing you to generate code for a controller that runs at a slower time step. I would recommend starting here for simulink basics:
Here is a starting link for model references:
If you are targeting a real-time system for the controller, you will need Simulink Coder. If you are targetting an embedded controller, you will need Embedded Coder. On the off chance you are using an FPGA, you will use HLD coder instead.
Your sample time for the controller should be the same rate you want to run your control algorithm at. For a typical battery SOC, this should be slower than 50 e-6, while you should leave your plant model at 50e-6. You can use the rate transition block to control what parts of your model run at different time steps.
More Answers (1)
Chirag on 6 Mar 2020
You may want to take a look at this Battery Management Systme Example. https://www.mathworks.com/matlabcentral/fileexchange/72865-design-and-test-lithium-ion-battery-management-algorithms
This example shows you the concepts Joel Van Sickel talked about. Using Model Referencing, Rate Transition Block etc.
What other electrical components are you simulating in addition to Battery?
Also, what's your final embedded target? We may have example to help you get started.
Sample Time of 50e-6 is very small for Battery Algorithms. You may not want to calculate your SOC at every 50microsecond. You can use Multirate modeling to run your SOC Estimation algorithm at slower rate.
lee stone on 23 Nov 2021
Hi Chirag， the example runs with errors for 2019b or 2020a:
Updating Model Reference Simulation Targets
Starting serial model reference simulation build ### Build procedure for Battery_Model aborted due to an error.
Battery_System_R2020a\work\slprj\sim\Battery_Model\tmwinternal\binfo_mdlref.mat: Invalid argument。
so how to solve it?
I couldnot find the binfo_mdlref.mat location.
More Answers in the Power Electronics Control
Find more on Code Generation in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!Start Hunting!