毕业前想去做物联网还是或者linux,结果玩了一一年多的电机控制,早就深知matlab/simulink绕不过的,拖到现在,下班晚上再把大学自控做实验用的matlab捡起来,再去b站学习simulink。做控制,matlab/simulink是绕不过的,这是个很强大的仿真工具。

如果初学simulink,做电机控制的,我推荐b站的:CELEC(陈诚电气)
https://space.bilibili.com/493190982/video

姑且说是simulink是图形化的编程。那么编程学习最快的方式,就是边系统学习边实践边探索。

c语言采用面向对象思想实现的pid模块:
https://blog.csdn.net/qq_38190041/article/details/119276490

simulink的打开方式

  1. 在命令行窗口中直接输入simulink
  2. 在上方菜单栏主页中,点击simulink

创建新的模型

一般也就只会用到这个Blank Model。

电气、 控制常用的库

  1. simulink
    这个是最重要的,基础的、数学的
  2. Simscape
    这个是电气、控制的常用库

这些库就是我们进行图形化编程的,拖拉拽的模块。我大概记录一些,不过还是多用用试试就晓得了。

    1. simulink/Commonly Used Blocks

    • Bus Creator:总线器,不同信号组合成一个输出信号(一个数据结构,像数组,结构体)
    • Bus Selector:与Bus Creator相反、分解。
    • Constant: 常数,恒定值。
    • Data Type Conversion: 数据转换器
    • Delay:延时模块。
    • Demux: 组合信号分解
    • Mux:多个信号组合
    • Discrete-Time Integrator: 离散积分器
    • Gain:增益,比例(比如在单位变换,系数)
    • In1: 生成子模块的时候,信号的输入
    • Integrator: 积分器
    • logical Operator: 逻辑与或
    • Out1: 子系统输出常用的输出信号
    • Product: 乘法器
    • Relational operator: 小于等于
    • stauration: 限幅饱和
    • Scope: 示波器,波形显示
  1. simulink/Continous:连续模块,积分微分,二阶积分,pid,传递函数

  2. simulink/Dashboard:人机交互的 界面相关的

  3. simulink/Discontinuities:只有Quantizer常用一点

  4. simulink/Discrete:离散形式的一些模块,做仿真z变换的用的较少。

  5. simulink/Logic and Bit Operations:简单的逻辑

  6. simulink/Lookup Tables:查表相关的函数

  7. simulink/Math operations:数学相关的,常用的,加减乘除等等

  8. simulink/Signal :信号相关的

  9. simulink/sinks:显示,保存等等的

  10. simulink/source:pwm,波等等的,阶跃

  11. simulink/user-Defined Functions:用户自定义

    • fcn: 最简单的
    • matlab function: 考虑采样,if else
    • S-Function:功能负载,卡尔曼滤波,最小二乘法。

一个简单仿真_PID

PID的仿真。用库里的PID模块,然后自己搭建一个PID模块。

首先需要大概会用到什么

  • 一个阶跃(Step)
  • PID模块(PID controller)
  • 传递函数(Transfer fcn)
  • 示波器(scope)
  • 求和(sum)

如果熟悉simulink的模块名字,可以直接在空白处,输入模块名字。

不熟悉,需要到模块库里找。

这样就搭建了一个针对这个传递函数的控制调节模型。

双击PID即可设置控制器参数,设置KP=26,KI=65,KD=0的波形:

如何搭建自己搭建一个简单的PID模块。
需要用的模块

  1. 增益
  2. 积分
  3. 微分
  4. 求和

上面是用matlab的模块,下面是自己搭的。然后看下波形对比,也是一样的:

最后可以把它生成一个subsystem。

如何对subsystem进行参数设置接口

1.先在增益模块中,将kp,ki,kd的值进行参数化

2.对生成的subsystem右键进行Mask的创建

3.编辑mask

4.点击模块,就可以实现这样的效果了

matlab,simulink需要多使用,才能用的熟。