总线阵列和S-Function Builder支持万博1manbetx
这让我意识到我从来没有接触过Simulink中总线阵列的基础知识。万博1manbetx因此,本周我们将带您了解创建总线数组的基础知识,并通过描述如何在MATLAB R2021b中的S-Function Builder块中使用它们来结束。
MATLAB等效:结构数组
在MATLAB中,可以使用如下代码创建结构数组
另一个等价的代码可以是:
让我们看看如何在Simulink中做同样的事情。万博1manbetx
创建总线数组
在Si万博1manbetxmulink中,相当于MATLAB结构的是总线信号。因此,让我们尝试创建两个相同的总线信号,并使用Vector concatenate块将它们连接到一个数组中,下面是更新图表后的模型:
如果你熟悉
信号线样式
在Si万博1manbetxmulink中,您可能已经得出结论,这里有一些东西没有像预期的那样工作。总线创建者1和总线创建者2发出的两个信号是总线,但Vector Concatenate的输出是一个包含4个元素的向量,而不是一个总线数组。
原因是Simulink可以将总线信号视万博1manbetx为矢量。在这种情况下,Simulin万博1manbetxk决定将总线信号视为向量,因为它们是虚拟总线。只有非虚拟总线才能连接到总线数组中。
这个总线对象可以在总线创建器块中使用,以指定输出应该是非虚拟的:
现在的信号线风格是预期的,我们正在生产两个总线的阵列。
注意:如果您想避免Simulink将总线信号作为矢量处理,而更喜欢万博1manbetx得到一个警告或错误,请查看诊断
总线信号作为矢量处理
总线嵌套数组
让我们扩展我们的例子,将之前创建的总线数组包含到一个更大的总线中:
为了实现这一点,新总线对象的元素“z”必须是类型“bus1”和维度2。
在MATLAB函数块和状态流中访问总线数组
顺便说一下,如果你没有注意到,在MATLAB R2021b中,MATLAB函数块的代码现在在Simulink画布中打开,而不是在MATLAB编辑器中打开。万博1manbetx
在S-Function Builder中访问总线数组
正如本文开头所提到的,在MATLAB R2021b中,对总线嵌套数组的支持已添加到S-Function Builder块中万博1manbetx。
让我们用之前模型中的S-Function Builder来替换MATLAB函数块:
为了让块接受总线信号,我们首先需要在Ports and Parameters面板中指定相应的总线对象。然后,您可以在S-function Builder应用程序的Outputs部分中输入与上述MATLAB代码等价的C代码。注意
情况
是指针类型,因此我们需要使用
->
“到大自然中去。
c语言使用基于零的索引,所以z的第一个元素是z
[0]:
在构建S-Function之后,你应该注意到当前目录中有一个带有总线定义的头文件:
现在轮到你了
您是否使用总线数组?你会利用s函数构建器中的这个新支持来将总线数组传递给自定义C代码吗?万博1manbetx请在下面的评论中告诉我们。
评论
如欲留言,请点击在这里登录到您的MathWorks帐户或创建一个新帐户。