1. 采样控制系统仿真基础
采样控制系统作为连续系统与离散系统的混合体,在现代控制工程中扮演着重要角色。与纯连续系统不同,采样控制系统中控制器的运算和信号的传递只在离散时间点上进行,这使得其分析与仿真方法具有独特特点。
1.1 采样控制系统特点
采样控制系统最显著的特征是系统中同时存在连续时间信号和离散时间信号。典型结构包含:
- 离散部分:数字控制器、保持器
- 连续部分:被控对象、传感器
这种混合特性导致系统分析必须同时考虑:
- 采样周期T的选择:直接影响系统稳定性与性能
- 保持器的类型:零阶保持器(ZOH)、一阶保持器等
- 离散化方法:前向差分、后向差分、双线性变换等
提示:采样周期T的选择通常需要满足香农采样定理,即采样频率至少是系统带宽的2倍以上。但在实际工程中,为保证良好控制效果,采样频率通常取系统带宽的5~10倍。
1.2 数字仿真方法比较
对于采样控制系统的数字仿真,主要有两种实现途径:
双重循环编程法:
- 外层循环:对应采样周期T
- 内层循环:对应连续系统计算步长h
- 优点:灵活性强,可精确控制仿真过程
- 缺点:编程复杂度高,需手动处理信号保持
Simulink模型法:
- 利用Simulink内置的离散模块和求解器
- 优点:可视化建模,自动处理混合系统仿真
- 缺点:对底层细节控制较弱
在实际工程中,两种方法常结合使用:先用Simulink快速验证方案可行性,再用编程法实现细节优化。
2. 系统建模与参数设置
2.1 被控对象与保持器
给定单位负反馈系统的被控对象传递函数为:
$$
G(s) = \frac{1}{s(s+1)}
$$
这是一个典型的二阶系统,包含一个积分环节和一个惯性环节。其开环特性决定了系统对速度输入信号存在稳态误差。
保持器采用零阶保持器(ZOH),其传递函数为:
$$
G_h(s) = \frac{1-e^{-Ts}}{s}
$$
ZOH的作用是将离散信号保持为阶梯状连续信号,是最常用的保持器类型。
2.2 仿真参数配置
关键仿真参数如下:
- 输入信号:单位速度信号r(t)=t
- 采样周期:T=1s
- 连续计算步长:h=0.05s
- 仿真时间:20s
这些参数的选择考虑了以下因素:
- 采样周期T=1s对应采样频率1Hz,满足被控对象带宽(约0.16Hz)的香农采样要求
- 计算步长h=0.05s确保连续部分仿真精度
- 仿真时间20s足以观察系统稳态特性
3. 最少拍控制器设计与仿真
最少拍控制器的设计目标是使系统在有限个采样周期内达到稳态且无稳态误差。对于单位速度输入,最少拍系统应满足:
- 稳态误差为零
- 过渡过程时间为2T(两拍)
3.1 最少拍控制器设计
根据最少拍设计理论,针对单位速度输入,闭环脉冲传递函数应包含:
- 被控对象的不稳定极点(z=1)
- 输入信号的二阶极点(z=1)^2
由此可得闭环脉冲传递函数为:
$$
\Phi(z) = 2z^{-1} - z^{-2}
$$
对应的控制器脉冲传递函数为:
$$
D(z) = \frac{\Phi(z)}{G(z)[1-\Phi(z)]}
$$
其中G(z)为被控对象加保持器的Z变换。
3.2 双重循环编程实现
matlab复制% 参数设置
T = 1; % 采样周期
h = 0.05; % 连续计算步长
t_final = 20; % 仿真时间
n = t_final/T; % 采样点数
m = T/h; % 每采样周期计算步数
% 被控对象离散化
s = tf('s');
G = 1/(s*(s+1));
Gz = c2d(G, T, 'zoh');
% 最少拍控制器设计
Phi = tf([0 2 -1], [1 0 0], T);
D = Phi/(Gz*(1-Phi));
% 初始化
t = 0:h:t_final;
r = t; % 单位速度输入
y = zeros(size(t));
e = zeros(size(t));
u = zeros(size(t));
% 双重循环仿真
for k = 1:n
% 离散部分(控制器)
tk = (k-1)*T;
ek = r(find(t>=tk,1)) - y(find(t>=tk,1));
uk = D.Numerator{1}*fliplr(e(max(1,k-length(D.Numerator{1})+1):k))'...
- D.Denominator{1}(2:end)*fliplr(u(max(1,k-length(D.Denominator{1})+1):k-1))';
% 连续部分(被控对象)
for i = 1:m
idx = (k-1)*m + i;
if idx > length(t)
break;
end
u(idx) = uk;
% 状态方程求解(此处简化为欧拉法)
if idx == 1
x = [0; 0];
else
xdot = [x(2); -x(2) + u(idx-1)];
x = x + h*xdot;
end
y(idx) = x(1);
e(idx) = r(idx) - y(idx);
end
end
% 绘图
figure;
subplot(3,1,1); plot(t,r,'b-',t,y,'r--'); title('输入与输出响应');
subplot(3,1,2); plot(t,e,'g-.'); title('误差信号');
subplot(3,1,3); plot(t,u,'k:'); title('控制信号');
3.3 Simulink模型搭建
Simulink模型包含以下关键模块:
- 离散PID控制器模块:实现最少拍控制算法
- 零阶保持器模块
- 被控对象传递函数模块
- 单位速度信号源
- 示波器模块用于观察信号
模型配置要点:
- 求解器类型:ode4 (Runge-Kutta)
- 固定步长:h=0.05s
- 仿真时间:0~20s
注意:Simulink中的离散控制器模块采样时间必须设置为T=1s,与被控对象连续部分求解步长h=0.05s区分开。
3.4 仿真结果分析
两种方法得到的仿真结果应呈现以下特征:
- 输出信号在2T=2s后完全跟踪输入速度信号
- 误差信号在2s后为零
- 控制信号在两拍后达到稳态值
差异可能出现在:
- 编程法的保持器效果是精确的阶梯状
- Simulink的保持器实现可能有微小差异
- 数值积分方法导致的细微差别
4. 无纹波控制器设计与仿真
无纹波控制器在最少拍基础上进一步消除稳态纹波,要求控制器包含被控对象所有零点。
4.1 无纹波控制器设计
无纹波控制器的闭环脉冲传递函数需满足:
- 包含被控对象的所有零点
- 包含输入信号的多重极点(z=1)^2
对于给定系统,被控对象加保持器的脉冲传递函数为:
$$
G(z) = \frac{(1-e^{-T})z^{-1}+(e^{-T}+T-1)z^{-2}}{(1-z^{-1})(1-e^{-T}z^{-1})}
$$
因此无纹波闭环脉冲传递函数为:
$$
\Phi(z) = (2z^{-1}-z^{-2})(1-az^{-1})
$$
其中a需满足静态误差为零。
4.2 双重循环编程调整
只需修改控制器部分:
matlab复制% 无纹波控制器设计
a = exp(-T);
Phi_no_ripple = tf([0 2 -(1+2*a) a], [1 0 0 0], T);
D_no_ripple = Phi_no_ripple/(Gz*(1-Phi_no_ripple));
% 仿真循环中替换D为D_no_ripple
4.3 Simulink模型调整
修改控制器参数为无纹波设计值,其余部分保持不变。
4.4 结果对比分析
无纹波控制器与最少拍控制器的差异:
- 过渡过程时间延长
- 控制信号更平滑
- 稳态阶段无纹波
- 对参数变化更鲁棒
5. 常见问题与调试技巧
5.1 仿真结果异常排查
问题1:输出信号发散
- 检查控制器参数是否正确
- 验证离散化方法是否合适
- 确认采样周期是否过大
问题2:稳态误差不为零
- 检查控制器是否包含足够积分作用
- 验证输入信号类型与控制器设计匹配
- 确认被控对象模型准确
问题3:Simulink与编程法结果不一致
- 检查保持器实现方式
- 确认离散化方法一致
- 比较数值积分步长
5.2 性能优化建议
-
采样周期选择:
- 初始可取系统上升时间的1/10~1/5
- 通过仿真验证不同T的影响
-
计算步长选择:
- 通常取T/20~T/10
- 对于快速动态系统需更小步长
-
控制器实现:
- 注意防止数值溢出
- 加入适当的输出限幅
5.3 扩展应用方向
-
抗干扰性能研究:
- 在系统中加入扰动信号
- 比较不同控制器的抗扰能力
-
参数敏感性分析:
- 改变被控对象参数
- 观察控制器鲁棒性
-
多速率采样研究:
- 不同环节采用不同采样率
- 研究多速率下的系统性能
在实际工程应用中,采样控制系统的设计与实现需要考虑更多实际因素,如计算延迟、量化效应、执行器饱和等。本文介绍的基础仿真方法为后续深入研究奠定了重要基础。