中国汽车工程师之家--聚集了汽车行业80%专业人士 

论坛口号:知无不言,言无不尽!QQ:542334618 

本站手机访问:直接在浏览器中输入本站域名即可 

  • 1156查看
  • 0回复

[Simulink] 既然simulink库中有Relay模块,为何还要自己开发滞回功能?

[复制链接]


该用户从未签到

发表于 26-4-2024 22:07:39 | 显示全部楼层 |阅读模式

汽车零部件采购、销售通信录       填写你的培训需求,我们帮你找      招募汽车专业培训老师


有铁子后台留言,simulink的模块库中有个Relay模块,可以实现滞回功能啊。直接用不就行了,怎么还要费事巴力的自己做模型,这不是闲的吗?

既然simulink库中有Relay模块,为何还要自己开发滞回功能?w2.jpg

由于问的铁子比较多,没法一个个回复,这里统一说明下原因:还真不是闲的。

Relay模块实现的基本逻辑是:通过将输入与指定的阈值进行比较,输出指定的 'on' 或 'off' 值。中继状态时的 on/off 状态不受上限和下限之间输入的影响。

既然simulink库中有Relay模块,为何还要自己开发滞回功能?w3.jpg

但是,这里有个问题,当滞回的边界不是某个特定值,而是一条曲线或一组曲线时,Relay就不太好用了。这也是我们自己建立滞回模块的初衷。

得益于simulink开放的编程环境,我们可以基于自身的使用需求及建模习惯开发类似的功能模块。

例如,用switch封装建立个简易的if-else模块,就可以提高模型的可读性,也更有利于模型界面的整理。

既然simulink库中有Relay模块,为何还要自己开发滞回功能?w4.jpg

再举个例子,对于建模时,非常常见的一个问题就是除0。虽然大多数情况下simulink不会报错,但有时候看着一个个警告也难受啊。

在某些特性的情况下仿真可能会出现奇点,导致仿真异常停止,而这种错误还极难排查。

为了防止除数为0,每次进行除法运算时,都需要对除数进行预处理,或通过+eps(极小值),或通过saturation进行除数的阈值限制。

还有一种方法就是自己建立一个除法模块。

如下图所示,根据除数的符号,将除数分别限制在(-inf,-eps)以及(eps,inf)之间,即可有效避免除0的情况。

将模型封装后写入到自定义的模块库中,这样就不用每次都要对除数进行预处理了。

既然simulink库中有Relay模块,为何还要自己开发滞回功能?w5.jpg

对于一些常用的功能,铁子们可以根据建模习惯或规范建立自定义的模型库,这样可以大大增加建模效率。

毕竟工作效率提升了,摸鱼的时间就增加了。




该用户从未签到

发表于 12-3-2025 04:12:00 | 显示全部楼层
无法满足需求了。此时,我们需要自己设计并实现滞回功能模型来应对复杂的边界条件,实现更加精确的控制逻辑。同时,通过这种方式可以更深入的理解并掌握simulink的应用,锻炼自身专业能力。所以虽然使用Relay模块方便快捷,但在特定场景下还是需要自定义开发滞回功能模型来满足实际需求。

[内容由汽车工程师之家人工智能总结,欢迎免费使用,见贴尾]
回复 支持 反对

使用道具 举报



该用户从未签到

发表于 12-3-2025 04:12:00 | 显示全部楼层
您问到的关于在Simulink中使用Relay模块实现滞回功能的问题非常专业。Relay模块确实可以实现基本的滞回功能,即当输入达到某个阈值时,输出状态会发生变化。然而,当滞回的边界不是固定的阈值,而是曲线或一组曲线时,Relay模块可能无法满足需求。

在这种情况下,自定义的模型能更好地适应复杂的需求。自定义模型可以依据一系列条件来设定滞回的边界,更灵活地处理边界变化的情况。虽然自行开发可能会花费更多的时间和精力,但最终能得到更符合特定需求和复杂应用场景的解决方案。因此,根据实际项目需求自行开发滞回功能是有必要的。

[内容由汽车工程师之家人工智能总结,欢迎免费使用,见贴尾]
回复 支持 反对

使用道具 举报

快速发帖

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|Archiver|汽车工程师之家 ( 渝ICP备18012993号-1 )

GMT+8, 29-8-2025 07:38 , Processed in 0.392206 second(s), 36 queries .

Powered by Discuz! X3.5

© 2001-2013 Comsenz Inc.