找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1641|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

PID速度控制和位置控制函數(shù)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:1061970 發(fā)表于 2023-5-7 09:30 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
float PID_DATA1(float speed,float snum)//speed 期望速度,snum 實(shí)測速度
        {
        float incrementSpeed; //當(dāng)前值
        pid.SetSpeed = speed;//設(shè)定的期望速度
        pid.err = pid.SetSpeed - snum; //偏差值= 設(shè)定的速度-實(shí)測的速度
        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;//計(jì)算
pid.ActualSpeed += incrementSpeed;//實(shí)際輸出值
        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 實(shí)測位置
{
float incrementSpeed; //當(dāng)前值
pid.SetSpeed = speed;//設(shè)定的期望位置
pid.err = pid.SetSpeed - snum; //偏差值= 設(shè)定的位置-實(shí)測的位置
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;//計(jì)算
pid.ActualSpeed = incrementSpeed;//實(shí)際輸出值
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;
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:1040201 發(fā)表于 2023-5-26 15:22 | 只看該作者
PID 這個(gè)厲害,就是沒有看懂,多些注釋就更好了
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表