Matlab Simulink 使用基础
基本操作
快速插入模块
如果知道要插入的模块的名字的话, 双击空白处 => 输入模块名 => 选中 => 回车即可快速插入
常用模块
-
scope
示波器
-
Constant
常数
-
Mux
把多个信号合并成一个信号, 方便连接
上面是一个把两个信号合并成一个信号的 MUX, 可以通过更改 Number of inputs 来设置更多的输入信号
-
Demux
把总线还原成原来的信号
-
powergui
可以选择连续型或者离散型
powergui 模块用来模拟包含 Simscape™ Electrical™ Specialized Power Systems 模块的任何 Simulink 模型。
它存储表示模型的状态空间方程的等效Simulink电路.
动态系统仿真中用得比较多-
当模型中只有一个 powergui 时
将 powergui 块放在顶层图中以获得最佳性能。
-
当模型中有多个 powergui 时
powergui 不要放在顶层, 并且每一个 powergui 都应该在对应的subsystem 的顶层
-
-
Gain
放大器
-
加减乘除 (Add Subtract Multiply Divide)
- function & matlab function
示波器设置
打开示波器
-
设置通道数
View => Configuration Properties => Number of input ports
-
设置布局
View => Layout
如上图所示, 布局为四行一列
-
显示信号lable
View => Legend
示波器操作
-
只缩放X 轴
-
只缩放Y 轴
-
适应全屏幕
-
X 轴适应全屏幕
-
Y 轴适应全屏幕
-
Ctrl + 鼠标滚轮缩放
这个缩放的是什么轴和 当前所处的缩放模式相关
Matlab Function 调试
直接进入Matlab Function 点击对应的行号中以下断点, 之后就可以在线调试了
鼠标移动到变量上即可查看变量的值
Simulink Matlab Function 使用全局变量
使用全局变量的方法有很多种, 我只介绍其中一种, 这种我觉得是比较灵活的
要使用全局变量要满足以下三个条件
-
全局变量必须定义为 Simulink Signal 或者 Simulink Parameter
通过 MODELING => Model Explorer => 可以看到当前Simulink 可见的变量有哪些
在 Model Workspace 和 External Data => Base Workspace 中的变量都是Simulink 可见的变量,
但是要作为全局变量使用, 就只有 Simulink Signal 类型的变量才可以
可以手动点击菜单栏的按钮或者Ctrl + s 来创建新的 Simulink Signal 变量创建的变量最好是 double 类型, Complexity 设为 real
如果变量太多的话, 可以使用脚本来创建( 后面会介绍 )
-
Matlab Function 中使用 global 声明变量为全局变量
1 2 3
function y = fcn(u) global AAA; y = u;
-
Matlab Function 在符号表中新建全局变量声明, 并且声明为 Data Store Memory
先进入Matlab Function ( 一定要先进入 Matlab Function ) 否则 MODELING 里面不会出现 SYmbols Pane
然后 MODELING => Symbols Pane => 点击添加变量
填好全局变量的名字后把数据类型设为 Data Store Memory 类型
如果想要对某些变量只在仿真时初始化一次, 可以在model 的 callback InitFcn* 函数中进行设置
MODELING => Model Settings 的下拉箭头 => Model Properties
Callbacks => InitFcn*
直接在 InitFcn* 函数里面做变量的初始化赋值, 或者运行函数或者脚本
通常来说脚本比较合适一些, 因为有些操作放在函数里面执行和直接在脚本执行, 它的作用范围不一样, 结果也不一样
-
使用脚本初始化Simulink 全局变量
doInit.m
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
TEST_val0 = 10; TEST_val = TEST_val0 - 5; MY_TEST = RSS(TEST_val); function SS = RSS(value) SS = Simulink.Signal; SS.DataType = 'double'; SS.Complexity = 'real'; SS.InitialValue = mat2str(value); end function SS = CSS(value) SS = Simulink.Signal; SS.DataType = 'double'; SS.Complexity = 'complex'; SS.InitialValue = mat2str(value); end function SP = RSP(value) SP = Simulink.Parameter; SP.Value = value; end
其中 RSS 是把信号注册为 Simulink.Signal 类型, 数据类型为 ‘double’, Complexity 为 ‘real’…
然后在 Callback InitFcn* 中加上 run(‘doInit.m’) 这样在开始仿真的时候就会通过回调函数来运行一次脚本
可以看到, 使用脚本来做初始化工作很方便, 关键是可以进行复杂的赋值操作, 比如上面的TEST_val = TEST_val0 - 5;
就只有在脚本中才可以这样用