[范例教程] PID速度控制和位置控制函数

[复制链接]
 楼主| mickit 发表于 2023-7-16 12:00 | 显示全部楼层 |阅读模式

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;

weifeng90 发表于 2023-7-17 08:17 来自手机 | 显示全部楼层
有本讲PID算法的书
OKAKAKO 发表于 2023-7-22 13:26 | 显示全部楼层
PID算法其实还是比较实用的一个经典算法
中国龙芯CDX 发表于 2023-7-24 13:09 | 显示全部楼层
没明白楼主这个函数的意思,建议楼主适当讲解一下
jf101 发表于 2023-7-24 13:35 | 显示全部楼层
PID算法楼主直接放公式在上面了?建议还是分开调节使用比较好
小夏天的大西瓜 发表于 2023-7-25 12:31 | 显示全部楼层
位置式PID与增量式PID
LOVEEVER 发表于 2023-7-26 18:52 | 显示全部楼层
PID很经典的控制算法
sesefadou 发表于 2023-8-9 15:04 | 显示全部楼层
一些PID控制函数可能需要较多的计算资源和存储空间
minzisc 发表于 2023-8-9 15:22 | 显示全部楼层
PID控制器的参数和调节方**影响控制系统的响应速度和精度。一些函数库或控制器可能提供了不同的PID控制模式或参数设置,可以根据具体需求选择合适的模式和参数。
pl202 发表于 2023-8-9 16:04 | 显示全部楼层
选择合适的控制函数可以提高系统的响应速度、准确性和鲁棒性。
updownq 发表于 2023-8-9 20:56 | 显示全部楼层
PID控制器的不当调节可能导致系统稳定性问题
lihuami 发表于 2023-8-9 21:21 | 显示全部楼层
根据实际需求,设定一些性能指标,例如稳态误差、响应时间等。这些指标将指导 设计PID控制器时如何权衡比例、积分和微分的贡献。
alvpeg 发表于 2023-8-14 08:42 | 显示全部楼层
PID控制算法可能涉及大量的计算和数据处理。在选择函数时,要考虑可用的处理能力、存储资源等因素
chenqianqian 发表于 2023-8-14 08:47 来自手机 | 显示全部楼层
PID经典控制算法
backlugin 发表于 2023-8-14 09:49 | 显示全部楼层
不同的PID函数可能具有不同的调节算法和参数设置方式
modesty3jonah 发表于 2023-8-14 12:38 | 显示全部楼层
首先要明确控制系统所期望达到的目标,例如速度控制还是位置控制。不同的控制目标可能会导致不同的控制策略和参数设置。
ingramward 发表于 2023-8-14 13:52 | 显示全部楼层
选择PID速度控制和位置控制函数时,需要考虑控制系统的需求、控制对象的特性、稳定性、性能和复杂性等因素。
lzmm 发表于 2023-8-14 16:14 | 显示全部楼层
了解PID控制函数的算法实现方式。有些函数可能使用传统的PID控制算法,而其他函数可能包含了改进的控制算法,如自适应控制或模糊控制等。选择适合您需求的算法类型和实现方式。
modesty3jonah 发表于 2023-8-14 16:22 | 显示全部楼层
对系统的速度进行闭环控制,则选择具有PID速度控制功能的函数。如果你需要对系统的位置进行闭环控制,则选择具有PID位置控制功能的函数。
pixhw 发表于 2023-8-14 16:34 | 显示全部楼层
在某些情况下,速度控制比位置控制更适用于需要快速动态响应的系统,而在其他情况下,位置控制可能更适合需要更精确位置控制的系统。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

89

主题

1533

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部

89

主题

1533

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部