系列文章目录
目录
系列文章目录
前言
一、被控对象模型
二、初始控制器设计
三、改进初始设计
五、查看软约束
七、参考
前言
您可以检查模型预测控制器设计是否存在潜在的稳定性和鲁棒性问题。具体操作如下
- 在命令行中,使用审查功能。
- 在 MPC Designer 中,在 “调整 ”选项卡的 “分析 ”部分,单击 “审查设计”。
在这两种情况下,软件都会生成一份报告,显示以下测试结果:
- MPC 对象创建 - 测试控制器规格是否生成有效的 MPC 控制器。如果控制器无效,则不执行其他测试。
- QP 海森矩阵有效性 - 测试控制器的 MPC 二次规划 (QP) 问题是否有唯一解。您必须选择成本函数参数(惩罚权重)和水平线,使 QP 海森矩阵为正有限矩阵。
- 闭环内部稳定性 - 从无约束控制器的状态空间实现中提取 A 矩阵,然后计算其特征值。如果每个特征值的绝对值小于或等于 1 且被控对象稳定,则反馈系统内部稳定。
- 闭环标称稳定性 - 从闭环系统的离散时间状态空间实现中提取 A 矩阵,即以反馈配置连接的被控对象和控制器。如果每个特征值的绝对值小于或等于 1,则标称(无约束)系统是稳定的。
- 闭环稳态增益 - 在无约束条件下,测试控制器是否迫使所有受控输出变量达到稳态目标。
- 硬 MV 约束 - 测试控制器是否对可控输入变量及其变化率都有硬约束,如果有,这些约束在运行时是否会发生冲突。
- 其他硬约束 - 测试控制器是否有硬输出约束或硬输入/输出混合约束,如果有,这些约束在运行时是否可能无法满足。
- 软约束 - 通过评估约束 ECR 参数,测试控制器是否适当平衡了硬约束和软约束。
- MPC 数据的内存大小 - 评估运行时控制器所需的内存大小。
您还可以使用审查功能对控制器设计进行编程评估。在这种情况下,通过/未通过的测试结果将以结构形式返回,测试报告将被抑制。
下面的示例展示了如何通过命令行审查控制器设计并解决潜在的设计问题。
一、被控对象模型
本例中的应用是燃料气体混合过程。其目的是混合六种气体以获得一种燃料气体,然后将其燃烧以提供工艺加热。燃料气必须满足三项质量标准,才能可靠燃烧并达到预期的热量输出。此外,还必须控制燃料气体顶管的压力。因此,有四个受控输出变量。六个可控输入变量是给气流速。
被控对象为
- 天然气 (NG)
- 转化气 (RG)
- 氢气 (H2)
- 氮气 (N2)
- 尾气 1 (T1)
- 尾气 2 (T2)
被控对象的输出为
- 高热值 (HHV)
- 沃贝指数 (WI)
- 火焰速度指数 (FSI)
- 顶管压力 (P)
有关燃料气混合问题的更多信息,请参见 [1]。
使用以下线性被控对象模型作为控制器的预测模型。该状态空间模型适用于典型的稳态运行点,使用时间单位小时。
A = diag([-28.6120 -28.6822 -28.5134 -0.0281 -23.2191 -23.4266 ...-22.9377 -0.0101 -26.4877 -26.7950 -27.2210 -0.0083 ...-23.0890 -23.0062 -22.9349 -0.0115 -25.8581 -25.6939 ...-27.0793 -0.0117 -22.8975 -22.8233 -21.1142 -0.0065]);
B = zeros(24,6);
B( 1: 4,1) = [4 4 8 32]';
B( 5: 8,2) = [2 2 4 32]';
B( 9:12,3) = [2 2 4 32]';
B(13:16,4) = [4 4 8 32]';
B(17:20,5) = [2 2 4 32]';
B(21:24,6) = [1 2 1 32]';
C = [diag([ 6.1510 7.6785 -5.9312 34.2689]) ...diag([-2.2158 -3.1204 2.6220 35.3561]) ...diag([-2.5223 1.1480 7.8136 35.0376]) ...diag([-3.3187 -7.6067 -6.2755 34.8720]) ...diag([-1.6583 -2.0249 2.5584 34.7881]) ...diag([-1.6807 -1.2217 1.0492 35.0297])];
D = zeros(4,6);
Plant = ss(A,B,C,D);
默认情况下,所有被控对象的输入都是可控变量。
Plant.InputName = {'NG','RG','H2','N2','T1','T2'};
默认情况下,所有被控对象的输出均为可观测输出。
Plant.OutputName = {'HHV','WI','FSI','P'};
为反映传感器延迟,请在被控对象输出中添加传输延迟。
Plant.OutputDelay = [0.00556 0.0167 0.00556 0];
二、初始控制器设计
根据设计要求构建初始模型预测控制器。首先,为清晰起见,禁用 MPC 命令窗口消息。
MPC_verbosity = mpcverbosity('off');
创建一个控制器:
- 采样时间 Ts 为 20 秒(以小时为单位),与传感器的采样时间一致。
- 预测范围 p,39 个控制间隔,约等于被控对象的沉降时间。
- 控制范围 m,使用长度分别为 2、6、12 和 19 个控制间隔的四个阻塞动作。
Ts = 20/3600;
p = 39;
m = [2 6 12 19];
Obj = mpc(Plant,Ts,p,m);
指定控制器的输出测量噪声和非零标称工作点。
Obj.Model.Noise = ss(0.001*eye(4));
Obj.Model.Nominal.Y = [16.5 25 43.8 2100];
Obj.Model.Nominal.U = [1.4170 0 2 0 0 26.5829];
为每个可控输入变量(MV)指定下限和上限。由于所有可控输入变量都是气流的流速,因此其下限均为零。默认情况下,所有 MV 约束都是硬约束(MinECR = 0 和 MaxECR = 0)。
MVmin = zeros(1,6);
MVmax = [15 20 5 5 30 30];
for i = 1:6Obj.MV(i).Min = MVmin(i);Obj.MV(i).Max = MVmax(i);
end
为可控输入变量的增量指定下限和上限。设置的界限要足够大,以便在一个区间内实现全方位运动。默认情况下,所有 MV 速率约束都是硬约束(RateMinECR = 0 和 RateMaxECR = 0)。
for i = 1:6Obj.MV(i).RateMin = -MVmax(i);Obj.MV(i).RateMax = MVmax(i);
end
为每个被控对象的输出变量 (OV) 指定下限和上限。默认情况下,所有 OV 约束都是软约束(MinECR = 1 和 MaxECR = 1)。
OVmin = [16.5 25 39 2000];
OVmax = [18.0 27 46 2200];
for i = 1:4Obj.OV(i).Min = OVmin(i);Obj.OV(i).Max = OVmax(i);
end
为可控输入变量指定调整权重。MV 权重是根据每种原料流的已知成本指定的。这样做可以告诉 MPC 控制器如何移动六个可控输入变量,以最小化混合燃料气的成本。权重经过归一化处理,最大权重约为 1.0。
Obj.Weights.MV = [54.9 20.5 0 5.73 0 0]/55;
为可控输入变量增量指定调整权重。这些权重相对于最大 MV 权重较小,以便 MV 自由变化。
Obj.Weights.MVrate = 0.1*ones(1,6);
指定被控对象输出变量的调整权重。OV 权重用于惩罚偏离指定设定点的情况,通常相对于其他权重较大。在本例中,首先考虑默认值,它等于最大 MV 权重。
Obj.Weights.OV = [1,1,1,1];
三、改进初始设计
审查初始控制器设计。审查功能会在 Web 浏览器窗口中生成并打开一份报告。
review(Obj)
审核摘要列出了三个警告和一个错误。按顺序查看警告和错误。单击 QP 海森矩阵有效性并向下滚动到警告,警告显示被控对象信号大小差异很大。具体来说,压力响应远大于其他信号。
指定的 OV 边界指示的 OV 跨度差别很大,压力跨度比其他跨度大两个数量级。好的做法是通过指定 MPC 比例因子来考虑信号幅度的预期差异。由于 MV 已根据相对成本加权,因此只需为 OV 指定比例系数。
计算 OV 跨度。
OVspan = OVmax - OVmin;
使用这些跨度作为比例因子。
for i = 1:4Obj.OV(i).ScaleFactor = OVspan(i);
end
要验证输出比例因子的设置是否修复了警告,请查看更新后的控制器设计。
review(Obj)
下一个警告表示控制器在稳态时未将 OV 推至目标值。要查看非零增益列表,请单击闭环稳态增益。
列表中的第一个条目显示,假定没有任何约束,在 HHV 输出中加入一个单位量级的持续扰动将导致 HHV 输出偏离其稳态目标约 0.0860 个单位。第二项显示,WI 的单位扰动将导致 HHV 的稳态偏差或偏移约为 -0.0345,依此类推。
由于有 6 个 MV,而只有 4 个 OV,因此自由度过大。因此,您可能希望控制器没有稳态偏移。然而,为使被控对象的设备处于最经济的运行状态而指定的非零中压权重却导致了非零稳态偏移。
非零稳态偏移通常是不可取的,但在本应用中是可以接受的,因为:
- 主要目标是将混合成本降至最低。气体质量(HHV 等)可以在指定的 OV 限制范围内自由变化。
- 偏移增益幅度小,说明干扰影响小。
- OV 限制是软约束。短期的小幅违规是可以接受的。
单击 “硬 MV 约束 ”查看第二个警告。该警告表示硬约束存在潜在冲突。
如果外部事件导致 NG 远远低于其指定的最小值,对其增长率的约束可能会使 NG 无法在一个控制区间内恢复到界限内。换句话说,如果您同时指定了 MV.Min 和 MV.RateMax 值,如果最近的 MV 值小于(MV.Min - MV.RateMax),控制器将无法找到最佳解决方案。同样,当您同时指定 MV.Max 和 MV.RateMin 时,也会出现潜在冲突。
在气体混合应用中,不太可能出现 MV 约束冲突。不过,好的做法是通过软化两个约束中的一个来消除这种可能性。由于 MV 最小值和最大值是物理限制,而增量限制不是物理限制,因此应软化增量限制。
for i = 1:6Obj.MV(i).RateMinECR = 0.1;Obj.MV(i).RateMaxECR = 0.1;
end
审查更新后的控制器设计。
review(Obj)
MV 约束冲突警告已修复。
要查看错误信息,请单击软约束。
WI 输出的延迟使得在前三个控制区间内无法满足对该变量的约束。WI 约束是软约束,但在设计中加入无法实现的约束是很糟糕的做法。因此,应修改 WI 边界规范,使其在第四个预测水平步之前不受约束。
Obj.OV(2).Min = [-Inf(1,3) OVmin(2)];
Obj.OV(2).Max = [ Inf(1,3) OVmax(2)];
如下一步所示,重新运行审核命令可验证这一更改消除了错误信息。
四、评估零输出权重的影响
鉴于设计要求允许 OV 在其限制范围内自由变化,可考虑取消其惩罚权重。
Obj.Weights.OV = zeros(1,4);
审查这一设计变更的影响。
review(Obj)
有一个关于 QP 海森矩阵有效性的新警告。要查看警告详情,请单击 QP 海森矩阵有效性。
审查结果显示所有四个输出变量的权重均为零。由于零权重符合设计要求,且其他海森测试表明二次编程问题有唯一解,因此可以忽略此警告。要查看第二个新警告,请单击闭环稳态增益。该警告显示了将四个 OV 权重设为零的另一个结果。当 OV 不受权重影响时,控制器会忽略添加到 OV 的任何输出扰动,并以不衰减的方式通过扰动。
既然是设计要求,只要控制器能将所有 OV 控制在指定范围内,非零稳态偏移是可以接受的。因此,最好检查一下当干扰存在时,软 OV 约束是否容易被违反。
五、查看软约束
要查看软约束列表,请单击软约束。在本例中,软约束是每个 OV 的上下限。
影响因子一栏显示,使用默认的 MinECR 和 MaxECR 值,压力 (P) 的优先级远高于其他 OV。要使优先级更具可比性,可增加压力约束 ECR 值,同时调整其他值。例如
Obj.OV(1).MinECR = 0.5;
Obj.OV(1).MaxECR = 0.5;
Obj.OV(3).MinECR = 3;
Obj.OV(3).MaxECR = 3;
Obj.OV(4).MinECR = 80;
Obj.OV(4).MaxECR = 80;
审查这一设计变更的影响。
review(Obj)
在灵敏度比一栏中,现在所有的灵敏度比都小于统一,这意味着软约束受到的关注要小于 MPC 目标函数中的其他项,如 MV 与目标值的偏差。因此,很可能会出现违反输出约束的情况。
要使输出约束比其他 MPC 目标具有更高的优先级,可将 Weights.ECR 参数从默认值 1e5 增加到更高的值,从而硬化所有软 OV 约束。
Obj.Weights.ECR = 1e8;
审查这一设计变更的影响。
review(Obj)
现在,控制器对违反输出约束的敏感度比对目标跟踪误差的敏感度高出 100 倍。
六、查看数据内存大小
要查看存储硬件上使用的 MPC 数据矩阵估计所需的内存大小,请单击 MPC 数据的内存大小。
在本例中,如果控制器使用单精度运行,则需要 250 KB 内存来存储矩阵。如果控制器内存大小超过了目标系统的可用内存,则应重新设计控制器以降低内存需求。或者,增加目标系统的可用内存。
恢复 MPC 冗余级别。
mpcverbosity(MPC_verbosity);
七、参考
[1] Muller C. J., I. K. Craig, and N. L. Ricker. "Modeling, validation, and control of an industrial fuel gas blending system." Journal of Process Control. Vol. 21, Number 6, 2011, pp. 852-860.