2013-11-25 67 views
6

我最近在研究Simulink模型,並且使用GotoFrom模塊來保持一個非常繁忙的系統變成一團亂糟糟的線。我被告知,我不會使用GotoFrom塊,因爲它們被認爲是不好的風格(至少,根據我的僱主)。雖然我認爲只要有可能就應該保持連接線,但我相信GotoFrom塊可以顯着提高系統/子系統的可讀性,否則如果模型會導致大量交叉線;尤其是如果這些塊可以用顏色編碼(例如,紫色Goto塊將轉到所有的紫色塊From塊)。在Simulink中,轉到和從塊通常被認爲是不好的風格?

我會提供一個我正在使用的子系統的圖像,但我不確定我可以放在這裏。子系統本身內有大約12個子系統塊(可能更多),每個塊都有兩個總線型輸出。每個子系統的第一個輸出轉到Bus Creator塊,每個子系統的第二個輸出轉到第二個Bus Creator塊。由於子系統垂直對齊,並且Bus Creator位於右側,因此導致許多交叉電線。我正在使用GotoFrom塊來清理系統。

我可以提供一個較小但類似的模型的圖像,我爲這個問題放在一起。 Small Simulink system depicting crossed wires. 對於12個子系統的系統,這變得非常繁忙。我正在使用GotoFrom塊來連接子系統和Bus Creator,沒有過多的交叉線。

我相信我的僱主可能會揹負使用基於文本語言的goto聲明並將其應用於Simulink中的Goto/From塊。一般來說,以這種方式(或任何方式)使用GotoFrom塊被認爲是不良風格?

+0

'轉到'塊不一定是壞風格。與巴士一起,它們是避免電線混亂的有效方法。 – Karlo

回答

7

Mathworks汽車諮詢委員會發布了一些建模guidelines(PDF),其中包括使用Goto/From。他們列出的規則是:

  1. 不必子系統都浮動,即所有的輸入/輸出端口通過Goto連接一起。 Simulink最大的優點之一是隻需粗略的目視檢查即可確定信號流,不要通過將所有內容鏈接到Goto s來破壞這一點。在通過信號線連接的子系統之間至少有一個前饋和一個反饋迴路。

    • 我個人對反饋信號的看法是它們都應該與信號線連接,但我相信你可以想出所有這些都將模型混淆的情況。

  2. 第二準則是關於Goto標籤的範圍;儘可能保持知名度local

    • 我覺得你不使用超過幾個級別從Goto下游匹配From更設置知名度scoped長達也是可以接受的。我還沒有遇到過全球Goto標籤的合法需求。

因此,所有Goto用法不壞的,你是對的,它可以在某些情況下提高可讀性。話雖如此,我不認爲戈斯是合理的上述圖片。我意識到這僅僅是一個例子,但我應該指出,如果創建的總線是虛擬,那麼創建者的輸入順序無關緊要,重新排列總線創建和多路複用器塊輸入可以提高可讀性。

上述指導方針的問題在於有彎曲的空間,團隊中的開發人員可能會這樣做。即使每個人都在努力遵守它們,但是有一天你會在很長一段時間內違反這些準則,當你重新繪製該模型的部分以提煉/添加功能時。在執行一些很酷的新功能的過程中,重新排列輸入和輸出會特別惱人。這可能是你的僱主選擇實施一攬子禁令的原因。在某些情況下這很不方便,但更容易執行。

+0

感謝您的輸入!你讓我意識到,有一種非常簡單的方法可以讓信號不經過Goto和From塊而遍佈整個地方。 – celestialorb

相關問題