概述
Simulink 仿真入门精通 (二) simulink 模块
simulink 模块属性以及参数
get(gcbh) % 选中模块后,在command window 中输入指令,可以输出模块属性信息,获取模块句柄
gcb % 获取当前被选中的模块
属性名 | 作用说明 |
---|---|
path | 路径 |
name | 模块名 |
handle | 模块句柄,double 型数据 |
sample time | 模块采样时间 |
Priority | 优先等级 |
InitFcn | 模型初始化执行的回调函数 |
StartFcn | 模型开始仿真时模块执行的回调函数 |
PauseFcn | 模块仿真暂定时执行的回调函数 |
Value | Constant 模块的数值 |
… | … |
signal attribute 属性
output data type
选项 | 数据类型 |
---|---|
Inherit: inherit from constant value | 普通继承:输出数据直接使用所填参数本身的数据类型 |
Inherit : inherit via back propagation | 反向继承:使用输出端口后面连接的模块的数据类型 |
double | 双精度 |
single | 单精度 |
int8/16/32 | 整型+ 有符号 |
uint8/16/32 | 整型+ 无符号 |
boolean | 布尔 |
fixdt(1,16) | 有无符号和字长规定的固定点数据类型 |
fixdt(1,16,0) | 有无符号、字长以及表示小数部分的整数位3个因素来表示的固定数据类型 |
fixdt(1,16,2^0,0) | 使用有无符号、字长、斜率和偏移量来表示固定点数据类型 |
Enum: | 枚举 |
Bus: | BUS 数据 |
模块注解
右击模块选择Properties选项(以Integrator为例),双击以%<>标示的变量,可以将其转入右边的编辑框中,从而以悬浮文字的方式显示到模型中去
输入输出模块
Crtl+E 进入configuration parameter
常数模块
scope 模块
四则运算模块
-
sum 模块: 当模块的输入是同一时刻的输入时,采用矩形图形; 当模块的输入有来自输出的反馈延迟时,采用圆形图标
sample time 表示采样时间,-1 表示继承采样时间,连续采样0 或者离散采样的其他正数
-
Product 模块
Multiplication提供两种乘法,Element-wise表示点乘,Matrix表示矩阵乘法。
-
divide 模块
端口的乘除法运算根据*/ 的顺序从上到下依次排布,例如输入* * //
-
gain 模块: 增益系数,支持标量、向量或矩阵形式的输入
-
delay模块
Delay length和Initial condition分别表示延时的采样点数和输出的初始值。
模块总的延时时间由延时的采样点数和模块采样时间间隔共同决定。
External reset选择None以外的选项时为Delay增加一个输入端口,通过此端口的输入信号达到某种条件而将Delay模块的输出值复位,所谓复位即Delay模块的状态值恢复初始状值
Input processing包括Element as channels(基于采样)和Columns as channels(基于帧)以及Inherited3个选项,基于采样和基于帧的采样方式区别在于采样数据的组织方式。采用基于帧方式的可以在同一时刻使用较少的通道处理多个数据元素。
-
unit delay 模块: 只延迟一个采样时间
-
Switch 模块:
有三种判断选择, ≥ T, >T,≠ 0
-
Integrator 模块
Show saturation port : 使能饱和输出端口,1,0,-1 三值表示饱和限定的使用状态, 1表示输出值超出上限但是被上限饱和值限制,0 表示上下限均没有到达,-1 表示输出超出下限但是下限饱和值限制
show state port: 此勾选框用来使能状态输出端口,如果采样时刻复位时二者输出值不同,右侧输出端口输出初始值,上方状态端口输出此采样时刻右侧原本应输出值(没有复位)
-
Discrete- Time Integrator 模块
离散积分器模块, 实现离散时间的积分
-
限幅模块
-
接地模块
避免仿真时输入端口未连接的警告,有一个输出值,输出值为0
-
终止模块
用于接受没有使用的输出信号
-
信号合并与分解模块
mux 模块将多个信号合并为一个信号,但是实际上没有改变内部的数据结构(此处仍然有问题,scope不能显示多信号)
demux 模块将多维信号分解为维数较少信号, BUS Slection mode 使能BUS 模式支持BUS 信号中抽取分离信号,BUS creator 创建的总线信号可以使用demux 进行信号分离
-
总线创建总线选择模块
output data type :有3个选项1. Inherit :auto 2. BUS: 3.
当Output data type选择为 Bus:,勾选Output as nunvirtual bus时,表示输出信号是非虚拟信号,在C代码生成时将输出总线信号定义为结构体。
a=Simulink.Bus; % 创建总线对象 a.DataScope='Exported'; % 生成代码时数据变量定义生成到头文件中 a1=Simulink.BusElement; % 创建总线元素对象 a2=Simulink.BusElement; a1.Name='a1'; % 总线成员元素对象名称必须唯一 a2.Name='a2'; % Name 属性用于生成C 结构体的成员名 a.Elements=[a1,a2]; % 将成员添加到总线对象的elements 属性中
-
向量连接模块
有两种模式:向量和矩阵
向量模式下,使用方式类似于Mux模块,使用时需注意不同朝向下模块输入端口的排列顺序是从左到右、从上到下。
矩阵模式下则多出一个参数,Concatenate dimension设置矩阵合并所用的维数。
1表示输入矩阵列数相同,按照竖直方向合并;2表示矩阵行数相同,按照水平方向合并。
-
数据类型转换
fixdt是MATLAB提供的函数,能够返回simulink.NumericType类型的变量,通过这个变量来描述一种固定数据类型。
a = fixdt(Signed, WordLength, FractionLength)
返回描述具有二进制小数点定标的定点数据类型的Simulink.NumericType
对象。FractionLength
可以大于WordLength
。有关详细信息,请参阅Binary Point Interpretation (Fixed-Point Designer)。- 符号:首位1或0表示有符号或无符号
- 字长:存储单元由多少位二进制构成
- 表示小数的数据位,字长范围内的一部分或全部数据用来表示数的小数部分,这部分数据位于数据的最右端
-
子系统模块
-
Step 信号源
-
周期信号
Time values:输入时间序列的采样点,Simulink以此输入作为单元进行周期性延伸赋值。
Output Values:输入对应于Time values时间采样序列的值序列。
Time values里设置的时间序列的跨度(末值减首值)即为波形的周期T。
除了直接输入数值外,在参数对话框里直接输入M代码,即可方便的产生波形信号
-
Clock : 输出仿真时间,可以作为一些函数的输入产生不同的信号源
-
from Workspace 模块
simin 的数据类型是以下3种类型:
- 时间序列Timeseries 对象,可以通过timeseries 函数创建
- 二维矩阵,矩阵第一列为仿真采样时间序列,其余每列表示对应采样时刻的信号值
- 结构体类型,可以包含仿真采样时间序列作为成员变量,也可以不包含
-
from File 模块
要求Mat 文件是Matlab timeseries object 或者矩阵2中数据格式中一种
23.Display 模块
-
To workspace 模块
输出数据有时间序列、矩阵或结构体类型。
Limit data points to last:设置保存的采样点数,默认值inf表示仿真的数据全部保存。
Decimation:每隔多少个仿真采样点保存一个点到simout中,默认为1即全部保存。
Log fixed-point data as a fi object:勾选以将固定点数据类型作为一个fi对象保存,不勾选将作为double型保存。
-
To file
-
stop simulation
该模块没有参数,只有一个输入端口,一旦接收非零信号就停止仿真。
-
D lookup Table
查表,就是说目标位一个填满数据的向量或矩阵表格,根据对应维数的输入能够在表中定位一个对应的输出
Number of table dimensions:设置查找表维数
Table data:查找把表的数值。
Breakpoints 1:查找表第一维输入向量,必须按照从下到大严格单调递增。
Edit table and breakpoints:按下次按钮可以在表格里编辑查找表输入及内容。
Interpolat:
- Flat:使用输入值和相邻两个breakpoint中较小的一个。
- Linear:线性插值法。
- Cubic spline:三次样条插值方法。
Extrapolation:
- Clip:使用breakpoint端点值。
- Linear:线性插值法。
- Cubic spline:三次样条插值方法。
-
数学函数模块
下拉列表框选项 功能 exp 指数计算 log 自然对数计算 10^u 底数为10 的指数计算 log10 底数为10 的对数计算 magnitude^2 赋值/绝对值的平方 square 平方计算 pow u的v 次方 conj 复数共扼计算 reciprocal 倒数计算 hypot 直角三角形边长计算 rem 求余数计算 mod 求模 transpose 矩阵转置计算 hermitian 复数共扼转置计算 -
随机数模块
Mean:产生随机数序列的均值。
Variance:产生随机数序列的方差。
Seed:用于产生随机数序列的种子,可以是0或正整数,根据种子可以产生周期性的伪随机数。保持参数不变,可以在多次仿真中保持同样的输出结果。
-
传递函数模块
传递函数是描述线性系统动态特性的基本数学工具之一,描述线性系统在连续域传递函数的模块。
Numerator coefficients:传递函数的分子向量。
Denomibator coefficients:传递函数的分母向量。
Absolute tolerance: 误差容限,填入auto 或者-1 表示继承configuration parameter 中的绝对误差容限
-
Fcn 模块
可输入abs、acso、asin、atan、atan2、ceil、cos、cosh、exp、fabs、floor、hypot、ln、log、log10、pow、power、rem、sgn、sin、sinh、sqrt、tan、tanh组合的函数表达式,输入信号用u表示。当输入信号为多维时,从上到下输入信号的每个维的元素一次用u(1)、u(2)、…表示。
-
Matlab 模块
根据Simulink运行机制,每个采样点会调用一次MATLAB Function的函数,两次调用之间,同一个变量的两次计算的终值如何传递到当前计算周期是一个问题。使用persistent 变量实现函数退出和进入时内部变量值的保持。每次调用fcn 时依据上次
Matlab Function 内部M 语言有严格要求:变量必须要给初始值以及维度,变量类型以及实虚性
function y = fcn(u) %# codegen persistent sum_val if isempty(sum_val) sum_val=0; end sum_val=sum_val+u; y = sum_val;
persistent变量时定义在某个函数内的变量类型,可在函数调用的不同次数间保持上一次退出该函数的值。它同global全局变量的类似之处在于MATLAB为他们创建永久数据区域,不同之处在于它只能被声明它的函数内部识别,目的是免除 此类变量被其他函数或命令修改值而造成用户无法确保其值得困扰。
声明persistent变量时它刚被创建,其内容为空值[ ]。
使用persistent变量需要注意:
- persistent变量不能作为函数的输入输出参数,否则会报错。
- persistent变量不能同当前工作空间中已经存在的变量同名,否则会报错。
- persistent变量不能声明在Command Window中,只能在函数中声明。
-
S 函数
变量被其他函数或命令修改值而造成用户无法确保其值得困扰。
声明persistent变量时它刚被创建,其内容为空值[ ]。
使用persistent变量需要注意:
1. persistent变量不能作为函数的输入输出参数,否则会报错。
2. persistent变量不能同当前工作空间中已经存在的变量同名,否则会报错。
3. persistent变量不能声明在Command Window中,只能在函数中声明。
-
S 函数
[外链图片转存中…(img-4U99sow2-1590972518134)]
最后
以上就是跳跃野狼为你收集整理的2020422simulink 模块(二)的全部内容,希望文章能够帮你解决2020422simulink 模块(二)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复