文章目录
一、在simulink中建立调度增益控制系统的模型
在simulink中,你可以建立一个增益调度控制系统gain-scheduled control systems,在这个系统中,控制器增益或者系数取决于调度变量scheduling variables,例如时间,环境条件,或者是模型参数等。
在Control System Toolbox™库中的模块可以让你实现变量增益variable gains的常规控制系统common control-system ,使用查找表或者MATLAB函数模块来实现增益调度映射gain schedule,这些增益gains 一般都是独立于调度变量scheduling variables的。
在simulink中建立一个增益调度控制系统gain-scheduled control system,通常需要4步:
- 确定调度变量scheduling variables和信号signals ,并使用他们在模型中表示。 举例来说,如果你的系统是一个飞行器,那调度变量可能就是入射角和速度。
- 使用一个查找表或者MATLAB函数模块,根据调度变量scheduling variables得到增益比例gain 或系数coefficient 。 如果你没有查找表,也没有MATLAB函数,还可以使用
systune来实现,具体参考 Tune Gain Schedules in Simulink。 - 使用增益调度gain-scheduled来替代原先的控制元素。 举例来说,使用一个可变PID模块(增益调度映射来决定PID的增益),来替代一个固定系数的PID控制器。
- 添加调度逻辑和安全保证。
二、对调度增益建模Model Scheduled Gains
调度增益的目的,就是将调度变量scheduling variables当前的值转换成控制器增益,有以下几种方法可以在simulink中实现这一目的:
- 查找表——一个查找表是断点breakpoints和对应增益值的列表,当调度变量在断点之间时,查找表会在两个对应的增益之间进行插值interpolates,通常使用以下的模块来实现:
- 查找表1-D Lookup Table, 2-D Lookup Table, n-D Lookup Table——适合依赖1个,2个,和多个调度变量的控制系统
- 矩阵插值Matrix Interpolation ——适合依赖于1个,2个,或多个调度变量的矩阵,这个模块在Simulink Extras库中
- MATLAB函数模块——如果从调度变量到增益有一个函数表达式,就是用MATLAB函数模块。MATLAB函数模块通常会比查找表得到的结果更加平滑,而且更加节省内存空间。
如果你有一个Simulink Control Design™,可以使用systune函数来调节增益调度,参考Tune Gain Schedules in Simulink.
控制器中的调度增益Scheduled Gain in Controller
首先打开这个模型(包括PI控制器和一个lead补偿)
open_system(fullfile(matlabroot,'examples','controls_id','rct_CSTR.slx'))

其中,浓度Concentration 控制器和温度Temperature 控制器模块都将CSTR模块的输出Cr作为输入,这个值既是系统的控制变量,又是控制器的调度变量。
双击打开浓度控制器:

这个模块是一个PI控制器,比例增益Kp和Ki输入到1-D查找表中,温度控制器也是同理。
查找表如下:

三、常见控制元素的增益调度等效项Gain-Scheduled Equivalents for Commonly Used Control Elements
使用控制系统工具箱Control System Toolbox里的线性参数变化Linear Parameter Varying块库函数,这些 模块提供了 一些常见元素,其中增益和参数可以作为额外的输入,以下表格列出了这些块的应用:

1)调度增益陷波滤波器Gain-Scheduled Notch Filter
陷波频率随着以两个调度变量为自变量的函数值变化,函数关系在MATLAB函数中实现。

2)调度增益PI控制器Gain-Scheduled PI Controller
Kp和Ki都随着同一个调度变量变化,映射关系使用1-D查找表。

3)矩阵调度增益Matrix-Valued Gain Schedules
一个矩阵调度增益以1个或多个调度变量为输入,返回一个矩阵matrix 而不是标量scalar value,比如,假设你想实现一个时变的LQG控制器:
d
x
e
=
A
x
e
+
B
u
+
L
(
y
−
C
x
e
−
D
u
)
u
=
−
K
x
e
\begin{aligned} d x_{e} &=A x_{e}+B u+L\left(y-C x_{e}-D u\right) \\ u &=-K x_{e} \end{aligned}
dxeu=Axe+Bu+L(y−Cxe−Du)=−Kxe
其中,状态空间矩阵,A,B,C,D和状态反馈矩阵K,以及观察增益矩阵L都是时变的。在这里,时间是调度变量,增益调度决定了矩阵值。
在simulink中,可以用以下方法实现矩阵增益调度:
- MATLAB函数模块——制定一个MATLAB函数,以调度变量为输入,返回矩阵值
- 矩阵插值模块Matrix Interpolation block——制定一个查找表,来关联在每个断点breakpoints处的调度变量和矩阵对应值,然后在断点之间,进行插值。
对于LQG控制器,可以使用这两种方法来实现一个时变矩阵作为输入的可变观测形式模块Varying Observer Form block,例如:

四、自定义增益调度控制架构Custom Gain-Scheduled Control Structures

参考文献:
Model Gain-Scheduled Control Systems in Simulink - MATLAB & Simulink - MathWorks 中国

本文详细介绍了如何在Simulink中建立调度增益控制系统的模型,包括确定调度变量、创建增益调度映射、使用增益调度替换控制元素以及自定义增益调度控制结构。内容涵盖查找表、MATLAB函数模块在建模中的应用,并列举了调度增益陷波滤波器、PI控制器和矩阵调度增益的示例。
75

被折叠的 条评论
为什么被折叠?



