手把手教用matlab做无人驾驶(十六)--matlab/simulink 高级应用

4 篇文章 3 订阅
2 篇文章 1 订阅

1.首先,介绍一下matlab/simulink中把模块封装为库函数

通过以下建立Library

如下是我的库内容,保存库名字为mathlib:

 

然后建立一个模型,打开mathlib.slx模块,把这个模块加入模型中,建立如下模型,仿真即可。

如果想改这个模型,打开拖动会出现:Attempt to modify link 'untitled1/Subsystem'. Disable this link to make changes locally in the model or open the library to make the changes directly in the library block.这怎么办呢?其实这个是可以改的,只要在模块上使用Ctrl+L就会调用库函数:

然后右键Open in New Tab,修改保存即可,我这里把里面的k=1修改为4保存,运行结果如下:

 

如果想把库函数添加到simulink库中,只需要建立文件

function blkStruct=slblocks
Browser.Library='mathlib';
Browser.Name='mathlib';
blkStruct.Browser=Browser;

然后通关过设置路径把刚才的路径的文件包含进去。

然后将此文件夹添加进MATLAB路径并刷新Library,即可看到自定义模块库,如下,我的mathlib

到这里,关于库的应用就讲解完了。

现在讲解一下matlab2014年才加入的simulink function 函数的应用,相信大家对这个模块应用的比较少,其实这个模型用的好可以为我们搭建复杂的模型时简化线路有好处,在User-Defined Functions中

 

新建simulink模型如下,我只是在simulink function乘以gain=4,这就通过caller 调用函数即可(通过函数名称):

到这里,可能有的问不在同一级怎么调,这个很好办,这里只给出搭建的模型,细节不详细说了。

同时这个也可以用function函数中调用

到这里simulink function 函数就讲完了。

这里讲一下stateflow怎么嵌入已有的c代码运行

首先建立一个fun.m函数转换为c代码

 

然后命令中coder:

 

这里转换代码过程不多讲,自己搜索一下就有很多文档,最后就是到这里:

然后保存代码,出现包:

 

解压这个fun_pkg包:

 

这里,也给出我自己总结的simulink生成代码的注意细节,怎么能够生成简洁的代码以及占用RAM最小:

Matlab/Simulink生成代码注意事项

  1. Solver的设置为Type:fixed-step、Solver:discrete、fixed-step size:0.01s
  2. Code Generation:(1):Report中两个勾选,生成代码可以看。
  1. :快速原型代码(grt.tlc) simulinnk coder生成的代码,产品代码 (ert.tlc) Embedded coder,选择ert.tlc代码就简洁了。

3.数据管理生成代码:通过在Model Explore的Base Workspace中设置信号线,并且设置store class:ExportedGlobal,

4.捆绑信号,在线上点击Properties中signal name打勾:

 

  1. k也改掉,

 

代码即可以出现我们这种形式:

 

 

保存数据指令:save('caokaifa.mat')

保存为.m文件:Simulink.saveVars('caokaifa.m')

 

现在点击模块右键Model Advisor

 

  1. 默认函数是模块名字_step,如下:

 

更改模块名字:

右键,Block Parameters中勾选Treat as atomic unit:

 

 

 

 

然后再里面设置函数名和保存到那里:

 

 

引用不同的参数使用Variant Model

 

  1. Software in the loop,等效性测试

生成代码封装成function函数,然后通过software in the loop测试,测试样本足够多。

首先,在配置里面Verification中Advanced parameters中选择Create block:SIL

  1. 先打开命令窗口打开模型,然后用slvnvmakeharness('test')打开测试环境
  2. 代码code generation /interface中库的替换也会提高效率
  3. 代码的定点化
  4. 重用数据,可以使用Analysis/Refactor Model/Identify Modeling Clones
  • 8
    点赞
  • 69
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值