Simulink建模:位运算

这篇具有很好参考价值的文章主要介绍了Simulink建模:位运算。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文研究Simulink中常用的按位运算的建模方法。

1 引入

在计算机的基础课中,学过把一个十进制数转换成二进制数。例如,十进制的63转换为二进制就是111111。系统自带的计算器工具选择程序员模式,就可以很方便地进行转换操作。
simulink中shift arithmetic,数据挖掘,算法,人工智能
这里的二进制数,最右边就是第0位,往左一个就是第1位,再往左一个就是第二位,依次类推。后文中博主会介绍自己工作中常用的位运算建模方法。这里暂时只讨论正整数的位运算,因为在博主的工作中用到的正整数相关位运算比较多。

2 位运算模块

2.1 移位模块

在Simulink中,可以通过Shift Arithmetic模块,对输入的数字左移或右移若干个位。例如下图中,Direction中配置为Left,Number配置为3,也就是将输入的数值左移3位,得到的结果输出。
simulink中shift arithmetic,数据挖掘,算法,人工智能
例如输入的数值是3(十进制),输出的数值就是24;
simulink中shift arithmetic,数据挖掘,算法,人工智能
这里的计算过程如下,3转换成二进制得到"0011",将"0011"左移3位变成"0001 1000",再将"0001 1000"转换成十进制就变成了24。

或者,移位其实就是乘以2的n次方,所以out = 32^3 = 38 = 24;

2.1 按位逻辑运算

逻辑运算包括与或非等等,这个在门电路里面是非常常用的。在Simulink中有一种按位进行逻辑运算的模块Bitwise Operator,可以对整数的每一位进行逻辑运算,然后再输出。

这里以Bitwise And为例,下图中将Operator选为And,表示按位进行与运算,Bit Mask中是bin2dec(“11011001”),表示将输入的数值和"11011001"的每个对应的为进行与运算,再输出。
simulink中shift arithmetic,数据挖掘,算法,人工智能
例如下图中,输入为19,经过Bitwise And后,输出为17.
simulink中shift arithmetic,数据挖掘,算法,人工智能
这里的计算过程如下,首先,十进制的19转为2进制是"0001 0011",和"1101 1001"按位进行与运算,必须同样的位都是1才输出1,所以运算结果是"0001 0001",转换成十进制就是17了。

3 代码生成

上面讲的两种位运算生成代码也比较简单,这里就看一看。

例如做了两个简单的输入输出,分别接bitwise and模块和shift模块。
simulink中shift arithmetic,数据挖掘,算法,人工智能

生成代码后就是对应C语言中的移位运算和AND运算。

simulink中shift arithmetic,数据挖掘,算法,人工智能

4 位运算的应用

博主在做电控开发的经验中,有以下两种情况会用到位运算:DBC矩阵解析和bool信号打包。本节会简单讲讲应用的方法。

4.1DBC矩阵解析

关于DBC文件相关概念,博主在以前的博客中写过这里不再赘述,可以参考以下文章。

  • Matlab编程技巧:导入DBC文件
  • Matlab编程技巧:通过正则表达式解析DBC文件
  • Simulink代码生成:CAN Pack模块及其代码

参考如下DBC矩阵,显示的是ID号为0x258的帧。DriverDoorWindow信号处于该帧矩阵的第2行和第3行。假设Byte Order属性是Intel格式,那么第2行的前4位就是该信号的低4位,第3行的后4位就是该信号的高4位。同时假设factor和offset分别为1和0,以便简化后面的计算演示。
simulink中shift arithmetic,数据挖掘,算法,人工智能
假设我们的控制器接收到这一帧,可以通过如下方式解析出来。

1)首先通过底层软件可以解析出每一行的的8个位组成的数值,那么第2行和第3行就是Data_2和Data_3,作为port口引入模型;
simulink中shift arithmetic,数据挖掘,算法,人工智能
2)通过Bitwise And,将第2行的前4位取出来,那么Data_2需要和"1111 0000"做一个Bitwise And,这样就将Data_2的低4位全部置为0,Data_2的高4位全部保留,然后再右移4位,就能将Data_2的高4位转换成DriverDoorWindow信号的低4位;
simulink中shift arithmetic,数据挖掘,算法,人工智能
3)同理,通过Bitwise And,将第3行的后4位取出来,那么Data_3需要和"0000 1111"做一个Bitwise And,这样就将Data_3的高4位全部置为0,Data_3的低4位全部保留,然后再左移4位,就能将Data_3的低4位转换成DriverDoorWindow信号的高4位;
simulink中shift arithmetic,数据挖掘,算法,人工智能
4)最后,把2)和3)步骤中的输出加起来,就得到了完整的DriverDoorWindow信号;
simulink中shift arithmetic,数据挖掘,算法,人工智能
最后说明一下,通过应用层模块解析DBC文件已经不是很常见了,行业内基本上都是通过Autosar架构配置完成CAN信号的解析。

4.2 bool信号打包

在建模的过程中,可以将若干个bool信号打包成一个信号,用于后面的判断,或者采集观测。例如,ACC(自适应巡航)系统的激活条件要求如下条件都满足:

bit位 条件 信号名
bit0 挡位处于前进档 GearPos
bit1 车门关闭 DoorStatus
bit2 安全带系上 SeatBeltStatus
bit3 车速小于150kmph VehSpd
bit4 制动踏板未踩下 BrkPedStatus

实际中的ACC激活条件不止这些。建模的过程中,可以将这些布尔信号通过移位相加组装成一个uint8的信号,每一位代表其中一个条件是否满足。可以建模如下:

simulink中shift arithmetic,数据挖掘,算法,人工智能
通过这种建模方式,就可以用ACC_Enable信号的每个位来表示各个条件是否满足。

比方说ACC_Enable = 27,转为2进制就是"0001 1011",其中第0,第1,第3,第4位都是1,第2位是0。对应模型中左移两位的信号是SeatBeltStatus,所以就是安全带没系上,导致了ACC不激活。

5 总结

本文研究Simulink中常用的按位运算的建模方法,位运算的建模比较简单,可以很容易地掌握。

>>返回个人博客总目录文章来源地址https://www.toymoban.com/news/detail-820814.html

到了这里,关于Simulink建模:位运算的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MATLAB使用Simulink 进行建模与仿真方法 - Simulink基本操作与入门教程

    Simulink 是 MATLAB 很强大的功能组件,广泛用于系统建模、仿真和分析。下面分享给大家MATLAB使用Simulink 进行建模与仿真方法、步骤,希望能够帮助大家。 电脑 MATLAB及Simulink 组件 MATLAB使用Simulink 进行建模与仿真 1 我们打开MATLAB软件,然后在命令窗口中输入simulink或点击左上角的

    2024年02月05日
    浏览(104)
  • Simulink建模:PID控制模型

    本文研究PID控制的Simulink模型实现及其代码生成。 PID控制是一个非常经典的控制方法,离散化的位置式PID控制的公式如下: x ( t ) = K p ⋅ e ( t ) + K i ⋅ ∫ 0 t e ( t ) d t + K d ⋅ d e ( t ) d t x(t) = K_{p}cdot e(t) + K_{i}cdot int_{0}^{t} e(t)dt + K_{d}cdot frac{de(t)}{dt} x ( t ) = K p ​ ⋅ e ( t ) +

    2024年02月03日
    浏览(33)
  • Simulink建模之键盘快捷方式和鼠标操作

    键盘快捷方式和鼠标操作,可以帮助大家在 Simulink中高效地进行系统建模。 任务 快捷方式 打开模型 Ctrl+O 创建模型 Ctrl+N 打印模型 Ctrl+P 将所有修改的模型保存在当前模型层次结构中 Ctrl+S 保存当前引用模型 Ctrl+Shift+S 关闭模型 Ctrl+W 剪切 Ctrl+X 粘贴 Ctrl+V 复制 Ctrl+C、Ctrl+V 撤消

    2024年02月17日
    浏览(40)
  • 基于simulink的信道化接收机建模与仿真

    目录 1.发送模块设计 2.接收模块的设计 3.仿真测试 4.基于matlab的误码率仿真         信道化接收机建模是指在通信系统中,对接收机的行为和性能进行数学建模和分析,以便更好地理解和优化通信系统的性能。在数字通信系统中,信道化接收机的建模涉及到对信道、噪声、解

    2024年02月04日
    浏览(38)
  • 使用 MATLAB 和 Simulink 对雷达系统进行建模和仿真

     💥💥💞💞 欢迎来到本博客 ❤️❤️💥💥 🏆博主优势: 🌞🌞🌞 博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️ 座右铭: 行百里者,半于九十。 📋📋📋 本文目录如下: 🎁🎁🎁 目录 💥1 概述 📚2 运行结果 🎉3 参考文献 🌈4 Simulink、Matlab代码实现

    2024年02月11日
    浏览(40)
  • 独立逆变器系统MATLAB-simulink建模及仿真

             独立逆变器不同于并网逆变器,是一种将直流电转换为特定频率与幅值交流电的电力电子装置,一般作为EPS、UPS以及孤岛微电网系统的雏形装置。由于其负载的多样性导致独立逆变器必须具备快速适应负载变化的特性。本设计通过对独立逆变器系统传递函数分析并

    2023年04月08日
    浏览(44)
  • 基于卡尔曼滤波进行四旋翼动力学建模(Simulink&Matlab)

      💥💥💞💞 欢迎来到本博客 ❤️❤️💥💥 🏆博主优势: 🌞🌞🌞 博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️ 座右铭: 行百里者,半于九十。 📋📋📋 本文目录如下: 🎁🎁🎁 目录 💥1 概述 📚2 运行结果 🎉3 参考文献 🌈4 Matlab代码实现 文献来

    2024年02月11日
    浏览(47)
  • DC-MOTOR直流电机的simulink建模与性能仿真

    目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件          使用simulink建立一个DC电机模型,然后通过matlab调用该模型进行仿真,仿真结束之后,simulink的仿真输出结果通过matlab来显示。 版本:MATLAB2022a        直流电机是一种将直流电能转换

    2024年01月20日
    浏览(34)
  • 用于独立系统应用的光伏MPPT铅酸电池充电控制器建模(Simulink实现)

    💥💥💞💞 欢迎来到本博客 ❤️❤️💥💥 🏆博主优势: 🌞🌞🌞 博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️ 座右铭: 行百里者,半于九十。 📋📋📋 本文目录如下: 🎁🎁🎁 目录 💥1 概述 📚2 运行结果 🎉3 参考文献 🌈4 Simulink实现、详细文章

    2024年02月09日
    浏览(47)
  • 基于MATLAB/Simulink的三相并网逆变器dq阻抗建模及扫频仿真

    本文主要介绍三相并网逆变器dq阻抗建模的相关知识,和大家分享一下怎么使用MATLAB/Simulink来进行理论模型的搭建以及如何通过扫频获取阻抗模型,一方面是给自己留点学习资料,也希望对大家能有所帮助。如果有什么问题或者错误,欢迎留言。 本文涉及的代码和模型就不提

    2024年02月11日
    浏览(175)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包