How to declare a global variable in a large Simulink model?
5 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
In c-code to declare a global variable is very easy. But I found that it was not so easy in a large Simulink model with several subsystems.
I used a Memory block with a Memory_Read block followed by a GOTO block. Then use FROM blocks at places where this variable was used as input signal (and Memory_Write block to update).
Problems came when this variable was needed (as output) inside an inner level of a subsystem. This variable name would not be recognized there even after adding an input port on the subsystem (unnecessarily) to "feed in" a signal with this name. The only thing I could do was to name an output with this name. When generating code, I found that RTW added a suffix to this name (an operation known as "mangle", meaning that Simulink thinks that it is a diiferent variable so gives it a different name). How to tell Simulink that it is a global variable and not to change its name?
I searched Matlab Help but did not find any advices. My solution was to manually edit the generated code, but was unhappy with the solution. Please help. Thanks!
0 comentarios
Respuestas (4)
Kaustubha Govind
el 10 de Nov. de 2011
It appears that what you need is a Data Store Memory block. You can use the Data Store Read and Data Store Write blocks to read/write to it respectively. You can also customize how this data is represented in generated code bu changing the storage class, as described here.
2 comentarios
Kaustubha Govind
el 14 de Nov. de 2011
You need to connect your chart output to a Data Store Write block (http://www.mathworks.com/help/toolbox/simulink/slref/datastorewrite.html), not a Memory Write block. Could you try if this fixes the issue?
Kyon
el 9 de Abr. de 2016
how can i make the output of a block or a subsystem a global variable to write to blocks and Matlab function function blocks?
0 comentarios
Ricardo A. Baila
el 12 de Abr. de 2016
I don't know if it could be simply this, but did you declare the goto's visibility as global?
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/174072/image.png)
1 comentario
Foad Sojoodi Farimani
el 20 de Feb. de 2019
This is strange because in Scilab-xcos and Scicoslab-scicos one can write a script in the context including some global variables :
![Untitled1.png](https://www.mathworks.com/matlabcentral/answers/uploaded_files/205054/Untitled1.png)
![Annotation 2019-02-20 104116.jpg](https://www.mathworks.com/matlabcentral/answers/uploaded_files/205055/Annotation%202019-02-20%20104116.jpeg)
0 comentarios
Ver también
Categorías
Más información sobre Subsystems 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!