在simulink中建立调度增益控制系统的模型

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

一、在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步:

  1. 确定调度变量scheduling variables和信号signals ,并使用他们在模型中表示。 举例来说,如果你的系统是一个飞行器,那调度变量可能就是入射角和速度。
  2. 使用一个查找表或者MATLAB函数模块,根据调度变量scheduling variables得到增益比例gain 或系数coefficient 。 如果你没有查找表,也没有MATLAB函数,还可以使用systune来实现,具体参考 Tune Gain Schedules in Simulink
  3. 使用增益调度gain-scheduled来替代原先的控制元素。 举例来说,使用一个可变PID模块(增益调度映射来决定PID的增益),来替代一个固定系数的PID控制器。
  4. 添加调度逻辑和安全保证。

二、对调度增益建模Model Scheduled Gains

调度增益的目的,就是将调度变量scheduling variables当前的值转换成控制器增益,有以下几种方法可以在simulink中实现这一目的:

  • 查找表——一个查找表是断点breakpoints和对应增益值的列表,当调度变量在断点之间时,查找表会在两个对应的增益之间进行插值interpolates,通常使用以下的模块来实现:
  • 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(yCxeDu)=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 中国

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值