With variable sized signals in Simulink, how can TLC code access the "CurrentDimensions" of a variable sized signal?
1 次查看(过去 30 天)
显示 更早的评论
For context, imagine an S-function that outputs a variable-sized signal. How can code be generated that specifies not only the signal's value, but also its current dimensions (since they are variable).
TLC library functions like LibBlockOutputSignalDimensions only return the numeric values for the signal's maximum dimensions (e.g. [1 16]). Variable-sized signals have block state variables that hold the "actual" dimensions. How can we gain access to the C language variable names that hold this state?
For example, here is the automatically generated C code struct that holds the block states I want to access:
<< in the ModelName.h file >>
/* Block states (auto storage) for system '<Root>' */
typedef struct
{
int32_T MyBlock_DIMS1[2]; /* '<Root>/MyBlock' */
}
DW_ModelName_T;
<< in the ModelName.c file >>
/* Block states (auto storage) */
DW_ModelName_T ModelName_DW;
So for this example, I'm looking for TLC syntax that emits something similar to ModelName_DW.MyBlock_DIMS1 into my generated code.
0 个评论
回答(1 个)
Prashant Arora
2017-4-26
Hi Keith,
Have you tried using LibBlockInputSignalWidth or LibBlockInputSignalSymbolicWidth?
I have not tried it myself, but it does seem to do the expected.
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!