使用数字PID算法控制液位,此文仅列出核心代码。
(网络图片,侵权删除)
PID控制原理如下:
(网络图片,侵权删除)
液位的PID控制示例程序如下:
var i = PID();//根据PID控制算法输出电流信号,用于控制闸阀
var maxA = 3;
i = Math.max(Math.min(i, maxA), -maxA);
if (Math.abs(i) < 0.001) {
i = 0;
}
volume=0.99*volume+i*2;//这一刻留出了原来1%的体积,并灌入了2i的水,注水量正比于控制电流i
y += v/3.14/1/1;//增加的液位高度是体积除以半径1的底面积
其中PID算法如下:
function PID() {
var error = setpoint - lastLastY;
integral += error;
if (integral < -windup) {
integral = -windup;
} else if (integral > windup) {
integral = windup;
}
var derivative = error - prevError;
prevError = error;
lastLastY = lastY;
lastY = y;
return 0.001 * (kp * error + ki * integral + kd * derivative);
}
程序运行如下,可以设置PID各个系数:
本文分享自 传输过程数值模拟学习笔记 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!