S function builder for array of bus as output
3 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
sun P
el 23 de Oct. de 2012
Respondida: Voulgarakis Georgios
el 27 de Mayo de 2014
Hi, I am using S function builder, and I want my output to be a array of bus. Can any one tell how to declare output as an array of bus signal. Thank you.
0 comentarios
Respuesta aceptada
Sachin Ganjare
el 23 de Oct. de 2012
Editada: Sachin Ganjare
el 23 de Oct. de 2012
Refer link below:
And refer section 'S-function Builder Bus Support'.
Hope it helps!!!
Más respuestas (2)
Kaustubha Govind
el 23 de Oct. de 2012
It doesn't look like the S-function Builder supports array of buses at this point. Note how the edit-fields to specify dimensions are immediately disabled when "Bus" is turned on. You could probably place the S-function Builder block inside a For Each subsystem or other similar options to iterate over each bus element and have the S-function deal with one bus at a time. If you need the S-function to process the whole array at the same time, you might need to first generate an S-function using an S-function Builder or Legacy Code Tool, and then manually modify it to handle an array of buses.
Voulgarakis Georgios
el 27 de Mayo de 2014
I had the same problem (I wanted to use an array of buses in s-function builder which is not supported). The only way I see, to solve this, is to do the following trick:
1) Declare and use a *.c and *.h file. In the header you should define the BUS as a struct, and in the *.c file you should write the processing code. You should then include these files in the S-function builder, and call the main (entry) function declared in the *.c file. All handling of the BUS should be performed in the *.c file.
2) Declare the C struct, , with the following format:
struct BUS1{
...
BUS2 array[10];
...
}
3) Using the Bus editor, declare the BUS1 and BUS2 buses. And HERE IS THE TRICK: do not define array as of Dimensions 10, of type BUS2, BUT DECLARE 10 BUS2 ELEMENTS INSTEAD. I know it's not clean (and annoying if you need to handle large arrays), but until simulink starts supporting bus arrays, this is the only way I see.
I.E.
BUS1{
...
BUS2 array0;
BUS2 array1;
....
BUS2 array9;
...
}
In terms of memory, these 2 are the same, since the pointer of the array0 == pointer of array[0], etc...
Hope I helped....
0 comentarios
Ver también
Categorías
Más información sobre Programmatic Model Editing 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!