计算机控制系统:最小拍控制系统设计入门

案例:G(s)=2/[s(0.5s+1)],T=0.5 s,设计单位速度输入下的最小拍控制器

适用对象:已学过采样控制、脉冲传递函数与数字控制器基础的初学者

学习目标

  1. 理解"最小拍"的本质:让输出在有限个采样拍内达到目标。

  2. 掌握单位速度输入(斜坡输入)最小拍控制器的设计条件。

  3. 会做本题:先求脉冲传递函数,再选闭环传递函数,最后反求 D(z)。

  4. 会判断闭环稳定性,并能用 MATLAB 做响应验证。

一、最小拍控制的基本原理

1. 什么叫"最小拍"

最小拍控制(Deadbeat Control)的核心思想是:把闭环极点尽量配置在原点附近,使系统在有限个采样周期内准确到达目标值,并在之后保持不变。对数字系统而言,这类系统的响应不是"渐进收敛",而是"有限拍到位"。

而不同输入信号,其 Z 变换形式不同,所以闭环误差传递函数 E(z) 的设计形式也不同,常常就会出现你说的

在最小拍控制系统设计中,不同输入信号的跟踪要求决定了闭环误差传递函数的结构形式。对于单位阶跃输入,输入 Z变换含有一阶因子 (1−z−1)−1 ,因此误差传递函数中至少应包含 (1−z−1) ;对于单位速度输入,输入 Z 变换含有二阶因子 (1−z−1)−2 ,因此误差传递函数中至少应包含 (1−z−1)2;对于单位加速度输入,输入 Z变换含有三阶因子 (1−z−1)−3,因此误差传递函数中至少应包含 (1−z−1)3。这样设计后,输入信号中的极点可被误差传递函数中的零点抵消,从而使误差成为有限项序列,实现有限拍无误差跟踪。这正是最小拍控制中误差系统设计的核心思想。

2. 为什么本题与"单位速度输入"有关

单位速度输入就是斜坡输入 r(t)=t。采样后有 r(k)=kT。若希望对斜坡输入实现有限拍跟踪,则闭环误差传递函数必须至少含有 (1-z^{-1})^2 因子;直观上,这相当于不仅要对常值量无静差,还要对线性增长输入也能在有限步后消除误差。

3. 本题的设计思想

本题采用"先选理想闭环,再反求控制器"的设计思路:

(1)先把连续对象经零阶保持器离散化,得到脉冲传递函数 G(z);

(2)根据单位速度输入最小拍跟踪条件,选取闭环传递函数 Φ(z)=Y(z)/R(z);

(3)由 Φ(z)=D(z)G(z)/[1+D(z)G(z)] 反求 D(z);

(4)最后分析闭环稳定性和跟踪效果。

2. 为什么本题与"单位速度输入"有关

单位速度输入就是斜坡输入 r(t)=t。采样后有 r(k)=kT。若希望对斜坡输入实现有限拍跟踪,则闭环误差传递函数必须至少含有 (1-z^{-1})^2 因子;直观上,这相当于不仅要对常值量无静差,还要对线性增长输入也能在有限步后消除误差。

3. 本题的设计思想

本题采用"先选理想闭环,再反求控制器"的设计思路:

(1)先把连续对象经零阶保持器离散化,得到脉冲传递函数 G(z);

(2)根据单位速度输入最小拍跟踪条件,选取闭环传递函数 Φ(z)=Y(z)/R(z);

(3)由 Φ(z)=D(z)G(z)/[1+D(z)G(z)] 反求 D(z);

(4)最后分析闭环稳定性和跟踪效果。

二、题目与求解思路

题目:已知连续对象

G(s)=2 / [ s(0.5s+1) ] ,采样周期 T=0.5 s,设计单位速度输入下的最小拍控制器。

求解思路:

|--------------|---------------------------------------------|
| 步骤 1 | 将对象改写为便于离散化的形式,并求 ZOH 条件下的脉冲传递函数。 |
| 步骤 2 | 把 G(z) 写成 q=z^{-1} 形式,提取出"纯延迟 + 动态多项式"的结构。 |
| 步骤 3 | 针对单位速度输入,构造最小拍闭环传递函数 Φ(q),使误差有限拍为零。 |
| 步骤 4 | 由 D(q)=Φ(q)/[G(q)(1-Φ(q))] 求出控制器。 |
| 步骤 5 | 分析闭环稳定性、控制器特性及 MATLAB 验证方法。 |

三、步骤1:求对象的脉冲传递函数 G(z)

先将连续对象整理为:

G(s)=2 / [ s(0.5s+1) ] = 4 / [ s(s+2) ]

在零阶保持器作用下,采样周期 T=0.5 s。令 q=z^{-1},并记 a=e^{-1}≈0.367879。由 ZOH 离散化可得对象的脉冲传递函数为:

G(z)= [ a z^{-1} + (1-2a) z^{-2} ] / [ 1-(1+a)z^{-1}+a z^{-2} ]

也可写成 q 形式:

G(q)= q [ a + (1-2a)q ] / [ (1-q)(1-aq) ]

其中 a=e^{-1}=0.367879,因而:

G(q)= q (0.367879 + 0.264241 q) / [ (1-q)(1-0.367879 q) ]

说明:对象本身带一个积分环节,因此离散后分母中自然出现 (1-q) 因子。这也是后续能够对速度输入进行有限拍跟踪的重要基础。

四、步骤2:根据"单位速度输入最小拍"构造闭环传递函数

1. 速度输入的离散表达式

单位速度输入 r(t)=t,采样后 r(k)=kT,其 Z 变换可写成:

R(q)= T q / (1-q)^2

2. 最小拍跟踪条件

若希望误差在有限拍后完全为零,则

E(q)= [1-Φ(q)] R(q)

必须成为有限项多项式。由于 R(q) 含有 (1-q)^{-2},因此 1-Φ(q) 至少应包含 (1-q)^2 因子。为得到"最短"有限拍响应,取最简单的形式:

1-Φ(q) = (1-q)^2

故有:

Φ(q)=1-(1-q)^2 = 2q-q^2

这意味着闭环输出满足

Y(q)=Φ(q)R(q),即 y(k)=2r(k-1)-r(k-2)

对斜坡输入 r(k)=kT 来说,当 k≥2 时:

y(k)=2(k-1)T-(k-2)T = kT = r(k)

因此系统在 2 个采样拍后实现无误差跟踪,这正是"单位速度输入最小拍控制"的含义。

五、步骤3:由闭环传递函数反求最小拍控制器 D(z)

闭环关系为:

Φ(q)= D(q)G(q) / [ 1 + D(q)G(q) ]

故控制器可写为:

D(q)= Φ(q) / { G(q)[1-Φ(q)] }

把 Φ(q)=2q-q^2、1-Φ(q)=(1-q)^2 以及 G(q)= q[a+(1-2a)q]/[(1-q)(1-aq)] 代入,得到:

D(q)= (1-aq)(2-q) / { [a+(1-2a)q](1-q) }

其中 a=e^{-1}=0.367879。写成数值形式:

D(q)= [ 2 -1.7357589 q +0.3678794 q^2 ] / [ 0.3678794 -0.1036383 q -0.2642411 q^2 ]

换回 z^{-1} 形式:

D(z)= [ 2 -1.7357589 z^{-1} +0.3678794 z^{-2} ] / [ 0.3678794 -0.1036383 z^{-1} -0.2642411 z^{-2} ]

六、步骤4:写成差分方程,便于程序实现

由 U(z)=D(z)E(z) 可得:

0.3678794 -0.1036383 z\^{-1} -0.2642411 z\^{-2}\]U(z) = \[2 -1.7357589 z\^{-1} +0.3678794 z\^{-2}\]E(z) 对应时域差分方程为: 0.3678794 u(k) -0.1036383 u(k-1) -0.2642411 u(k-2) = 2e(k) -1.7357589 e(k-1) +0.3678794 e(k-2) 若化成递推实现形式: u(k)=0.2817182 u(k-1) +0.7182818 u(k-2) +5.4365637 e(k) -4.7182818 e(k-1) +1.0000000 e(k-2) 这就是可直接用于程序编写的最小拍控制器算法。 ## 七、稳定性与控制品质分析 ### 1. 闭环稳定性 本题中选取的闭环传递函数为 Φ(q)=2q-q\^2=q(2-q)。其闭环特征由 1-Φ(q)=(1-q)\^2 给出,从响应角度看,输出误差在有限拍内归零,闭环是稳定的,并且具有严格的有限拍跟踪性质。 ### 2. 为什么说"2拍后跟踪到位" 因为 y(k)=2r(k-1)-r(k-2)。对斜坡输入 r(k)=kT 而言,从 k=2 开始,输出就与输入完全相等,所以误差只在开始的 2 个采样时刻存在。 ### 3. 实际工程中的注意事项 最小拍控制虽然快,但一般有三个常见问题: (1)控制作用较猛,初始控制量可能偏大; (2)对模型误差敏感,一旦对象参数变化,有限拍性质会被破坏; (3)控制器中往往带有 z=1 附近的极点或积分特性,数值实现时应注意饱和与抗积分饱和。 ## 八、MATLAB 验证代码 % 最小拍控制器设计验证 clear; clc; close all; Ts = 0.5; a = exp(-1); % 对象脉冲传递函数 G(z) numG = [0 a (1-2*a)]; denG = [1 -(1+a) a]; Gz = tf(numG, denG, Ts, 'variable', 'z^-1'); % 最小拍控制器 D(z) numD = [2 -(1+2*a) a]; denD = [a (1-3*a) (2*a-1)]; Dz = tf(numD, denD, Ts, 'variable', 'z^-1'); % 闭环系统 Phi = feedback(Dz*Gz, 1); % 单位速度输入:r(k)=k*Ts N = 20; t = (0:N-1)'*Ts; r = t; % 单位速度输入 y = lsim(Phi, r, t); % 绘图 stairs(t, r, 'k--', 'LineWidth', 1.2); hold on; stairs(t, y, 'b', 'LineWidth', 1.8); grid on; xlabel('Time (s)'); ylabel('Output'); legend('r(k)=kT','y(k)'); title('单位速度输入下的最小拍跟踪响应'); % 观察误差 e = r - y; disp(table(t, r, y, e)); ## ![](https://i-blog.csdnimg.cn/direct/81c54269de504b69abf93743f53cd32b.png) ## ![](https://i-blog.csdnimg.cn/direct/e472c781791b4f1598f00c8926d9e51b.png) ## 九、总结 |-----------|-----------------------------------------------| | **本题对象** | 连续对象先经 ZOH 离散化,写成 G(q)=qB(q)/A(q) 的形式。 | | **本题关键** | 因为输入是单位速度输入,故 1-Φ(q) 至少要含有 (1-q)\^2。 | | **最短设计** | 取 1-Φ(q)=(1-q)\^2,可得 Φ(q)=2q-q\^2,实现 2 拍无差跟踪。 | | **控制器求法** | 用 D(q)=Φ(q)/\[G(q)(1-Φ(q))\] 反求,再写成差分方程实现。 | ### 要点: **先离散,后选闭环;斜坡输入看平方;误差有限拍为零,再反推得控制器。**

相关推荐
ejjdhdjdjdjdjjsl1 小时前
halcon算子
人工智能·算法·计算机视觉
Aawy1201 小时前
C++与Rust交互编程
开发语言·c++·算法
某林2121 小时前
主流 3D SLAM 算法核心架构深度解析:VINS、ORB-SLAM3 与 FAST-LIO
算法·3d·架构
米粒12 小时前
力扣算法刷题 Day 16
算法·leetcode·职场和发展
重生之后端学习2 小时前
31. 下一个排列
数据结构·算法·leetcode·职场和发展·排序算法·深度优先
Frostnova丶2 小时前
LeetCode 3212. 统计X和Y出现次数相等的子矩阵数量
算法·leetcode·矩阵
We་ct2 小时前
LeetCode 53. 最大子数组和:两种高效解法(动态规划+分治)
前端·算法·leetcode·typescript·动态规划·分治
sin°θ_陈2 小时前
CVPR 2026的3DGS卷到什么地步?工程语义上探:BrepGaussian如何打通图像到CAD的最后一公里?(Part III 1-3)
python·深度学习·算法·机器学习·3d·webgl