[已答复] MATLAB Central 的 Simulink 博客

[复制链接]
steppenwolf 发表于 2008-3-26 12:37:20
本帖最后由 柚籽 于 2015-3-23 15:31 编辑

MATLAB Central 最近新开了一个Simulink 的博客,推荐大家去看看
http://blogs.mathworks.com/seth/

我会陆续翻译转贴过来,希望大家可以交流心得。

本人能力有限,翻译得欠妥的地方还希望大家提出来改进!

[ 本帖最后由 steppenwolf 于 2008-3-26 13:38 编辑 ]
=====新的内容都不是逐字翻译,解释了一下内容,这样子,原文可以看帖子开头的链接=========
2015-1-7 柚籽

楼层链接:
2014-12-18 查看仿真数据 #81
2014-12-11 Simulink Functions hit the big time 新增加的Simulink Function以及function caller模块
2014-12-08 Quickly Insert a Complementary Block      
2014-10-08  R2014b… my favorite things!    14b的一些更新
2014-11-10 Explore your Models Easily with the Interface View  
2014-10-23 Unified Simulink Scopes in R2014b


欢迎     #2什么是复合信号? #4
Simulink 中的搜索  #7
Simulink库介绍 #17
Simulink 建模的小技巧 #18

仿真时获取模块数据















83 条回复


steppenwolf 发表于 2008-3-26 12:46:05

二月二十六号 欢迎

欢迎来 MATLAB Central Simulink 博客! 这个博客的目的有两个: 其一, 我想分享多年以来学到的 Simulink 心得与技巧. 其二, 我希望能学习到你们使用 Simulink 的经验. 哪些是好的? 我们能如何改进?         
    我使用 Simulink 已经九年了, 先是作为技术支持的成员,然后是培训员. 我还记得1998年我作为一个刚被聘用的技术支持工程师第一次见识到 Simulink 的强大功能的 情形.在一个培训课程中我看到一些微分方程被画出来,并在几个鼠标点击下就被模拟 了出来, 其简单明了的过程让我激动不已. Simulink给了我一个框架去思考系统和其 基本组成部分之间的关系.
    当然, Simulink 绝不仅仅是一个解微分方程的工具那么简单.它的深度与广度给了我很多 东西去挖掘. 你们想知道哪些方面的内容呢? 我们将谈到 Simulink 在控制, 信号处理及通讯系统设计方面的应用. 在你们的帮助下, 我们还将谈到一些我根本就不知道的应用领域. 我们将谈到基于模块的设计方法还有一些 Simulink的内部机制. 我将会发布一下这些内容
  • solvers
  • sample times
  • modeling
  • hacks
  • blocks
  • model reference
  • libraries
  • masking
  • custom code
         
一个例子: 批量仿真
    让我从一个具体的仿真的例子开始. Simulink 模型是由模块搭建而成, 而大多数人都会点击工具栏上三角形的 run 按钮 开始运行这个模型.
    vdp_PlayButton.GIF
    如果你需要进行参数扫描,你或许可以改变参数,运行模型,再改变参数,再运行模型. 如果你要运行成百上千次仿真,你可以写一个批量仿真的脚本文件. 你可以像下面的例子 这样用 sim 命令从MATLAB直接运行仿真.
>> [t,x,y] = sim(sys);这会返回每一个采样时间点 (t) 的根级别的输出(y) 及模型的内部状态(x). 一个批量仿真的脚本文件可能像下面这样:
open_system('vdp_mu');
muSweep = .5:.1:1.5;
for i = 1:length(muSweep)
mu = muSweep(i);
[t,x,y] = sim('vdp_mu');
plot(t,y); hold on;
end
title('VDP States for mu=.5 to 1.5')
xlabel('Time'); legend('x1','x2')
Feb26_CHS_01.GIF
    如果你已经熟悉了 sim 命令, 你应该知道有时你只对输出(y)有兴趣, 而不是状态 (x).  对于大型的模型, 或是长时间的仿真, 那些状态变量 可能是对虚拟内存的一种浪费.  使用 simset 你可以设定|sim| 命令 的选项进而只保留时间(t) 和输出 (y).  状态变量将为空.         
[t,x,y] = sim('vdp_mu',[],simset('OutputVariables','ty'));
whos t x y  Name       Size            Bytes  Class     Attributes

  t         77x1               616  double              
  x          0x0                 0  double              
  y         77x2              1232  double              

你可以在 Simulink 文档 学习更多 sim 和 simset 的内容.         
         
Seth Popinchalk Copyright 2008 The MathWorks, Inc.
         
Published with MATLAB® 7.6

godeagle 发表于 2008-3-31 10:40:41
谢谢版主,simulink的仿真功能真是很强大,希望能更加深入的学习

柚籽 发表于 2008-3-31 15:01:27

March 27th, 2008

什么是复合信号?
    简短扼要的说,复合信号就是多路信号mux(向量)或者说总线信号bus,可以看作是各路信号的组合。在遇到共源极模型问题时,你就会体验到使用muxbus的精妙之处。MathWorks公司在2006年发布了一节新的Simulink文档,专门讨论复合信号(Composite Signals)。在本帖里,我将分享我对muxbus模型的理解。

首先来看mux
Mux模块的基本思想就是将多路信号集成一束,这一束信号在模型中传递和处理中都看做是一个整体。(Mux实际上代表多路信号。)与Mux Block配套的是Demux Block,它将各路信号相互分离以便能对各信号进行单独处理。 请看下面这个例子。
muxEx1.JPG
Mux将三路信号x,y,z集结为宽为3的单路信号。Demux模块则用来从复合的单路信号分离出各基本元素。MuxDemux都不会将信号改变,它们只是“虚拟”的。当模型运行时,这些模块就像不存在一样,只是源和目标的连接保持着,就像这样:
muxEx2.JPG
使用mux的一个重要应用就是构造向量。这表示你可以将它的输出当作一个向量来使用。比如,将向量乘以2
muxEx3.JPG
这种类型的向量操作要求所有输入Mux模块的信号都是同种数据类型。从我的理解来看,只是为了使得它们组成的向量有意义。通常,这些信号元素都具有相同的单位或者说它们是有特定作用的组。对于Mux模块,你只需要定义输入信号数量。
muxDialog.JPG
使用虚拟向量形式的另一个好处是你可以使用selector模块来索引并取出各路信号或再进行连接。
untitled.JPG
接着讨论bus
当需要将不同类型的信号集结在一起,或者在使用向量不能方便的表达我的模型图时,我们可以使用bus。总线bus信号确实可以使你的模型图变整洁。Bus CreatorBus Selector以图示的形式方便了管理信号和组织模型。在我的想象中,bus就像是一系列七彩的信号线被绑在一起。如果不是这样,我恐怕很快就会很难组织这些信号了。作为实例,请看Aerospace Blockset中的an example model of the DeHaviland Beaver
busBeaverTop.JPG
在模型的最上层,所有对象都整洁有序,这是因为所有在各个子系统内计算的信息都被集入了一条总线。各个系统都使用Bus Creator将相关信号打包装入了一条总线内,接着将总线输入需要这些信号的各系统。
busBeaver6dofBus.JPG
你能想象如果这些信号没有集入总线是什么样子?下图是一个同样的模型,但它看起来很乱。
busBeaverTopMess.JPG
在这个模型里,许多组件子系统使用总线信号以形成较简洁的接口。我注意到,部分人只在别的系统需要时才将信号放入总线内。以下就是用总线信号来定义接口的一个系统实例。
busCalcParamsSys.JPG
浏览这个模块图,你会发现飞行参数(FltParams)是由环境参数(EnvirBus)和飞行器信号(ACBus)计算而来。在这个子系统内部,你可以看到使用了Bus Selectors来从打包信号里将特定元素取出。计算出来的飞行参数通过一个Bus Creator组合在一起来定义FltParams总线。
busBeaverCalcParamsSys.JPG
总线信号也可以表现不同层次

我们来看一下Environment Bus中的层次结构。这是一个将一路总线并入其他总线内的例子。环境信号中重力加速度(g)和压力(rho)以及wind bus(Vwind)被导入Bus Creator。而wind bus则由body velocities(uvw_wind)body rates(pqr_wind)来定义。

busEnvironmentSystem_annotation.JPG
  下图中的Bus Creator对话框,表现了总线中的信号的组织。
busCreator.JPG
在它最基本的使用中,你只需要定义信号的输入数目。各元素以其信号名称加以区分。类似于Mux Blocks, bus creators也不完全不会改变信号,所以我们可以认为它们是虚拟的。


//后面的就不翻了:D
It doesn’t end here
We are just starting to get into this topic. Next week we will talk about more advanced maneuvers with Mux and Demux Blocks, specifying interfaces with Bus Objects, and nonvirtual buses.
Now it’s your turn
How do you use bus and mux signals? What kinds of modeling questions about composite signals do you have? Care to share? Post a comment below. If you want to show off the complicated bus hierarchy from your model, [email=Seth.Popinchalk@mathworks.com?subject=Your%20post%20on%20bus%20signals]e-mail me[/email] a picture of your bus and I’ll post it for you (image tags are stripped from comments).


阿三 发表于 2008-3-31 19:12:55
哇!这个不错,回头我也来加入翻译行列!

godeagle 发表于 2008-4-1 17:19:37
继续关注,版主加把劲

steppenwolf 发表于 2008-4-8 19:52:54

March 4th, 2008

Simulink 中的搜索        
我们这里有一个例子模块库 pidLibrary.mdl (30.38 KB, 下载次数: 2496)

feixue1314 发表于 2008-4-15 21:36:00
真的是不错的东西,我以后又有得看啦 谢谢你了哟  你也太辛苦啦

lycchang 发表于 2008-4-23 19:01:41
谢谢,这里真是不错,能学习到很多东西!

rjjeffort 发表于 2008-4-23 22:07:51
:) 顶:victory:

duxiaolu 发表于 2008-6-5 15:01:45
谢谢版主,我会一直支持的》:)

zh860218 发表于 2008-6-6 12:17:15
支持楼主的劳苦
我会一直支持你的帖子

victor101993 发表于 2008-6-8 16:36:18
刚开始学,很多还不懂

smeichengguang 发表于 2008-6-9 09:47:03
我正在学SIMULINK想找一些相关资料,看了楼主的帖子,谢了!:victory:

bigharm 发表于 2008-6-10 22:01:19
我也做过下翻译,很能体会其中的艰难,尤其其中的专业词汇。。。

赞一个lz:handshake

bigharm 发表于 2008-6-10 22:10:22
哈~刚注意到一个细节,有个copyright在最底下。。。

还好咱们是免费共享的~~~

柚籽 发表于 2008-7-23 09:28:12

Libraries in Simulink

【2008a】

Libraries in Simulink

    在模型中经常会构造相同的模块,通过Simulink libraries你可以建立算法模板,并在你所有模型中重复使用。接下来,将介绍关于librarieslibrary blocks以及library links的一些基本概念。

Creating a library

       File> New > Library , 或者是使用 new_system function

NewLibrary.JPG

        Libraries是特殊的MDL文件(mdlsimulink模型文件后缀名)。打开library,你会发现它并没有像一般模型文件那样有仿真控制按钮。library并不是功能模型,它只是组件面板。如下library,它包括了一个可变饱和度的模块。

SatLibDiag.JPG

        library可以使用与一般模型相同的构造方法,将各中模块拖入面板并将相应信号连接起来。如上Saturation Dynamic 模块即是一个包含了信号u的动态饱和算法的子系统。

SaturationDynamic_system.JPG

Locking the library

  library在第一次构造时,处于非锁定状态。
libUnLocked.JPG

    这样就可以编辑和构造组件。当保存并关闭后,它即被锁定。
libLocked.JPG

        library被锁定则不可以进行任何修改。这时可以Edit > Unlock Library进行解锁。通常可以用鼠标模块拖动即可激发Simulink的解锁对话框。
AttemptToModifyUnlock.JPG


Reference blocks and algorithm reuse

   与Simulink自带库模块一样,你也可以在自己的工作模型中添加这个库里的模块。关于这个库模块有些术语,当你把这个库里的模块加入你的工作模型时,即生成了一个reference block

createRefBlock.JPG

      reference block是这个库模块的一个实例,但是它的内容并没有储存在这个模型中。模型使用这个reference block时只是保存了它的库链接,即指向这个库模块的路径。

  1. >> get_param('satModel/Saturation Dynamic','ReferenceBlock')
  2. ans =
  3. SatLib/Saturation Dynamic
复制代码

     设置Format > Library Link Display,可以看到你的模型中哪些模块实际上是库链接。在这些模块的角上有一个库链接图标。
linkDisplayUser.JPG

Adding your library to the browser

[以下非原文]
1    将自己的library文件拷入目录:E:\learn\matlab2k8\toolbox\simulink\blocks
2    并修改该目录下的slblocks.m文件
   按照格式加入(比如):MyLibrary是你的模型文件名
  1. Browser(3).Library = 'MyLibrary'
  2. Browser(3).Name= 'MyLibrary';
  3. Browser(3).IsFlat= 0;% Is this library "flat" (i.e. no subsystems)?
复制代码


3  最后view->Refresh Tree View








[ 本帖最后由 柚籽 于 2008-7-23 09:33 编辑 ]

柚籽 发表于 2008-7-25 09:42:45

Tips on how to use Simulink more efficiently

Tips on how to use Simulink more efficiently
建模
Tip:搜集,然后连接。
当要构建一个模型图时,首先搜集所有你可能要用到的模块,接着将它们连接起来。从库里拖入模块时,可以初组织这些模块的位置,随后在连接这些模块时,可以考虑如何摆放这些模块使得它们更容易理解。

按照系统方程的形式将它们连接起来。

Tip: 使用Ctrl+左键 单击两个模块 自动连接模块
.
可以使用这种方法将一个输出和一个输入连接起来,这很显然。也可一次点击就将一个模块与多个模块同时连接,这更有效率。我在将多个模块与总线相连时使用这种方法。
首先,选中多个模块,使用拖拉或者是shift点选每个模块。

接着,Ctrl+左键,点击与它们相连的那个模块。
Tip:Ctrl +左键拖拽 复制模块

Tip:Shift+左键拖拽 解除模块的所有连接
不需要删除模块或者是删除与之相连的线而解除模块连接。这在替换一个模块是非常有用。这个操作同样适合于一组模块。
Tip:将一个单输入输出模块放置在连接线上,自动打断线路连接模块。




[ 本帖最后由 柚籽 于 2008-7-25 09:57 编辑 ]
vdpCollect.JPG
vdpConnectDiag.JPG
controlClickMessage.JPG
selectManyBlocks.JPG
ctrlselectOneBlock.JPG

wzlking 发表于 2008-8-14 16:20:53
刚刚起步学习,还是菜鸟,多多关照

iiiooo 发表于 2008-8-18 21:28:52
这么好竟然没人回复

yxiaoluan 发表于 2008-8-21 21:38:19
好:) ,先顶一个……

轩辕夜 发表于 2008-9-18 20:05:45
厉害,强大的lz,能学到好多东西啊

wuxiangning0 发表于 2008-9-29 17:26:04
谢谢楼主又提供一个好去处,顶一个!

wang1121qiang 发表于 2008-10-16 12:54:32
支持下。。。。。。。。。。。。

gty3344 发表于 2008-11-2 00:12:32
先谢谢 了
可是没有 m币了
需要先去看看如何挣钱 呵呵
您需要登录后才可以回帖 登录 | 注册

本版积分规则

相关帖子
相关文章
热门教程
站长推荐
快速回复 返回顶部 返回列表