要重用算法,您可以将它们封装在一个单独的模型文件中,而不是复制和粘贴块。然后,您可以使用model块重复引用模型。每个Model块都是算法的一个独立实例。
默认情况下,每个实例计算并存储模型包含的自己的信号副本。因此,实例不交互。但是,您可以使用数据存储在实例之间共享数据。
这个示例展示了如何在可重用控制算法的所有实例之间共享错误指示。任何实例都可以设置故障,从而导致所有实例采取行动清除故障。
打开示例模型sldemo_shared_data
.
控制器子系统是指控制器算法模型,sldemo_shared_data_alg
,多次通过三个模型块。
打开算法模型。
数据存储内存块fault_ind
表示故障指示。块参数信号属性>在模型实例间共享的所有实例都已选中,因此sldemo_shared_data_alg
分享想法。因为块存在于sldemo_shared_data_alg
,指示是局部的模型。参考的其他模型sldemo_shared_data_alg
不能读或写指示。
算法子系统使用PID控制器为执行器生成位置命令(用块表示)sldemo_shared_data
).
故障处理子系统设置并清除故障指示。每当算法的一个实例经历故障条件(受控输入超过2.63),子系统将数据存储的值增加1。每当一个实例清除它的故障条件时,子系统将该值减1。
模拟父模型,sldemo_shared_data
.
使用仿真数据检查器观察位置命令和控制信号。在Simuli金宝appnk Editor工具栏中,单击突出显示的按钮。
通过仿真的中途,控制信号conc_mid
经历一个扰动。
当前的情节举行
扰动会在控制算法的相应实例中触发故障。由于该故障,所有的三个位置命令(vlv
信号)锁定在零。
稍后,当故障条件消除时,所有的位置命令和控制信号返回标称值。