打印
[XMC™]

请问增量PID和位置PID,官方有没有一些比较权威的代码?

[复制链接]
楼主: wangjiahao88
手机看帖
扫描二维码
随时随地手机跟帖
21
febgxu| | 2024-7-12 19:33 | 只看该作者 回帖奖励 |倒序浏览
比如如何处理积分饱和、限制PID输出、使用低通滤波器来平滑微分项等,或者需要针对特定的硬件平台和编译器进行优化

使用特权

评论回复
22
jkl21| | 2024-7-13 11:14 | 只看该作者
增量PID控制器只输出控制量的增量,即本次与上一次控制量的差值。这种形式的PID控制器简化了计算,但在某些情况下可能不够稳定。

使用特权

评论回复
23
tabmone| | 2024-7-13 14:50 | 只看该作者
增量式PID只计算输出的变化量,而不是绝对输出值。这种方法减少了积分饱和的风险,适用于实时控制和需要快速响应的系统。

使用特权

评论回复
24
uiint| | 2024-7-13 18:27 | 只看该作者
增量式PID:增量式PID算法的输出是控制量的增量,即当前控制量与上一控制量之差。它只与最近几次的偏差有关,通常只需要考虑最近三次的偏差值(e(k)、e(k-1)、e(k-2)),因此计算量相对较小。增量式PID算法在发生问题时,由于只改变控制量的增量,因此对系统的影响较小,系统稳定性较好。

使用特权

评论回复
25
mickit| | 2024-7-13 22:03 | 只看该作者
比例增益(Kp):比例增益决定了控制器对误差反应的敏感度。Kp值过高可能导致系统过度反应(振荡),而Kp值过低则可能导致系统响应缓慢。
积分时间(Ti):积分时间决定了积分项对控制作用的影响。Ti值过高可能导致系统响应滞后,而Ti值过低可能导致系统不稳定。
微分时间(Td):微分时间决定了微分项对控制作用的影响。Td值可以帮助抑制系统的过度反应,提高系统的稳定性和响应速度。

使用特权

评论回复
26
pmp| | 2024-7-15 11:07 | 只看该作者
void update_PID_increment(PID *pid, float setpoint, float feedback) {
    float error = setpoint - feedback;
    float d_error = error - pid->error;
    float d_feedback = feedback - pid->prev_error;
   
    float output_increment = pid->Kp * error +
                              pid->Ki * d_error +
                              pid->Kd * d_feedback;
   
    pid->error = error;
    pid->prev_error = feedback;
   
    return output_increment;
}

使用特权

评论回复
27
gygp| | 2024-7-15 14:36 | 只看该作者
PID算法是一种广泛应用的控制器设计方法,其具体实现可能会因应用场景、硬件平台、编程语言等因素而有所不同。

使用特权

评论回复
28
LinkMe| | 2024-7-16 06:48 | 只看该作者
其实权利并不是使用它的权限,纠结这个干嘛

使用特权

评论回复
29
uptown| | 2024-7-16 15:51 | 只看该作者
GitHub和其他开源代码托管平台上有很多高质量的PID控制库,这些库由社区维护,并且经常被广泛使用和测试。

使用特权

评论回复
30
hilahope| | 2024-7-16 18:58 | 只看该作者
一些专业的控制工程书籍或教材会提供PID控制的理论基础和实际代码示例。这些资源通常由该领域的专家编写,因此具有一定的权威性。

使用特权

评论回复
31
updownq| | 2024-7-16 22:16 | 只看该作者
可以参考一些流行的控制算法库,如LabVIEW、MATLAB/Simulink、Python的scipy.signal模块等,这些工具通常提供了实现PID控制器的现成函数或模板。

使用特权

评论回复
32
fengm| | 2024-7-17 09:57 | 只看该作者
位置PID控制器输出完整的控制量,包括比例、积分和微分部分。这种形式的PID控制器更为直接,适用于需要精确控制的应用。

使用特权

评论回复
33
zerorobert| | 2024-7-17 13:20 | 只看该作者
对于这两种PID控制器,没有官方或权威的代码统一标准,因为PID控制器的实现可以根据具体的应用场景、目标和约束来定制。不过,通常可以在控制算法的基础上找到许多开源项目或教程,这些资源可以作为参考来设计自己的PID控制器。

使用特权

评论回复
34
olivem55arlowe| | 2024-7-17 16:31 | 只看该作者
位置式PID计算输出值时,会累积所有的误差值。这使得位置式PID特别适合于需要长期稳定的控制应用,但容易受到积分饱和的影响。

使用特权

评论回复
35
wilhelmina2| | 2024-7-17 19:49 | 只看该作者
Arduino PID Library就是一个流行的开源PID控制库

使用特权

评论回复
36
modesty3jonah| | 2024-7-18 19:57 | 只看该作者
位置式PID:
位置式PID算法的输出与系统的当前位置(或当前值)和期望位置(或期望值)之间的偏差有关。
它通过对偏差进行比例(P)、积分(I)和微分(D)运算,得到控制量,直接作用于被控对象。
由于位置式PID算法的输出是控制量的绝对值,因此每次计算都需要考虑过去的所有偏差,计算量相对较大。

使用特权

评论回复
37
AIsignel| | 2024-8-3 23:28 | 只看该作者
其实没有什么权威,一切都需要自己调整

使用特权

评论回复
38
IntelCore| | 2024-8-24 17:29 | 只看该作者
不存在适用于所有场景的单一“权威”代码。

使用特权

评论回复
39
理想阳| | 2024-9-3 17:55 | 只看该作者
找找看。总的来说应该还是有官方源代码的吧?

使用特权

评论回复
40
nowboy| | 2024-9-6 21:44 | 只看该作者
其实权利并不是使用权利。为什么要为此烦恼呢?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则