pid算法

算法分为两种,一种为开环而另一种闭环。开环算法的输入不受输出影响,而闭环算法的输入受输出影响,使输出不断接近我们所设定的期望值。而pid算法属于后者。

pid函数:

u(t) = kp [ e(t) + \frac{1}{Ti} \int_{0}^{t} e(t) dt + Td\frac{\mathrm{de(t)} }{\mathrm{d} t}\tfrac{}{} ]  连续

uk = kp * e_{k} + ki \sum_{j=0}^{k} e_{j} + kd * ( e_{k} - e_{k-1})

P算法:

目的是为了减少测量值与期望值之差

e_{k}:测量值与期望值只差

e_{k}越大,P输出越大

D算法:

目的是为了抑制系统的剧烈反应(过充现象)

e_{k} - e_{k-1}):两次误差之差

e_{k} - e_{k-1})越大,D输出越大

I算法:

目的是为了追求更精确的控制,消除稳态误差。稳态误差产生的原因可能是因为控制的机器要求移动太小,没有产生精确的输出使机器移动,导致产生稳态误差。

基础代码实现:

int PID_value(int measure , int calcu)
        {
                err = measure - calcu;//误差
                err_sum+=  err ;//误差累加
                if(err_sum > 2000)
                        err_sum = 2000;
                if(err_sum < -2000)
                        err_sum = -2000;//对err_sum进行限幅
                err_dif = err - last_err;//误差的差值
                last_err = err;//此次误差记录为”上次误差“
                return Kp*err + Ki*err_sum + Kd*err_dif;
        }

                

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值