打印
[疑难问答]

PID代码

[复制链接]
1684|52
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
burgessmaggie|  楼主 | 2023-11-26 20:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
float PID_DATA1(float speed,float snum)//speed 期望速度,snum 实测速度
        {
        float incrementSpeed; //当前值
        pid.SetSpeed = speed;//设定的期望速度
        pid.err = pid.SetSpeed - snum; //偏差值= 设定的速度-实测的速度
        pid.s_error+=pid.err;//偏差积累
incrementSpeed = (pid.Kp + pid.Ki + pid.Kd)*pid.err - ( pid.Kp + 2* pid.Kd)*pid.err_next+pid.Kd*pid.err_last;//计算
pid.ActualSpeed += incrementSpeed;//实际输出值
        pid.err_last = pid.err_next;
        pid.err_next = pid.err;
                if( pid.ActualSpeed>pid.SetSpeedMAX){ pid.ActualSpeed=pid.SetSpeedMAX;}
                if( pid.ActualSpeed<-pid.SetSpeedMAX){ pid.ActualSpeed=-pid.SetSpeedMAX;}
        return pid.



float PID_DATA2(float speed,float snum)//speed 期望位置,snum 实测位置
{
float incrementSpeed; //当前值
pid.SetSpeed = speed;//设定的期望位置
pid.err = pid.SetSpeed - snum; //偏差值= 设定的位置-实测的位置
pid.s_error+=pid.err;//偏差积累
incrementSpeed = (pid.Kp + pid.Ki + pid.Kd)*pid.err - ( pid.Kp + 2* pid.Kd)*pid.err_next+pid.Kd*pid.err_last;//计算
pid.ActualSpeed = incrementSpeed;//实际输出值
pid.err_last = pid.err_next;
pid.err_next = pid.err;
if( pid.ActualSpeed>pid.SetSpeedMAX){ pid.ActualSpeed=pid.SetSpeedMAX;}
if( pid.ActualSpeed<-pid.SetSpeedMAX){ pid.ActualSpeed=-pid.SetSpeedMAX;}
return pid.ActualSpeed;ActualSpeed;

使用特权

评论回复
沙发
elsaflower| | 2023-12-5 11:29 | 只看该作者
在大多数情况下,一个PID回路可以控制一个单独的执行元件。

使用特权

评论回复
板凳
sdCAD| | 2023-12-5 14:33 | 只看该作者
常用的控制算法,广泛应用于工业过程控制和机器人等领域

使用特权

评论回复
地板
janewood| | 2023-12-5 16:43 | 只看该作者
PID算法有多种实现方式,如标准PID算法、增量式PID算法、微分先行PID算法等。

使用特权

评论回复
5
modesty3jonah| | 2023-12-5 18:54 | 只看该作者
为了提高PID算法的实时性和准确性,可以采用一些优化方法,如数字滤波、增益自适应调整等。

使用特权

评论回复
6
maudlu| | 2023-12-5 19:11 | 只看该作者
PID控制器涉及到大量的数**算,因此需要保证计算精度。可以使用浮点数进行计算,并注意避免溢出等问题。

使用特权

评论回复
7
jkl21| | 2023-12-5 19:34 | 只看该作者
具有纯滞后或者纯振荡的系统中,PID控制器可能无法达到最佳的控制效果

使用特权

评论回复
8
updownq| | 2023-12-5 20:19 | 只看该作者
可以通过绘制根轨迹图或者使用劳斯判据等方法来判断系统的稳定性。

使用特权

评论回复
9
ingramward| | 2023-12-6 15:57 | 只看该作者
PID参数包括比例系数、积分时间常数和微分时间常数。这些参数需要根据实际情况进行调整,以获得最佳的控制效果。

使用特权

评论回复
10
yorkbarney| | 2023-12-6 16:11 | 只看该作者
PID控制器的稳定性是一个重要的问题

使用特权

评论回复
11
robincotton| | 2023-12-6 18:12 | 只看该作者
在实际应用中,PID控制器的计算通常是离散化的。需要注意离散化处理对控制效果的影响,并根据实际情况进行相应的调整。

使用特权

评论回复
12
loutin| | 2023-12-8 16:26 | 只看该作者
PID控制器可以通过硬件或者软件的方式来实现。

使用特权

评论回复
13
albertaabbot| | 2023-12-8 16:38 | 只看该作者
PID参数的选择需要根据控制系统的特性和要求进行调整,通常需要经过试验和调试来确定最佳参数值。

使用特权

评论回复
14
wengh2016| | 2023-12-8 21:14 | 只看该作者
ID调节的目的是减小误差,但如果系统稳定性不好,可能会导致误差越来越大。

使用特权

评论回复
15
kkzz| | 2023-12-9 20:21 | 只看该作者
需要采用合适的PID算法实现方式和硬件平台,以保证PID算法的实时性。

使用特权

评论回复
16
hearstnorman323| | 2023-12-9 21:19 | 只看该作者
PID的计算顺序应该是先计算比例项,然后计算积分项,最后计算微分项。

使用特权

评论回复
17
macpherson| | 2023-12-9 22:09 | 只看该作者
PID控制器的参数选择对控制系统的性能有很大的影响。

使用特权

评论回复
18
juliestephen| | 2023-12-10 17:11 | 只看该作者
在满足控制效果的前提下,应尽可能地优化代码的性能,以减少计算时间和降低功耗。

使用特权

评论回复
19
jackcat| | 2023-12-10 17:51 | 只看该作者
微分器部分的选择对控制系统的性能有很大的影响,需要根据控制系统的特性和要求进行选择。

使用特权

评论回复
20
yeates333| | 2023-12-10 18:39 | 只看该作者
PID控制器对参数变化和扰动具有一定的鲁棒性。

使用特权

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

本版积分规则

11

主题

1124

帖子

0

粉丝