对于具有代数循环的大型模型,可以采用以下设计技术:
避免创建包含不连续或非双精度数据类型的循环。的仿真软金宝app件®代数环求解器是基于梯度的,必须高精度地求解代数约束。
开发一种方案,清楚地识别原子子系统是直接馈通还是非直接馈通。使用可视化方案,如为块着色或定义块命名约定。
如果您计划为您的模型生成代码,请启用尽量减少代数循环的出现参数,用于所有原子子系统。如果可能的话,确保原子子系统的输入端口直接连接到非直馈模块。
避免将非直馈路径和直馈路径结合使用总线的创造者或Mux块。金宝appSimulink可能无法消除任何由此产生的人工代数循环。相反,考虑将非直馈对象和直馈对象聚类到单独的子系统中。
使用总线选择器块只向原子子系统传递所需的信号。
当一个模型块是循环的一部分,而块是直接馈通块,可以产生代数循环。模型中的代数循环不一定是错误,但它可以给出意想不到的结果。看到的:
突出显示模型中的代数循环有关以图形方式查看代数循环的信息。
显示代数循环信息有关在调试器中跟踪代数循环的信息。
一个模型由于引用模型的结构,块可以是直接馈通块。如果直接通过子模型结构的结果,并导致不需要的代数循环,您可以:
使用以下描述的技术自动消除代数循环:
手动插入号码单位延迟块需要打破代数循环。
通用实时(通
)及嵌入式实时(导
)的目标提供单输出/更新功能选项配置参数对话框。此选项控制生成的代码是否具有单独的输出和更新函数,还是具有组合的输出/更新函数。看到的:
为模型入口函数配置C代码生成(金宝app仿真软件编码器)有关单独和组合输出和更新函数的信息。
单输出/更新功能(金宝app仿真软件编码器)有关指定代码是单独函数还是组合函数的信息。
当单输出/更新功能(默认),则Model块具有组合输出/更新功能。该函数使该块成为所有导入的直接馈通块,而不管所引用模型的结构如何。在不需要的代数循环结果中,您可以:
禁用单输出/更新功能.然后,Model块的代码具有单独的输出和更新函数,消除了直接输入,从而消除了代数循环。
手动插入一个或多个单位延迟块需要打破代数循环。
在仿真的更新阶段,Simulink确定块方法的仿真执行顺序。金宝app这个块调用顺序是执行顺序.
如果将优先级分配给非虚拟块以向Simulink指示它们相对于其他块的执行顺序,则代数循环求解器在尝试求解任何代数循环时不尊金宝app重这些优先级。