2017-02-19 88 views
1

我正在使用Simulink从我创建的代表排序步骤,缓冲区等的多个掩码块中建立垃圾回收工厂。每个模块(即掩码块)具有失败概率,使用离散事件建模。如果发生故障事件,触发子系统会调用解释的Matlab函数(simulink的“外部”)。这个函数应该设置代表失败模块的掩码块的参数status以及上游模块的status为0(因为很明显,上游的所有内容都必须停止或材料堆积)。获取调用解释的Matlab函数的块的句柄

`set_param(gcb, 'status', num2str(status)); 
PortConnectivity = get_param(gcb,'PortConnectivity'); 
sources = PortConnectivity.SrcBlock;` 

基本上,这将循环,直到我到达没有自己的源块的块。 这一切都工作得很好,除了一个问题:gcb命令为我提供了手动加亮的最后一个块的块路径,而不是调用解释的Matlab函数的块。有没有办法获得调用块的句柄(我将使用它的Parents参数来访问Mask的status)? (类似的问题已被要求here,没有结果...)

我希望你得到我的问题 - 我会很乐意详细说明,如果有什么不清楚的;我不是自称是Simulink的专家,所以很抱歉可能会使用错误的术语。

回答

0

好的,对于每个人都在这个问题上磕磕碰碰: 对于包含Matlab解释函数调用者的面具,我在面具编辑器中定义了一个参数'this_block'(关闭能见度),我在Initialisation窗格中初始化使用

parent = get_param(gcb,'Parent'); 
set_param(gcb, 'this_block','Parent') 

由于该屏蔽的块(负责故障和它的上游通信建模)本身在另一掩蔽块也存在于该文库(负责建模模块的行为)所使用的,我也不得不检查“允许库块修改其内容“,在父级掩码的掩码编辑器”初始化“窗格中。然后参数'this_block'作为被调用函数的输入参数之一被移交(在我的情况下,是status_communication(u,this_block))。

+0

非常感谢的队友!完美的作品。 – Ade