找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 1741|回復(fù): 1
收起左側(cè)

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

[復(fù)制鏈接]
ID:1061970 發(fā)表于 2023-5-7 09:30 | 顯示全部樓層 |閱讀模式
float PID_DATA1(float speed,float snum)//speed 期望速度,snum 實(shí)測(cè)速度
        {
        float incrementSpeed; //當(dāng)前值
        pid.SetSpeed = speed;//設(shè)定的期望速度
        pid.err = pid.SetSpeed - snum; //偏差值= 設(shè)定的速度-實(shí)測(cè)的速度
        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í)測(cè)位置
{
float incrementSpeed; //當(dāng)前值
pid.SetSpeed = speed;//設(shè)定的期望位置
pid.err = pid.SetSpeed - snum; //偏差值= 設(shè)定的位置-實(shí)測(cè)的位置
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;
回復(fù)

使用道具 舉報(bào)

ID:1040201 發(fā)表于 2023-5-26 15:22 | 顯示全部樓層
PID 這個(gè)厲害,就是沒有看懂,多些注釋就更好了
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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