主要内容

总线中的可变元素

创建具有可变条件的总线

这个例子展示了如何用具有不同变化条件的元素创建总线信号。这个模型有两个信号(' a ', ' b '),合并后创建一个总线信号。这两个信号有不同的变异条件,V==1和W ==1。

总线选择器由两个具有两种不同变化条件的信号馈电(V==1和W==1)。当这个总线信号被输入到总线选择器中时,当您从总线上选择单个信号时,也会选择可变条件。

请注意

可变总线支持使用复合端口作为输入和输出端口。

要查看完成的模型,请打开slexVariantBus模型。

用总线传播变量条件

一个变异来源块可以接受虚拟或非虚拟总线输入。

考虑这个模型。

总线在V = 1和W = 1的不同条件下创建。当条件V和W通过总线传播时,当从总线中选择单个元素时,也会选择条件。

代码生成

您可以为模型生成代码。要这样做,就应用程序单击工具条页签嵌入式编码器,然后在C代码选项卡上,单击构建.有关配置模型以生成代码的更多信息,请参见为代码生成准备包含变量的模型

当使用预处理器条件生成代码时,所有总线输入的总线类型和层次结构必须相同。

虚拟和非虚拟总线行为

虚拟总线提供了在框图中使用总线来减少信号杂波的最简单方法。非虚拟总线支持建模组件(如S-functions或MATLAB函数块),需要显式指定接口。当变量条件通过虚拟或非虚拟总线传播时,变量条件的传播行为不会发生变化。

为虚拟总线生成的代码如下所示。

/*块状态(默认存储)系统“根> <”* /类型结构体如果V == 1 real_TUnitDelay_1_DSTATE;/*< Root > /单元的延迟*/ #define D_WORK_EX_BUS_VAR_COND_VARIANT_EXISTS #endif /* V == 1 */ #如果W == 1 int32_TUnitDelay_2_DSTATE;/*< Root > /单元的延迟*/ #define D_WORK_EX_BUS_VAR_COND_VARIANT_EXISTS #endif /* W == 1 */ #ifndef D_WORK_EX_BUS_VAR_COND_VARIANT_EXISTS字符_rt_unused;# endif} D_Work_ex_bus_var_cond;

为非虚拟总线生成的代码如下所示。

/*块状态(默认存储)系统“根> <”* /类型结构体如果V == 1 || W == 1 myBusUnitDelay_DSTATE;/*< Root > /单元的延迟*/ #define D_WORK_EX_BUS_VAR_COND_VARIANT_EXISTS #endif /* V == 1 || W == 1 */ #ifndef D_WORK_EX_BUS_VAR_COND_VARIANT_EXISTS字符_rt_unused;# endif} D_Work_ex_bus_var_cond;

您必须在总线中有一个相关联的总线对象,它提供了Simulink®用于验证总线信号。有关总线对象的更多信息,请参见使用Simulink指定总线属性。总线对象数据类型.总线中使用的总线对象是无条件的,它生成不受保护的代码,如下所示。

类型定义结构体real_T一个;int32_Tb;} myBus;

带有模型块的变体总线

考虑这个模型包含一个模型块。

这个模型有两个信号(' a ', ' b '),它们有不同的变化条件,V==1和V==2。

模型块时,总线选择器被馈送两个具有两种不同变化条件的信号(V==1和V==2)。当您从总线上选择单个信号时,也会选择不同的条件。

已知的限制

  • 块不支持状态日志记录(例如,单位延迟),它在一个总线上,其中一些元素被删除了。

相关的话题

Baidu
map