而且一般是先经过理论计算,仿真,最后应用,这要求有一定的控制理论的背景。pid 等等,归根结底在理论上都是从新配置闭环零极点。对于 pid + dc motor, 如果有control background, 懂matlab, 动动鼠标,点选希望的极点,则立刻能得到pid的参数,当然,人工手算也能做到。
会到温度控制问题:设P=10,I=30,控制周期T=30秒,设定温度为60度,实际温度为50度.用继电器触点开关进行控制 因为用继电器,这里会涉及一个简单的非线性控制,回滞,即设定动作的上下限,比如加热时61停止,59启动加热,目的是减小继电器的动作次数。如果希望更精确,可以把继电器当作 pwm 使用,则可以用 pid 来控制。另一个重要的问题是了解执行机构的特性(最好有transfer function) , 比如占空比100% 目标的稳态平均相对(环境)温差,假设为120 - 20 = 100(环境)。那么50% (15秒通,15秒断),应为 100/2 + 20 = 70。那么最后控制器的占空比为 Ratio = PID ( To - Ti) = 10 * (To - 60) + 30*integrator(To - 60) 当然 ratio 会大于100%,这就是饱和,不要紧,最终 To 会趋近 60,使得占空比最终稳定。
以上未考虑瞬态过程,如果要考虑,那么必须得到系统的transfer function, 这其实不难。这些问题最好的做法是 matlab 仿真 |