位置式pid和增量式pid

news/2024/11/22 20:33:33/

位置式PID控制器和增量式PID控制器的数学模型如下所示:

位置式PID控制器的数学模型:
u ( t ) = K p e ( t ) + K i ∫ 0 t e ( τ ) d τ + K d d e ( t ) d t u(t) = K_p e(t) + K_i \int_{0}^{t} e(\tau) d\tau + K_d \frac{de(t)}{dt} u(t)=Kpe(t)+Ki0te(τ)dτ+Kddtde(t)

其中, u ( t ) u(t) u(t)表示控制器的输出, e ( t ) e(t) e(t)表示期望值与实际值之间的误差, K p K_p Kp K i K_i Ki K d K_d Kd分别为比例、积分和微分系数。

增量式PID控制器的数学模型:
Δ u ( t ) = K p Δ e ( t ) + K i e ( t ) + K d Δ e ( t ) \Delta u(t) = K_p \Delta e(t) + K_i e(t) + K_d \Delta e(t) Δu(t)=KpΔe(t)+Kie(t)+KdΔe(t)

其中, Δ u ( t ) \Delta u(t) Δu(t)表示控制器输出的增量, Δ e ( t ) \Delta e(t) Δe(t)表示当前时刻和上一时刻误差的差值, K p K_p Kp K i K_i Ki K d K_d Kd分别为比例、积分和微分系数。

可以看出,两种PID控制器的数学模型在形式上有所不同。位置式PID控制器是基于连续时间控制系统的数学模型,而增量式PID控制器是基于离散时间控制系统的数学模型。因此,在实际控制系统中,需要根据系统的具体要求和实现条件,选择适合的PID控制器类型。

位置式PID(Proportional-Integral-Derivative)控制器和增量式PID控制器是两种常见的PID控制器实现方式,它们的主要区别在于计算控制器输出的方法不同。

位置式PID控制器的控制器输出是由比例项、积分项和微分项的加权和计算得出。在位置式PID中,控制器输出与误差(设定值与实际值之间的差)成正比,且与误差的积分和微分也有关。位置式PID控制器的优点在于稳定性好、控制精度高,但在实际应用中,如果系统存在积分饱和、测量噪声等问题,可能会导致控制器输出的不稳定性。

增量式PID控制器的控制器输出则是由比例项、积分项和微分项的差值计算得出。在增量式PID中,控制器输出与上次的控制器输出、当前的误差和上次的误差的差值有关。相对于位置式PID,增量式PID的优点在于对系统的变化更加敏感,控制器输出的稳定性更好,同时对测量噪声等问题的容忍度也更高。

需要注意的是,由于增量式PID控制器的控制器输出是差值,因此需要在计算过程中维护上一次的控制器输出和误差,否则可能会导致计算错误。此外,在实际应用中,两种控制器的选择需要结合具体的系统特性和控制要求进行综合考虑。

位置式PID和增量式PID控制器各自适用于不同的控制场景。下面是两个例子,分别说明它们的使用场景。

  1. 位置式PID控制器的使用场景

位置式PID控制器适用于需要快速响应和精确控制的场景。比如,在电机控制中,需要控制电机的转速或位置,使其能够快速响应并准确控制,这时可以使用位置式PID控制器。又如,在温度控制中,需要控制温度的精度和稳定性,这时也可以使用位置式PID控制器。

  1. 增量式PID控制器的使用场景

增量式PID控制器适用于需要较强鲁棒性和对测量噪声较高的场景。比如,在机器人控制中,需要控制机器人的运动轨迹,这时可以使用增量式PID控制器,因为机器人在运动过程中,往往受到各种干扰,如摩擦力、惯性力等,增量式PID控制器对这些干扰有较强的鲁棒性。又如,在液位控制中,需要控制液位的高度和稳定性,这时也可以使用增量式PID控制器,因为在液位测量中,测量信号通常存在一定的噪声和波动,增量式PID控制器可以较好地抵抗这些干扰。

下面是使用C语言实现位置式PID和增量式PID控制器的示例代码。

  1. 位置式PID控制器的C语言实现示例代码:

#include <stdio.h>// 定义PID控制器参数
#define Kp 1.0
#define Ki 0.5
#define Kd 0.2// 定义误差、误差积分和误差微分变量
double error, integral = 0.0, derivative = 0.0;
// 定义设定值和实际值变量
double setpoint = 50.0, actual = 0.0;
// 定义控制器输出变量
double output = 0.0;// 计算PID控制器输出
void pid_compute() {// 计算误差error = setpoint - actual;// 计算误差积分integral += error;// 计算误差微分derivative = error - output;// 计算控制器输出output = Kp * error + Ki * integral + Kd * derivative;
}int main() {// 模拟实际值的变化过程for (int i = 0; i < 100; i++) {// 假设实际值从0开始线性增加actual += i;// 计算控制器输出pid_compute();// 输出结果printf("actual = %.2f, output = %.2f\n", actual, output);}return 0;
}
  1. 增量式PID控制器的C语言实现示例代码:
#include <stdio.h>// 定义PID控制器参数
#define Kp 1.0
#define Ki 0.5
#define Kd 0.2// 定义误差、误差积分和误差微分变量
double error, last_error = 0.0, integral = 0.0;
// 定义设定值和实际值变量
double setpoint = 50.0, actual = 0.0;
// 定义控制器输出变量和上一次控制器输出变量
double output = 0.0, last_output = 0.0;// 计算PID控制器输出
void pid_compute() {// 计算误差error = setpoint - actual;// 计算误差积分integral += error;// 计算控制器输出增量double output_increment = Kp * (error - last_error) + Ki * error + Kd * (error - 2 * last_error + output);// 计算控制器输出output += output_increment;// 更新上一次控制器输出和误差last_output = output;last_error = error;
}int main() {// 模拟实际值的变化过程for (int i = 0; i < 100; i++) {// 假设实际值从0开始线性增加actual += i;// 计算控制器输出pid_compute();// 输出结果printf("actual = %.2f, output = %.2f\n", actual, output);}return 0;
}

在增量式PID控制器中,与位置式PID控制器相比,需要额外定义上一次控制器输出和上一次误差变量,并且计算控制器输出时需要使用控制器输出增量的方式进行计算。


http://www.ppmy.cn/news/57715.html

相关文章

回首来路多感概,最是奋斗动人心。

我们必需要在不同的时代有不同的领悟&#xff0c;才能充满生机地去迎接生命中每个新的开始。 文章目录 前言 初心 成长 收获 憧憬 出发 前言 今天是我成为csdn创作者一周年纪念日&#xff0c;我非常开心能够和大家分享我的写作之旅。在这一年里&#xff0c;我经历了许多挑…

【Python】【进阶篇】19、Django项目创建第一个应用

目录 19、Django项目创建第一个应用1. 创建应用2. 应用的添加 19、Django项目创建第一个应用 Django 项目就是基于 Django 框架开发的 Web 应用&#xff0c;它包含了一组配置和多个应用&#xff0c;我们把应用称之为 App&#xff0c;在前文中对它也做了相应的介绍&#xff0c;…

交换机-Exchanges

交换机 Exchanges 概念 RabbitMQ 消息传递模型的核心思想是: 生产者生产的消息从不会直接发送到队列。实际上&#xff0c;通常生产者甚至都不知道这些消息传递传递到了哪些队列中。相反&#xff0c;生产者只能将消息发送到交换机(exchange)&#xff0c;交换机工作的内容非常简…

长/短 链接/轮询 和websocket

短连接和长连接 短连接&#xff1a; http协议底层基于socket的tcp协议&#xff0c;每次通信都会新建一个TCP连接&#xff0c;即每次请求和响应过程都经历”三次握手-四次挥手“优点&#xff1a;方便管理缺点&#xff1a;频繁的建立和销毁连接占用资源 长连接&#xff1a; 客…

用ChatGPT问DotNet的相关问题,发现DotNet工程师的前景还不错

本人最近费了九牛二虎之力注册了一个ChatGPT账号&#xff0c;现在就给大家分享一下&#xff0c;问一下关于.NET的问题&#xff0c;看看ChatGPT的AI功能具体如何&#xff1f; 一、C#跟其它语言比较的优势 回答&#xff1a; C#是一门编程语言&#xff0c;它是为 Microsoft 的 …

永磁同步电机(PMSM)无传感器控制基于滑膜观测器Matlab/Simulink仿真分析

文章目录 前言一、状态观测器二、滑膜状态观测器2.1.滑膜观测器的原理2.2.传统的滑膜观测器2.3.改进的滑膜观测器 三、Matlab/Simulink仿真分析3.1.仿真电路分析3.1.1 电机控制模式切换3.1.2 速度环控制3.1.3 电流环控制3.1.4 电机主电路 3.2.仿真结果分析 总结 前言 本章节采…

【前端知识】内存泄漏与垃圾回收机制 (下)

【前端知识相关分享】内存泄漏与垃圾回收机制 &#xff08;下&#xff09; 6. 内存泄漏的解决方法6.1 解决方法概述6.2 什么是垃圾6.3 垃圾回收机制的定义及规则6.4 垃圾回收算法的基本流程 7. 垃圾回收的常见算法7.1 引用计数7.2 标记清除7.3 复制算法7.4 标记整理&#xff08…

基于微信小程序的垃圾分类系统的研究与实现(附源码和教程)

1. 简介 本文介绍的事基于微信小程序的垃圾分类系统&#xff0c;主要实现的功能有登录、注册、垃圾分类查询、垃圾预约回收、垃圾分类功能。 2.系统设计与实现 本章节是论文的重点&#xff0c;基于上一章介绍的总体设计框架的搭建&#xff0c;详细对小程序的页面布局、流程设…