news 2026/6/23 21:56:50

PID教程:离散PID程序实现思路

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
PID教程:离散PID程序实现思路

目录

1.连续形式PID与离散形式PID公式

连续形式PID:

离散形式PID:

若将T并入K_i 和K_d ,则:

2.连续形式PID离散化示意图(积分和微分)

3.位置式PID与增量式PID公式

位置式PID(就是离散形式PID公式):

位置式PID,当k=k−1时:

两式相减(位置式PID公式,代入K减代入k-1),得到增量式PID:

4.位置式PID与增量式PID比较

5.PID程序实现定时方案

第一种方法,使用Delay延时实现调控周期T

优点:

弊端:

第二种方法,定时器定时中断方法

优点:

弊端:

第三种方法,定时器定时中断方法增强版

优点:

弊端:

6.位置式PID程序实现

7.增量式PID程序实现(控制器内积分,输出全量)


1.连续形式PID与离散形式PID公式

连续形式PID:

这种PID形式在单片机上不好实现,需要用模拟电路实现

离散形式PID:

单片机使用,离散后,单片机需要设定一个调空周期T,单片机每隔T时间,才会进行一次PID计算和调控

K取1,2……n,表示第几次调控,error(K)第几次调控时当前的误差值;T是离散后的调控周期,也就是系统每隔T时间,调控一次;大Σ符号,表示求和,error(j)每一次的误差,j从0到K,意思就是把第K次调控之前所有的error累加起来;error(k)是本次误差,error(k-1)表示的是上一次误差

若将T并入K_i 和K_d ,则:


2.连续形式PID离散化示意图(积分和微分)


3.位置式PID与增量式PID公式

位置式PID(就是离散形式PID公式):

位置式PID,当k=k−1时:

两式相减(位置式PID公式,代入K减代入k-1),得到增量式PID:

如果把增量式PID看成一个模块,那么给这个模块输入本次、上次、上上次的error,模块直接就能给出PID输出值的增量,且模块内,不需要有任何记忆或累加单元

结论:增量式PID输出的结果△out,只是本次、上次、上上次这3次error的线性组合


4.位置式PID与增量式PID比较

位置式PID由连续形式PID直接离散得到,每次计算得到的是全量的输出值,可以直接给被控对象

位置式PID适合大部分场景,只要需要用单片机实现PID,那么优先考虑位置式PID,速度控制、温度控制、位置控制、姿态控制等等,位置式PID都可以完成

增量式PID由位置式PID推导得到,每次计算得到的是输出值的增量,这个增量一般不能直接给被控对象,如果直接给被控对象,则需要被控对象内部有积分功能

比如,阀门控制;位置式PID说,阀门状态30%、阀门状态50%、阀门状态40%等等,位置式PID,每次告诉完整的阀门状态;而增量式PID说,阀门加大5%、阀门加大8%、阀门状态减小2%等等,增量式PID,每次告诉阀门状态改变的大小,这个改变值,是基于上一次的阀门状态进行的,因此,如果被控对象不能记住上一次的状态,或者不能实现在上次状态的基础上加减调节的功能,那么这个被控对象就不能直接接收输出值的增量

增量式PID也可在控制器内进行积分,然后输出积分后的结果,此时增量式PID与位置式PID整体功能没有区别

位置式PID和增量式PID计算时产生的中间变量不同,如果对这些变量加以调节,可以实现不同的特性

比如,位置式PID的中间变量是误差积分,可以单独进行积分限幅,防止积分饱和,内部积分的增量式PID,没法单独对积分环节限幅,换一种说法,就是内部积分的增量式PID,只需要对输出值限幅,就可以同时实现积分限幅和输出限幅两个功能,而位置式PID,输出限幅和积分限幅得分开进行

另外位置式PID每次计算得到的是全量输出值,如果信号有噪声干扰,不同输出值可能会相差很大,这会导致执行机构大幅度变化,而增量式PID,或者内部积分的增量式PID,都可以单独对输出值增量进行限幅,防止执行机构大幅度变化


5.PID程序实现定时方案

确定一个调控周期T,每隔时间T,程序执行一次PID调控,一般在20ms、10ms、5ms、1ms就要进行一次调控,比如电机周期是20ms~100ms

第一种方法,使用Delay延时实现调控周期T

优点:

简单

弊端:

不准确,上面的代码加Delay时间,会比设定的T,长,还会阻塞代码的执行

第二种方法,定时器定时中断方法

优点:

定时准确,不会阻塞代码运行

弊端:

就是在中断里执行PID调控的时候,一定要注意,其中涉及硬件操作的函数,不能既在中断里调用,又在主函数中调用,因为,中断函数和主程序,相当于多线程,多线程操作同一个硬件,会导致资源访问冲突

比如,在主循环里读取了传感器,然后中断函数执行PID调控的时候,也读取了这个传感器,那么在执行主循环里读取传感器函数的时候,有可能产生中断,在中断函数里又读取了这个传感器,这就导致了冲突

因此,这个方法一定要注意资源访问冲突的问题

第三种方法,定时器定时中断方法增强版

第三种方法,和第二种方法一样都是定时器中断,但是,定时中断函数进来后,不直接在中断函数中执行PID调控,而是定义一个标志位flag,定时时间到了,flag置1,之后,中断函数退出,在主循环里不断检查,如果flag置1,说明定时时间到,然后,在清零flag,再执行PID调控

优点:

所以涉及硬件的操作,在主程序中进行,不会产生资源访问冲突,中断定时使用一个标志位来传递信号即可

弊端:

如果,主程序执行其他代码过多,或者主程序阻塞,那么PID调控代码,可能无法及时执行,这会导致调控周期T不准确,因此,这种方法一定保证主程序不阻塞


6.位置式PID程序实现


7.增量式PID程序实现(控制器内积分,输出全量)

增量式PID代码这里是处理好了,然后,将全量输出给被控对象

如果想输入一个DeltaOut给被控对象,那么定义变量可以将Out变为DeltaOut,然后,PID计算直接DeltaOut等于公式,直接传给被控对象,但是,需要注意被控对象需要有能接收并处理增量的功能

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/17 1:47:03

python自助健身房智能管理系统

目录自助健身房智能管理系统摘要开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!自助健身房智能管理系统摘要 自助健身房智能管理系统通过物联网技术与人工智能算法,实现健身场所…

作者头像 李华
网站建设 2026/6/18 21:58:02

基于大数据的校园网用户行为分析系统的设计与实现_58431u18

目录摘要关键词开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!摘要 校园网作为高校信息化建设的重要组成部分,积累了海量用户行为数据。设计并实现基于大数据的校园网用户行为分…

作者头像 李华
网站建设 2026/6/18 10:00:03

金融风控平台如何通过百度富文本编辑器导入Word带图表格?

咱安徽程序员实锤了!最近接了个CMS外包活,客户是做企业官网的,非要给后台新闻编辑器加“文档导入Word一键粘贴”功能——好家伙,需求单写着“要保留Word里的花里胡哨样式,图片、公式、甚至MathType的鬼画符都得给我原模…

作者头像 李华
网站建设 2026/6/15 4:07:16

基于三菱PLC的电烤箱温度系统(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码

基于三菱PLC的电烤箱温度系统(设计源文件万字报告讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码 基于三菱PLC的电烤箱温度系统 摘要: 随着社会的不断发展,人们改造自然的能力也在不断的提高。机械技术的发明和使用&#x…

作者头像 李华
网站建设 2026/6/15 17:50:59

如何借助AI写好论文中的“前人工作”与“现有问题”?用ChatGPT提供全新思路颠覆认知,实测有效,直接使用

我们在写学术论文时,“前人工作”和“现有问题”这两个部分实际上至关重要,前者可以为我们的研究提供夯实的基础,后者则可以借机展示研究价值和创新点。怎么写好这两部分,既要准确反映前人成果,又要凸显研究意义以及创新呢? 七哥经常指导同仁写学术论文,总结出一些借助…

作者头像 李华
网站建设 2026/6/21 22:37:10

【开题答辩全过程】以 基于SSM框架的网上书城系统设计与实现为例,包含答辩的问题和答案

个人简介一名14年经验的资深毕设内行人,语言擅长Java、php、微信小程序、Python、Golang、安卓Android等开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。感谢大家的…

作者头像 李华