自动控制原理学习--平衡小车的控制算法(二)

上一节 在matlab建模,这一节PID控制.

一、模型

             

直接先放一张matlab simulink的模型(只有直线速度环和平衡环,串联PID),就在上一节的基础上加了两个PID。

二、PID控制

PID的好处就是可以不用动力学建模(当然用最好,从根轨迹分析去找参数),免去一大堆的公式计算(就算炼丹式调参),但是不好调参,至于PID的原理,可以去b站后cdsn搜,一搜一大堆,个人推荐去B站搜,视频直接点。 

注意几点:P 比例项存在zero稳态误差,占整个控制量的50%-60%左右

;D并不影响稳态(把对象往稳态拉回来),只影响动态(拉得有多快);I主要影响稳态;

为了安全起见,有几个trick:

1.积分限幅;如果用了积分I,如果被控对象被卡住(或者被人按住),那可能E(误差)就飘很大,所以可以考虑对积分进行条件判断进行限制;

2.积分分离:为防止E突变很大,导致I突变,超调量就变得很大,可以在E一定范围内积分才继续(当E大于某个阈值时就不要进行I积分,该轮的ei为0);

3.微分先行: 防止一开始E突变,让D项不收E影响,不把E喂给D,而是直接把反馈喂给D;

(一)如何调PID

先了解PID相关的传递函数

以上就是如果知道模型(如平衡小车的动力学模型),直接用根轨迹分析,看看P D I不同参数下的表现来选取参数,但实际上很多情况是不知道模型的,可以按下面这种方面调参:

Ku 是临界P值大小,就算临近系统发散时的比例项P大小,Tu就算临界调节时间。

不过simulink里面有个直接帮你计算PID的选项,可以省事很多,如下图

本例的平衡小车matlab仿真做了两个控制环,一个速度环串接平衡环,调的时候先单独调平衡环,再加入速度环PID调速度环,平衡环不用D项,如果想手调可以参考上面的ZN方法试试。

相关推荐

  1. 理论学习-自动控制

    2024-05-12 20:38:05       26 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-12 20:38:05       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-12 20:38:05       106 阅读
  3. 在Django里面运行非项目文件

    2024-05-12 20:38:05       87 阅读
  4. Python语言-面向对象

    2024-05-12 20:38:05       96 阅读

热门阅读

  1. MATLAB数值计算工具箱介绍

    2024-05-12 20:38:05       34 阅读
  2. Linux 系统中,nl命令用于计算文件中的行号

    2024-05-12 20:38:05       34 阅读
  3. C++进阶——浅谈隐式转化

    2024-05-12 20:38:05       33 阅读
  4. 简述Redis过期策略及内存淘汰机制

    2024-05-12 20:38:05       36 阅读
  5. golang中三种线程安全的MAP

    2024-05-12 20:38:05       33 阅读
  6. SQL多表查询

    2024-05-12 20:38:05       30 阅读
  7. c++ 和c回调混合的一种实现

    2024-05-12 20:38:05       29 阅读
  8. Liunx软件包管理(上)

    2024-05-12 20:38:05       25 阅读