⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pidcntrl.m

📁 Matlab学习课件
💻 M
字号:
function [mc,intv] = pidcntrl(tsamp,set,setprev,value,valueprev,intvv,...
   kp,ki,kd,minmc,maxmc,dflag,bias)
%PID control with wind-up protection
%Using the sliding wind-up algorithm. Can use either error
%difference (dflag=0) or value difference (dflag=1). Error
%difference is the default.

if(nargin < 12),dflag = 0;, end
if(nargin < 13),bias = 0;,end
error = set - value;
if(dflag == 0)
	dif = error - (setprev - valueprev);
else
	dif = -(value - valueprev);
end

intv = intvv;
mc = kp * error + kd * dif / tsamp + bias;	%Partial results
intv = intv + ki * error * tsamp;
mctrial = mc + intv;
if((mctrial <= maxmc) & (mctrial >= minmc))
	mc = mctrial;	%Controller output is not saturated
elseif(mc > maxmc)
	mc = maxmc;
	intv = 0;	%PD part alone saturates output
elseif(mc < minmc)
	mc = minmc;
	intv = 0;
elseif((mc+intv) > maxmc)
	intv = maxmc - mc;	%Limit integrator to amount that will
			%just saturate output
	mc = maxmc;
elseif((mc+intv) < minmc)
	intv = minmc - mc;
	mc = minmc;
end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -