0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

自动控制系统PID控制器的基本实现

454398 来源:博客园 作者:木南创智 2020-11-04 14:16 次阅读

在自动控制中,PID及其衍生出来的算法是应用最广的算法之一。各个做自动控制的厂家基本都有会实现这一经典算法。我们在做项目的过程中,也时常会遇到类似的需求,所以就想实现这一算法以适用于更多的应用场景。

1PID算法基本原理

PID算法是控制行业最经典、最简单、而又最能体现反馈控制思想的算法。对于一般的研发人员来说,设计和实现PID算法是完成自动控制系统的基本要求。这一算法虽然简单,但真正要实现好,却也需要下一定功夫。首先我们从PID算法最基本的原理开始分析和设计这一经典命题。

PID算法的执行流程是非常简单的,即利用反馈来检测偏差信号,并通过偏差信号来控制被控量。而控制器本身就是比例、积分、微分三个环节的加和。其功能框图如下:

根据上图我们考虑在某个特定的时刻t,此时输入量为rin(t),输出量为rout(t),于是偏差就可计算为err(t)=rin(t)-rout(t)。于是PID的基本控制规律就可以表示为如下公式:

其中Kp为比例带,TI为积分时间,TD为微分时间。PID控制的基本原理就是如此。

2PID算法的离散化

上一节简单介绍了PID算法的基本原理,但要在计算机上实现就必须将其离散化,接下来我们就说一说PID算法的离散化问题。在实现离散化之前,我们需要对比例、积分、微分的特性做一个简单的说明。

比例就是用来对系统的偏差进行反应,所以只要存在偏差,比例就会起作用。积分主要是用来消除静差,所谓静差就是指系统稳定后输入输出之间依然存在的差值,而积分就是通过偏差的累计来抵消系统的静差。而微分则是对偏差的变化趋势做出反应,根据偏差的变化趋势实现超前调节,提高反应速度。

在实现离散前,我们假设系统采样周期为T。假设我们检查第K个采样周期,很显然系统进行第K次采样。此时的偏差可以表示为err(K)=rin(K)-rout(K),那么积分就可以表示为:err(K)+ err(K+1)+┈┈,而微分就可以表示为:(err(K)- err(K-1))/T。于是我们可以将第K次采样时,PID算法的离线形式表示为:

也可以记为:

这就是所谓的位置型PID算法的离散描述公式。我们知道还有一个增量型PID算法,那么接下来我们推到一下增量型PID算法的公式。上面的公式描述了第k个采样周期的结果,那么前一时刻也就是k-1个采样周期就不难表示为:

那么我们再来说第K个采样周期的增量,很显然就是U(k)-U(k-1)。于是我们用第k个采样周期公式减去第k-1个采样周期的公式,就得到了增量型PID算法的表示公式:

当然,增量型PID必须记得一点,就是在记住U(k)=U(k-1)+∆U(k)。

3PID控制器的基本实现

完成了离散化后,我们就可以来实现它了。已经用离散化的数据公式表示出来后,再进型计算机编程已经不是问题了。接下来我们就使用C语言分别针对位置型公式和增量型公式来具体实现。

1)位置型PID的简单实现

位置型PID的实现就是以前面的位置型公式为基础。这一节我们只是完成最简单的实现,也就是将前面的离散位置型PID公式的计算机语言化。

首先定义PID对象的结构体:

 1 /*定义结构体和公用体*/
 2 
 3 typedef struct
 4 
 5 {
 6 
 7   float setpoint;       //设定值
 8 
 9   float proportiongain;     //比例系数
10 
11   float integralgain;      //积分系数
12 
13   float derivativegain;    //微分系数
14 
15   float lasterror;     //前一拍偏差
16 
17   float result; //输出值
18 
19   float integral;//积分值
20 
21 }PID;

接下来实现PID控制器:

 1 void PIDRegulation(PID *vPID, float processValue)
 2 
 3 {
 4 
 5   float thisError;
 6 
 7   thisError=vPID->setpoint-processValue;
 8 
 9   vPID->integral+=thisError;
10 
11   vPID->result=vPID->proportiongain*thisError+vPID->integralgain*vPID->integral+vPID->derivativegain*(thisError-vPID->lasterror);
12 
13   vPID->lasterror=thisError;
14 
15 }

这就实现了一个最简单的位置型PID控制器,当然没有考虑任何干扰条件,仅仅只是对数学公式的计算机语言化。

2)增量型PID的简单实现

增量型PID的实现就是以前面的增量型公式为基础。这一节我们只是完成最简单的实现,也就是将前面的离散增量型PID公式的计算机语言化。

首先定义PID对象的结构体:

 1 /*定义结构体和公用体*/
 2 
 3 typedef struct
 4 
 5 {
 6 
 7   float setpoint;       //设定值
 8 
 9   float proportiongain;     //比例系数
10 
11   float integralgain;      //积分系数
12 
13   float derivativegain;    //微分系数
14 
15   float lasterror;     //前一拍偏差
16 
17   float preerror;     //前两拍偏差
18 
19   float deadband;     //死区
20 
21   float result; //输出值
22 
23 }PID;

接下来实现PID控制器:

void PIDRegulation(PID *vPID, float processValue)

{

  float thisError;

  float increment;

  float pError,dError,iError;

 

  thisError=vPID->setpoint-processValue; //得到偏差值

  pError=thisError-vPID->lasterror;

  iError=thisError;

  dError=thisError-2*(vPID->lasterror)+vPID->preerror;

  increment=vPID->proportiongain*pError+vPID->integralgain*iError+vPID->derivativegain*dError;   //增量计算

 

  vPID->preerror=vPID->lasterror;  //存放偏差用于下次运算

  vPID->lasterror=thisError;

  vPID->result+=increment;

}

这就实现了一个最简单的增量型PID控制器,也没有考虑任何的干扰条件,仅仅只是对数学公式的计算机语言化。

4、基本特点

前面讲述并且实现了PID控制器,包括位置型PID控制器和增量型PID控制器。界限来我们对这两种类型的控制器的特点作一个简单的描述。

位置型PID控制器的基本特点:

位置型PID控制的输出与整个过去的状态有关,用到了偏差的累加值,容易产生累积偏差。

位置型PID适用于执行机构不带积分部件的对象。

位置型的输出直接对应对象的输出,对系统的影响比较大。

增量型PID控制器的基本特点:

增量型PID算法不需要做累加,控制量增量的确定仅与最近几次偏差值有关,计算偏差的影响较小。

增量型PID算法得出的是控制量的增量,对系统的影响相对较小。

采用增量型PID算法易于实现手动到自动的无扰动切换。
编辑:hfy

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 自动控制
    +关注

    关注

    10

    文章

    714

    浏览量

    44156
  • PID控制器
    +关注

    关注

    2

    文章

    173

    浏览量

    18579
收藏 人收藏

    评论

    相关推荐

    自动控制系统与物联网的结合 自动控制系统的实时监测技术

    自动控制系统提供了更丰富的数据支持,而自动控制系统则利用这些数据实现了更精确、更智能的控制。 物联网的数据支持 : 物联网通过连接各种设备和传感
    的头像 发表于 12-18 10:00 154次阅读

    自动控制系统在智能制造中的应用

    1. 自动控制系统的定义 自动控制系统是指通过传感检测系统状态,利用控制器系统进行调节,以
    的头像 发表于 12-18 09:57 134次阅读

    自动控制系统的常见故障分析

    自动控制系统通过反馈机制来调节和控制过程变量,以实现预定的性能标准。这些系统可能包括传感控制器
    的头像 发表于 12-18 09:52 179次阅读

    自动控制系统的调试方法 自动控制系统与传统控制系统的比较

    自动控制系统的调试方法 自动控制系统的调试是一个复杂的过程,涉及到对系统性能的测试和优化。以下是一些基本的调试方法: 理论分析与仿真 : 在实际调试之前,通过理论分析和计算机仿真来预测系统
    的头像 发表于 12-18 09:50 195次阅读

    自动控制系统的基本原理 自动控制系统在工业中的应用

    在现代工业生产中,自动控制系统扮演着至关重要的角色。它们不仅提高了生产效率,还确保了产品质量和安全性。 自动控制系统的基本原理 1. 开环控制与闭环控制
    的头像 发表于 12-18 09:48 223次阅读

    智慧未来,建筑自动控制系统助力

    随着科学技术的不断发展,建筑自动控制系统已成为现代建筑不可或缺的一部分。该系统通过监控电气设备、空调设备、卫生设施,以及电梯、门禁和停车场的管理,完成了建筑物的信息管理和运行。控制系统和通信技术
    的头像 发表于 08-28 15:33 203次阅读

    旋转变压自动控制系统中的应用

    旋转变压自动控制系统中的应用是一个广泛而深入的话题,其作为一种特殊的变压,能够完成电量的变压、相位旋转等多种功能,在提升系统稳定性、减小误差、扩大变压比等方面发挥着重要作用。以下
    的头像 发表于 08-19 17:54 392次阅读

    自动控制系统的组成包括哪些

    自动控制系统,作为现代科技和工业发展的重要基石,已经深入到我们生活的方方面面。从工业生产线的自动化管理,到智能家居的远程控制,再到航空航天领域的精确控制,都离不开
    的头像 发表于 06-17 14:42 1954次阅读

    自动控制系统是什么意思

    随着科技的不断进步和工业生产的快速发展,自动控制系统作为现代科技的重要组成部分,已经广泛应用于各个领域,极大地推动了社会经济的发展。本文将详细介绍自动控制系统的定义、原理、发展历程、应用领域以及未来发展趋势,以期为读者提供全面深入的了解。
    的头像 发表于 06-17 14:37 2484次阅读

    自动控制系统的组成与分类

    自动控制系统是现代工业、军事、航空航天等领域中不可或缺的重要组成部分。它通过一系列的设备和装置,实现对生产过程或其他过程的自动调节和控制,以达到预期的目标和效果。本文将详细介绍
    的头像 发表于 06-13 14:52 1833次阅读

    自动控制系统的组成环节及其作用

    的、具有自适应能力的系统,它能够根据输入信号的变化自动调整输出信号,以实现预定的控制目标。自动控制系统的组成环节包括传感
    的头像 发表于 06-06 16:10 2024次阅读

    自动控制系统主要由哪些环节组成?各环节各起什么作用?

    自动控制系统是一种能够自动调节和控制生产过程或设备状态的系统。它广泛应用于工业、农业、航空、航天、交通等领域。自动控制系统主要由以下几个环节
    的头像 发表于 06-06 15:55 4538次阅读

    建筑自动控制系统-实现舒适、节能的双重目标

    建筑自动控制作为建筑设备的智能管理系统,在当今智能建筑领域发挥着越来越重要的作用。实现舒适节能的双重目标,为人们创造更宜居、更环保的建筑环境。 首先,建筑自动控制系统可以通过智能管理建
    的头像 发表于 06-03 17:53 288次阅读

    lora大棚蔬菜种植自动控制系统解决方案

    lora大棚蔬菜种植自动控制系统解决方案
    的头像 发表于 03-12 14:37 560次阅读
    lora大棚蔬菜种植<b class='flag-5'>自动控制系统</b>解决方案

    自动控制系统中的操纵变量指什么

    自动控制系统中的操纵变量指的是在系统中由控制器控制的可调节参数,用于调节或改变被控对象的输出或状态。操纵变量是自动控制中非常重要的概念,它是
    的头像 发表于 01-15 11:29 5167次阅读