《控制系统计算机仿真实验.docx》由会员分享,可在线阅读,更多相关《控制系统计算机仿真实验.docx(7页珍藏版)》请在三一办公上搜索。
1、控制系统计算机仿真实验实验五 采样控制系统的数字仿真实验 一、实验目的 1掌握采样控制系统数字仿真的特点。 2. 了解数字控制器对系统动态性能的影响。 3学会编制双重循环法的仿真程序。 二、实验预习 1. 复习采样控制系统的仿真原理及特点。 2根据理论分析,初步估计系统在给定条件下可能出现的动态过程。 三、实验要求 1. 整理各种实验条件下的数据和曲线。 2分析两种控制器对系统动态性能的影响,并写出实验报告。 四、实验内容 某单位反馈控制系统中,被控对象的传递函数为 G0(s)=10s(s+1)在单位速度信号输入r(t)=t下,选择零阶保持器在T=1s时设计的“最少拍”控制器为 0.543-0
2、.471z-1+0.0999z-2D(z)= 1-0.282z-1-0.718z-21. 按实验目的、要求和已知条件,建立系统的Simulink模型,并且编制双重循环法的仿真程序。 1) Simulink模型建立: 根据题目给出的条件,数字控制系统的结构图如下图所示: 其中的其中数字控制器为: 0.543-0.471z-1+0.0999z-20.543z2-0.471z+0.0999D(z)= 1-0.282z-1-0.718z-2z2-0.282z-0.718建立Simulink模型如下图所示:2) 编制双重循环法的仿真程序 根据数字控制系统的结构图与条件(1)式,我们可以得到得到被控对象的
3、状态空间模型: x1(t)00x1(t)10=1-1x(t)+0u(t)x(t)22 y(t)=01x1(t)x(t)2(2) 按连续系统离散相似算法将式离散化。为了保证精度,其离散化时的步长h应比数字控制器的实际采样周期T (=1s)小得多。为简化起见,取h=T/N=T/100=0.01T=0.01s。 利用MATLAB控制系统工具箱提供的将连续系统转换成离散系统的函数c2d,把连续状态空间模型(2)变换为离散状态空间模型。 程序1如下所示: 程序如下: clear; h=0.01; A=0 0;1 -1; B=10;0; G,H=c2d(A,B,h); 运行程序后我们得到: 01G=(=(
4、T) 0.010.990.1H=(=(T) 0.0005故连续系统被控对象的等价离散化状态方程为: x1(k+1)10x1(k)0.1=+u(k)x2(k+1)0.010.99x2(k)0.0005 x(k)y(k)=011x(k)2根据上述条件,采样控制系统数字控制器的差分方程为u(k)=0.282u(k-1)+0.718u(k-2)+0.543e(k)-0.471e(k-1)+0.0999e(k-2) (6) 式中:e(k)=r(k)-y(k) (7) 根据例题3.2中仿真框图分别递推求解 (5)式和 (6)式的MATLAB仿真程序: 程序2如下: clear G=1 0;0.01 0.9
5、9; H=0.1;0.0005;c=0 1; % 连续被控对象的离散化状态方程的系数阵 h=0.01;T=1; T=0.1为步长 N=round(T/h); % 在一采样周期内连续被控对象的离散化状态方程递推N次(内循环) TF=15; % 设定总仿真时间为15s M=round(TF/T); % 数字控制器的差分方程递推M次(外循环) x=0;0; u=zeros(1,M+2); e=zeros(1,M+2); u(1)=0; u(2)=0; t=0; xt=x; for i=1:M % 外循环 y=c*x; r(i)=i; e(i+2)=r(i)-y; u(i+2)=0.282*u(i+1
6、)+0.718*u(i)+0.543*e(i+2)-0.471*e(i+1)+0.0999*e(i); % 外循环中递推求数字控制器在实际采样时刻的输出(步长为T) for j=1:N % 内循环 x=G*x+H*u(i+2); % 内循环中递推求受控对象状态响应(步长为h) xt=xt,x; % yt为记载各步状态响应的矩阵 t=t,j*h+(i-1)*T; % t为记载各采样(kT)时刻的行向量(与yt对应) end end x1t=xt(1,:);x2t=xt(2,:); plot(t,x1t,:k,t,x2t,k); legend(x1, x2); grid; xlabel(time(
7、s); % 设定内循环步长h=0.01,而外循环则以采样周期2. 分别运行双重循环法的仿真程序和Simulink模型,观察纪录系统动态性能的变化。 1) 运行Simulink模型结果如下图所示: 黄线为x1,紫线为x2 2) 运行双重循环法的仿真程序结果如下所示: 进行对比发现,两种方法结果基本相同。双重循环法通用性较强,不仅可得到控制系统的输出值,还可得到被控对象内部状态变量的响应;也可用于被控对象中含有典型非线性环节的非线性系统的仿真。克服了差分方程递推求解法 不能计算被控对象的内部状态变量的响应特性,对被控对象含有非线性环节的情况也不适用的局限性。 3若数字控制器改为“无纹波”控制器 0
8、.383-0.365z-1+0.825z-2D(z)= -1-21-0.407z-0.593z试对两种情况下的输出进行比较。 1) 更改只需改Discrete Transfer Fcn 参数即可,Simulink模型为: 输出结果如下: 黄线为x1,紫线为x2 2) 双重循环法: 改变数字控制器后,连续系统离散化模型是不变的,只需将控制系统差分方程改写即可: u(k)=0.407u(k-1)+0.593u(k-2)+0.383e(k)-0.365e(k-1)+0.825e(k-2) 重新编写双重循环仿真程序如下: clear G=1 0;0.01 0.99; H=0.1;0.0005;c=0
9、1; % 连续被控对象的离散化状态方程的系数阵 h=0.01;T=1; % 设定内循环步长h=0.01,而外循环则以采样周期T=0.1为步长 N=round(T/h); % 在一采样周期内连续被控对象的离散化状态方程递推N次(内循环) TF=15; % 设定总仿真时间为15s M=round(TF/T); % 数字控制器的差分方程递推M次(外循环) x=0;0; u=zeros(1,M+2); e=zeros(1,M+2); u(1)=0; u(2)=0; t=0; xt=x; for i=1:M % 外循环 y=c*x; r(i)=i; e(i+2)=r(i)-y; u(i+2)=0.407
10、*u(i+1)+0.593*u(i)+0.383*e(i+2)-0.365*e(i+1)+0.825*e(i); % 外循环中递推求数字控制器在实际采样时刻的输出(步长为T) for j=1:N % 内循环 x=G*x+H*u(i+2); % 内循环中递推求受控对象状态响应(步长为h) xt=xt,x; % yt为记载各步状态响应的矩阵 t=t,j*h+(i-1)*T; % t为记载各采样(kT)时刻的行向量(与yt对应) end end x1t=xt(1,:);x2t=xt(2,:); plot(t,x1t,:k,t,x2t,k); legend(x1, x2); grid; xlabel(time(s); 输出结果如下所示: