Simulink建模基础: Switch模块及其代码

本文详细介绍了Simulink中Switch模块的使用,包括如何建模和生成代码。根据车速信号,Switch模块实现低速和高速的判断。此外,还探讨了多重Switch和通过标定量Switch的用法,展示了如何通过Simulink模型生成if-else结构的代码,以及在实际汽车调试中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文描述Switch模块的建模并研究生成的代码。

1 Simulink中的Switch模块

在Simulink中Switch模块时非常常见的,通常用于根据一定地条件选择信号进行输出,类似于C语言中的if-else语句。

Switch模块如下:
在这里插入图片描述
左侧有三个信号输入端口,其中中间的那个是条件端口。如果条件为真,则输出上路信号,反之则输出下路。

另外还有个MultiSwitch模块,其效果类似,只是能够切换多种输入。
在这里插入图片描述

本文就以Switch模块为例研究用法。

2 Switch模块建模及代码生成

本文就以Switch模块进行一个简单的建模。例如,CAN信号传来车速,车速低于30kph时判断车辆为低速,否则为高速。

1)首先拖出一个Switch模块,双击进入属性,将判断条件改成u2 ~ = 0;
在这里插入图片描述
这一步操作是遵循《MAAB规范》主工的 jc_0141: Use of the Switch block。该规范要求第二个端口(条件)必须是该信号不等于0,不能是大于或小于0。

2)然后把判断条件建模为车速小于30kph,Port1为LowSpeed的宏定义,Port3为HighSpeed的宏定义,如下:
在这里插入图片描述
模型比较容易理解,即VehSpd小于30时,输出LowSpeed,否则输出HighSpeed。

3)配置Embedded Coder并生成代码如下:
在这里插入图片描述
生成的代码用了一段if-else语句,其中if中的条件就是判断车速大小。

3 Switch模块其他用法

3.1 多重Switch

在Switch模块的port3可以接入其他Switch模块的输出,形成一连串Switch,例如下图:
在这里插入图片描述
车速小于30,对应LowSpeed;车速介于30~60,对应MiddleSpeed;否则车速大于60,对应HighSpeed;

生成代码如下:
在这里插入图片描述

3.2 通过标定量Switch

汽车实车测试的时候,经常通过标定量切换信号来调试。假设ADAS软件通过当前道路环境,在一系列复杂算法后得出应该向发动机请求一个扭矩(即图中的TorqueRequest)。当SwitchFlag标定为1时,将软件算出的请求值发给Engine,然后发动机进行响应。如果将SwitchTorque标定为一个工程师想要的一个自定义的数值,再将SwitchFlag标定为0,就可以发出自定义的一个扭矩请求,从而不依赖算法去调试车辆的性能。
在这里插入图片描述

4 总结

在Simulink中Switch模块比较简单也比较常用,需要掌握好它的用法。

>>返回个人博客总目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

chhttty

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值