[控制]将s域传递函数变为z域传递函数的方法

本文将介绍几种将s域传递函数变为z域传递函数的方法。值得注意的是不要将这些方法与z变换混淆!

z变换是将离散数列变换到z域,有以下两种定义

  1. 时域输入输出微分方程→采样→离散域数列→对每一个数依次乘以一个延时系数z^-1并相加→z域传递函数
  2. 时域输入输出微分方程→采样→离散域数列→对每一个数依次乘以一个冲激函数\delta(t-kT)并相加→脉冲函数→拉氏变换s域传递函数→定义z=e^{sT}→z域传递函数

而本文的方法只是z变换第二种方法的其中一个步骤(↑↑↑上面加下划线部分)的几种实现方法,详细的说就是如何在保证输出输出关系不变的前提下用z把s替换掉。

1 差分方法: 思路是既然s传递函数可以表现输入输出微分方程。对应的z传递函数应该可以表现采样后的差分方程。分为前向差分和后向差分。

1.1前向差分:对一个连续函数y(k)的微分可以做以下近似\dot{y}(k)\approx[y(k+1)-y(k)]/T 。 等式①

利用上式,可以对\dot{y}(k)的再微分,\ddot{y}(k)\approx[\dot{y}(k+1)-\dot{y}(k)]/T \approx[y(k+2)-2y(k+1)+y(k)]/T^2

以此类推可以将任意阶的微分方程变为差分方程。

对于等式①的左右两端,我们分别进行拉氏变换和z变换,就可以得到如下的mapping

sY(s)\rightarrow(z-1)Y(z)/T 等式②

所以我们可以利用s\rightarrow(z-1)/T 将s用z替换,传递函数就从s域近似到了z域。

1.2后向差分:与前向差分类似只不过方向变了而已。即\dot{y}(k)\approx[y(k)-y(k-1)]/T 。 替换公式为s\rightarrow(z-1)/(zT) 其实后向差分更符合实际,因为实际中你只能根据之前的状态推导之后的状态。

2 零极点配对方法

blablabla

3 Bilinear变换方法

Bilinear方法源于z变换的第二种定义z=e^{sT}

将其进行一阶近似:s=\frac{1}{T}ln(z) \approx \frac{1}{T} [\frac{z-1}{z+1}],利用此公式将s用z替换,传递函数就从s域近似到了z域。

对于Bilinear方法我们来进行频率响应分析:

1 用bilinear将模拟控制器C_a(s)转化为数字控制器C(z)

C(z)=C_a(s)|_{s=\frac{1}{T} [\frac{z-1}{z+1}]}

2 根据z变换的第二种定义z=e^{sT},将z用ω替换,得到

C(e^{j \omega T})=C_a(s)|_{s=\frac{2}{T} [\frac{z-1}{z+1}]}=C_a(\frac{2}{T} [\frac{e^{j \omega T-1}}{e^{j \omega T+1}}]) \\=C_a(\frac{2}{T} [\frac{e^{j \omega T/2}-e^{-j \omega T/2}}{e^{j \omega T/2}+e^{-j \omega T/2}}])=C_a(j*\frac{2}{T}tan[\frac{\omega T}{2}])

当频率为\omega_{s}/2时,C(z)=C_a(j \infty)

所以z域传递函数在0到\omega_s的频率响应与s域传递函数整个正半轴的频率响应相似。换句话说,z域上\omega_s区间的频率响应可以反映整个s域频率响应。这说明没有混叠,但频率响应有wraping现象。

频率\omega在离散滤波器上的频率响应相当于频率\frac{2}{T} tan(\frac{\omega T}{2})在模拟滤波器上的频率响应。

所以\omega_a=\frac{2}{T} tan(\frac{\omega T}{2})。如果采样周期足够小,则\omega_a \approx \omega,wraping可以忽略。

现实中,针对某一频率\omega_0可以通过调节c的值来抵消wraping。

比如令C(e^{j \omega_0 T})=C_a(j*c*tan[\frac{\omega_0 T}{2}])=C_a(j \omega_0)

将c取值为 \frac{\omega_0}{\tan \frac{\omega_0 T}{2}}即可。
Matlab中bilinear变换的命令为

gd=c2d(g,tc,’tustin’)%g为模拟传递函数,tc为采样周期

gd=c2d(g,tc,’prewarp’,w)%w为指定的进行prewarping的频率

[控制]将s域传递函数变为z域传递函数的方法》有1个想法

留下评论