2017-02-19 92 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