自动控制原理中如何根据传递函数得出其稳态误差表达式
时间: 2024-04-21 07:30:31 浏览: 209
在自动控制原理中,稳态误差是指当输入信号为稳定状态时,输出信号与输入信号之间的差异。当系统的传递函数已知时,可以通过计算系统的稳态误差表达式来评估系统的性能。
对于一个开环传递函数为G(s)的系统,其稳态误差表达式可以通过以下公式计算:
$$
e_{ss}=\lim_{t \to \infty}(r(t)-y(t))
$$
其中,$r(t)$为输入信号,$y(t)$为输出信号。
对于比例控制系统(P系统)和积分控制系统(I系统),稳态误差表达式分别为:
P系统:
$$
e_{ss}=\lim_{s \to 0}s\frac{1}{1+G(s)}
$$
I系统:
$$
e_{ss}=\lim_{s \to 0}\frac{1}{s}[1-\frac{G(s)}{1+G(s)}]
$$
对于比例积分控制系统(PI系统)和位置控制系统(PD系统),稳态误差表达式分别为:
PI系统:
$$
e_{ss}=\lim_{s \to 0}\frac{1}{s}[1+\frac{1}{T_is}][\frac{1}{1+G(s)\frac{1}{T_is}}]
$$
PD系统:
$$
e_{ss}=\lim_{s \to 0}s[1+T_ds][\frac{1}{1+G(s)}]
$$
其中,$T_i$为积分时间常数,$T_d$为微分时间常数。
相关问题
matlab线性系统时域分析稳态误差
### MATLAB 线性系统时域分析中的稳态误差计算
#### 使用 `step` 函数获取阶跃响应
为了进行线性系统的时域分析,在 MATLAB 中可以使用 `step` 函数来获得给定系统的单位阶跃响应。这有助于理解系统的动态行为以及最终达到的稳态性能。
对于一个已知传递函数 G(s),可以通过定义其分子和分母系数创建 LTI (Linear Time-Invariant) 模型对象,之后调用 `step` 来绘制响应图形[^3]:
```matlab
num = [1]; % 分子系数向量
den = [1 2 1]; % 分母系数向量
sys = tf(num, den); % 创建LTI模型
figure;
step(sys); % 显示阶跃响应图
grid on;
title('System Step Response');
xlabel('Time (s)');
ylabel('Amplitude');
```
#### 计算稳态误差
当考虑的是单位反馈控制系统下的稳态误差时,可以根据输入信号的不同类型(如阶跃、斜坡或抛物线),通过理论公式直接得出稳态误差表达式。具体来说:
- **静态位置误差常数 \(K_p\)**: 当输入为单位阶跃信号时适用;
- **静态速度误差常数 \(K_v\)**: 针对单位斜坡输入有效;
- **静态加速度误差常数 \(K_a\)**: 若输入是二次时间函数,则此参数起作用。
这些常数值可通过下面的方式求得[^4]:
\[ K_p=\lim_{s \to 0}G(s),\quad K_v=\lim_{s \to 0}sG(s),\quad K_a=\lim_{s \to 0}s^2G(s)\]
接着依据所选类型的极限值判断是否存在有限的稳态误差,并据此估算实际大小。如果希望借助 MATLAB 自动化这一过程,可编写如下脚本片段用于评估不同情况下的稳态误差[^1]:
```matlab
% 定义开环传递函数
open_loop_tf = tf([1], [1 2 1]);
% 获取静态增益(Kp)
kp = dcgain(open_loop_tf);
% 斜坡输入对应的 Kv 值
kv = limit(freqresp(open_loop_tf * s, 0));
disp(['Static Position Error Constant (for step input): ', num2str(kp)]);
if isnan(kv)
disp('The system has infinite velocity error constant.');
else
disp(['Static Velocity Error Constant (for ramp input): ', num2str(kv)]);
end
```
上述代码中,`dcgain()` 函数用来快速得到直流增益即 \(K_p\) 的值;而 `freqresp()` 结合乘以 `s` 可帮助我们找到对应于斜坡输入的速度误差常数 \(K_v\) 。注意这里假设了 SISO 单变量单输出的情况。
阅读全文