增量式PID算法及其MATLAB实现

增量式PID算法是一种常用的控制算法,用于控制系统中的反馈控制。它通过对系统的误差进行递推式的计算,实现对系统输出的调节,使得系统的输出逐渐趋向于设定值。

delta u(k)=u(k)-u(k-1)=Kp*(e(k)-e(k-1))+Ki*e(k)+Kd*(e(k)-2*e(k-1)+e(k-2))

PID算法由三个部分组成:比例(P)、积分(I)、微分(D)控制器。它们分别对应于系统误差的三个方面:比例控制器用于消除瞬态误差,积分控制器用于消除稳态误差,微分控制器用于抑制系统的超调和震荡。

增量式PID算法的计算公式如下:

  1. 计算比例项(P): P = Kp * (error - prev_error)

  2. 计算积分项(I): I = Ki * error

  3. 计算微分项(D): D = Kd * (error - 2 * prev_error + prev2_error)

  4. 计算PID输出: output = prev_output + P + I + D

其中,error是当前的误差,prev_error是上一时刻的误差,prev2_error是上上一时刻的误差,prev_output是上一时刻的输出,Kp、Ki和Kd分别是比例、积分和微分控制器的增益。

MATLAB实现增量式PID算法的伪代码如下:

% 设定PID参数
Kp = 1.0;
Ki = 0.5;
Kd = 0.1;% 初始化误差和输出
prev_error = 0;
prev2_error = 0;
prev_output = 0;% 循环执行PID控制
while true% 获取当前的系统状态或测量值current_value = get_current_value();% 计算当前的误差error = setpoint - current_value;% 计算增量式PID控制器的输出P = Kp * (error - prev_error);I = Ki * error;D = Kd * (error - 2 * prev_error + prev2_error);output = prev_output + P + I + D;% 更新误差和输出prev2_error = prev_error;prev_error = error;prev_output = output;% 将输出应用到控制系统中apply_output(output);
end

 

%设一被控对象G(s)=400/(s^2+50s)
%采样时间为1ms,采用z变换进行离散化clc
clearts=0.001;%采样时间
sys=tf(400,[1 50 0]);
dsys=c2d(sys,ts,'z');%采用z变换进行离散化%把控制函数离散化取Z变换n阶定常离散系统差分方程%在零初始条件下取Z变换:%dsys即Y(z)/U(z)
[num,den]=tfdata(dsys,'v');%强制tfdata直接将分子和分母作为行向量而不是单元格数组返回u1=0;u2=0;u3=0;%z变换之后的系数
y1=0;y2=0;y3=0;
x=[0 0 0]';%分别误差e,误差e的差分,误差e的积分
error1=0;
error2=0;time=zeros(3000,1);%与分配内存
yd=zeros(3000,1);
u=zeros(3000,1);
y=zeros(3000,1);for k=1:1:3000time(k)=k*ts;%离散化的时间代表连续时间yd(k)=1.0;%目标量kp=8;  ki=0.10;kd=10;u(k)=kp*x(1)+kd*x(2)+ki*x(3);%PID输出u(k)=u1+u(k);if u(k

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

EditPlus取消自动.bak备份

Tools->Preferences->File 将√取消

Linux知识点 -- 进程间通信(一)

Linux知识点 – 进程间通信(一) 文章目录 Linux知识点 -- 进程间通信(一)一、了解进程间通信1.进程间通信的必要性2.进程间通信的技术背景3.进程间通信的本质理解4.进程间通信的标准 二、匿名管道1.匿名管道通信的原理2.匿名管道的…

Service not registered 异常导致手机重启分析

和你一起终身学习,这里是程序员Android 经典好文推荐,通过阅读本文,您将收获以下知识点: 一、Service not registered 异常导致手机重启二、Service not registered 解决方案 一、Service not registered 异常导致手机重启 1.重启 的部分Log如…

Web Worker API

Web Worker API Web Worker 使得在一个独立于 Web 应用程序主执行线程的后台线程中运行脚本操作成为可能。这样做的好处是可以在独立线程中执行费时的处理任务,使主线程(通常是 UI 线程)的运行不会被阻塞/放慢。 Web Worker概念与用法 Wor…

Maven引入本地jar包

maven做为一种强大的依赖管理工具,可以帮助我们更方便的管理项目中的依赖;而在使用过程中我们难免会有需要引入本地jar包的需求,这里踩过坑之后我分享俩种引入方式; 1.上传jar到本地maven仓库,再引入 使用此方法后可…

【DMA】认识 DMA 及其工作流程

DMA(Direct Memory Access),字面意思“直接访问内存”,无需 CPU 干预直接读写内存。传统CPU读写数据时,需要先将要使用的数据保存到 RAM,等要用时再从RAM 加载。 目录 一、传统CPU存取数据 二、认识DMA …

SpringBoot + ajax 实现分页和增删查改

0目录 1.SpringBoot 2.SpringBoot分页;增删改查 1.SpringBoot分页 创建数据库和表 创建SpringBoot工程,引入springboot下的分页依赖 配置application.yml 实体类 Mapper接口 Mapper.xml Service接口 Service实现类 控制层 测试 加…

Kylin v10基于cephadm工具离线部署ceph分布式存储

1. 环境: ceph:octopus OS:Kylin-Server-V10_U1-Release-Build02-20210824-GFB-x86_64、CentOS Linux release 7.9.2009 2. ceph和cephadm 2.1 ceph简介 Ceph可用于向云平台提供对象存储、块设备服务和文件系统。所有Ceph存储集群部署都从…

Webpack开启本地服务器;HMR热模块替换;devServer配置;开发与生成环境的区分与配置

目录 1_开启本地服务器1.1_开启本地服务器原因1.2_webpack-dev-server 2_HMR热模块替换2.1_认识2.2_开启HMR2.3_框架的HMR 3_devServer配置3.1_host配置3.2_port、open、compress 4_开发与生成环境4.1_如何区分开发环境4.2_入口文件解析4.3_区分开发和生成环境配置 1_开启本地服…

无涯教程-Perl - 环境配置

在开始编写Perl程序之前,让我们了解如何设置我们的Perl环境。 您的系统更有可能安装了perl。只需尝试在$提示符下给出以下命令- $perl -v 如果您的计算机上安装了perl,那么您将收到以下消息: This is perl 5, version 16, subversion 2 (v5.16.2) b…

深度学习之用PyTorch实现线性回归

代码 # 调用库 import torch# 数据准备 x_data torch.Tensor([[1.0], [2.0], [3.0]]) # 训练集输入值 y_data torch.Tensor([[2.0], [4.0], [6.0]]) # 训练集输出值# 定义线性回归模型 class LinearModel(torch.nn.Module):def __init__(self):super(LinearModel, self)._…

中国农村程序员学习此【正则表达式进阶】发明cahtGPT,购买大平层,开上帕拉梅拉,迎娶白富美出任CEO走上人生巅峰

注:最后有面试挑战,看看自己掌握了吗 文章目录 限制可能的用户名匹配空白字符匹配非空白字符指定匹配的上限和下限只指定匹配的下限指定匹配的确切数量检查全部或无正向先行断言和负向先行断言检查混合字符组使用捕获组重用模式使用捕获组搜索和替换删除…

关于电子接插件插拔耐久试验

500次的插拔次数怎么来的? - 知乎 EIA-364-09耐插拔测试方法 - 豆丁网 (docin.com) 连接器的电气性能测试要遵循什么样的国家标准?_插拔_绝缘_规定 (sohu.com) 连接器的插拔寿命标准 - 百度文库 (baidu.com) IEC 60512-1:2018 电气和电子设备用连接器. 试验和测量…

ResNet50卷积神经网络输出数据形参分析-笔记

ResNet50卷积神经网络输出数据形参分析-笔记 ResNet50包含多个模块,其中第2到第5个模块分别包含3、4、6、3个残差块 5049个卷积(3463)*31和一个全连接层 分析结果为: 输入数据形状:[10, 3, 224, 224] 最后输出结果:linear_0 [10,…

【Spring】Spring中的设计模式

文章目录 责任链模式工厂模式适配器模式代理模式模版方法观察者模式构造器模式 责任链模式 Spring中的Aop的通知调用会使用责任链模式责任链模式介绍 角色:抽象处理者(Handler)具体处理者(ConcreteHandler1)客户类角…

Kafka

消息中间件的作用 异步解耦削峰填谷 MQ对比 RabbitMQ 优点:管理界面最好用;支持语言较多; 缺点:不支持扩展(集群) 主要流程:生产者发送消息给交换机,通过路由机制投递到对应的队…

Python入门【​编辑、组合、设计模式_工厂模式实现 、设计模式_单例模式实现、工厂和单例模式结合、异常是什么?异常的解决思路 】(十七)

👏作者简介:大家好,我是爱敲代码的小王,CSDN博客博主,Python小白 📕系列专栏:python入门到实战、Python爬虫开发、Python办公自动化、Python数据分析、Python前后端开发 📧如果文章知识点有错误…

构造方法 与代理

构造方法 public class Son {String name;/*构造方法1.与类名相同2.没有返回值也没有void*//*作用:实例化初始值使用new关键字必须要有构造器*/public Son(){//无参构造方法this.name"sss";}//有参构造方法public Son(String name){//定义有参构造 就必…

【云存储】使用OSS快速搭建个人网盘教程(阿里云)

使用OSS快速搭建个人网盘 一、基础概要1. 主要的存储类型1.1 块存储1.2 文件存储1.3 对象存储 2. 对象存储OSS2.1 存储空间2.2 地域2.3 对象2.4 读写权限2.5 访问域名(Endpoint)2.6 访问密钥2.7 常用功能(1)创建存储空间&#xff…

WebGL Shader着色器GLSL语言

在2D绘图中的坐标系统,默认情况下是与窗口坐标系统相同,它以canvas的左上角为坐标原点,沿X轴向右为正值,沿Y轴向下为正值。其中canvas坐标的单位都是’px’。 WebGL使用的是正交右手坐标系,且每个方向都有可使用的值的…