MATLAB: Trim with Generated Simulink Code

code generationmatlab codersimulationsimulinksimulink coder

I've used Simulink Coder to generate the C code for the grt target. The idea is to generate an executable such that MATLAB and Simulink are not needed to run the model. I've managed to create a wrapper C application to work with the generated code. But I'm having trouble performing the trimming operation. In order for the model to be useful, trimmed conditions would need to be found prior to simulation (in many cases, finding the trimmed conditions is more important than simulation).
Under MATLAB, I was able to create a Newton-Raphson trimming routine. The jacobian is obtained by running the model command to get the outputs/derivatives at t=0. The problem is that, with the generated code, I only have three exposed extern functions available to me: model_initialize, model_step, and model_terminate. model_step updates the derivatives/outputs, but it only provides the results at the end of the first time step, not at t=0.
Any suggestion as to I should tackle this?

Best Answer

This is more of a hack. For a $10k product, I really think breaking the model_step method into separate evaluation and update methods is essential.
Within the rt_ertODEUpdateContinuousStates method, I bypass everything after and including the line:
local_numjac(si,x0,f0,fac,dfdx)
The state derivatives were calculated prior to this and the subsequent section is the integration scheme.
Related Question