S function builder for array of bus as output

3 ビュー (過去 30 日間)
sun P
sun P 2012 年 10 月 23 日
回答済み: Voulgarakis Georgios 2014 年 5 月 27 日
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.

採用された回答

Sachin Ganjare
Sachin Ganjare 2012 年 10 月 23 日
編集済み: Sachin Ganjare 2012 年 10 月 23 日
Refer link below:
And refer section 'S-function Builder Bus Support'.
Hope it helps!!!
  1 件のコメント
sun P
sun P 2012 年 10 月 23 日
Thank you for the answer Sachin.
But I have seen this blog but in this no discussion about 'Array'. I need to declare bus signal as array.
Thank you.

サインインしてコメントする。

その他の回答 (2 件)

Kaustubha Govind
Kaustubha Govind 2012 年 10 月 23 日
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.
  1 件のコメント
sun P
sun P 2012 年 10 月 24 日
Thank You Kaustubha.
I think manual modification of S function will work for me.
Thank You.

サインインしてコメントする。


Voulgarakis Georgios
Voulgarakis Georgios 2014 年 5 月 27 日
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....

カテゴリ

Help Center および File ExchangeProgrammatic Model Editing についてさらに検索

製品

Community Treasure Hunt

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

Start Hunting!

Translated by