文章目录
一、在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'))