打印
[资料下载]

PID速度控制和位置控制函数

[复制链接]
4405|61
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
burgessmaggie|  楼主 | 2023-11-26 20:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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;

使用特权

评论回复
沙发
abotomson| | 2023-12-2 15:02 | 只看该作者
PID控制器的主要参数包括比例增益(P)、积分增益(I)和微分增益(D)。这些参数的设定会直接影响到控制器的性能。一般来说,需要根据具体的控制对象和性能要求来调整这些参数。

使用特权

评论回复
板凳
uytyu| | 2023-12-2 15:11 | 只看该作者
需要注意比例(P)项、积分(I)项和微分(D)项的参数值、控制信号的输出方式、反馈信号的来源以及控制算法的效率和实时性等方面。

使用特权

评论回复
地板
pmp| | 2023-12-2 15:20 | 只看该作者
PID控制可以用于控制系统的速度或位置。

使用特权

评论回复
5
claretttt| | 2023-12-2 15:32 | 只看该作者
PID控制需要三个参数,即比例增益(P)、积分增益(I)和微分增益(D)。这些参数需要根据控制系统的特性和要求进行调整,以达到最佳的控制性能。在调整参数时,需要考虑系统的响应时间、稳定性、过度振荡等因素,并进行实验验证和优化。

使用特权

评论回复
6
jimmhu| | 2023-12-2 15:48 | 只看该作者
PID控制器的积分项会随着误差信号的累积而增加,如果误差信号长时间存在,积分项可能会饱和,导致控制器失去对系统的控制能力。因此,为了避免积分饱和,可以引入积分限幅或者采用抗积分饱和的方法。

使用特权

评论回复
7
jkl21| | 2023-12-2 15:59 | 只看该作者
积分项可以帮助消除系统的偏差,但是如果积分项累积的误差过大,可能会导致系统的不稳定或过度振荡。

使用特权

评论回复
8
yorkbarney| | 2023-12-2 16:07 | 只看该作者
在速度控制中,通常采用输出脉冲宽度的方式来调整控制信号的频率和幅值;而在位置控制中,则通常采用输出位移的方式调整控制信号的频率和幅值。

使用特权

评论回复
9
pentruman| | 2023-12-2 16:17 | 只看该作者
需要对系统进行详细的分析和建模,以识别和消除非线性和噪声等问题。

使用特权

评论回复
10
saservice| | 2023-12-2 16:25 | 只看该作者
在设计PID控制器时,需要考虑到系统的抗干扰能力,例如可以通过增加微分增益(D)来提高系统的抗干扰能力。

使用特权

评论回复
11
bestwell| | 2023-12-2 16:39 | 只看该作者
PID控制需要确定三个参数,即比例系数(P)、积分时间常数(I)和微分时间常数(D)。这些参数的选择需要根据具体的控制要求和系统特性进行调整和优化。

使用特权

评论回复
12
updownq| | 2023-12-2 16:46 | 只看该作者
对于位置控制,需要处理编码器输出的脉冲信号。在每次更新时,计算电机当前的位置,并与目标位置进行比较,以实现精确的位置控制。

使用特权

评论回复
13
10299823| | 2023-12-2 16:55 | 只看该作者
微分项的作用是预测误差的变化趋势,如果微分项的参数设置不当,可能会导致系统出现振荡或不稳定。因此,需要根据系统特性适当调整微分项的参数。

使用特权

评论回复
14
gygp| | 2023-12-2 19:10 | 只看该作者
在伺服控制中,被控对象的相位滞后会影响控制系统的性能。

使用特权

评论回复
15
lzmm| | 2023-12-2 19:24 | 只看该作者
在使用PID控制之前,需要明确控制的目标,例如是速度控制还是位置控制,以及具体的控制要求,例如控制精度、响应速度等。

使用特权

评论回复
16
louliana| | 2023-12-2 19:44 | 只看该作者
PID控制器的设计不合理,可能会导致系统出现振荡或者不稳定的情况。

使用特权

评论回复
17
ingramward| | 2023-12-2 19:55 | 只看该作者
PID控制虽然是一种常用的控制算法,但它并不是万能的。

使用特权

评论回复
18
cemaj| | 2023-12-2 20:06 | 只看该作者
系统的误差范围过大,可能会导致系统的控制精度降低。

使用特权

评论回复
19
biechedan| | 2023-12-2 20:15 | 只看该作者
PID控制器的参数包括比例增益(Kp)、积分时间常数(Ki)和微分时间常数(Kd)。这些参数需要根据系统特性和性能要求进行适当调整。参数调整需要耐心和细心,因为每个参数都会对系统响应产生影响,需要反复试验以找到最佳值。

使用特权

评论回复
20
robincotton| | 2023-12-2 20:30 | 只看该作者
选择合适的PID算法、确定合适的控制参数、实现PID控制的硬件和软件等。

使用特权

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

本版积分规则

17

主题

1288

帖子

1

粉丝