Is it possible to pass simulink NMPC parameters as struct?

4 views (last 30 days)
Currently I am developing a NMPC controller and the functions used for the algorithm (state definition, cost, etc.) make use or a broad array of parameters.
In Matlab I have used a structure to pass the parameters without problem, e.g.:
p.param1 = 2
p.param2 = 3
p.param3 = 4
nloptions = nlmpcmoveopt
nloptions.Parameters = {p} % <--- works without a problem with nlmpcmove
While implementing the controller on Simulink I have found that the parameters should be given using a "Bus Creator" which should be predefined in Matlab with createParameterBus. This doesn´t allow the use of "struct".
I tried encapsulating my structure in a cell array but to no avail. When using my structure as a constant to the bus creator I get the following error:
Invalid setting in 'Bus Creator1' for parameter 'OutDataTypeStr'.
Caused by:
Error evaluating properties of Simulink.Bus object 'busNPC_2' in workspace 'base' (used by block 'Bus Creator1')
Error evaluating DataType property.
Not enough input arguments.
Component:Simulink | Category:Block error
If I cannot use the structure I would have to pass the parameters separately to the functions (e.g. fun1(x,u, p1, p2, p3, p4, .......))
This would be rather bothersome and unappealing.
Any help/suggestions provided are really appreciated :)
Eduardo on 9 Jan 2023
The function ended up heavily slowing the simulation.
Right now I am trying to input the parameters as a cell array with the bus creator but I do not seem to be able to correctly use them in my state function......

Sign in to comment.

Accepted Answer

Emmanouil Tzorakoleftherakis
Please take a look at my answer here

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by