《现代控制系统设计与仿真:使用PIMCSD工具箱》内容分为上下两篇,结合自主研发的PIMCSD工具箱讲述LQG与H∞最优控制系统的基本理论,以及设计与仿真的实现。上篇讲述了基于PIMCSD工具箱的无限长时间定常控制器(调节器)/滤波器的设计与仿真,包括基于MATLAB最优控制系统设计的传统教材的大部分内容;下篇讲述了有限长时间LQG与H∞最优控制系统设计与仿真在PIMCSD工具箱中的功能和实现,包括有限长时间LQG控制系统的时变软/硬终端控制、跟踪、滤波、平滑与估计,以及有限长时间H∞控制系统的临界范数、时变H∞全状态反馈控制、H∞滤波和H∞输出反馈控制等内容。PIMCSD工具箱为相关领域有限长时间控制问题的分析与求解提供了强有力的支持,是目前MATLAB控制工具箱所不具备的,对它的介绍和使用也是《现代控制系统设计与仿真:使用PIMCSD工具箱》的主要特色。
《现代控制系统设计与仿真:使用PIMCSD工具箱》可作为大专院校力学、自动控制专业的高年级本科生和研究生的教材,也可供相关研究人员参考。
序
前言
PIMCSD工具箱函数说明
上篇 定常控制器设计与仿真
第1章 定常控制系统分析
1.1 线性系统的时域分析
1.1.1 零输入响应
1.1.2 阶跃响应
1.1.3 脉冲响应
1.1.4 斜坡响应
1.1.5 正弦响应
1.1.6 指数响应
1.1.7 任意输入响应
1.2 连续系统的离散化
1.2.1 状态方程和性能指标的精确离散
1.2.2 线性随机系统的等效离散
1.3 可控性与可观测性
第2章 LQ调节器
2.1 定常LQ控制器
2.1.1 状态调节器
2.1.2 数字调节器
2.1.3 输出调节器
2.1.4 矩阵代数Riccati方程
2.2 定常Kalman滤波器
2.2.1 Kalman滤波器
2.2.2 数字Kalman滤波器
2.3 定常LQG调节器
第3章 H∞调节器
3.1 无限长时间控制系统的H2和H∞范数
3.2 H∞全状态反馈控制
3.3 H∞最优滤波
3.4 H∞输出反馈控制
下篇 时变控制器设计与仿真
第4章 时变控制系统分析
4.1 线性时变系统仿真
4.2 矩阵微分方程(组)
4.2.1 对称/非对称微分Riccati方程(组)
4.2.2 对称/非对称微分Lyapunov方程
第5章 时变LQ控制器
5.1 LQ终端控制
5.1.1 软终端控制器
5.1.2 硬终端控制器
5.2 分段线性定常系统的终端控制
5.3 时变LQ跟踪-控制
第6章 时变滤波器
6.1 Kalman滤波(正向方差滤波)
6.2 正向信息滤波
6.3 反向方差滤波
6.4 反向信息滤波
第7章 时变滤波-平滑器
7.1 反向信息滤波-平滑
7.2 正向-反向信息滤波-平滑
7.3 小结
第8章 时变LQG控制器
8.1 LQG终端控制
8.1.1 软终端控制器
8.1.2 硬终端控制器
8.2 时变LQG跟踪-控制
第9章 时变H∞控制器
9.1 有限长时间控制系统的H2和H∞范数
9.2 H∞全状态反馈控制
9.3 H∞最优滤波
9.4 H∞输出反馈控制
参考文献
上篇 定常控制器设计与仿真
第1章 定常控制系统分析
线性定常控制系统是最基本的,也是时变、非线性控制系统设计的基础,值得花大力气做好。对此,MATLAB工具箱提供了完善的、稳定的求解功能,可参考薛定宇基于MATLAB讲述的《控制系统计算机辅助设计》等专著;PIMCSD 工具箱也提供了高效、高精度的控制系统设计与仿真功能。
通常,一个连续系统模型可以基于微分方程、传递函数以及状态空间方程来描述,它们之间是可以互相转换的。PIMCSD 工具箱是针对现代状态空间控制理论进行设计的,本书也以状态空间描述(1.1a,b)进行讲述。
连续时间的线性系统模型基于状态空间描述,一般可以写成
其中, x和u分别是n维状态向量和m维控制输入向量; y是l 维量测(或输出)向量是具有适当维数的系统矩阵,它们可以是时间t 的函数。对于定常系统,不随时间而变化。
相应地,离散时间的线性系统模型基于状态空间描述,一般可以写成
其中, xk 和k u 分别是n维状态向量和m维控制输入向量; yk 是l 维量测(或输出)向量;是具有适当维数的系统矩阵。
1.1 线性系统的时域分析
控制系统的动态特性通常用典型输入下的时间响应来进行描述。典型的输入函数有阶跃函数、脉冲函数、斜坡函数、正弦函数,以及指数函数等。PIMCSD 工具箱也提供了任意输入情况下的时域响应分析。
1.1.1 零输入响应
1) 问题描述
所谓零输入(即u(t) ≡ 0 )响应,就是控制系统由初始状态引起的响应,又称初值响应。对于连续系统,零输入响应求解下面方程:
2) PIMCSD 工具箱中的实现
PIMCSD 工具箱中提供了零输入响应求解的实现函数pim_initial(),其调用格式如下:参数简单说明:返回参数中, ,y x t 分别为响应的量测值、状态值和时间序列向量。输入函数中A 和C 分别为系统的状态矩阵和量测矩阵; 0x 为系统初值;tspan指定了仿真时间区段及仿真步长,
3) 设计实例
例1.1.1 考虑下面的控制系统,试求该系统的零输入响应。解 分别采用PIMCSD和MATLAB工具箱提供的函数完成零输入响应分析,代码比较如表1.1.1 所示,可见二者的调用格式是相似的。图1.1.1 给出了零输入响应的结果,两段代码得到的结果完全一致。
1.1.2 阶跃响应
1) 问题描述
所谓阶跃响应,就是在零初值条件下,系统由单位阶跃输入引起的响应。阶跃输入用函数描述为
2) PIMCSD 工具箱中的实现
PIMCSD 工具箱中提供了阶跃响应的实现函数pim_step(),其调用格式如下:
参数简单说明:
返回参数中y,x,t 分别为响应的量测值、状态值和时间序列向量。其中,y是一个三维数组,[no. of outputs, no. of specified input channels, length of t ]y(:, k,:)表示对第k 个输入通道施加单位阶跃输入产生的响应;类似地,x也是
一个三维数组,[no. of states, no. of specified input channels, length of t ]
输入参数中A,B,C,D表示系统矩阵,如式(1.1a,b)所示;tspan 指定了仿真时间区段及仿真步长,即0 s f tspan = [t :T :t ];iu 指定输入u的通道号。
3) 设计实例
例1.1.2 考虑经典的二阶有阻尼振荡系统,引入状态向量上述高阶微分方程可转化为状态空间描述,试分析当无阻尼振荡频率1.0 n
ω = 时,在不同阻尼比下(? 0, 0.1, 0.3, , = 0.9, 1.0, 3, 5)的阶跃响应。
解 分别采用PIMCSD 和MATLAB 工具箱提供的函数完成阶跃响应分析,代码比较如表1.1.2 所示,可见二者的调用格式是相似的。图1.1.2 给出了阶跃响应的结果,两段代码得到的结果完全一致。
1.1.3 脉冲响应
1) 问题描述
所谓脉冲响应,就是在零初值条件下,系统由单位脉冲输入引起的响应。单位脉冲输入用函数描述为
2) PIMCSD 工具箱中的实现
PIMCSD工具箱中提供了脉冲响应的实现函数pim_impulse(),其调用格式如下:
参数简单说明:
返回参数中y,x,t 分别为响应的量测值,状态值和时间序列向量。其中,y是一个三维数组,
[no. of outputs, no. of specified input channels, length of t ]
y(:, k,:)表示对第k 个输入通道施加单位脉冲输入产生的响应;类似地,x也是一个三维数组,
[no. of states, no. of specified input channels, length of t ]
输入参数中A,B,C,D表示系统矩阵,如式(1.1a,b)所示;tspan 指定了仿真时间区段及仿真步长,即0 s f tspan = [t :T :t ];iu 指定输入u的通道号。
3) 设计实例
例1.1.3 以示例1.1.2 中的二阶有阻尼振荡系统为例,试分析当阻尼比? 0.707 = 时,在不同特征频率下0.1, 0.2, , 1.0 nω = ( )的脉冲响应。
解 分别采用PIMCSD 工具箱和MATLAB 工具箱提供的函数完成脉冲响应分析,表1.1.3 给出了程序比较,可以看出,二者的函数调用格式是很相似的。图1.1.3 给出了脉冲响应结果,两段代码得到结果是完全一致的