控制系统传递函数两种标准形式的工程应用对比:首1型与尾1型在根轨迹与Bode图中的实战解析
引言:为什么我们需要两种标准形式?
在自动控制系统的分析与设计中,传递函数作为描述系统动态特性的核心数学工具,其标准形式的选取直接影响后续分析的便捷性与直观性。面对同一个传递函数表达式,工程师们常会根据不同的分析目的将其整理为首1型(零极点形式)或尾1型(时间常数形式)。这两种形式看似只是代数表达式的变形,实则暗含深刻的工程应用逻辑。
想象你手中有一把多功能瑞士军刀——首1型就像展开刀刃进行精细雕刻,特别适合分析系统的稳定性与动态响应;而尾1型则如同使用剪刀功能,更擅长处理频率特性与稳态性能。本文将带您深入这两种形式的转换技巧,并通过典型例题演示它们在根轨迹法和频域分析法中的实战应用差异。
1. 首1型与尾1型的数学本质与转换方法
1.1 首1型(零极点形式)的数学特征
首1型传递函数的标准表达式为:
$$ G(s) = \frac{K^*\prod_{j=1}^m(s-z_j)}{\prod_{i=1}^n(s-p_i)} $$
关键特征:
- 每个因式中s的系数为1(即"首"项系数归一化)
- $K^*$称为根轨迹增益,具有明确的物理意义
- 直接呈现系统的零点$z_j$和极点$p_i$
转换步骤示例: 考虑传递函数 $G(s) = \frac{2(s+3)}{s(s^2+2s+5)}$
- 分解分母多项式:
# 在Python中求解分母的根 import numpy as np roots = np.roots([1, 2, 5]) # 结果为[-1±2j] - 整理为首1形式: $$ G(s) = \frac{2(s+3)}{s(s+1-2j)(s+1+2j)} = \frac{0.4(s+3)}{s[(s+1)^2+4]} $$
注意:在复数极点情况下,通常保留二次因式形式更便于工程应用。
1.2 尾1型(时间常数形式)的数学结构
尾1型的标准表达式为:
$$ G(s) = K\frac{\prod(\tau_ks+1)\prod(\tau_l^2s^2+2\xi\tau_ls+1)}{s^v\prod(T_is+1)\prod(T_j^2s^2+2\xi T_js+1)} $$
核心特点:
- 每个因式的常数项为1(即"尾"项系数归一化)
- $K$称为系统增益,直接影响稳态输出
- 时间常数$\tau$和$T$直接关联系统的响应速度
转换实战: 将 $G(s) = \frac{5(s+2)}{(s+10)(s+0.1)}$ 转换为尾1型:
- 提取各因式的常数项:
% MATLAB符号计算示例 syms s G = 5*(s+2)/((s+10)*(s+0.1)); [num,den] = numden(G); num = collect(num/2,s); % 分子提出常数2 den = collect(den/10,s); % 分母提出常数10 - 得到尾1形式: $$ G(s) = \frac{5×2(0.5s+1)}{10(0.1s+1)(10s+1)} = \frac{(0.5s+1)}{(0.1s+1)(10s+1)} $$
1.3 两种形式的对比表格
| 特性 | 首1型 | 尾1型 |
|---|---|---|
| 标准化目标 | 各因式s系数为1 | 各因式常数项为1 |
| 增益名称 | 根轨迹增益$K^*$ | 系统增益$K$ |
| 主要应用场景 | 根轨迹分析、稳定性研究 | 频域分析、稳态误差计算 |
| 零极点可见性 | 直接显示 | 需解方程获得 |
| 典型环节分解 | 适用于部分分式展开 | 便于时间常数提取 |
| 工程调试优势 | 方便调整极点位置 | 直观反映系统带宽 |
2. 首1型在根轨迹分析中的核心作用
2.1 根轨迹绘制的基本原理
根轨迹是当系统增益$K^*$从0变化到∞时,闭环极点在s平面上的运动轨迹。使用首1型传递函数的根本原因在于:
- 增益一致性:根轨迹增益$K^*$直接对应绘图参数
- 几何解释清晰:零极点位置决定渐近线角度与分离点
- 相位条件:$\sum\angle(s-z_j)-\sum\angle(s-p_i)=180°$的几何意义明确
典型绘制步骤:
- 将开环传递函数化为首1型
- 标出s平面上的零极点
- 确定实轴上的根轨迹区间
- 计算渐近线角度与交点
- 找出分离/会合点
2.2 实例解析:二阶系统根轨迹
考虑系统 $G(s)H(s) = \frac{K^*}{s(s+2)}$:
# Python控制库绘制根轨迹 import control as ct import matplotlib.pyplot as plt sys = ct.TransferFunction([1], [1, 2, 0]) ct.root_locus(sys, plot=True) plt.title('Root Locus of $G(s)=\\frac{K^*}{s(s+2)}$') plt.grid(True) plt.show()关键观察点:
- 渐近线角度:±90°,交于σ=-1
- 分离点:s=-1(通过$\frac{dK^*}{ds}=0$求解)
- 临界增益:$K^*=4$(对应纯虚根)
2.3 高阶系统处理技巧
对于 $G(s)H(s) = \frac{K^*(s+1)}{s(s+2)(s+5)}$:
- 实轴根轨迹:[-5,-2]和[-1,0]
- 渐近线角度:±90°(n-m=2)
- 分离点计算: $$ \frac{1}{d+1} = \frac{1}{d} + \frac{1}{d+2} + \frac{1}{d+5} $$ 解得d≈-0.45
提示:使用首1型时,MATLAB的
rlocus函数直接接受该形式,无需额外转换。
3. 尾1型在频域分析中的独特优势
3.1 Bode图绘制的核心逻辑
尾1型传递函数在频域分析中展现出三大优势:
- 渐近线近似:当ω≫1/τ时,20log|jωτ+1|≈20log(ωτ)
- 转折频率直观:各环节的转折频率ω=1/τ
- 增益调整方便:直接读取低频增益20logK
典型绘制流程:
- 将传递函数转换为尾1型
- 确定各环节的时间常数和转折频率
- 绘制幅频特性的渐近线近似
- 添加相位曲线
3.2 案例演示:三阶系统Bode图
分析 $G(s) = \frac{10(s+0.1)}{(s+1)(s+100)}$:
- 转换为尾1型: $$ G(s) = \frac{0.01(10s+1)}{(s+1)(0.01s+1)} $$
- 识别关键参数:
- 低频增益:20log(0.01) = -40dB
- 转折频率:0.1rad/s(零点)、1rad/s(极点)、100rad/s(极点)
% MATLAB Bode图绘制 s = tf('s'); G = 0.01*(10*s+1)/((s+1)*(0.01*s+1)); bode(G), grid on幅频特性特征:
- 0.1rad/s前:-40dB/dec斜率
- 0.1-1rad/s:-20dB/dec(零点作用)
- 1-100rad/s:-40dB/dec
- 100rad/s后:-60dB/dec
3.3 非最小相位系统处理
对于包含右半平面零极点的系统,如 $G(s) = \frac{1-s}{1+s}$:
- 转换为尾1型: $$ G(s) = -\frac{s-1}{s+1} = -\frac{(0.1s-1)}{(0.1s+1)} \quad (\text{假设时间常数0.1}) $$
- Bode图特点:
- 幅频特性与最小相位系统相同
- 相位滞后更显著
4. 工程应用中的综合决策
4.1 形式选择的黄金法则
| 分析类型 | 首选形式 | 原因 |
|---|---|---|
| 稳定性分析 | 首1型 | 直接反映系统极点位置,便于劳斯判据应用 |
| 动态响应设计 | 首1型 | 根轨迹清晰展示极点随增益变化规律 |
| 频域指标验证 | 尾1型 | 转折频率直观,便于估算带宽、相位裕度 |
| 稳态误差计算 | 尾1型 | 系统增益K直接对应静态误差系数 |
| 控制器参数整定 | 两者结合 | 首1型设计主导极点,尾1型校验频率特性 |
4.2 典型设计案例:位置伺服系统
给定要求:
- 超调量σ%≤5%
- 调节时间ts≤1s
- 速度误差系数Kv≥10
设计步骤:
- 初步建模(尾1型): $$ G(s) = \frac{2.5}{s(0.5s+1)(0.02s+1)} $$
- 转换为首1型用于根轨迹设计: $$ G(s) = \frac{250}{s(s+2)(s+50)} $$
- 根轨迹设计:
- 期望主导极点:ζ=0.7, ωn≈4.6rad/s
- 添加超前补偿器:$G_c(s) = \frac{s+2}{s+10}$
- 验证频域指标(切换回尾1型):
G_comp = 250*(s+2)/(s*(s+50)*(s+10)); margin(G_comp)
4.3 常见误区警示
增益混淆:误将尾1型的K当作根轨迹增益$K^*$
- 修正方法:全部分子常数项提取到K外
时间常数误读:将$\tau^2s^2+2ζτs+1$中的τ误认为转折频率
- 实际转折频率:$ω_n=1/τ$
非最小相位忽视:右半平面零点导致相位特性异常
- 诊断技巧:检查分子因式符号
高频段忽略:认为高频极点不影响主要性能
- 实际影响:可能引入额外相位滞后,降低稳定裕度
5. 计算机辅助分析实战技巧
5.1 MATLAB/Python中的自动转换
MATLAB实现:
% 首1型转换为尾1型 G_zpk = zpk([-1], [0 -2 -5], 10); % 首1型创建 G_tf = tf(G_zpk); % 自动转换为尾1型 % 自定义转换函数 function [G_tail1] = to_tail1(G) [z,p,k] = zpkdata(G,'v'); % 处理零点 cz = cellfun(@(x) -1./x, num2cell(z(z~=0)), 'UniformOutput', false); % 处理极点 cp = cellfun(@(x) -1./x, num2cell(p(p~=0)), 'UniformOutput', false); new_k = k * prod(-z(z~=0)) / prod(-p(p~=0)); G_tail1 = tf(new_k * poly([cz{:}]), poly([cp{:}])); endPython实现:
from scipy import signal import numpy as np def to_tail1(num, den): # 求零极点 z = np.roots(num) p = np.roots(den) # 计算新增益 K = num[-1]/den[-1] * np.prod(-z[np.nonzero(z)])/np.prod(-p[np.nonzero(p)]) # 构建新多项式 new_num = K * np.poly(-1/z[z != 0]) new_den = np.poly(-1/p[p != 0]) return new_num, new_den5.2 仿真对比案例
比较 $G(s)=\frac{2(s+3)}{(s+1)(s+5)}$ 两种形式的阶跃响应:
# 首1型仿真 sys_zpk = signal.ZerosPolesGain([-3], [-1, -5], 2) t, y1 = signal.step(sys_zpk) # 尾1型仿真 num, den = to_tail1([2, 6], [1, 6, 5]) sys_tf = signal.TransferFunction(num, den) _, y2 = signal.step(sys_tf) # 绘图比较 plt.plot(t, y1, label='首1型') plt.plot(t, y2, '--', label='尾1型') plt.legend(), plt.grid(True) plt.title('不同形式传递函数的阶跃响应对比')关键发现:两种形式描述的同一系统,动态特性完全一致,验证了数学等价性。
结语:掌握形式转换的艺术
在实际工程设计中,我经常遇到学生纠结于该用哪种传递函数形式。经过多个项目的实践验证,我的经验是:根轨迹设计阶段优先使用首1型,频域验证阶段切换到尾1型。这种灵活转换的能力,正是控制工程师专业素养的体现。
记得在一次无人机控制系统调试中,我们首先用首1型确定了主导极点的合适位置,随后用尾1型分析了传感器噪声的影响频率范围。这种双重视角的分析方法,最终帮助我们实现了既稳定又抗干扰的飞行控制系统。