为总线信号生成有效的代码
在模型中,您可以使用总线信号将多个信号包装到单个信号线中。您可以创建虚拟或非虚拟巴士信号。生成的代码中的表示形式取决于:
对于虚拟总线,生成的代码似乎似乎不存在。
Generated code for a nonvirtual bus represents the bus data with a structure. When you want to trace the correspondence between the model and the code, the use of a structure in the generated code can be helpful. To generate structures using nonvirtual bus signals, see将数据组织成生成的代码中的结构。
有关公共汽车的一般信息,请参阅和复合信号的类型(金宝appSimulink)。
要从包含总线信号的模型中生成有效的代码,请在构建模型时遵循最佳实践来消除不必要的数据副本。
公交信号的代码效率
When you use buses in a model for which you intend to generate code:
设置总线诊断配置参数可以使模型开发更加容易。
总线实施技术以及非虚拟或虚拟总线的选择可以影响生成的代码的速度,大小和清晰度。
一些有用的公交实施技术并不明显。
当您使用公共汽车时,这些准则可以帮助您改善结果。该指南将技术描述为:
简化模型的布局。
提高生成代码的效率。
定义功能(子系统)接口的数据结构。
定义与外部C代码中现有数据结构相匹配的数据结构。
速度,大小和清晰度之间有一些权衡。例如,非虚拟总线的代码更易于阅读,因为总线在代码中以结构为单位出现,但是虚拟总线的代码更快,因为虚拟总线不需要复制信号数据。根据应用程序开发过程中的位置应用一些准则。
设置巴士诊断
金宝app®提供可以用来优化总线使用情况的诊断。在配置参数>诊断>连接性窗格。
优化虚拟和非虚拟巴士
虚拟总线是不影响生成代码的图形便利。结果,代码生成引擎能够完全优化总线中的信号。尽可能使用虚拟巴士而不是非虚拟巴士。您可以使用虚拟和非虚拟巴士之间的转换信号转换块。在某些情况下,模型自动conv金宝apperts a virtual bus to a nonvirtual bus when required. For example, a Stateflow chart converts an input virtual bus to a nonvirtual bus.
To bundle function-call signals, you must use a virtual bus.
您必须使用非虚拟巴士以:
Nonauto存储类
Generating a specific structure from the bus
当总线具有混合数据类型时
避免在非虚拟巴士中的非本地嵌套公共汽车
公共汽车可以包含从属巴士。要生成有效的代码,请将下属总线的存储类设置为汽车
。将存储类设置为汽车
消除:
为下属总线信号和父总线信号分配冗余内存
Additional copy operations (copying data to the subordinate bus, and then copying from the subordinate bus to the final bus)
该型号包含非虚拟巴士信号。下属巴士信号sub_bus_1
andsub_bus_2
使用存储类汽车
。
生成的代码算法有效地将输入信号数据分配给总线信号。
void ex_nonvirtual_buses_step(void) { Nonvirtual_In_One.SimpleBus_1.A1 = A1; Nonvirtual_In_One.SimpleBus_1.A2 = A2; Nonvirtual_In_One.SimpleBus_2.A3 = A3; Nonvirtual_In_One.SimpleBus_2.A4 = A4; Nonvirtual_In_One.A5 = A5; }
也可以看看
Related Topics
- 将数据组织成生成的代码中的结构
- 指定信号元素的样本时间(金宝appSimulink)