09自动化《过程控制系统》实验指导书.docVIP

  • 51
  • 0
  • 约6.72千字
  • 约 16页
  • 2017-02-12 发布于重庆
  • 举报

09自动化《过程控制系统》实验指导书.doc

09自动化《过程控制系统》实验指导书

实验1 用曲线拟合法估计模型参数 实验目的: 掌握用曲线拟合法测试对象动态特性; 熟悉MATLAB仿真平台。 实验原理: 图1.1 输入-输出过程模型 在如图1.1 所示的过程模型中,可以通过实验测试或依据积累的操作数据,用数学方法得出过程的经验模型。 在获取了输入输出数据后,进行曲线拟合,可采用计算机和相关的软件实现。首先根据实验数据和其它验前知识,假定对象的模型结构,然后最小化模型输出和实际输出y(t)在采样点上的误差平方和,即 进行搜索时,当J最小时相应的对象参数即为最优参数。式中,n为计算数据的个数。优化的算法很多,如共轭梯度法、最速下降法、Powell法、单纯型法、罚函数法等。 本实验利用MATLAB优化工具箱中的“lsqcurvefit”函数对过程阶跃响应曲线进行拟合,用户假定模型的结构,编写相应的fun函数,即ym=fun(x, t),其中x为模型的参数向量,待确定,t为时间向量。给出待估计参数的初始值x0,调用曲线拟合函数计算模型参数向量的估计值x,格式为x = lsqcurvefit (fun, x0, t, y),其中y为与时间向量t对应的输出实验数据。 实验要求: 用SIMULINK工具箱搭建如图1.2所示的开环对象测试系统,模拟实验测试环节获取输入输出数据,此处输入采用单位阶跃信号。设置合适的“start time”和“stop time”,使得能够得到一个完整的动态过程。仿真类型设置为“Fixed-step”,并设置合适的计算步长(0.01~0.1)。 输入输出数据保存在dataty.mat文件中,设置变量名为ty;run之后,可在命令窗口中输入load dataty.mat将数据文件中的数据读入工作空间中,然后用size(ty)查看变量ty,可见它的第一行(可用ty(1,:)提取)是时间向量,第二行(可用ty(2,:)提取)是与时间向量对应的输出响应数据。 图1.2 开环对象测试系统 假定模型结构为二阶,即,根据二阶系统阶跃响应的时域表达式,编写函数fun(x, t)。 时,特征根,, ; 时,; 时,; 时,。 用到的函数:cos(x),exp(x),sqrt(x),atan(x) 编写程序进行曲线拟合,得到模型参数的估计值K、ζ和ω,并在同一坐标中绘出对象输出响应曲线和程序拟合曲线如图1.3所示,并将计算结果显示出来。 编写程序过程中可能用到的函数: 打开已有的mdl文件——open_system(‘filename’); 运行某mdl文件——sim(‘filename’); 读取数据文件——load dataty.mat; 对一组数据进行拟合—— x = lsqcurvefit (fun, x0, t, y) 该函数将计算出估计参数x(此处x为一向量,包含K、ζ和ω的值),使得达到最小。其中,t为时间向量,y为与t对应的对象输出响应数据,x0为估计参数初始值,由用户设置。 图1.3 曲线拟合效果 通过更改对象特性(即图1.2中“Transfer Fun”模块的参数),分别对ζ1和ζ1两种情况进行曲线拟合,保存相应的响应曲线和估计参数;对实际参数和估计参数进行比较和分析; 传递函数 ζ= 曲线拟合效果 比较分析 ζ1 ζ1 思考问题: 为什么要对模型的参数进行估计? 说明曲线拟合法的原理和步骤。 程序示例: 图1 对象的开环阶跃曲线 图2曲线拟合效果 假设对象的开环单位阶跃测试曲线如图1所示。假定模型结构为一阶惯性环节,即,根据其单位阶跃响应的时域表达式,,编写firstorderfun(x,t)函数如下: function y=firstorderfun(x,t) % First Order % Input parameters: x=[K T],t=t0:ts:tfinal % Output parameter: y corresponding with t K=x(1); T=x(2); y=K*(1-exp(-t/T)); 然后编写程序进行曲线拟合,并画图如图2: open_system(sim1.mdl); sim(sim1.mdl); load dataty.mat; t=ty(1,:); y=ty(2,:); x0=[1 1]; x=lsqcurvefit(@firstorderfun,x0,t,y); ym=firstorderfun(x,t); figure, plot(t,y,.b,t,ym,r),grid on,hold on,legend(响应曲线,拟合曲线); string1=[K= num2str(x(1))];string2=[T= num2str

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档