mathworks应用工程师,博客介绍关于 simulink 以及其它 mathworks 的基于模型的设计工具。
几天前,我需要调试一个较大的模型,出现了下面这个错误:
在我这个模型里,这个代数环涉及到一百多个模块,信号遍布整个模型,还有总线结构,把问题变得很复杂,难以分析。
ashow(为什么不再需要它了!)
多年来,我一直使用ashow函数高亮显示代数环。以下是一个简单模型的示例:
然而,它不太好用,而且它只能高亮显示代数环的一部分。显然,它也无法高亮显示我现在需要解决的这个代数环。
这是因为,这里的代数环是定点信号,这就导致了类似“先有蛋还是先有鸡”的问题。。为了让 ashow 运行,它需要模型能编译。然而,该环是定点信号,simulink 引擎知道它自己无法求解,于是在模型编译过程中报错,导致无法使用 ashow。
就在那时,我想起了一个相对较新,但经常忘记的函数:
simulink.blockdiagram.getalgebraicloops
如果你仔细阅读过代数环的相关文档页面,可能已经知道到,simulink 提供了simulink.blockdiagram.getalgebraicloops 函数,它是一种新的,且更有效的代数环高亮显示方法。
用上述同一示例,结果如下:
这个函数在 r2015a 中引入,并在 r2017b 中做了改进,能找到并高亮显示更多类型的代数环。在我的案例中,它已经能高亮显示涉及到定点信号的代数环。根据该环高亮提示,就可找出引入延迟模块并打断该环的最佳位置。
请注意以下几点:
以红色高亮显示的模块是我们称之为代数变量的模块。可以先尝试在这类模块的输出端添加一个入延迟模块(除非是连续信号,参见下列相关阅读)。
如果检测到该环是人为代数环,它将以虚线高亮显示,这表示应使用原子子系统或模型引用的 minimize algebraic loop feature 勾选项来解决这个问题。
simulink.blockdiagram.getalgebraicloops 还会返回一个对象类型的返回值给出模型代数环的各种属性,其中包括所涉及模块的句柄,您可以酌情使用。
以下是高亮显示的代数环的定点模型示例:
基于STM32的三轴数字罗盘HMC5883L模块的测试方案
什么是远传式磁翻板液位计?
戴尔斥资12亿美元收购SonicWall
DeepMind正在开发可以利用基因序列预测蛋白质结构的新AI工具
哪款蓝牙耳机防水效果比较好?防水效果好的蓝牙耳机盘点
关于可视化定点代数环的研究分析
依图有望成为AI“第一股”
大众电动平台将为奥迪保时捷等品牌提供助力
两岸面板产业合作峰会20日北京举行
物联网能否催生新的BAT
组合式空气消声过滤器的原理特点和应用分析
华硕ROG CROSSHAIR VIII DARK HERO主板,采用标准的ATX版型设计
手机电池经常故障解决处理方案
高度集成微处理器XC167CI-16F40F的性能特点及应用
关于几种室内无线定位技术介绍
基于PIC16C71单片机的数字水温配制阀设计
LG和戴尔联手将为VR连接器创建新的硬件标准
深圳维修E4440A开机自检报错故障案例
新能源车核心技术有待提高
全球能源革命即将爆发,动力电池市场潜力无限