1、先进控制技术及应用 1.前言 工业生产的过程是复杂的,建立起来的模型也是不完善的。即使是理论非常复杂的现代控制理论,其效果也往往不尽人意,甚至在一些方面还不及传统的PID控制。20世纪70年代,人们除了加强对生产过程的建模、系统辨识、自适应控制等方面的研究外,开始打破传统的控制思想,试图面向工业开发出一种对各种模型要求低、在线计算方便、控制综合效果好的新型算法。在这样的背景下,预测控制的一种,也就是动态矩阵控制(DMC)首先在法国的工业控制中得到应用。因此预测控制不是某种统一理论的产物,而是在工业实践中逐渐发展起来的。预测控制中比较常见的三种算法是模型算法控制(MAC),动态矩阵控制(DM
2、C)以及广义预测控制。本篇分别采用动态矩阵控制(DMC)、模型算法控制(MAC)进行仿真,算法稳定在消除稳态余差方面非常有效。 2、控制系统设计方案 2.1 动态矩阵控制(DMC)方案设计图 动态矩阵控制是基于系统阶跃响应模型的算法,隶属于预测控制的范畴。它的原理结构图如下图2-1所示: 图2-1 动态矩阵控制原理结构图 2.2 模型算法控制(MAC)方案设计图 模型算法控制(MAC)由称模型预测启发控制(MPHC),和MAC相同也适用于渐进稳定的线性对象,但其设计前提不是对象的阶跃响应而是其脉冲响应。它的原理结构图如下图
3、2-2所示: 图2-2 模型算法控制原理结构图 3、模型建立 3.1被控对象模型及其稳定性分析 被控对象模型为 (1) 化成s域,g(s)=0.2713/(s+0.9),很显然,这个系统是渐进稳定的系统。因此该对象适用于DMC算法和MAC算法。 3.2 MAC算法仿真 3.2.1 预测模型 该被控对象是一个渐近稳定的对象,预测模型表示为: , j=1, 2, 3,……,P. (2) 这一模型可用来预测对象在未来时刻的输出值,其中y的下标m表
4、示模型,也称为内部模型。(2)式也可写成矩阵形式为: 预测误差为。 3.2.2 参考轨迹 在k时刻的参考轨迹可由其在未来采样时刻的值来描述,取一阶指数变化的形式,可写作: j=1,2,3… (3) 3.2.3 MATLAB编程实现 MATLAB代码见<附1> 3.2.3 程序流程图及仿真结果 其程序的流程框图如图3-1所示: 图3-1 程序流程图 仿真结果如图3-2所示: 图3-2 仿
5、真结果 3.3 DMC算法仿真 3.3.1 预测模型 在k时刻,假定控制作用保持不变时对未来个时刻输出的初始预测值为 (3-1) M个连续控制增量△u(k), △u(k+1),…, △u(k+M-1)作用时,未来时刻输出值: (3-2) 3.3.2 滚动优化 在每一时刻k,要确定从该时刻起的M个控制作用增量使被控对象在起作用下未来P个时刻的输出预测值尽可能接近给定的期望值w(k+i)(i=1,2,。。。,P).k时刻优化性能指标可取为 (3-3) 式中,qi,rj是加权系数,它们分别表示对跟踪误差及控制量变化的抑制。 3.3.3 反馈校正
6、 当k时刻把控制量u(k)施加给对象时,相当于在对象输入端加上了一个幅值为△u(k)的阶跃,利用预测模型式可算出在去作用下未来时刻的输出预测值 (3-4) 下一时刻检测对象的实际输出和模型预测算出的输出相比较,构成输出误差: (3-5) 整个控制就是以结合反馈校正的滚动优化反复地在线进行,其算法结构如图3-3所示: 图3-3 DMC算法结构示意图 3.3.4 MATLAB编程实现 MATLAB代码见<附2> 3.3.5 仿真结果 结合matlab中simulink仿真框图如图3-4和程序对对象进行仿真,
7、得出的结果图3-5所示: 图3-4 simulink仿真框图 图3-4 仿真结果 4、总结 本文主要工作是利用DMC算法和MAC算法对被控对象进行控制并采用MATLAB编程仿真。本次任务涉及的内容包括了先进控制理论、预测控制理论、预测控制算法的仿真、控制算法在MATLAB中的实现等。 给定的被控对象在利用DMC算法和MAC算法的预测控制方式下都取得了良好的控制效果、鲁棒性,有效地克服了系统的非线性。 参考文献 【1】 方康玲.过程控制技术及其MATLAB实现(第
8、2版) [M].北京:电子工业出版社,2013 【2】 俞金寿.工业过程先进控制技术[M].上海:华东理工大学出版社,2008 【3】 齐蒙,石红瑞.预测控制及其应用研究[D].2013(1). 附1:MAC程序代码 clc clear num=[0.2713]; den=[1 0.9]; numm=[0.2713]; denm=[1 1]; %定义对象及模型的传递函数 n=40; t1=0:0.1:n/10; g=1*impulse(num,den,t1)'; g
9、m=1*impulse(numm,denm,t1)'; for i=1:n g(i)=g(i+1); end for i=1:n gm(i)=gm(i+1); end a=g;am=gm; N=40; p=15; M=1; m=M; G=zeros(p,m); for i=1:p for j=1:m if i==j G(i,j)=g(1); else if i>j G(i,j
10、)=g(1+i-j); else G(i,j)=0; end end end if i>m s=0; for k=1:(i-m+1) s=s+g(k); G(i,m)=s; end end end F=zeros(p,n-1); for i=1:p k=1; for j=(n-1):-1:1 if i==j
11、 F(i,j)=g(n); else if i>j F(i,j)=0; else F(i,j)=g(i+k); end end k=k+1; end end R=1.0*eye(m); Q=0.9*eye(p); H=0.3*ones(p,1);
12、 %定义各系数矩阵 e=zeros(4*N,4); y=e;ym=y; U=zeros(4*N,4); w=1; Yr=zeros(4*N,4); b=[0.1;0.4;0.6;0.9]; for i=1:4 for k=N+1:4*N y(k,i)=a(1:N)*U(k-1:-1:k-N,i); %求解对象输出 ym(k,i)=am(1:N)*U(k-1:-1:k-N,i); %求解模型输出 e(k)=y(k)-ym(k); for j=1:p
13、 Yr(k+j,i)=b(i)^(j)*y(k)+(1-b(i)^(j))*w; end dt=[1 zeros(1,m-1)]*inv(G'*Q*G+R)*G'*Q; U(k,i)=dt*(Yr(k+1:k+p,i)-F*U(k-N+1:k-1,i)-H*e(k)); end end t=0:0.1:11.9; subplot(2,1,1); plot(t,y(N:N+119
14、1)) hold on; plot(t,y(N:N+119,2)) hold on plot(t,y(N:N+119,3)) hold on; plot(t,y(N:N+119,4)) %t,y(N:N+119,3),t,y(N:N+119,4),t,Yr(N:N+119,1),t,w*ones(1,120)); %grid on %legend('输出1','输出2','输出3','输出4','柔化曲线','期望曲线'); %title('Plot of MAC'); %plot(U); %grid on; 附2 DMC程序代码 %DMC控制
15、算法 % DMC.m 动态矩阵控制(DMC) num=0.2713; den=[1 -0.8351 0 0 0 0]; G=tf(num,den,’Ts’.0.4); %连续系统 Ts=0.4; %采样时间 Ts G=c2d(G,Ts); %被控对象离散化 [num,den,]=tfdata(G,'v'); N=60; %建模时域 N [a]=step(G,1*Ts:Ts:N*Ts); %计算模型向量 a M=2;
16、 %控制时域 P=15; %优化时域 for j=1:M for i=1:P-j+1 A(i+j-1,j)=a(i,1); end end %动态矩阵 A Q=1*eye(P); %误差权矩阵 Q R=1*eye(M); %控制权矩阵 R C=[1,zeros(1,M-1)]; %取首元素向量 C 1*M
17、 E=[1,zeros(1,N-1)]; %取首元素向量 E 1*N d=C*(A'*Q*A+R)^(-1)*A'*Q; %控制向量 d=[d1 d2 ...dp] h=1*ones(1,N); %校正向量 h(N维列向量) I=[eye(P,P),zeros(P,N-P)]; %Yp0=I*YNo S=[[zeros(N-1,1) eye(N-1)];[zeros(1,N-1),1]]; %N*N移位阵 S sim('DMCsimulink') %运行siumlink文件 subplot(2,1,1); %图形显示 plot(y,'LineWidth',2); hold on; plot(w,':r','LineWidth',2); xlabel('\fontsize{15}k'); ylabel('\fontsize{15}y,w'); legend('输出值','设定值') grid on; subplot(2,1,2); plot(u,'g','LineWidth',2); xlabel('\fontsize{15}k'); ylabel('\fontsize{15}u'); grid on; 14 / 14






