PID控制器开发笔记之十:步进式PID控制器的实现
对于一般的PID控制系统来说,当设定值发生较大的突变时,很容易产生超调而使系统不稳定。为了解决这种阶跃变化造成的不利影响,人们发明了步进式PID控制算法。
1、步进式PID的基本思想
所谓步进式PID算法,实际就是在设定值发生阶跃变化时,不直接对阶跃信号进行响应,而是在一定的时间内逐步改变设定值,直至使设定值达到目标值。这种逐步改变设定值的办法使得对象运行平稳。适用于高精度伺服系统的位置跟踪。
佷显然,这一方法并未改变PID控制器本身,而是对设定值做了前期处理。所以其结构框图与控制方程与其他的PID控制算法是一致的。
为了对设定值做必要处理,以使其不知快速变化,有多种方法。比较常用的是建立线性变化函数的办法。我们可以规定设定值从0-100%的变化时间为T,则可以确定设定值变化的斜率绝对值,或者说是步长。知道补偿后,我们就可以根据不常来不断修改设定值,直到目标值。可用公式描述为:

其中SPt为设定值目标值,SPs为设定值的起始值,sl为步长,k为步长的变化系数:

而控制器本身的位置型和增量型表达式都保持不变。
2、算法实现
步进式PID的实质是将设定值的突变修改为平缓的变化,这一处理方式在控制中有大量应用。处理设定值变化过程的流程如下所示:

根据这一流程我们可变写处理函数如下:
/*步进式PID控制设定值步进处理函数*/
float StepInProcessing(CLASSICPID vPID,float sp)
{
float stepIn=(vPID->maximum-vPID->minimum))*0.1;
float kFactor=0.0; if(fabs(vPID->setpoint-sp)<=stepIn)
{
vPID->setpoint=sp;
}
else
{
if(vPID->setpoint-sp>)
{
kFactor=-1.0;
}
else if(vPID->setpoint-sp<)
{
kFactor=1.0;
}
else
{
kFactor=0.0;
}
vPID->setpoint=vPID->setpoint+k*stepIn;
} return vPID->setpoint; }
有了这一处理函数后,在调用PID控制器前,先对设定值进行判断,然后将该函数的结果作为设定值给PID控制器。至于PID控制器才用前面讲述的哪种形式,根据具体应用需求和使用方便去年而定。
3、总结
所谓步进式实质是对设定值进行平缓变化处理,防止因为设定值的跳变而引起系统的波动。这一办法虽然能够减少阶跃跳变的干扰,但也会让系统的响应速度变慢,当然这要根据需要来处理,因为步长的选择决定了作用大小,补偿越小约平缓,相应的响应速度也越慢。
欢迎关注:

PID控制器开发笔记之十:步进式PID控制器的实现的更多相关文章
- PID控制器开发笔记之十一:专家PID控制器的实现
前面我们讨论了经典的数字PID控制算法及其常见的改进与补偿算法,基本已经覆盖了无模型和简单模型PID控制经典算法的大部.再接下来的我们将讨论智能PID控制,智能PID控制不同于常规意义下的智能控制,是 ...
- PID控制器开发笔记之七:微分先行PID控制器的实现
前面已经实现了各种的PID算法,然而在某些给定值频繁且大幅变化的场合,微分项常常会引起系统的振荡.为了适应这种给定值频繁变化的场合,人们设计了微分先行算法. 1.微分先行算法的思想 微分先行PID控制 ...
- PID控制器开发笔记之十二:模糊PID控制器的实现
在现实控制中,被控系统并非是线性时不变的,往往需要动态调整PID的参数,而模糊控制正好能够满足这一需求,所以在接下来的这一节我们将讨论模糊PID控制器的相关问题.模糊PID控制器是将模糊算法与PID控 ...
- PID控制器开发笔记之五:变积分PID控制器的实现
在普通的PID控制算法中,由于积分系数Ki是常数,所以在整个控制过程中,积分增量是不变的.然而,系统对于积分项的要求是,系统偏差大时,积分作用应该减弱甚至是全无,而在偏差小时,则应该加强.积分系数取大 ...
- PID控制器开发笔记之四:梯形积分PID控制器的实现
从微积分的基本原理看,积分的实现是在无限细分的情况下进行的矩形加和计算.但是在离散状态下,时间间隔已经足够大,矩形积分在某些时候显得精度要低了一些,于是梯形积分被提出来以提升积分精度. 1.梯形积分基 ...
- PID控制器开发笔记(转)
源: PID控制器开发笔记
- Hi3516开发笔记(十):Qt从VPSS中获取通道图像数据存储为jpg文件
前言 上一篇已经将himpp套入qt的基础上进行开发.那么qt中拿到frame则是很关键的交互,这是qt与海思可能编解码交叉开发的关键步骤. 受限制 因为直接配置sample的vi比较麻烦 ...
- PID控制器开发笔记之十三:单神经元PID控制器的实现
神经网络是模拟人脑思维方式的数学模型.神经网络是智能控制的一个重要分支,人们针对控制过程提供了各种实现方式,在本节我们主要讨论一下采用单神经元实现PID控制器的方式. 1.单神经元的基本原理 单神经元 ...
- PID控制器开发笔记之二:积分分离PID控制器的实现
前面的文章中,我们已经讲述了PID控制器的实现,包括位置型PID控制器和增量型PID控制器.但这个实现只是最基本的实现,并没有考虑任何的干扰情况.在本节及后续的一些章节,我们就来讨论一下经典PID控制 ...
随机推荐
- Eclipse下生成/编辑Java类图或时序图(UML)[转载]
一 引用文章 1.[eclipse下生成Java类图和时序图,生成UML图(更完整版)](https://blog.csdn.net/guomainet309/article/details/5302 ...
- ue4 socket
Socket 地址: TSharedRef<FInternetAddr> internetAddr = ISocketSubsystem::Get(PLATFORM_SOCKETSUBSY ...
- javascript删除cookie
代码很简单 function deleteCookie (cookieName) { document.cookie = `${cookieName}=; expires=${new Date(0). ...
- java时间计算
- LOJ #2058「TJOI / HEOI2016」求和
不错的推柿子题 LOJ #2058 题意:求$\sum\limits_{i=0}^n\sum\limits_{j=0}^nS(i,j)·2^j·j!$其中$ S(n,m)$是第二类斯特林数 $ Sol ...
- oracle存储过程---创建存储过程语句
一.创建存储过程语句 语法: CREATE OR REPLACE PROCEDURE testname( argument1 TYPE1, .... ) AS BEGIN ...... END ...
- F - Auxiliary Set HDU - 5927 (dfs判断lca)
题目链接: F - Auxiliary Set HDU - 5927 学习网址:https://blog.csdn.net/yiqzq/article/details/81952369题目大意一棵节点 ...
- Day17总结
1:登录注册案例(理解) 2:Set集合(理解) (1)Set集合的特点 无序,唯一 (2)HashSet集合(掌握) A:底层数据结构是哈希表(是一个元素为链表的数组) B:哈希表底层依赖两个方法: ...
- 【转载】使用python库--Graphviz为论文画出漂亮的示意图
原文: Drawing Graphs using Dot and Graphviz 1 License Copyright (C) 2013, 2014, 2015, 2016, 2017, 2018 ...
- dubbo初步认识
dubbo中文网站:http://dubbo.apache.org/zh-cn/ dubbo英文网站:http://dubbo.apache.org/en-us/ 1.Apache Dubbo是一款高 ...