专家PID控制误差界限是怎样确定的?有没有具体实例和具体推算步骤???谢谢

专家PID控制误差界限是怎样确定的?有没有具体实例和具体推算步骤???谢谢,第1张

这是专家式PID控制的程序,详细可见刘金坤《新型PID控制及其仿真》第三章。

%Expert PID Controller

clear all

close all

ts=0.001

sys=tf(5.235e005,[1,87.35,1.047e004,0])

dsys=c2d(sys,ts,'z')

[num,den]=tfdata(dsys,'v')

u_1=0.0u_2=0.0u_3=0.0

y_1=0y_2=0y_3=0

x=[0,0,0]'

x2_1=0

kp=0.6

ki=0.03

kd=0.01

error_1=0

for k=1:1:500

time(k)=k*ts

rin(k)=1.0 %Tracing Jieyue Signal

u(k)=kp*x(1)+kd*x(2)+ki*x(3)%PID Controller

%Expert control rule

if abs(x(1))>0.8 %Rule1:Unclosed control firstly

u(k)=0.45

elseif abs(x(1))>0.40

u(k)=0.40

elseif abs(x(1))>0.20

u(k)=0.12

elseif abs(x(1))>0.01

u(k)=0.10

end

if x(1)*x(2)>0|(x(2)==0) %Rule2

if abs(x(1))>=0.05

u(k)=u_1+2*kp*x(1)

else

u(k)=u_1+0.4*kp*x(1)

end

end

if (x(1)*x(2)<0&x(2)*x2_1>0)|(x(1)==0) %Rule3

u(k)=u(k)

end

if x(1)*x(2)<0&x(2)*x2_1<0 %Rule4

if abs(x(1))>=0.05

u(k)=u_1+2*kp*error_1

else

u(k)=u_1+0.6*kp*error_1

end

end

if abs(x(1))<=0.001 %Rule5:Integration separation PI control

u(k)=0.5*x(1)+0.010*x(3)

end

%Restricting the output of controller

if u(k)>=10

u(k)=10

end

if u(k)<=-10

u(k)=-10

end

%Linear model

yout(k)=-den(2)*y_1-den(3)*y_2-den(4)*y_3+num(1)*u(k)+num(2)*u_1+num(3)*u_2+num(4)*u_3

error(k)=rin(k)-yout(k)

%----------Return of PID parameters------------%

u_3=u_2u_2=u_1u_1=u(k)

y_3=y_2y_2=y_1y_1=yout(k)

x(1)=error(k) % Calculating P

x2_1=x(2)

x(2)=(error(k)-error_1)/ts % Calculating D

x(3)=x(3)+error(k)*ts % Calculating I

error_1=error(k)

end

figure(1)

plot(time,rin,'b',time,yout,'r')

xlabel('time(s)')ylabel('rin,yout')

figure(2)

plot(time,rin-yout,'r')

xlabel('time(s)')ylabel('error')

PID是智能控制啊,比如要控制一个水管的水流量,通过流量计,开关阀,让PID来控制开关阀的开关大小使水流量正确.

专家PID记得是PID的高级设置,某些个场合一般的PID无法使用,出现了了专用的,有特殊功能的.记忆中是这个,时间久了,记性不好.


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/7928335.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-11
下一篇2023-04-11

发表评论

登录后才能评论

评论列表(0条)

    保存