PID小结(含控制虚拟代码)

PID基本概念

PID算法被广泛地应用于工业控制领域,是一种闭环反馈控制机制。
- P: 比例控制(Proportional)
- I: 积分控制(Integral)
- D: 微分控制(Direvative)

PID流程框图

这里写图片描述
其中:
Kp: 比例增益常数
Ki: 积分增益常数
Kd: 微分增益常数

比例环节

比例项的输出与差错值成线性关系:

Po=Kpe(t)

Ki, Kd保持不变,改变Kp
这里写图片描述

积分环节

Io=Kie(t)dt

这里写图片描述

微分环节

Do=Kdde(t)dt

这里写图片描述

伪代码

以下代码来自:http://bbs.cmnxt.com/thread-5688-1-1.html

Kp = 1000                             ! 记住我们用 Kp*100,因此Kp实际为10
Ki = 100                              ! 记住我们用 Ki*100,因此Ki实际为1
Kd = 10000                           ! 记住我们用 Kd*100 ,因此Kd实际为100
offset= 45                           ! 初始化变量
Tp = 50
integral = 0                          ! 用于存储积分的变量
lastError =0                         ! 用于存储最后一个误差值的变量
derivative = 0                        ! 用于存储导数的变量
Loop forever
   LightValue = read light sensor     ! 当前光电传感器的读值
   error = LightValue - offset        ! 减掉 offset(补偿量),计算误差值
   integral = integral + error        ! 计算积分值
   derivative = error - lastError     ! 计算导数值
   Turn = Kp*error + Ki*integral + Kd*derivative  ! “比例控制部分”+“积分控制部分”+“导数控制部分”
   Turn = Turn/100                      ! 记住消除KpKiKd中因数100的影响!
   powerA = Tp + Turn                 ! A马达功率值
   powerC = Tp - Turn                 ! C马达功率值
   MOTOR A direction=forwardpower=PowerA   !在马达模块中设置A马达的功率值和转向
   MOTOR C direction=forwardpower=PowerC   ! 在马达模块中设置A马达的功率值和转向
   lastError = error                  ! 把当前误差存储在变量lastError中,作为下一次循环的最后一个误差
end loop forever                      ! 结束循环,返回,进行下一次循环
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值