"Lookup Table Dynamic" block not updating when table values are changed inside a triggered function

3 visualizaciones (últimos 30 días)
Hello,
I am having an interesting issue with the "Lookup Table Dynamic" block. I am trying to change the ydata vector of the lookup table from within a triggered function. The table output does not appear to be updating in the simulation. I have attached an example that demonstrates the problem, and an image that illustrates the example.
In the example, the model simTRIGGERED is executed repeatedly. This model runs function funTRIGGERED, from which I modify the values of the table's ydata vector. This is done through variables in the global struct "data". I expected that because the lookup table is "dynamic," it would automatically update its ydata as the data.y_table is changed. However, the scope ("Scope1") shows that the table's output does not change. But, when the plot() function is used, it looks like the data.y_table vector actually was changed.
Why is the dynamic lookup table not updating while the simulation runs? Is there some problem with how my simulation/functions are organized?
Best Regards, James

Respuesta aceptada

Orion
Orion el 16 de Dic. de 2014
Hi,
Actually, the From workspace blocks are evaluated at the init phase of the simulation, not during even if you change the data with your script.
You need to update the model at every change of your data if you want the new values to be loaded inside the model.
You can do this by adding a line in the function funTRIGGERED :
function funTRIGGERED(varin)
global data;
data.y_table(data.i_sample) = data.i_sample;
data.i_sample = data.i_sample + 1;
set_param(bdroot,'SimulationCommand','Update');
end
With this new line, the entire model is updated : From Workspace, Constant,...
This works, but it is kind of risky. Also, if you are running a big model, it will be really, really slow.
Instead of using this method, you should add some outputs (data.y_table,...) to funTRIGGERED and use connect them directly in simulink to your lookup table.
  2 comentarios
Marine
Marine el 16 de Dic. de 2014
I have nearly the same problem, but from a matlab function. Can this method work with matlab functions too ? Or do you know how to solve my problem ?
Orion
Orion el 16 de Dic. de 2014
you probably can do the same with a matlab function , but probably with another syntax and condition of execution because the behaviour is different of an interpreted matlab function . Remember that a matlab function is a "real" simulink block, tha t is not the case of the interpreted which calls an external file.

Iniciar sesión para comentar.

Más respuestas (1)

James Potter
James Potter el 16 de Dic. de 2014
Thanks a lot, Orion. Just what I needed.

Categorías

Más información sobre Simulink Functions en Help Center y File Exchange.

Productos

Community Treasure Hunt

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

Start Hunting!

Translated by