Simulink代码生成: Switch模块及其代码

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

本文描述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模块比较简单也比较常用,需要掌握好它的用法。

>>返回个人博客总目录

### 回答1: Simulink中的Switch模块可以用来在不同的条件下转换输入信号的输出。它有两个或多个输入端,其中一个为控制端,用来控制输出信号的选择。当控制端的值符合特定条件时,相应的输入端会被选中作为输出。使用时,需要在模块的配置面板中设置控制端的条件和相应的输入端。 ### 回答2: Simulink Switch模块是一种逻辑开关,可用于在模型中的不同部分之间切换信号流。当一个或多个条件满足时,Switch模块允许你改变信号的方向。该模块可以使用数字、布尔逻辑或者 MATLAB 表达式作为切换条件。 Simulink Switch模块有两种模式:简单模式和矩阵模式。 在简单模式下,Switch模块只能有一个输入信号和两个输出信号,这些输出信号是Switch之间交替切换的。在矩阵模式下,Switch模块可以有多个输入信号和多个输出信号,并且可以设置一个矩阵来指定输出信号之间的连接方式。 Switch模块也可以与其他Simulink模块一起使用,例如与Gain模块一起使用可以使得模型基于特定的条件改变系统的增益。此外,Switch模块还可以与其他Simulink模块一起使用来实现模拟控制系统中的分支流程以及多路转换逻辑功能。 总之,Simulink Switch模块是一种非常实用且广泛应用的逻辑开关模块,可以帮助模型开发人员解决信号流切换的问题,以实现更复杂的控制系统和信号流分析。 ### 回答3: Simulink switch模块Simulink中的一个非常有用的模块,它主要的作用是在模拟过程中实现不同信号的开关。 在Simulink中经常需要对不同信号进行切换,这时可以使用switch模块来实现。它可以用于选择不同的输入信号流,并将选定的信号输出到输出端口。Switch模块非常适合在控制系统设计中使用,比如在非决策状态下对不同的信号进行切换。 Switch模块的使用非常简单,只需要将需要切换的信号连接到模块的输入端口,并在模块参数中选择所需操作类型。模块有三种开关类型: 1)汇流排开关,2)单位置开关和3)双位置开关。每个操作类型对应着不同的切换方式。 汇流排开关是最常用的开关类型,它允许多个输入信号汇集到一起,并选择向其中的一个或一个组合输出。在模块参数中,您可以选择汇流排类型(并行还是串行),并指定要连接到开关的输入数量。开关包括两个输出端口:一个主输出端口和一个辅助输出端口。主输出可以提供所选输入的值,而辅助输出提供了被选定输入的索引。 单位置开关是只有两个输入信号的简单开关。它接受两个输入端口,并通过模块输入选择其中一个。单位置开关只有一个输出端口,向其中输出所选输入的值。 双位置开关也是有两个输入信号的开关。但是,此类型的开关有两个输出端口,分别输出所选输入的值和未选输入的值。它可以用于比较操作,比如将输入流分成两段并且输出一个值用于追踪它们之间的差异。 除了上述三种操作类型外,Switch模块还具有其他参数,比如输入阈值,可以通过它来设置输入的临界点。 总之,Switch模块Simulink中非常有用,它可以实现不同输入信号的切换,适用于控制系统设计等领域,应用广泛。大家可以根据实际需要选择不同的开关类型和参数。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值