莆田市网站建设_网站建设公司_C#_seo优化
2026/1/18 14:32:14 网站建设 项目流程

目录

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等于公式,直接传给被控对象,但是,需要注意被控对象需要有能接收并处理增量的功能

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询