Sample time of sfunction that needs long to execute
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
I want to run a simulink model on an external device (code generation, external mode) to do model predictive control (MPC). My simulink model contains an sfunction that takes N*Ts time to execute (Ts: sample time) and compute a new control trajectory. However I want to run my model on the external device with the sampling time Ts. Therefore I want the MPC sfunction to be executed every (N+1)*Ts, because it needs N*Ts to calculate new controls. In the meanwhile I want to output the "old" control trajectory every Ts.
My question:
- How can I run the sfunction at a different sample time than the rest of the model, while ensuring that the simulink model won't crash because it is waiting for an output from the sfunction while it is still calculating but instead outputting the old trajectory?
- How can I hold the old control trajectory in my simulink model?
Further information:
- Used MPC packages: ACADO, GRAMPC
- External device: Quanser QUBE Servo 2
4 comentarios
Joel Handy
el 15 de Ag. de 2019
Essentially, simulink runs all of the blocks that occur during a time step to completion before moving onto the next timestep. So with the rate transition block, although that function may be running at a much lower frequency (1 out of every N steps), it wont run in the background as the rest of the model continues on without it. You will simply have one time step out of N that takes N*Ts seconds to complete.
Hendrik Lorenz
el 16 de Ag. de 2019
Ah I see, thanks! Quanser apparently supplies a server client solution for communication between different simulink models that then could run on different sample times I guess. Unfortunately I do not have the required license and time to look into this right now.
Respuestas (1)
Ver también
Categorías
Más información sobre Simulink Coder en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!