PID控制器的优缺点和周期

2023-05-16

PID控制器参数优缺点

PID控制器简介

在这里插入图片描述

PID控制器是非常经典的一种控制算法,是不需要知道系统的模型,仅仅根据期望与现状的偏差调节,使之能够到达期望的一种线性控制器

优点:使用简单,灵活,调节方便。

由于不需要知道系统的模型,仅仅根据反馈量进行调节,新手能够很好地上手。根据反馈量的不同,可以设计出不同的PID控制器,控制的也是反馈量,也就是偏差,使之偏差为零,这个反馈,可以是速度,可以是位置等。调节参数也是只有三个,调节起来还算简单。

缺点:调节精度不高,不够精准

由于PID控制器是线性控制器,而现实中,大多是非线性的。用线性近似非线性,精度会有所下降。

PID的三个参数

P参数的优缺点

优点:加快调节速度,使之更快到达期望位置,存在静态误差(也就是永远不能达到期望目标,总是差一个值)

缺点:P值增大的时候,曲线震荡幅度增大,震荡更加频繁,增大超调量,系统不够稳定。

D参数的优缺点

优点:减少调节时间,使之更快到达期望位置,减少超调量。

缺点:容易受到干扰,当受到干扰时,D值越大,曲线系统越不稳定。

I参数的优缺点

优点:减少静态误差,使曲线达到期望目标

缺点:增加调节时间,增大超调量。

三个参数总结

这三个参数各有优缺点,对于不同的系统可以根据系统的特征使用不同的参数组合,PD,PI,PID。

例如:
对于干扰比较强的系统,不使用D参数比较好。
对于系统响应速度没有很高要求,适用PI控制比较好。
速度控制使用:PI控制
转向控制使用:PD控制

这些只是经验,可能与实际不符,需要根据实际情况选择和根据实际试错。

周期

采样周期

采样周期是读取信息耗费的时间。比如读取传感器值所需要的时间。

采样周期的确定

综合考虑的因素:

变化频率

变化频率越高的控制对象,采样周期应相应缩短,以实现更好地控制。

采样周期缩短,系统的抗干扰能力也会得到增强。

采样周期太小,积分和微分的调节作用会削弱,因为采样时间过短,前后两次采样的误差反应不出来。

采样周期要与执行机构的动作惯性相适应。惯性大的,采样周期要适当缩短。

采样周期越短,计算的负荷也就越大。要在系统不影响其他控制回路的计算下,缩短采样周期。

一般来说,缩短采样周期,可以使控制性能得到改善,但是也会增加计算的负担。对于变化快速的对象,采样周期需要缩短。

控制周期

控制周期是经过计算,进行的一次的控制时间。比如PID控制器进行对系统进行一次偏差调节。系统的控制周期一般越短越好,越短也就以意味着计算的负担也就越重。

一般来说,采样周期<=控制周期。不然会出现下面情况,变化已经出现了,需要控制了,而控制时间还未到,造成控制的延后。

采样周期和控制周期需要综合考虑。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PID控制器的优缺点和周期 的相关文章

  • 基于卡尔曼滤波进行四旋翼动力学建模(Simulink&Matlab)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现 1 概述 文献来源 摘要 由于近年来民用和军事领域对
  • 基于LabVIEW的PID算法解读

    记录一下 方便以后翻阅 下图是基本的PID算法实现方式 以及实现PID控制器所需的假设和转换 为实现PID控制器 LabVIEW要求算法对输入信号进行采样并离散积分和微分操作 一 误差计算 e k SP k PV k 上式中 e k 表示当
  • 1_simulink简单入门_simulink仿真PID控制

    1 simulink简单入门 simulink仿真PID控制 2 simulink搭建RCL 电阻电感电容模块 毕业前想去做物联网还是或者linux 结果玩了一年多的电机控制 早就深知matlab simulink绕不过的 拖到现在 下班晚
  • 深入浅出PID控制算法(三)————增量式与位置式PID算法的C语言实现与电机控制经验总结

    前文对PID算法离散化和增量式PID算法原理进行来探索 之后又使用Matlab进行了仿真实验 对PID三个参数又有了更深入的认识 接下来我们来使用C语言进行PID算法实现 并且结合控制电机的项目来深入学习 1 PID 算法C 语言原代码 先
  • 【平衡小车制作】(一)硬件原理图讲解(超详解)

    大家好 我是小政 之后的一系列文章我将介绍我玩平衡小车的过程以及遇到的一些问题 将这些内容记录下来分享给大家 也让大家少走一些弯路 接下来我将从硬件框架选择 软件编程 PID算法 PID调参 蓝牙遥控这五个部分向大家讲解平衡小车的制作过程
  • PID算法与PID自整定算法

    本文是由于研发恒温槽项目故需要了解PID控制算法和PID自整定算法 为方便本人日后需要故作此记录 直接粘贴代码吧 这是PID位置式控温算法 函数名 void Pid positional float speed 用途 PID输出 说明 参数
  • TSI系统测量参数之:轴向振动

    一 TSI系统测量参数 1 轴向位移 2 盖振或瓦振 3 偏心 4 键相 5 零转速 6 轴向振动 7 相对热膨胀 胀差 8 绝对热膨胀 缸胀 二 各参数作用 2 轴向振动 测量的是大轴相对于轴瓦的X向振动和Y向振动 反馈电压量程为 4V至
  • 三个闭环负反馈PID调节系统:电流环、速度环和位置环的关系

    三个闭环负反馈PID调节系统 电流环 速度环和位置环的关系 伺服电机为了达到生产的精准控制 电机一般采用三环控制 这主要是为了使伺服电机系统形成闭环控制 所谓三环就是3个闭环负反馈PID调节系统 电压映射电流变化 电流映射转矩大小 转矩大小
  • 如何在Python中检查是否存在给定pid的进程?

    有没有办法检查 pid 是否对应于有效进程 我从其他来源获取 pid 而不是os getpid 我需要检查机器上是否不存在具有该 pid 的进程 我需要它在 Unix 和 Windows 中可用 我还在检查 PID 是否未被使用 如果 pi
  • copy_from_user() 的任何示例吗?内核和用户空间

    我正在寻找将 PID 值从用户空间复制到内核空间 这是我的代码快照 内核模块 include
  • 将手柄传递到管道中

    说我有 node foo js node bar js 有没有办法将 foo 的标准输入句柄传递给 bar js 我有一个罕见的情况 我想在管道中进行向后通信 至少我知道我可以发送node bar js的pidnode foo js 鉴于
  • C++ 在 Windows 中发送简单信号

    Windows 上是否有相当于kill 的函数 int kill pid t pid int sig 如果没有 是否可以根据进程的 PID 来测试进程是否正在运行 Thanks Windows 没有 Unix 意义上的信号 您可以使用Ope
  • Java程序如何获得自己的进程ID?

    如何获取我的 Java 进程的 ID 我知道有几种依赖于平台的技巧 但我更喜欢更通用的解决方案 不存在可以保证在所有 jvm 实现中工作的独立于平台的方法 ManagementFactory getRuntimeMXBean getName
  • 检查给定 pid 的进程是否存在

    给定 Linux 进程的 pid 我想从 C 程序检查该进程是否仍在运行 Issue a kill 2 http linux die net man 2 kill系统调用0作为信号 如果调用成功 则说明存在该pid的进程 如果呼叫失败并且e
  • 查看用户最近执行的Android任务

    我想查看我的 Android 手机最近的任务 我尝试了一些来自互联网的代码 但没有一个能正常工作 我只想获取用户最后执行的应用程序的PID和名称 例如 如果我执行计算器应用程序 然后执行我创建的最近任务应用程序 则该应用程序应该能够告诉我类
  • 如何在Windows中通过端口查找PID并使用java杀死找到的任务

    我需要通过进程端口在java代码中杀死进程 我可以在 cmd 中手动执行此操作 例如 C gt netstat a n o findstr 6543 TCP 0 0 0 0 6543 0 0 0 0 0 LISTENING 1145 TCP
  • Process.start() 启动的进程返回错误的进程 ID?

    我正在使用以下代码启动可执行文件 Process proc new Process proc StartInfo FileName executablePath proc Start proc WaitForInputIdle 在这次通话之
  • docker 容器无法启动,因为现有的 pid 文件

    当我启动 docker 容器时 它会失败 因为现有的 pid 文件 root newhope sergio docker logs sharp shockley httpd pid 1 already running httpd pid 1
  • 如何从 Ruby 检查具有特定 pid 的进程是否正在运行?

    如果有多种方法 请列出 我只知道一个 但我想知道是否有一种更干净的 Ruby 方式 之间的区别Process getpgid and Process kill方法似乎是当 pid 存在但由另一个用户拥有时发生的情况 Process getp
  • 启动 psexec 后获取进程 ID

    我有一个使用 psexec 在远程计算机上调用记事本的脚本 有什么办法可以在启动后获取进程ID吗 这是我所拥有的 PCname MyPC SessionID 2 Program Notepad exe FilePath C temp Fil

随机推荐