- 博客(26)
- 收藏
- 关注
原创 MBD_入门篇_22_SimulinkSignalRouting
Selector的参数设置有,输入的维度,表示一维数组还是二维数组等,Index模式,Zero-Based还是One-Based的,Index的设置方式,对话框还是输入Port等,输入Port的size,就是比如1X3的数组,dimensions设置为1,size设置为3,或者size设置为-1表示继承,可以自动继承过来。Goto、From是成对使用的,Goto是将信号输出做一个类似的标签的作用,From是接收相应的Goto模块的信号,两个模块之间没有信号线连接,但是信号是相连的。可以类比多路开关的使用。
2024-06-15 15:30:56
1135
原创 MBD_入门篇_21_SimulinkSignalAttributes
Output的三个选项,Signal copy信号复制,Virtual bus虚拟总线(生成代码还是单个信号,只是在模型的视觉上进行编组),Nonvirtual bus非虚拟总线(对应生成代码结构体)。信号转换模块,可以对信号进行一个转换的处理,包括普通信号的复制,总线信号的复制。在标定的观测量设置,AUTOSAR接口的信号转换等地方会用的到,隔离原来的信号,产生一个一样的新的信号。搭建仿真模型,上面的加法使用继承的Sample Time为0.01s,下面的模块我们强制设置为0.02s。
2024-06-15 15:29:48
825
原创 MBD_入门篇_20_Simulink子系统
它是可以引用其他现成的模型,比较适合做集成,将模块化的其他的部分交给不同的工程师开发,再用Model Reference引用到一个模型里进行集成,其他的单独模块更新后,大的模型也会自动更新,不需要我们手动再去集成,避免手动操作出错和一些重复性的劳动。重新设置为true,单步运行,可以看到,上面设置held的使能子系统,继续之前累加值进行累加,输出变成了22。当enable连接的是true的时候,模型进行累加,一直加到21的时候,我们将true改为false,这个时候使能子系统保持上一个使能时刻的有效输出。
2024-04-21 20:20:30
1554
原创 MBD_入门篇_19_Simulink数学运算模块
atan2函数跟atan的区别是,atan2输入是两个值,atan输入是一个值,atan2可以输入象限的信息,但是atan是没有办法的。针对输入的每个元素的乘法运算。signedSqrt的输入值的符号对输出结果是有影响的,输入是什么符号,输出就是什么符号,根号是对输出的绝对值进行运算。数学函数模块,包含了一些常用的数学函数,比如exp,log,10^u,ln,square,pow,rem,mod等。波形显示如下,选择数量跟最终的波形有关系,数量越大,越接近原始的值,数量越小,精度损失会比较大。
2024-04-21 20:01:30
6312
3
原创 MBD_入门篇_18_Simulink查表模块
分数就是我们要查的值的横坐标的值减去前面一个点的横坐标,占相邻两个点横坐标差的比。比如我们知道x1,x2,x3对应的y1,y2,y3值,通过这三组数据,可以线性地插值出其范围的其他数据。注意两个值一定是一一对应的关系,有多少个Table值,就要有多少个Breakpoint的值。比较常用的模块,参数较多,会复杂一点,比较重要的模块,一定掌握。线性插值,右边范围外的按照最后两个值的斜率来计算,左边范围外的按照前两个值的斜率来计算。数据一定是递增或者递减的,建议使用递增的。最接近的值,取更接近的横轴的数据。
2024-02-20 08:49:37
1785
原创 MBD_入门篇_17_Simulink逻辑和位运算模块
比如说8bit的数据,位数就是从0到7,最低位是0,最高位是7.16bit的数据,位数就是从0到15,最低位是0,最高位是15。向左移2位,相当于乘以2的2次方。和上面CompareToZero模块唯一的不同就是,这个模块比较的值可以设定,通过参数设定。不包含边界值的时候,模块图标也会变化,3.5不在(0.5, 3.5)之内,输出为false。用输入值和零作比较的模块,运算方式跟比较运算一样,可以选择大于,小于,等于等等。用输入值和常量作比较,运算方式跟比较运算一样,可以选择大于,小于,等于等等。
2024-02-20 08:48:22
2226
2
原创 MBD_入门篇_16_Simulink离散模块
Reset在delay作为某个函数运行的时候,新来的信号处理的时候,如果不进行Reset,那将会用上一个信号的最后一个值作为初始值,在这种情况下会多一个无效值,使我们运算有可能会出错。主要讲一下与延时模块相关的,其他的一些也是比较高阶的数学模块,我们在后期如果有机会讲到高级算法的时候再来看,入门篇就暂时不讲那么高阶的东西了。打开使能设置,Enable的时候正常的进行延时,Disable的时候,保持延时的最后一个有效值。可复位的延时模块,在基础的延时模块上勾选外部输入默认值以及外部复位的设置。
2024-01-28 11:51:37
1781
原创 MBD_入门篇_15_Simulink不连续模块组
设置迟滞区间,大于上限值的时候输出1,小于下限值的时候输出0,其他的时候输出之前时刻的有效值。Discontinuities,不连续模块组。里面有几个Simulink提供的模块,限幅模块、死区模块等。输出结果波形,-0.5到0.5的值直接输出为0,这范围之外的值取差值。加一个动态的上限输入。0.5与0.7跳变的PWM信号作为上限输入。15.3 动态的限幅模块SaturationDynamic。推荐使用默认的数据类型输出设置,即保持与第二输入一样。多了两个输入,动态调整上下限值。设置死区模块的上下限。
2024-01-28 11:50:40
999
原创 MBD_入门篇_14_Simulink常用模块
Reset在delay作为某个函数运行的时候,新来的信号处理的时候,如果不进行Reset,那将会用上一个信号的最后一个值作为初始值,在这种情况下会多一个无效值,使我们运算有可能会出错。满足第2个port的输入条件,把第1个Port的值作为输出,不满足的话,把第3个Port的值作为输出。打开使能设置,Enable的时候正常的进行延时,Disable的时候,保持延时的最后一个有效值。判断方式选择,推荐选择~=0,条件为真的时候,输出第一个输入,条件为假的时候,输出第三个输入。我们默认选择点乘就可以,最简单的。
2024-01-21 22:14:17
4349
原创 MBD_入门篇_13_Simulink模块基本介绍
数据的维度设置,-1表示继承,用的地方比较多。比如[1 3],或者[3, 1], 或者直接写3。或者[3 3]定义矩阵。定位到库浏览器里,找到需要添加的模块。使用鼠标拖拽到模型里进行添加,或者使用鼠标右键点击快捷菜单进行添加。,在弹出的搜索框里输入模块的名字,Simulink会弹出相关的模块,我们选择要添加的模块进行添加。双击模块,在弹出的Parameter里设置相关的属性。设置序号,在子系统里会以序号的顺序去显示输入和输出。13.1.1 使用库添加模块。数据类型设置,实数和复数。数据类型设置,比较重要。
2024-01-21 22:12:56
638
原创 MBD_入门篇_12_Simulink模型文件基本操作
PS:上述操作都可以通过命令去进行,这里就不详细展开,先讲基础操作。使用命令操作的方式会放在后期的课程里面。点击保存按钮或者使用Ctrl+s快捷键进行保存模型。回顾Simulink基本操作章节的2种创建方式。使用鼠标右键点击,在弹出的菜单中进行打开。12.Simulink模型文件基本操作。关闭模型直接点击模型窗口的×关闭即可。将模型拖动到命令窗口打开。12.2 保存和关闭模型。直接双击模型文件打开。
2024-01-11 22:47:38
677
原创 MBD_入门篇_11_Matlab程序设计
if语法,if后面的条件表达式为真的时候,会执行if条件后面的语句command1。for循环是在for后面跟一个行向量,按照行向量的size去执行迭代的总次数,第n次迭代,行向量里的值更新为i(n)。try后面跟的命令,如果执行错误,会跳到catch后面执行。也可以只有if不带else,如果为真就执行if条件后面的语句command1。while后面的condition为真的时候,while循环就会执行,为假的时候,循环结束。按照顺序语句进行执行,最容易理解的结构,从前到后,从上到下。
2024-01-11 22:46:54
642
原创 MBD_入门篇_10_Matlab运算
false等于false,所以bool_a等于true,逻辑值1。求余运算用rem函数,求模运算用mod函数。% bool_a结果为false,逻辑值0。% 执行结果为3,注意c语言执行结果是2。% 乘方,结果为16。10.1.2 普通算术运算。10.1.2 余数和模数。c语言&表示位与,|位或。10.Matlab运算。
2024-01-07 22:59:39
506
1
原创 MBD_入门篇_09_m脚本和函数
脚本是script,执行自动化操作。可以将一些重复性的工作用脚本去实现,然后保存下来,以后可以直接运行。函数里面的变量在执行完以后就会注销,不与base Workspace共享。在function下面写的注释会被help查询出来。必须是连续的%,不连续的后面的会被忽略掉。格式是*.mlx,是Matlab专门的脚本格式,不可以被其他文本编辑器打开。%后面的文本不会被执行,只是作为注释语句。格式是*.m,可以被其他文本编辑器打开。函数是function,被其他函数调用。用三个点来作为换行连接。
2024-01-07 22:58:27
826
1
原创 MBD_入门篇_08_Matlab数据类型
比如uint16整形,整数范围是0~65535,这时候16bit表示精度0.01的数,小数的范围0.00~655.35。可以使用()对cell进行索引,注意索引出来的还是cell。也可以使用{}进行索引,索引出来的是cell里包含的数据。cell可以包含cell,这使得用一个cell可以包含任意的数据。字符数据类型,使用'去定义,两个''中间的就是要定义的字符串。创建完后可以点击进行编辑,添加元素,修改数据类型等属性等等。% 用8bit来表示无符号的精度为1,偏移为-40的数据。使用{}创建cell。
2024-01-01 22:01:31
1199
原创 MBD_入门篇_07_Matlab常用命令
还可以使用1:end这样的表示方法表示从第一个到最后一个,或者10:end-10这样去表示第十个到倒数十个。使用:可以索引出整个的数据,比如要索引某一列,可以指定那一列,将行的数据用:来代替所有行。查找文件,which('untitled.slx', '-all'),查找所有同名文件。保存为.m,.mat文件。[]是定义矩阵或者向量非常好用的,在很多的脚本里也用的很广泛。ones函数,zeros函数同样的方法。% mat_a第2行进行sin运算赋值。% mat_a第1行进行赋值。7.Matlab常用命令。
2024-01-01 21:55:39
662
原创 MBD_入门篇_06_Stateflow简介
Stateflow可以直接嵌入到Simulink模型中,并且在仿真的初始化阶段,Simulink会把Stateflow绘制的逻辑图形通过编译程序转换成C语言,使二者有机地结合在一起。模型空白地方进行双击,在跳出来的搜索模块的框里填入要搜索的名字chart,然后点击确认。)结合在一起,针对系统对事件、基于时间的条件以及外部输入信号的反应方式进行建模。来构建组合和时序逻辑决策模型并进行仿真的环境。添加状态,点击状态按钮,放在Stateflow里就行。添加Simulink Function,搭建运算逻辑。
2023-12-23 23:16:24
1148
1
原创 MBD_入门篇_05_Simulink简介
Simulink是一个模块图环境,用于多域仿真以及基于模型的设计。Simulink与MATLAB相集成,能够在Simulink 中将MATLAB算法融入模型,还能将仿真结果导出至 MATLAB 做进一步分析。库浏览器中包含了常用模块,连续系统模块,离散系统模块,数学运算模块,逻辑模块,查表模块等等。mdl是以前的版本用的格式,现在的版本几乎都用的是slx格式。这几种方式不同版本之间的界面也有会有所区别,明白是创建的逻辑即可,选择自己习惯用的即可。库浏览器,包含了Simulink的模块。选择一种之前的版本。
2023-12-17 21:41:36
1992
1
原创 MBD_入门篇_04_Matlab简介
还可以添加一些常用的文件夹在路径中,比如我们写了一套工具,我们希望想用这个工具的时候就可以直接使用,那我们就可以把这个工具的文件夹加到路径历里来。其实我们在Matlab这边显示的Workspace,它的名字应该叫Base Workspace,我们定义的变量等都会存储在这里,我们可以直接点击查看或者编辑,非常方便。加载到路径中相当于这个路径成为了我们使用的时候会去在这些文件夹中挨个去搜索我们要用的函数或者文件等,如果不加载,那我们是没办法直接使用的。可以去使用Matlab命令去定义变量,使用函数等等。
2023-12-17 21:41:01
689
1
原创 MBD_杂谈_使用VSCode编译s32k
1.创建S32k工程1.1 S32DS介绍S32 Design Studio是NXP免费的IDE(集成开发环境),可以在官网注册下载激活。包含了代码编辑,编译调试功能。S32 Design Studio是基于eclipse开发的,对java开发比较友好,对C/C++开发不是特别友好,不能自动提示,只能面向拷贝的编程。1.2 创建工程打开S32DS软件。选择相应的Workspace进行工程的建立。Workspace相当于工程的文件夹,用来管理工程,在文件夹里可以创建多个Project。
2023-12-12 23:14:39
1300
原创 MBD_入门篇_02_MBD相关工具箱介绍
Matlab模型生成代码工具箱(Simulink Coder)是MathWorks公司开发的可用于生成嵌入式系统,自动代码生成的工具箱。MBD最核心的部分就是安装Matlab,不同公司购买的Matlab包含不同的工具箱,费用也会不同,有些是网络License,有些是单机的License。总之,Matlab模型生成代码工具箱是Matlab和Simulink用户必备的工具,能够大大简化嵌入式系统的开发和测试流程,提高开发效率和代码质量。Simulink就是建模的工具,可以建立各种各样的模型,进行仿真。
2023-10-05 11:19:18
1168
1
原创 MBD_入门篇_01_MBD与传统编码的区别
MBD(Model-Based Design)是以模型为基础的设计方法,它是一种系统开发方法论。对系统进行建模、分析、验证,然后基于模型自动生成代码、测试用例和文档等
2023-09-18 22:26:46
3871
原创 MBD_杂谈_为Matlab配置编译器
Matlab/Simulink生成代码本身是不需要外部编译器的。我们在需要把生成的代码编译成可执行文件的时候,需要安装外部编译器。比如HIL,SIL,CANoe联合仿真等。
2023-09-02 23:10:25
2509
原创 MBD_入门篇_00_模型生成代码工程演示
这边展示的是一个电池管理系统的项目,这部分是模型开发的应用层工程。使用模型开发应用层可以使开发变得更加高效,简化传统编码流程,并且可以使用仿真的手段去验证开发的软件。工程里有数据,模型和工具。搭建模型后,对模型生成代码,可以与底层代码集成编译,最后下载到板子里、
2023-08-16 17:35:41
639
3
原创 MBD_杂谈_使用VSCode调试c代码
1.环境配置1.1 VSCode安装免费的软件,可以直接在网上下载Visual Studio Code软件进行安装。安装完以后不是立马可以调试代码的。因为C语言代码是需要进行编译的,编译成可执行文件,才能运行。比如像Python脚本或者是m脚本,执行的是代码,是有自己的解释器,然后可以一行一行地执行代码,但是运行效率就会低很多。1.2 安装编译器下载x86_64-win32-seh,下载完解压到相应的路径下。解压完后放在相应的位置。把bin文件夹加到环境变量里。
2023-06-25 16:19:49
7508
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人