当前位置:   article > 正文

直流电机速度环-MATLAB仿真_matlab直流电机仿真

matlab直流电机仿真

增量式PI控制器

增量式PI控制器的C语言描述:

/*
 *******************************************************************************************
 ** 函数功能: 电机增量式速度PI控制器,根据编码器的值来不断矫正电机的速度   //左电机
 ** 参    数: left_encoder:左电机编码器的值
 **           left_target :左电机目标速度
 **           K           : 电机PID参数
 ** 返 回 值: 给电机的PWM
 ********************************************************************************************
 */
int Speed_PI_Left(int16 left_encoder,int16 left_target,MotorPID K)
{
    static int bias,last_bias,PWM;

    bias=left_target-left_encoder;              //求出当前偏差
    PWM+=(int)(K.P*(bias-last_bias)+K.I*bias);  //增量式PID,并把结果直接叠加在上一次的PWM上
    last_bias=bias;           //保存这一次偏差

    return PWM;         //返回可以直接赋值给电机的PWM
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

从上面的程序可以看出,增量式PI控制器有两个特点:
一是积分项没有积分累积,其优点是只需要当前时刻和上一时刻的偏差即可计算,不需要存储每一时刻的偏差,因此占用的内存空间小,计算更快,也不需要对积分项作出限幅。直流电机的速度环控制需要频繁进行计算才能保证最大程度的匀速,且速度环目标速度一般不会有大幅度变化,和增量式PI控制器的优点完美契合;
二是保留了积分项但是抛弃了微分项,保留积分项的原因是电机是一个需要持续输出的系统(电机需要无时无刻地转动),如果没有积分项,当电机到达目标速度后,由于此时误差=0,控制器将不会再有任何输出。而电机没有了输入其速度将开始下降,当电机速度开始下降时,控制器的误差又≠0,此时控制器又开始输出控制量。这样往复振荡最终停下的速度≠目标速度,也就是产生了静差。而消除静差的方法就是加入积分项,积分项拥有“记忆”,主要用于持续跟踪过去,当稳态静差产生后,积分项将负责弥补这之间的误差。相比之下微分项的作用微乎其微,可以忽略。

MATLAB仿真

Simulink

Simulink是MATLAB中的一种可视化仿真工具,Simulink提供了多种仿真模块供我们选择、自主拼接。

  • 在Simulink中搭建PID仿真系统
    1. 在MATLAB中打开Simulink
    2. 通过左上角的库浏览器添加以下模块到仿真界面中
      • 在这里插入图片描述:产生阶跃信号,作为系统的输入
      • 在这里插入图片描述:加法器,叠加反馈信号和输入信号。放置后双击该符号,修改其符号列表为+、-,此处PID控制器为负反馈系统,其反馈信号接入端设置为-
      • 在这里插入图片描述:增益,调节反馈信号的增益
      • 在这里插入图片描述:示波器,显示输入、输出波形。放置后双击该符号,显示绘制波形界面
      • 在这里插入图片描述:多路复用,实现多路信号在同一界面显示
      • 在这里插入图片描述PID控制器,PID仿真。放置后双击该符号可选择PI控制器,其他参数默认(需要注意的是此处I参数需要乘以采样时间才能使用)
      • 在这里插入图片描述传递函数,直流电机系统的仿真。这里需要获取直流电机系统的传递函数,具体获取方法见后文System Identification一节,此处先不赘述
    3. 正确搭建上述模块(PID系统的仿真搭建不唯一,这里以较简单的形式举例)
      在这里插入图片描述

PID Tuner

PID Tuner是Simulink中用于自动调节PID参数的一个工具,我们可以通过直接修改波形输出曲线的形式来调节、选取PID参数。

  • 使用PID Tuner方便快捷调参

    1. 在Simulink中搭建好上述框架后,双击PID Controller模块,点击自动调节按钮(英文版则是PID Tuner)
      在这里插入图片描述

    2. 自动打开PID Tuner界面,简单介绍一下这个界面
      在这里插入图片描述

    • 首先是界面最大的示波器,实线是当前参数下的PID响应曲线,虚线是之前参数下的PID响应曲线(进入PID Tuner后PID参数会自行小幅调整)
    • 然后是两个最重要的调参拖动条,位于整个窗口顶部居中位置。拖动上面的拖动条可以修改曲线的响应速度;拖动下面的拖动条可以修改曲线的超调量。拖动曲线的同时PID参数也会自动调整(图形化PID调参
    • 最后是位于拖动条右侧的三个常用功能按钮
      • Reset Design:重置参数
      • Show Parameters:查看当前参数
      • Update Block:更新当前参数到Simulink中

System Identification

System Identification(系统辨识),可以通过系统输入、输出的数据来建立动态系统数学模型。

上面介绍了如何在Simulink中搭建整个控制系统框架,以及如何使用PID Tuner自动调节控制器参数,那么还剩下最重要的——对于控制对象的仿真。在这里,我们的控制对象是直流电机,我们可以把直流电机看成一个黑匣子,不去关心其内部构造,只关心其输入与输出,而一旦我们有了其输入与输出的数据,就可以使用System Identification工具对电机进行系统辨识,得到电机的数学模型——一个传递函数。

  • 使用System Identification对电机系统进行辨识并导出传递函数
    1. 采集电机的输入与输出数据
      PWM固定一个占空比(输入),采集小车从静止加速到匀速行驶这段时间编码器的值(输出)。**注意:数据的采集必须放在定时器中断中,以严格的时序向上位机发送数据,推荐使用VOFA+**上位机(通信协议简单,实时绘图,可导出Excel图表)。采集的数据是否准确将直接影响到系统辨识的结果。(将小车放在干净的长直赛道上,用接近比赛的速度采集数据)
    2. 将Excel表格中的数据导入MATLAB,并以列向量的形式保存
    3. 使用System Identification进行系统辨识
      1. 在APP中打开System Identification

      2. 在Import data中选择Time Domain Signals,并在Input和Output中分别选择我们刚导入MATLAB工作区的PWM占空比和编码器数值两个列向量。然后在下方Sample time一项中,选择数据采集时间间隔,即定时器定时长度。最后点击Import
        在这里插入图片描述在这里插入图片描述

      3. 关闭Import Data窗口后可以看到Data Views和Working Data处都有了一条曲线,这就是我们导入的数据(如果Working Data处空白,则直接将Import Data处的曲线拖拽到Working Data处)。然后在Estimate中选择Transfer Function Models,在跳转出来的窗口中保持默认参数,点击Estimate
        在这里插入图片描述在这里插入图片描述

      4. 稍等片刻关闭Estimate Transfer Functions窗口后可以看到Model Views处有一条曲线,这就是我们系统辨识后的传递函数,我们直接将其拖拽到To Workspace,导入MATLAB的工作空间
        在这里插入图片描述

      5. 关闭System Identification,打开MATLAB的工作区,双击刚生成的传递函数,查看参数。这里我们只需要关注前两行的参数,这两行参数就是我们Simulink仿真中传递函数需要的参数
        在这里插入图片描述

      6. 将参数导入Simulink中,双击Transfer Fcn,将这两行参数分别复制粘贴到此处,至此,整个仿真系统就搭建完成了
        在这里插入图片描述


参考文章:

  • https://zhuanlan.zhihu.com/p/118543118
  • https://ittuann.github.io/2021/08/29/CarSimulate
  • https://www.youtube.com/watch?v=wkfEZmsQqiA&t=79s
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Li_阴宅/article/detail/963158
推荐阅读
相关标签
  

闽ICP备14008679号