PID校正

news2024/10/7 18:22:42

一、Introduction to PID Control

PID控制是一种应用非常广泛的控制算法。小到控制一个元件的温度,大到控制无人机的飞行姿态和飞行速度等等,都可以使用PID控制。PID(proportion integration differentiation)其实就是指比例,积分,微分控制,当得到系统的输出后,将输出经过比例、积分、微分3种运算,叠加到输入中,从而控制系统的行为[1]。

PID控制理念最早提出是在1932年,由Nyquist在一篇论文当中提出了采用图形的方法来判断系统的稳定性。在他的基础上,H. W. Bode等人建立了一整套在频域范围设计反馈放大器的方法,后被用于自动控制系统的分析和设计,这也是PID算法最早从书面走向实践。与此同时,反馈控制原理开始应用于工业过程中。1936年英国的考伦德(A Callender)和斯蒂文森(A Stevenson)等人给出了 PID控制器的方法,自此PID算法正式形成了,并且后来在自动控制技术中占有非常重要的地位[2]。

PID校正装置是用比例(Proportional)、积分(Integral)和微分(Derivative)控制规律组成的串联校正装置,使用方便,适应性强,易于工程实现。而且根据需要,可以变形为P、PI或PID等类型调节器。目前在理论上已经证明,对于过程控制的典型对象——“一阶滞后+纯滞后”与“二阶滞后+纯滞后”的控制对象,PID控制器是一种最优控制。

二、Principles of PID Control and PID Parameters

PID控制的主要过程是通过对被控对象的当前值进行采样,并计算采样值与期望值的偏差,再将这个偏差反馈给PID控制器,从而调整对被控对象的输入(执行器的输出)。这里的偏差指给定量与反馈量之差,可以量测;而我们常说的误差为系统输出的实际值与期望值之差,无法量测,只有数学意义。偏差存在极性,有正偏差和负偏差之分。

PID控制器(比例-积分-微分控制器),由比例单元(Proportion)、积分单元(Integral)和微分单元(Derivative)组成,通过Kp, Ki和Kd三个参数进行设定。

Kp(比例系数)代表了当前的信息,起纠正偏差的作用,使反应迅速;

Kd(微分系数)代表了将来的信息,在过程开始时强迫过程进行,过程结束时减小超调,克服振荡,提高系统的稳定性,加快系统的过渡过程;

Ki(积分系数)代表了过去积累的信息,它能消除静差,改善系统的静态特性。

采用PID调节器,往往并不需要知道于控制对象的精确数学模型,这是它的优点,但也正因如此,其参数通常也都是根据经验在线整定,以便得到满意的控制效果[3][4]。

三、Parameter tuning of PID controller

PID调节器各增益参数增加对系统时域指标的影响如下[5]:

需要设定的值有:

·目标值(Setpoint)
·pid参数(Kp,Ki,Kd)
·输出极限(Output Limits)
·采样时间(Sample Time)

PID控制整定法有理论计算法和经验整定法两种。

经验法

首先需要注意的是,由于闭环调节的影响因素,PID参数是无法通过数学建模的方式获取的,只有通过实际调试获得参数。即便如此,我们仍可以给出一些保守的PID参数作为初值,见下表:

一般采用的是临界比例法(属于工程整定法)。

工程整定法主要依赖工程经验,直接在控制系统的试验中进行,且方法简单、易于掌握,在工程实际中被广泛采用。(简单来讲就是试凑)[1]。

临界比例法

一般采用的是临界比例法(属于工程整定法)。

工程整定法主要依赖工程经验,直接在控制系统的试验中进行,且方法简单、易于掌握,在工程实际中被广泛采用。(简单来讲就是试凑)。

PID调节的实质在于取得快速性和稳定性的折中,利用该方法进行PID控制器参数的整定步骤如下:

(1)首先预选择一个足够短的采样时间让系统工作,输入设定为系统允许的最大值(输出极限)的60%~70%。 控制时间根据实际工艺过程决定,一般默认1s,通常建议先从默认值开始,再根据结果进行调整,由于电机PID调节无滞后,顾在效果不佳的情况下也可尝试缩短采样时间。

(2)仅加入P比例控制环节。 当手动调节PID控制器时,通常按照P,I,D的顺序调整参数。初调时,Kp选小一些,这是为了尽可能减小比例作用;然后慢慢调大,直到系统对输入的阶跃信号(Step Function)出现临界振荡,记下这时的比例放大系数和临界振荡周期。如果后续需要加入积分控制环节,则需设定Kp为当前值的60%~70%,这是因为当Kp调整至接近期望值后,Ki就开始减少到合适值,这会导致稳定性的降低,反过来Ki又需要减少;

临界是介于收敛和发散的一种过渡状态。临界振荡指等幅振荡。

(3)加入I积分控制环节。 积分系数初调时要把积分时间设置长些,这是为了减小积分作用;然后慢慢调小直到系统稳定为止,设定PID的积分时间常数Ti为当前值的150%~180%。

一般情况下到此为止

(4)D微分控制环节一般不用设定,待整定参数越多,则整定难度越大。如果通过比例、积分参数的调节还是收不到理想的控制要求,才调节微分时间。初调时把这个系数设小,然后慢慢调大,直到系统稳定。除了会导致调参复杂,不使用微分控制环节的原因是其易受噪声和其它扰动影响,并将其放大到更大的程度,导致稳定性降低。

References

[1] 线性系统的矫正方法——PID控制理论. CSDN.

[2] The PID Controller & Theory Explained. NI.com.

[3] PID控制算法原理(抛弃公式,从本质上真正理解PID控制). zhihu.com.

[4] PID控制. 古月居.

[5] Kiam Heong Ang, G. Chong and Yun Li, "PID control system analysis, design, and technology," in IEEE Transactions on Control Systems Technology, vol. 13, no. 4, pp. 559-576, July 2005, doi: 10.1109/TCST.2005.847331.

附录:用matlab实现倒立摆的pid控制

% 倒立摆PID控制程序

% 参数设置
m = 0.5;  % 摆杆质量
l = 0.25;  % 摆杆长度
g = 9.81;  % 重力加速度
I = m * l^2;  % 摆杆惯性矩

% 目标角度和初始角度
theta_desired = pi/4;  % 目标角度设定为45度
theta0 = 0;  % 初始角度为0度

% PID控制器参数
Kp = 10;  % 比例增益
Ki = 5;  % 积分增益
Kd = 2;  % 微分增益

% 时间步长和模拟时间
dt = 0.01;  % 时间步长
t_sim = 5;  % 模拟时间

% 初始化变量
theta = zeros(1, t_sim/dt + 1);  % 角度数组
theta_dot = zeros(1, t_sim/dt + 1);  % 角速度数组
theta_error = zeros(1, t_sim/dt + 1);  % 角度误差数组
theta_integral = 0;  % 角度误差积分
theta_prev = theta0;  % 上一时刻的角度

% 模拟
for t = 0:dt:t_sim
    % 计算角度误差和积分项
    theta_error_current = theta_desired - theta_prev;
    theta_integral = theta_integral + theta_error_current * dt;
    
    % 计算控制信号
    u = Kp * theta_error_current + Ki * theta_integral + Kd * (theta_error_current - theta_error(end))/dt;
    
    % 计算角度加速度
    theta_acc = (m * g * l * sin(theta_prev) - u) / I;
    
    % 更新角度和角速度
    theta_dot_next = theta_dot(end) + theta_acc * dt;
    theta_next = theta_prev + theta_dot_next * dt;
    
    % 更新变量
    theta(end+1) = theta_next;
    theta_dot(end+1) = theta_dot_next;
    theta_error(end+1) = theta_error_current;
    theta_prev = theta_next;
end

% 绘制图形
t = 0:dt:t_sim;
plot(t, theta);
xlabel('Time');
ylabel('Angle');
title('Inverted Pendulum PID Control');

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1417975.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

复杂SQL治理实践 | 京东物流技术团队

一、前言 软件在持续的开发和维护过程中,会不断添加新功能和修复旧的缺陷,这往往伴随着代码的快速增长和复杂性的提升。若代码库没有得到良好的管理和重构,就可能积累大量的技术债务,包括不一致的设计、冗余代码、过时的库和框架…

初探 Backstage:快速上手指南

坦白说,虽然我之前阅读过相关文档,但实际上从未亲自尝试运行 Backstage。我一直有种感觉,Backstage 不过是一个开发者门户而非开发者平台。上周在 分享我对平台工程的理解 后,朋友圈中有人提议我写一篇关于 Backstage 入门的文章。…

[BUUCTF 2018]Online Tool(特详解)

这段代码块检查请求中是否设置了HTTP_X_FORWARDED_FOR头部。如果设置了,它将REMOTE_ADDR设置为HTTP_X_FORWARDED_FOR的值。这通常用于处理Web服务器位于代理后面的情况。 如果URL中未设置host参数,它使用highlight_file(__FILE__);来显示PHP文件的源代码…

OpenCV实战:控制手势实现无触摸拖拽功能

前言: Hello大家好,我是Dream。 今天来学习一下如何使用OpenCV来控制手势,瞬间提升操作体验!跨越界限,OpenCV手势控制拖拽功能现身。 一、主要步骤及库的功能介绍 1.主要步骤 要实现本次实验,主要步骤如下…

Django模型(三)

一、1对1关系映射 关系型数据库的强大之处在于各表之间的关联关系。 Django 提供了定义三种最常见的数据库关联关系的方法:多对一,多对多,一对一 一对一关联使用 OneToOneField来定义一对一关系 就像使用其他类型的 Field 一样:…

共享wifi项目怎么分辨是正规还是割韭菜?!

早在前几年数字化经营火热的时候微火就在尝试一种共享方式可以让用户在公共场所可以快捷的免费体验WiFi从而提升实体商户数字化服务,所以就研发出了共享wifi贴项目,而用户则需要扫码即可连接,无需传统的咨询人员输入密码。这种模式在一定程度…

Idea编写mapper.xml文件提示表名和字段

一、连接database 二、setting- > language -> sql Dialects中 的选项设为 mysql就可以了 三、测试

后台管理系统模板搭建/项目配置

1 项目初始化 一个项目要有统一的规范,需要使用eslintstylelintprettier来对我们的代码质量做检测和修复,需要使用husky来做commit拦截,需要使用commitlint来统一提交规范,需要使用preinstall来统一包管理工具。 1.1 环境准备 1…

百度百家号旋转验证码识别代码分享

最近研究了一下图像识别,一直找到很好的应用场景,今天我就发现可以用百度的旋转验证码来做一个实验。没想到效果还挺好,下面就是实际的识别效果。 1、效果演示 2、如何识别 2.1准备数据集 首先需要使用爬虫,对验证码图片进行采…

ES实战回顾

1、你用的集群节点情况? 一个ES集群,18个节点,其中3个主节点,15个数据节点,500G左右的索引数据量,没有单独的协调节点,它的每个节点都可以充当协调功能; 2、你们常用的索引有哪些&a…

SQL注入的剩余类型

除了联合查询注入,报错注入,盲注注入 sql注入还有以下几类🦹🦹🦹🦹🦹 开始填坑 1.UA注入 原理:有些网站会把用户的UA信息写入数据库,用来收集和统计用户…

回归预测 | Matlab实现CPO-LSSVM【24年新算法】冠豪猪优化最小二乘支持向量机多变量回归预测

回归预测 | Matlab实现CPO-LSSVM【24年新算法】冠豪猪优化最小二乘支持向量机多变量回归预测 目录 回归预测 | Matlab实现CPO-LSSVM【24年新算法】冠豪猪优化最小二乘支持向量机多变量回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现CPO-LSSVM【24年…

【JaveWeb教程】(35)SpringBootWeb案例之《智能学习辅助系统》登录功能的详细实现步骤与代码示例(8)

目录 案例-登录和认证1. 登录功能1.1 需求1.2 接口文档1.3 思路分析1.4 功能开发1.5 测试 案例-登录和认证 在前面的课程中,我们已经实现了部门管理、员工管理的基本功能,但是大家会发现,我们并没有登录,就直接访问到了Tlias智能…

Python tkinter (6) —— Listbox控件

Python的标准Tk GUI工具包的接口 tkinter系列文章 python tkinter窗口简单实现 Python tkinter (1) —— Label标签 Python tkinter (2) —— Button标签 Python tkinter (3) —— Entry标签 Python tkinter (4) —— Text控件 Python tkinter (5) 选项按钮与复选框 目录…

LeetCode(2)

目录 概念解释 栈 队列 树 树的概念 结点的分类 有序树 无序树 森林 二叉树 满二叉树 完全二叉树 二叉排序树 平衡二叉树 1.用栈实现队列 解法:双栈 2.字符串解码 解法:栈 3.二叉树的中序遍历 解法一:递归 解法二&#xff…

【干货】【常用电子元器件介绍】【电容】(一)--电容器的种类、命名方法、识别

声明:本人水平有限,博客可能存在部分错误的地方,请广大读者谅解并向本人反馈错误。   顾名思义,电容器就是“储存电荷的容器”,故电容器具有储存一定电荷的能力。就像 一般容器可以装水(或漏水),电容器可以充电(Charge)或放电(Discharge)。…

麒麟系统安装minio_centos8.0安装最新minio_离线安装minio并设置权限_创建桶---minio工作笔记001

https://www.minio.org.cn/?id=18&id=3&id=0&id=11&id=9&spinz=qianfeng&adinfo678=baidu&spinz=qianfeng&adinfo678=baidu%3E 首先去到官网去下载minio,然后 可以看到已经显示的官网,然后再去,右边点击下载 进入下载页面一般都是amd64的版本…

世界坐标系转换为平面地图坐标

将世界坐标系转换为平面地图坐标的方法通常涉及地图投影。地图投影是一种将地球(一个三维球体)上的点转换为平面(二维)地图上的点的方法。 这里介绍几种常见的地图投影方法: 墨卡托投影(Mercator Projectio…

Phoncent博客GPT写作工具

对于许多人来说,写作并不是一件轻松的事情。有时候,我们可能会遇到写作灵感枯竭、写作思路混乱、语言表达困难等问题。为了解决这些问题,Phoncent博客推出了一款创新的工具——GPT写作工具,它利用了GPT技术,为用户提供…

Open CASCADE学习|读取STEP文件并显示

STEP文件是基于ISO 10303标准创建的三维模型数据交换文件,也称为产品模型数据交换标准(Standard Exchange of Product data model)。这种文件格式旨在提供一个不依赖具体系统的中性机制,实现产品数据的交换和共享。 STEP文件是一…