在Simulink中,Goto和From块通常被认为是不好的风格吗?

时间:2013-11-25 21:59:55

标签: matlab styles simulink goto

我最近正在开发一个Simulink模型,正在使用GotoFrom块来保持一个非常繁忙的系统不会变成乱七八糟的电线。我被告知我不会使用GotoFrom块,因为它们被认为是不好的风格(至少,根据我的雇主)。

虽然我认为应尽可能保持连线,但我相信GotoFrom块可以显着提高系统/子系统的可读性,如果模型会导致大量交叉线除此以外;特别是如果块可以用颜色编码(例如紫色Goto块到达所有紫色From块。

我提供了我正在使用的子系统的图像,但我不确定我是否可以将它放在这里。子系统本身有大约12个子系统块(可能更晚),每个子系统块有两个总线型输出。每个子系统的第一个输出转到Bus Creator块,每个子句的第二个输出转到第二个Bus Creator块。由于子系统垂直对齐而Bus Creator s位于右侧,因此会产生许多交叉线。我正在使用GotoFrom块来清理系统。

我可以提供一个较小但相似的模型的图像,我将这个问题放在一起。 Small Simulink system depicting crossed wires. 对于大约12个子系统的系统,这变得非常繁忙。我使用GotoFrom块来连接子系统和Bus Creator,而没有过多的交叉线。

我相信我的雇主可能会怀疑使用基于文本的语言的goto语句并将其应用于Simulink中的Goto / From块。一般来说,以这种方式(或任何方式)使用GotoFrom块被认为是不好的风格?

1 个答案:

答案 0 :(得分:7)

Mathworks汽车顾问委员会发布了一些建模guidelines(PDF),其中包括Goto / From的使用情况。他们列出的规则是:

  1. 没有浮动的子系统,即所有输入/输出端口都通过Goto连接。 Simulink的一大优点是能够通过粗略的视觉检查来确定信号流,不要通过将所有内容与Goto s链接来破坏它。至少在通过信号线连接的子系统之间有一个前馈和一个反馈回路。

    • 我对反馈信号的个人意见是它们都应该与信号线连接,但我相信你可以提出一些案例,其中所有这些都会使模型混乱。

  2. 第二条准则是关于Goto标签的范围;保持可见性local尽可能多。

    • 我认为只要您没有使用匹配的scoped多于From下游的几个级别,我认为设置Goto的可见性也是可以接受的。我还没有遇到对全局Goto标记的合理需求。
  3. 因此,所有Goto使用都不错,而且在某些情况下它可以提高可读性。话虽如此,我认为Gotos对于上面的图片并不合理。我意识到这只是一个例子,但我应该指出,如果正在创建的总线是虚拟,那么创建者的输入顺序无关紧要,重新排列Bus Create和Mux块输入可以为可读性创造奇迹。

    上述指南的问题在于存在弯曲它们的空间,团队中的开发人员可能就是这样做的。即使每个人都在努力关注它们,但是有一天,很长一段时间,当你重新绘制模型的那一部分以进行精炼/添加功能时,你可能会违反这些指导原则。在实现一些很酷的新功能的过程中,重新排列输入和输出可能会特别恼人。这可能是您的雇主选择实施全面禁令的原因。在某些情况下不方便,但更容易执行。