一般来说,真实系统是非线性的。要为非线性系统设计MPC控制器,可以在Simulink中对设备进行建模金宝app®.
虽然MPC控制器可以调节非线性设备,但控制器内使用的模型必须是线性的。换句话说,控制器采用非线性装置的线性近似。这种近似的精度显著地影响控制器的性能。
为了得到这样的线性近似,你线性化在指定位置的非线性装置操作点.
请注意
金宝appSimulink控制设计™必须安装软件来线性化非线性Simulink模型。金宝app
您可以线性化Simulink模型:金宝app
从命令行。
使用模型线性化电路.
使用MPC设计师.有关示例,请参见使用MPC设计器线性金宝app化Simulink模型.
这个例子展示了如何使用MATLAB脚本获得一个植物的线性模型。
对于这个CSTR模型的例子,CSTR_OpenLoop
,是线性化的。模型输入是冷却液温度(MPC控制器的操作变量),进料流中的限制反应物浓度和进料温度。模型状态是产物流中极限反应物的温度和浓度。两种状态都被测量并用于反馈控制。
获得稳态工作点
工作点定义了线性化模型的标称条件。它通常是一个稳态条件。
假设你计划用输出浓度操作CSTR,C_A
,在
.标称进料浓度为
,进料温度公称为300k。创建一个工作点规范对象来定义稳态条件。
Opspec = operspec(“CSTR_OpenLoop”);Opspec = addoutputspec(Opspec,“CSTR_OpenLoop /装运箱”2);opspec.Outputs(1)。已知=真实;opspec.Outputs(1)。Y = 2;Op1 = findop(“CSTR_OpenLoop”, opspec);
操作点搜索报告:---------------------------------模型CSTR_OpenLoop的操作点搜索报告。(time - varying Components evaluate at time t=0)满足工作点规格。国家:---------- (1.)CSTR_OpenLoop/CSTR/C_A x: 2 dx: -4.6e-12 (0) (2.)CSTR_OpenLoop /装运箱/ T_K x: 373 dx: 5.48 e-11(0)输入 : ---------- ( 1)。CSTR_OpenLoop/冷却液温度u: 299 [-Inf Inf]输出:---------- (1.)CSTR_OpenLoop/CSTR y: 2 (2)
计算工作点为C_A
=
而且T_K
= 373 k。请注意,稳态冷却剂温度也被给出为299 K,这是MPC控制器被操纵变量的标称值。
指定:
已知输入的值,使用输入。已知的
而且Input.u
领域的opspec
状态值的初始猜测,请使用State.x
领域的opspec
例如,下面的代码指定冷却剂温度为305k和初始的猜测值C_A
而且T_K
计算稳态工作点前的状态:
Opspec = operspec(“CSTR_OpenLoop”);opspec.States(1)。X = 1;opspec.States(2)。X = 400;opspec.Inputs(1)。已知=真实;opspec.Inputs(1)。U = 305;Op2 = findop(“CSTR_OpenLoop”, opspec);
操作点搜索报告:---------------------------------模型CSTR_OpenLoop的操作点搜索报告。(time - varying Components evaluate at time t=0)满足工作点规格。国家:---------- (1.)CSTR_OpenLoop/CSTR/C_A x: 1.78 dx: -4.8e-14 (0) (2.)CSTR_OpenLoop /装运箱/ T_K x: 377 dx: 5.4 e-13(0)输入 : ---------- ( 1)。CSTR_OpenLoop/Coolant Temperature u: 305输出:无---------- .输出说明
指定线性化输入和输出
如果线性化输入和输出信号已经在模型中定义,如CSTR_OpenLoop
,然后用下面的方法得到信号集。
IO = getlinio(“CSTR_OpenLoop”);
否则,指定如下所示的输入和输出信号。
Io (1) = linio(“CSTR_OpenLoop /冷却剂温度”, 1“输入”);Io (2) = linio(“CSTR_OpenLoop /进料浓度”, 1“输入”);Io (3) = linio(CSTR_OpenLoop /进料温度的, 1“输入”);Io (4) = linio(“CSTR_OpenLoop /装运箱”, 1“输出”);Io (5) = linio(“CSTR_OpenLoop /装运箱”2,“输出”);
线性化模型
使用指定的工作点线性化模型,op1
,输入/输出信号,io
.
系统=线性化(“CSTR_OpenLoop”、op1 io)
sys = A = C_A T_K C_A -5 -0.3427 T_K 47.68 2.785 B =冷却液温度进给浓度进给温度C_A 0 1 0 T_K 0.3 0 1 C = C_A T_K CSTR/1 0 1 CSTR/2 1 0 D =冷却液温度进给浓度进给温度CSTR/1 0 0 0 CSTR/2 0 0 0连续时间状态空间模型。
方法对Simulink模型进行线性化金宝app模型线性化电路,由金宝appSimulink控制设计软件
开放金宝app模型
本例使用CSTR模型,CSTR_OpenLoop
.
open_system (“CSTR_OpenLoop”)
指定线性化输入和输出
线性化输入和输出已经指定CSTR_OpenLoop
.输入信号与输出信号相对应进料浓度
,进料温度
,冷却液温度
块。输出信号是输入装运箱温度
而且残留浓度
块。
要将信号指定为线性化输入或输出,首先打开线性化选项卡。要做到这一点,在Simulink中金宝app应用程序画廊,点击线性化管理.然后,在Simulink模金宝app型窗口中,单击该信号。
将信号指定为a:
线性化输入线性化选项卡,在插入分析点画廊,点击输入扰动.
线性化输出,上线性化选项卡,在插入分析点画廊,点击输出测量.
开放式线性器
打开模型线性化电路,在应用程序画廊,点击模型线性化电路.
指定剩余浓度为已知修剪约束
在Simuli金宝appnk模型窗口中,单击CA
输出信号从装运箱
块。然后,在线性化选项卡,在插入分析点画廊,点击配平输出约束.
在模型线性化电路,在线性分析选项卡上,选择操作点>调整模型.
在“修剪模型”对话框中,在输出标签:
选择已知的复选框。频道- 1
下CSTR_OpenLoop /装运箱.
设置相应的价值来2
kmol / m3..
创建并验证工作点
在“修剪模型”对话框中,单击开始削减.
操作点op_trim1
显示在线性分析工作区.
双击op_trim1
查看结果工作点。
在“编辑”对话框中,选择输入选项卡。
稳定状态下的冷却液温度为299 K,符合要求。
线性化模型
在线性分析选项卡,在操作点下拉列表,选择op_trim1
.
点击一步线性化模型。
该选项创建线性模型linsys1
在线性分析工作区并为这个模型生成阶跃响应。linsys1
使用optrim1
作为它的作业点。
进料浓度到产量的阶跃响应装运箱/ 2
显示一个有趣的反向响应。对线性模型的检查表明装运箱/ 2
为CSTR残留浓度,C_A
.当饲料浓度增加时,C_A
最初增加是因为更多的反应物进入,这增加了反应速率。这一速率的增加导致了更高的反应器温度(输出装运箱/ 1
),进一步提高反应速率和C_A
大幅减少。
导出线性化结果
如果有必要,您可以重复这些步骤中的任何一个来改进您的模型性能。一旦你对你的线性化结果感到满意,在模型线性化电路,将其拖放到线性分析工作区到MATLAB的工作区.现在您可以使用线性模型来设计MPC控制器。
线性化
(金宝appSimulink控制设计)|模型线性化电路(金宝appSimulink控制设计)