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

2024-09-03 11:32

本文主要是介绍Simulink代码生成: Relay模块及其代码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文研究Relay模块的用法和该模块生成的代码。

文章目录

  • 1 Simulink中的Relay模块
  • 2 Relay模块建模
  • 3 Relay模块的代码
  • 4 总结

1 Simulink中的Relay模块

Relay这个单词有中继设备的含义,在Simulink中,博主将其理解为一个带有缓冲区的开关。
在这里插入图片描述
在配置界面可以配置Relay模块的阈值上限、阈值下限和输出的数值。

2 Relay模块建模

通过一个简单的模型,可以直观地理解Relay模块的用法。

1)新建一个Simulink模型,其中输入是Signal Builder,中间是Relay模块,输出是Scope。
在这里插入图片描述
2)双击打开Relay模块,将其阈值上限设为1.5,阈值下限设为0.5,输出设为0和1保持不变。
在这里插入图片描述
3)双击打开SignalBuilder,把阶跃设为在[0.5~1.5]内外的各个区间。
在这里插入图片描述
其中,各个时刻对应的数值如下:

时间数值
0~1s0
1~3s0.7
3~6s2
6~8s1
8~10s0

数值覆盖了阈值上下限的各个范围。

4)在这个基础上运行模型仿真,然后可以在输出Scope中看出Relay处理过的输入信号如下。上图是SignalBuilder输入,和3)中一致,下图是Relay处理后的结果。
在这里插入图片描述
分析这张图在各个时间段的输出,可以得出下表。

时间输出结果
0~1s由于输入0小于阈值下限0.5,所以输出为阈值下限对应的0.
1~3s输入为0.7,进入了0.5~1.5的缓冲区域,所以输出保持为上一阶段的输出,为0.
3~6s输入为2,超出了0.5~1.5的缓冲区域,由于超过了上限1.5,所以输出为阈值上限对应的1
6~8s输入为1,回到了 0.5~1.5的缓冲区域,所以输出保持为上一阶段的输出,为1.
8~10s输入0小于阈值下限0.5,所以输出又回到了阈值下限对应的0.

经过这个简单的例子,差不多就摸清楚Relay的用法了,就是给逻辑判断带来一个缓冲区。在缓冲区内部,输出保持和上一次的阈值输出一致。

3 Relay模块的代码

把上一章节的模型的输入输出换成Inport和Outport,配置好Embedded Coder并生成代码,看看C代码中是怎么实现Relay的功能的。

在这里插入图片描述
这段代码其实很简单,就是用了简单的if-else条件判断,加上Relay_Mode这个全局变量实现的。当输入在0.5到1.5这个范围外面的时候,把Relay_Mode全局变量更新为阈值上下限对应的输出,再把Relay_Mode赋值给输出Out1。当输入在0.5到1.5这个范围内的时候,不更行Relay_Mode的数值,保持和上一个step一致,再赋值给输出Out1。这样就实现了Relay的效果。

4 总结

Relay模块的模型用法和对应代码都十分简单,非常好理解。在控制策略建模中,Relay模块也是非常常用的。

>>返回个人博客总目录

这篇关于Simulink代码生成: Relay模块及其代码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1132847

相关文章

SpringBoot实现MD5加盐算法的示例代码

《SpringBoot实现MD5加盐算法的示例代码》加盐算法是一种用于增强密码安全性的技术,本文主要介绍了SpringBoot实现MD5加盐算法的示例代码,文中通过示例代码介绍的非常详细,对大家的学习... 目录一、什么是加盐算法二、如何实现加盐算法2.1 加盐算法代码实现2.2 注册页面中进行密码加盐2.

python+opencv处理颜色之将目标颜色转换实例代码

《python+opencv处理颜色之将目标颜色转换实例代码》OpenCV是一个的跨平台计算机视觉库,可以运行在Linux、Windows和MacOS操作系统上,:本文主要介绍python+ope... 目录下面是代码+ 效果 + 解释转HSV: 关于颜色总是要转HSV的掩膜再标注总结 目标:将红色的部分滤

在C#中调用Python代码的两种实现方式

《在C#中调用Python代码的两种实现方式》:本文主要介绍在C#中调用Python代码的两种实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C#调用python代码的方式1. 使用 Python.NET2. 使用外部进程调用 Python 脚本总结C#调

Java时间轮调度算法的代码实现

《Java时间轮调度算法的代码实现》时间轮是一种高效的定时调度算法,主要用于管理延时任务或周期性任务,它通过一个环形数组(时间轮)和指针来实现,将大量定时任务分摊到固定的时间槽中,极大地降低了时间复杂... 目录1、简述2、时间轮的原理3. 时间轮的实现步骤3.1 定义时间槽3.2 定义时间轮3.3 使用时

Python使用date模块进行日期处理的终极指南

《Python使用date模块进行日期处理的终极指南》在处理与时间相关的数据时,Python的date模块是开发者最趁手的工具之一,本文将用通俗的语言,结合真实案例,带您掌握date模块的六大核心功能... 目录引言一、date模块的核心功能1.1 日期表示1.2 日期计算1.3 日期比较二、六大常用方法详

Java中&和&&以及|和||的区别、应用场景和代码示例

《Java中&和&&以及|和||的区别、应用场景和代码示例》:本文主要介绍Java中的逻辑运算符&、&&、|和||的区别,包括它们在布尔和整数类型上的应用,文中通过代码介绍的非常详细,需要的朋友可... 目录前言1. & 和 &&代码示例2. | 和 ||代码示例3. 为什么要使用 & 和 | 而不是总是使

Java强制转化示例代码详解

《Java强制转化示例代码详解》:本文主要介绍Java编程语言中的类型转换,包括基本类型之间的强制类型转换和引用类型的强制类型转换,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录引入基本类型强制转换1.数字之间2.数字字符之间引入引用类型的强制转换总结引入在Java编程语言中,类型转换(无论

Vue 调用摄像头扫描条码功能实现代码

《Vue调用摄像头扫描条码功能实现代码》本文介绍了如何使用Vue.js和jsQR库来实现调用摄像头并扫描条码的功能,通过安装依赖、获取摄像头视频流、解析条码等步骤,实现了从开始扫描到停止扫描的完整流... 目录实现步骤:代码实现1. 安装依赖2. vue 页面代码功能说明注意事项以下是一个基于 Vue.js

python中time模块的常用方法及应用详解

《python中time模块的常用方法及应用详解》在Python开发中,时间处理是绕不开的刚需场景,从性能计时到定时任务,从日志记录到数据同步,时间模块始终是开发者最得力的工具之一,本文将通过真实案例... 目录一、时间基石:time.time()典型场景:程序性能分析进阶技巧:结合上下文管理器实现自动计时

mybatis-plus 实现查询表名动态修改的示例代码

《mybatis-plus实现查询表名动态修改的示例代码》通过MyBatis-Plus实现表名的动态替换,根据配置或入参选择不同的表,本文主要介绍了mybatis-plus实现查询表名动态修改的示... 目录实现数据库初始化依赖包配置读取类设置 myBATis-plus 插件测试通过 mybatis-plu