自定义Simulink模块方法

自定义Simulink模块方法
S-函数
• 实验时,有时发现一些过程用普通的Simu-link模块不易搭建,或者找不到相 应的模块。我们可以使用Simulink支持的S-函数格式,用Matlab语言或者C语言 写出描述过程的程序,构成S-函数模块,直接调用。 用Matlab语言编写S-函数
引导语句为:
S-函数
• 用C语言编写S-函数 可以用Matlab6.1中提供的S-函数编辑程序来设计C语言的S-函数模板 也可以用 sfundemos 命令打开S-function demos模块组进行设计
相关S-函数的详细内容可参考《S-函数编写指导》等相关资料
自定义Simulink模块库的添加
自定义Simulink模块库的添加
• 命令 which('slbloБайду номын сангаасks.m','-all') 找到slblocks.m 文件,复制到自定义模块库所在文件夹,编辑如下
保存,刷新Simulink Library Browser,就可以看到自己的模块库

Function[sys,x0,str,ts] = f(t,x,u,flag,p1,p2,· · · )
其中,p1,p2,· · · 是用户自定义的参数,t,x,u,flag等是固定参数。具体细节可参考《系统仿真 技术与应用》的6.3节 Simulink中提供了一个sfuntmpl.m的模板文件,可以从这个模板出发构建自己的S-函数,命 令 which('sfuntmpl.m','-all') 可以显示模板所在位置。
合集下载

Matlab-Simulink基本模块操作

Matlab-Simulink基本模块操作

第2章 Simulink模块操作
表 2-2 控制模块方块图的参数
参数
定义
ScreenColor BackgroundColor
模型方块 图的背景色 模块和标 注的背景色
Fore groun dColor
模块和标 注的前景色
第2章 Simulink模块操作
用户可以把这些参数设置为如下任一值: 'black','white','red','green','blue','cyan','magenta',
第2章 Simulink模块操作
Simulink模块操作
2.1 模块操作 2.2 改变模块外观 2.3 设置模块参数 2.4 标注方块图 2.5 模块属性对话框 2.6 显示模块输出 2.7 控制和显示模块的执行顺序 2.8 查表编辑器 2.9 鼠标和键盘操作概述
第2章 Simulink模块操作
2.1 模 块 操 作
2.1.1 Simulink模块类型 用户在创建模型时必须知道,Simulink把模块分为两种
类型:非虚拟模块和虚拟模块。非虚拟模块在仿真过程中起 作用,如果用户在模型中添加或删除了一个非虚拟模块,那 么Simulink会改变模型的动作方式;相比而言,虚拟模块在 仿真过程中不起作用,它只是帮助以图形方式管理模型。此 外,有些Simulink模块在某些条件下是虚拟模块,而在其他 条件下则是非虚拟模块,这样的模块称为条件虚拟模块。表 2-1列出了Simulink中的虚拟模块和条件虚拟模块。
第2章 Simulink模块操作 图2-10
第2章 Simulink模块操作
2.2.3 指定方块图颜色 Simulink允许用户在方块图中指定任何模块或标注的前景色

Simulink自定义模块的建立

Simulink自定义模块的建立

自定义模型的建立1,搭建直流电机模型2,选定要包含到子模块中的所有模块:单击Edit菜单下Creat Subsystem项,选定的模块即便为子系统:3,封装子系统将子系统命名为DC_motor_Subsystem,右击子系统模块,在弹出的菜单中选择Mask Subsystem,打开封装编辑器:Icon&Ports选项卡可对模块的外框,透明度,图表等进行设置。

在Icon Drawing Command 区域中可用命令改变端口名称,添加图片,修改颜色等。

以下命令用于修改端口名称及颜色:color('red');port_label('input',1,'Control Signal');color('red');port_label('output',1,'Torque');color('red');port_label('output',2,'Angle');color('red');port_label('output',3,'Speed');输入命令后单击OK,则则子模块变为:若要添加图片,需将图片放在模型所在目录下,命名为‘DC_motor’,在Icon Drawing Command区域内输入命令:image(imread('DC_motor.jpg'))则子模块变为:4,添加模块到库浏览器在Simulink库浏览器窗口,选择File菜单下New—Library,打开库编辑窗口,将封装后的DC_motor_subsystem拖入库编辑器并保存为DC_motor_subsystem_lib.mdl。

编写M函数代码:并保存在DC_motor_subsystem_lib.mdl所在目录下,重新打开模块库,则自定义模块添加成功:注意事项:在建模过程中,应注意模型名称是否拼写正确等细节问题。

simulink c function 使用

simulink c function 使用

simulink c function 使用标题:深入理解与应用Simulink C FunctionSimulink是MATLAB中的一款强大工具,用于模拟、设计和实现复杂的动态系统。

在Simulink中,C Function是一种非常实用的模块,它允许用户直接在模型中插入自定义的C代码,从而实现更高级别的控制和定制功能。

以下是一步一步解析Simulink C Function的使用方法。

第一步:理解Simulink C FunctionSimulink C Function模块是一个预定义的库模块,它允许用户在Simulink模型中嵌入C代码。

这种模块的主要优点是可以利用C语言的强大功能和灵活性,进行更复杂和高效的算法设计。

同时,由于C代码可以直接编译并集成到生成的可执行文件中,因此可以显著提高模型的运行效率。

第二步:创建和配置Simulink C Function模块在Simulink模型中,可以通过以下步骤创建和配置C Function模块:1. 打开Simulink模型,然后在“Library Browser”中搜索"C Function",将其拖放到工作区。

2. 双击新添加的C Function模块,打开"C Function Parameters"对话框。

3. 在"C Function Parameters"对话框中,可以设置C函数的基本属性,如函数名称、输入和输出参数的数量和类型等。

这些设置将直接影响到生成的C代码。

第三步:编写C代码在配置好C Function模块后,接下来就是在"C Code"选项卡中编写C代码。

这里需要注意以下几点:1. 输入和输出变量:在"C Code"选项卡中,Simulink已经为我们生成了输入和输出变量的声明和初始化代码。

我们只需要在这些变量的基础上编写我们的算法代码。

Simulink中的自定义模块

Simulink中的自定义模块

目录Fcn 模块 (1)MATLAB Fcn 模块 (2)S Function (System Function) (2)1. 函数的函数头 (3)2. 函数分析 (3)3.带参数的S函数 (5)4.S函数格式及说明 (6)simulink中子模块的封装 (11)Fcn 模块Fcn模块对它的输入进行指定的表达式运算。

使用的表达式可由下面的一个或多个部分组成。

u --- 模块的输入。

如果u是一个向量,u(i)表示此向量的第i个元素;u(1)或者u表示第一个元素数值常数(例如表达式5.2*u)算术运算符(+ - * / ^ 例如表达式u^2+5.2)关系运算符(== != > < >= <=) --表达式返回1,如果关系为真; 否则返回0逻辑运算符(&& || !) 表达式返回1,如果关系为真; 否则返回0括号数学函数(abs, acos, asin, atan, atan2, ceil, cos, cosh, exp, fabs, floor, hypot, ln, log, log10, pow, power, rem, sgn, sin, sinh, sqrt, tan, tanh.)Workspace中定义的变量–如果变量名字不是Matlab 保留字符(比如sin),变量名字会被传递给Matab,从而在Maltab Workspace中获取相应给定的值。

矩阵或者向量必须具体到其对应的元素。

(比如A(1,1))注意:Fcn模块中使用的表达式不支持矩阵运算,同样不支持(:) 符。

模块输入可以是标量或者向量,但输出总是标量数值。

MATLAB Fcn 模块MATLAB Fcn模块对它的输入进行指定的Matlab函数或者表达式运算。

输出尺寸必须和模块中定义的尺寸相符,否则报错。

下面是MATLAB Fcn模块中可以使用的有效表达式sin atan2(u(1),u(2)) u(1)^u(2)注意:同Fcn模块相比,在仿真中MATLAB Fcn模块速度要慢,因为它需要在每个积分步骤中调用Maltab编译器。

Simulink自定义函数

Simulink自定义函数

Simulink调用M文件在SIMULINK user-defined function里面有各种可以调用的自定义函数,其中embedded MATLAB function、m-file s-function 、s-function等等又可以实现m文件被simulink所调用。

如果你是初学者,不妨使用embedded MATLAB function。

注意定义好输入输出的个数。

比如sin:function y = fcn(u)y = sin(u);函数输出可以直接接simulink其它各种信号器件。

simulink仿真设置一、算法设置1.变步长(Variable—Step)求解器可以选择的变步长求解器有:ode45,ode23,ode113,odel5s,ode23s和discret.缺省情况下,具有状态的系统用的是ode45;没有状态的系统用的是discrete。

1)ode45基于显式Runge—Kutta(4,5)公式,Dormand—Prince对.它是—个单步求解器(solver)。

也就是说它在计算y(tn)时,仅仅利用前一步的计算结果y(tn-1).对于大多数问题.在第一次仿真时、可用ode45试一下。

2)ode23是基于显式Runge—Kutta(2,3).Bogackt和Shampine对.对于宽误差容限和存在轻微刚性的系统、它比ode45更有效一些.ode23也是单步求解器。

3)odell3是变阶Adams-Bashforth—Moulton PECE求解器.在误差容限比较严时,它比ode45更有效.odell3是一个多步求解器,即为了计算当前的结果y(tn),不仅要知道前一步结果y(tn-1),还要知道前几步的结果y(tn-2),y(tn-3),…;4)odel5s是基于数值微分公式(NDFs)的变阶求解器.它与后向微分公式BDFs(也叫Gear方法)有联系.但比它更有效.ode15s是一个多步求解器,如果认为一个问题是刚性的,或者在用ode45s时仿真失败或不够有效时,可以试试odel5s。

Simulink中的自定义模块

Simulink中的自定义模块

目录Fcn 模块 (1)MATLAB Fcn 模块 (2)S Function (System Function) (2)1. 函数的函数头 (4)2. 函数分析 (4)3.带参数的S函数 (8)4.S函数格式及说明 (9)simulink中子模块的封装 (16)Fcn 模块Fcn模块对它的输入进行指定的表达式运算。

使用的表达式可由下面的一个或多个部分组成。

u --- 模块的输入。

如果u是一个向量,u(i)表示此向量的第i个元素;u(1)或者u表示第一个元素数值常数(例如表达式5.2*u)算术运算符(+ - * / ^ 例如表达式u^2+5.2)关系运算符(== != > < >= <=) --表达式返回1,如果关系为真; 否则返回0逻辑运算符(&& || !) 表达式返回1,如果关系为真; 否则返回0括号数学函数(abs, acos, asin, atan, atan2, ceil, cos, cosh, exp, fabs, floor, hypot, ln, log, log10, pow, power, rem, sgn, sin, sinh, sqrt, tan, tanh.) Workspace中定义的变量–如果变量名字不是Matlab 保留字符(比如sin),变量名字会被传递给Matab,从而在Maltab Workspace中获取相应给定的值。

矩阵或者向量必须具体到其对应的元素。

(比如A(1,1))注意:Fcn模块中使用的表达式不支持矩阵运算,同样不支持(:) 符。

模块输入可以是标量或者向量,但输出总是标量数值。

MATLAB Fcn 模块MATLAB Fcn模块对它的输入进行指定的Matlab函数或者表达式运算。

输出尺寸必须和模块中定义的尺寸相符,否则报错。

下面是MATLAB Fcn模块中可以使用的有效表达式sin atan2(u(1),u(2)) u(1)^u(2)注意:同Fcn模块相比,在仿真中MATLAB Fcn模块速度要慢,因为它需要在每个积分步骤中调用Maltab编译器。

m函数生成simulink模块

m函数生成simulink模块1. 引言m函数是一种在MATLAB中常用的编程语言,用于实现特定的功能和算法。

Simulink是MATLAB的一个功能强大的工具箱,用于建模、仿真和分析动态系统。

在Simulink中,可以通过使用m函数来创建自定义的模块,以便实现更复杂的系统模型。

本文将深入探讨如何使用m函数生成Simulink模块,并提供一些实例来帮助读者更好地理解。

2. m函数简介m函数是MATLAB中用于实现特定功能的自定义函数。

它由一系列的MATLAB代码组成,可以接受输入参数,并返回输出结果。

m函数的语法与MATLAB脚本文件相似,但具有更大的灵活性和复用性。

在Simulink中,m函数可以用于创建自定义的模块,以便在系统建模过程中使用。

3. Simulink模块的生成过程3.1 创建m函数文件首先,我们需要创建一个m函数文件。

在MATLAB的当前工作目录下,右键点击鼠标并选择”New”->“Function”,然后输入文件名并选择”m文件”作为文件类型。

点击”Save”按钮后,MATLAB将自动创建一个空的m函数文件,并将其打开以供编辑。

3.2 编写m函数代码在m函数文件中,我们可以根据具体需求编写自定义的MATLAB代码。

这些代码既可以是编写好的函数调用,也可以是一系列的算法和计算过程。

无论是什么样的代码,都需要满足函数的输入输出要求。

例如,我们要编写一个简单的m函数用于计算两个数的和。

代码如下:function output = add(a, b)output = a + b;end在上述代码中,我们定义了一个名为”add”的m函数,它接受两个输入参数a和b,并返回它们的和。

3.3 保存并添加到Simulink模型中在完成m函数的编写后,我们需要将其保存,并添加到Simulink模型中以供使用。

首先,点击m函数文件编辑器的”Save”按钮保存代码。

然后,在Simulink模型编辑器中,选择”Library Browser”视图,然后在浏览器窗口中找到并双击”User-Defined Functions”库。

Simulink自定义模块的建立

自定义模型的建立1,搭建直流电机模型2,选定要包含到子模块中的所有模块:单击Edit菜单下Creat Subsystem项,选定的模块即便为子系统:3,封装子系统将子系统命名为DC_motor_Subsystem,右击子系统模块,在弹出的菜单中选择Mask Subsystem,打开封装编辑器:Icon&Ports选项卡可对模块的外框,透明度,图表等进行设置。

在Icon Drawing Command 区域中可用命令改变端口名称,添加图片,修改颜色等。

以下命令用于修改端口名称及颜色:color('red');port_label('input',1,'Control Signal');color('red');port_label('output',1,'Torque');color('red');port_label('output',2,'Angle');color('red');port_label('output',3,'Speed');输入命令后单击OK,则则子模块变为:若要添加图片,需将图片放在模型所在目录下,命名为‘DC_motor’,在Icon Drawing Command区域内输入命令:image(imread('DC_motor.jpg'))则子模块变为:4,添加模块到库浏览器在Simulink库浏览器窗口,选择File菜单下New—Library,打开库编辑窗口,将封装后的DC_motor_subsystem拖入库编辑器并保存为DC_motor_subsystem_lib.mdl 。

编写M函数代码:并保存在DC_motor_subsystem_lib.mdl所在目录下,重新打开模块库,则自定义模块添加成功:注意事项:在建模过程中,应注意模型名称是否拼写正确等细节问题。

Simulink自定义功能模块

Simulink自定义功能模块前面讲述了使用Simulink中现有的模块进行仿真,但在实际中,可能有些需要用到的模块在Simulink中没有,因此需要Simulink的模块进行扩展,以适应特殊的仿真应用。

3.7.1自定义功能模块的创建Simulink提供了自定义功能模块,用户只要按照其规定要求定义一些模块,便可在Simulink仿真中调用和加以使用。

自定义功能模块的创建有以下两种方法。

(1)一种方法是采用Signal&Systems模块库中的Subsystem功能模块,利用其编辑区设计组合新的功能模块。

基本操作:首先将Signal&Systems模块库中的Subsystem功能模块复制到打开的模型窗口中,然后双击Subsystem功能模块,进入自定义功能模块窗口,即可利用已有的基本功能模块设计出新的功能模块。

(2)另一种方法是将现有的多个功能模块组合起来,形成新的功能模块。

基本操作:在模型窗口中建立所定义功能模块的子模块。

用鼠标将这些需要组合的功能模块选中,然后选择Edit菜单下的Create Subsystem即可。

对于很大的Simulink模型,通过自定义功能模块可以简化图形,减少功能模块的个数,有利于模型的分层构建。

3.7.2自定义功能模块的封装上面提到的两种方法都只是创建一个功能模块而已,如果要命名该自定义功能模块、对功能模块进行说明、选定模块外观、设定输入数据窗口,则需要对其进行封装处理。

首先选中Subsystem功能模块,再打开Edit菜单中的Mask Subsystem进入mask的编辑窗口,可以看出有3个标签页。

1. Icon标签页它用于设定功能模块外观,最重要的部分是Drawing Commands,在该区域内可以用disp指令设定功能模块的文字名称,用plot指令画线,用dpoly指令画转换函数。

注意:尽管这些命令在名字上和以前讲的MATLAB函数相同,但它们在功能上却不完全相同,因此不能随便套用以前所讲的格式。

智能车辆控制SIMULINK仿真中自定义模块的创建


函数。与 MATLAB 函数 一样 , 在嵌入 式 MA TLAB 函 数模块中 ,用户可以根据需要定义局部变量和确定变 量的类型和大小 ,而且变 量一旦被定义 ,就不能被重 新定义为其他的类型和大小 ;用户可以在函数体中定 义子函数 ,也可以从库函数中调用子函数 。与 M文件 S函数模块不同的是 ,在模块窗 口双击此模块会弹出 M 文件编辑框 ,然后就可以自行随意的编写能够完成 期望功能的代码 。
S IIMUL INK的应用领域 。
关键词 : SIMUL INK; 嵌 入式 MATLAB 函 数 ; M 文
件 ; 自定义模块 ;智能车辆控制
中图分类号 : TP273
文献标识码 : A
C r ea t ion of cu stom b lock in S IM UL I NK on in telligen t veh icle
引言
SIMUL IN K是 MATLAB 中用来对动态系统进行建 模 、仿真和分析的集成环境 。它可以完成对线性和非 线性系统 ,连续系统 、离散系统及两者的混合系统的建 模并进行仿 真。 SIMUL IN K的 仿真是 交互式 的 ,用户 在建立系统模型后可以随时改变系统参数 ,并可以观 察参 数改变后的仿真结果 或将结果储存于工作空间 中 。使得仿真过程变得简单而有效 ,也正是由于这个 特点 ,使应用 SIMUL INK进行的仿 真被广泛应用于控 制系统、数据采集和处理、DSP 和通信等许多领域 [1 ] 。
SIMUL IN K中包含了 大量的 模块 ,可以方 便地进 行仿真 ,但对于比较复杂的控制规律或算法 ,利用现有 的模块库进行建模会比较困难 ,这时可以引入具有自 定义功能的函数 [2 - 5 ] 。借助函数的自定义功能 ,用户 可以开发新 的通用模块 ,实现 新算法 ,在以 往的研究 中 ,利用 S函 数的比较多 ,很大 程度上解决 了一些问 题 。但是 S 函 数 实 质 上 是 具 有 特 殊 调 用 格 式 的 MATLAB 函数 ,缺乏实现算法灵活性和简洁性 ,不适用 于非专业用户 ,MATLAB710提供了可以自由实现算法 的嵌入式 MATLAB 函数 模块 正好 弥补 了这 一不 足。 它提供了扩展 SIMUL INK功 能的有力工具 ,并且嵌入 式 MATLAB 函数模块具有能够继承 SIMUL INK的输入 输出信号和可以取代仿真模块简化仿真的优点 ,用户 可以建立一个能和 SIMUL INK模块库中的模块一起使 用的新模块 ,不断扩充 S IMUL IN K的仿真功能 [ 6] 。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档