调节汽包锅炉压力

这个例子说明了如何使用的Simulink控制设计™软件,采用万博1manbetx汽包锅炉作为一个示例应用程序。使用操作点搜索功能,该示例示出模型线性化以及随后的状态观测器和LQR设计。在该鼓锅炉模型,控制问题是通过调节供给水的流速和所施加的额定热来调节从炉随机热波动的面锅炉压力。对于这个例子中,随机波动热95%的标称热值,这是不寻常的炉燃烧锅炉的小于50%。

打开模型

打开Simulin万博1manbetxk模型。

MDL ='Boiler_Demo';open_system(MDL)

当您打开锅炉控制模型的软件初始化控制器的尺寸。U0Y0操作点计算之后被设置,因此最初被设置为零。观察者和调节器都在控制器的设计步骤中计算,并且也初始设定为零。

找到额定工作点和线性化模型

该模型的初始状态的值在Simulink模型定义。万博1manbetx使用这些状态值,使用发现稳态运行点findop功能。

创建其中状态值是已知的操作点规范。

opspec = operspec(MDL);opspec.States(1).Known = 1;opspec.States(2).Known = 1;opspec.States(3).Known = [1; 1];

调整操作点指定,以指示该输入必须被计算并且它们有界低。

opspec.Inputs(1).Known = [0 0];%投入不明opspec.Inputs(1).Min = [0 0];%输入最小值

添加的输出规范来操作点规范;这是必要的,以确保在求解过程中输出的工作点被计算。

opspec = addoutputspec(opspec,[MDL'/锅炉'],1);opspec.Outputs(1).Known = 0;%输出未知opspec.Outputs(1).Min = 0;%输出最小值

计算工作点,并生成一个工作点检索报告。

[OPSS,opReport] = findop(MDL,opspec);
动作点检索报告:---------------------------------为Model Boiler_Demo工作点检索报告。(时间变化分量评估的在时间t = 0)工作点规范被成功地满足。状态:----------(1)Boiler_Demo /锅炉/蒸气量X:5.6 DX:7.85e-13(0)(2)Boiler_Demo /锅炉/温度X:180 DX:-5.93E-14(0)(3)Boiler_Demo /观察员/内部X:0 DX:0(0)×:0 DX:0(0)输入:----------(1)Boiler_Demo/输入u:2.41e + 05 [0 Inf文件] U:100 [0 Inf文件]输出:----------(1)Boiler_Demo /锅炉Y:1E + 03 [0 Inf文件]

线性化该点周围的模型之前,指定的线性模型的输入和输出信号。首先,线性指定的输入点。

Boiler_io(1)=的LiNiO([MDL'/和'],1,“输入”);Boiler_io(2)=的LiNiO([MDL“/解复用器”],2,“输入”);

接下来,线性指定开环输出点。

Boiler_io(3)=的LiNiO([MDL'/锅炉'],1,'的OpenOutput');setlinio(MDL,Boiler_io);

发现周围所选择的工作点的线性模型。

Lin_Boiler =线性化(MDL,OPSS,Boiler_io);

最后,使用minreal功能,确保该模型是一个最小的实现。

Lin_Boiler = minreal(Lin_Boiler);
1个状态移除。

设计器和状态观测器

使用该线性模型,设计一个LQR调节器和卡尔曼滤波器状态观测。首先,找到控制器偏移通过检索计算的工作点,以确保控制器周围的选择线性化点运行。

U0 = opReport.Inputs.u;Y0 = opReport.Outputs.y;

现在,使用设计的稳压器LQRY功能。需要输出的严密调节而输入的变化应该被限制。

Q = DIAG(1E8);%输出调节R = DIAG([1e2,1e6]);%输入限制[K,S,E] = LQRY(Lin_Boiler,Q,R);

使用设计卡尔曼状态观测器卡尔曼功能。对于这个例子,主要噪声源是过程噪声。噪声只有通过一个输入端,因此的形式进入系统GH

[A,B,C,d] = SSDATA(Lin_Boiler);G = B(:,1);H = 0;QN = 1E4;RN = 1E-1;NN = 0;[Kobsv,L,P] =卡尔曼(β(A,[B G],C,[d H]),QN,RN);

模拟模型

模拟对设计的控制器模型。

SIM(MDL)

绘制处理输入和输出信号。如下图所示在千克/秒的进料水的致动信号。

情节(FeedWater.time / 60,FeedWater.signals.values)标题(“给水流量[公斤/秒]”);ylabel(“流量[公斤/秒]”)xlabel(“时间[分钟]”)网格

下面的图表显示了千焦的热量驱动信号。

情节(Heat.time / 60,Heat.signals.values / 1000)标题(“应用热[千焦]”);ylabel(“热[千焦]”)xlabel(“时间[分钟]”)网格

下图显示了在千焦的热量干扰。干扰由标称热值高达50%之间变化。

情节(HeatDist.time / 60,HeatDist.signals.values / 1000)标题(“热扰动[千焦]”);ylabel(“热[千焦]”)xlabel(“时间[分钟]”)网格

下图显示了以kPa相应滚筒的压力。该压力由标称值的约1%的偏差,即使干扰是比较大的。

情节(DrumPressure.time / 60,DrumPressure.signals.values)标题(“鼓压力[千帕]”);ylabel(“压强[千帕]”)xlabel(“时间[分钟]”)网格bdclose(MDL)