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控制 ...
随机推荐
- List、Map、set的加载因子,默认初始容量和扩容增量
首先,这三个概念说下.初始大小,就是创建时可容纳的默认元素个数:加载因子,表示某个阀值,用0~1之间的小数来表示,当已有元素占比达到这个阀值后,底层将进行扩容操作:扩容方式,即指定每次扩容后的大小的规 ...
- c#调用WebService实例
在Winform中对数据库进行操作缺乏安全性,因而可以使用Winform调用WebService来实现对数据库的各种操作.在VS2010中,创建一个Web服务程序,第一:创建一个空的Web应用程序,名 ...
- CSS强制英文、中文换行与不换行
.p1{ word-break:break-all; width:150px;}/*只对英文起作用,以字母作为换行依据*/ .p2{ word-wrap:break-word; width:150px ...
- windows 程序库
静态链接库:*.lib 在程序编译时要使用的代码,会嵌入到最后生成的执行程序里. 动态链接库:*.dll 在程序运行时要使用的代码. 可在运行时载入 或 在编译时链接 引入库(*.lib)文件 进行使 ...
- 5-8套接字socket
socket概念 socket层 理解socket Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口.在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协 ...
- 使用Docker部署javaWeb应用
1. 安装Dcoker http://www.cnblogs.com/zhangqian27/p/9089815.html 2. 查看镜像 $ docker images 3. 搜索镜像 $ dock ...
- win7用VMware安装CentOs7搭建Linux环境
1. 首先要安装VMware 安装及破解教程 http://www.cnblogs.com/zhangqian27/p/9088237.html 2. 下载os镜像 CentOS下载地址: 阿里云开源 ...
- Python 中的比较:is 与 ==
转载: https://www.cnblogs.com/kiko0o0/p/8135184.html 在 Python 中会用到对象之间比较,可以用 ==,也可以用 is .但是它们的区别是什么呢? ...
- yum1
yum 显示仓库repolist [all|emabled|disabled] 显示软件list (anaconda表示装系统的时候就装上的软件) yum list all yum list php* ...
- 基于netty实现单聊、群聊功能
学习资料 https://juejin.im/book/5b4bc28bf265da0f60130116/section/5b6a1a9cf265da0f87595521 收获: 转载 1. Nett ...