Search code examples
timesimulationsimulinks-function

display a Simulink current simulation time


folks!

I am trying to display the Simulink current simulation time. I have to notice that, in my case, the system is not viewable, once I use load_system, and it would be very useful to know how progress the simulation.

For that, I have read that I should use the function 'ssGetT'. To implement it, I am using S-function builder block and I succeeded. I mean, I was able to get the current simulation time.

However, I am caught at this point, because I do not know how display it either a progress bar or a message box or any other way. Important, display from an C environment in S-function builder.

If there is any other way to do it, please me. =)

If anybody could help me, I would really appreciate it.


Solution

  • A couple of things to note:

    1. There is no need to use load_system prior to using sim.

    2. As with any MATLAB command, sim blocks further execution of m-code after that line in your m-code (or the command line) until it has finished executing (which in this case means that the simulation has stopped).

    But any m-code within the model will definitely get excuted during model execution.

    For instance, create a model where you feed the Clock block into a MATLAB Function block. Within the MATLAB Function block have the following code

    function fcn(t)
    %#codegen
    coder.extrinsic('fprintf');
    persistent firstTime
    
    if isempty(firstTime)
        firstTime = false;
        fprintf('Starting Now\n');
    end
    
    fprintf('time = %.4f\n',t);
    

    This will print the simulation time, at every time step, to the MATLAB Command Window, while the simulation is running (irrespective of how the model is started).