当前位置:文档之家› 连续传递函数离散化的方法与原理

连续传递函数离散化的方法与原理

目录第一章 模拟化设计基础数字控制系统的设计有两条道路,一是模拟化设计,一是直接数字设计。

如果已经有成熟的模拟控制器,可以节省很多时间和部分试验费用,只要将模拟控制器离散化即可投入应用。

如果模拟控制器还不存在,可以利用已有的模拟系统的设计经验,先设计出模拟控制器,再进行离散化。

将模拟控制器离散化,如果用手工进行,计算量比较大。

借助数学软件MATLAB 控制工具箱,可以轻松地完成所需要的全部计算步骤。

如果需要的话,还可以使用MATLAB 的SIMULINK 工具箱,进行模拟仿真。

第一节 步骤步骤1 模拟控制器的处理在数字控制系统中,总是有传输特性为零阶保持器的数模转换器(DAC ),因此,如果模拟控制器尚未设计,则应以下图的方式设计模拟控制器,即在对象前面加上一个零阶保持器,形成一个新对象Ts1e G s s ()--,然后针对这个新对象求模拟控制器D(s)。

事实上,模拟控制器一般是已经设计好的,无法或不方便更改了,离散化后的系统只好作为近似设计了。

然而,按照上述思路,可否将已有的控制器除以一个零阶保持器再离散化呢?还没有这方面的实际经验。

以下假设选定的G(s),D(s)如下图,而且不对G(s)作添加保持器的预处理。

步骤2 离散化模拟控制器离散化模拟控制器之前,先要确定离散化算法和采样时间。

离散化算法有好几种,第二章中有详细的论述,现假定采用双线性变换法。

确定采样时间,需要考虑被控对象的特性,计算机的性能,以及干扰信号的影响等,初步可按采样时间T<,Tp 为被控对象时间常数,或T=~τ,为被控对象的纯滞后,初步确定后再综合平衡其它因素,当然这需要一定的经验,现在假定取秒。

假设模拟控制器为s 2D s 8s 15+=⋅+(),在MATLAB 中,用c2d 函数进行离散化,过程为:转换结果为:步骤3 检验数字控制器的性能数字控制器的性能项目比较多,我们仅以直流增益,频率特性,零极点分布说明。

直流增益 dcgain(dz)返回直流增益频率特性 bode(ds,'r',dz,'g') 伯德图,见下页左图 零极点分布 pzmap(dz) 零极点分布图,见下页右图步骤4 离散化控制对象为了进行模拟仿真,需要对控制对象进行离散化,由于步骤1所说的原因,应把被控对象视为零阶保持器与原对象的串连,即应对Ts1e G s s()--进行离散化,这时可在c2d 函数中使用零阶保持器(zoh)方法,如果认为不需要添加零阶保持器,即直接对G(s)离散化,则应在c2d 函数中使用冲击响应不变法(imp )。

借用零阶保持器(zoh)方法,将对象20G s s s 2()()=+带一阶保持器离散化的过程如下:转换结果为: 步骤5 模拟仿真求离散系统的闭环传递函数和连续系统的闭环传递函数。

ds=zpk(-2,-15,8) %建立模拟控制器的s 传递函数dz=c2d(ds,,'tustin') %将模拟控制器按tustin 方法转换为z 传递函数的数字控制器...... %模拟控制器D(s)转换为D(z)的过程见前 gs=zpk([ ],[0,-2],20) %建立对象的s 传递函数g1z=c2d(gs,,'zoh') %借用c2d 函数进行带零阶保持器的对象的离散化离散系统的闭环传递函数为:CZ D z G 1z TR 1D z G 1z ()()()()=+连续系统的闭环传递函数为:CS D s G s TR 1D s G s =+()()()()用MATLAB 算TR CZ 与TR CS :结果为: 用MATLAB 函数STEP 画阶跃响应图形:响应图形为:步骤6 求数字控制器的时域表达式上面已经求出, 连续传递函数s 2D s 8s 15+=+⋅()的tustin 离散式为11U z 61091z 09048 6.1091-5.527z D z E z z 0454*******z ---===--().(.)()()..,或 11U z 61091E z 5527E z z 04545U z z ().().().()--=-+。

对上式取z 反变换,得时域表达式u k 61091e k 5527e k 104545u k 1=--+-().().().(),根据此式就可以写出计算u k ()的程序代码来了。

除上述步骤之外,在编写程序代码时,还需要考虑几个问题: ① ADC 位数ADC 位数是一个硬件问题,在系统设计时,就应该结合控制算法,仔细分析ADC 位数对控制精度的影响。

② 数据类型在控制算法中有3种数据类型可以采用:无符号整数,定点数,浮点数。

我们知道,无符号整数运算既是最简单和速度最快的运算,又是定点数运算和浮点数运算的基础。

在数据动态范围比较小的情况下,应尽可能用无符号整数运算代替定点数运算和浮点数运算。

浮点数运算是一整套运算,包括加,减,乘,除,对阶,规格化,溢出处理等一系列子程序,使用浮点数的程序,将占用比较多的代码空间和比较长的运行时间。

不论使用汇编语言还是c 语言,对于是否使用浮点数运算,都应进行比较仔细的酌斟。

③ 数值计算误差数值计算引入的误差有3个方面,一是定点数字长不够或者浮点数有效数字过少,一是两个相近的数相减,一是加减乘除次数过多。

在程序设计中,应优化算法以避免计算误差的引入。

trcz=dz*g1z/(1+dz*g1z)trcs=ds*gs/(1+ds*gs)hold on %图形保持step(trcs,'r',2) %画连续系统的阶跃响应图,红色,终止时间为2秒 step(trcz,'b',2) %画离散系统的阶跃响应图,兰色,终止时间为2秒第二节 在MATLAB 中离散化1. 建立s 降幂传递函数 ① 建立多项式型s 降幂传递函数 方法1. sys = tf(num,den) 方法2. s = tf('s'),再令sys = f(s) 例: 已知03215s 3G 025s 125s s...+=++,用tf 函数建立多项式型s 降幂传递函数,0G tf 153********([.],[..])=,若G 0以零极点形式给出,即已知0305s 1G s s 1025s 1(.)()(.)+=++,仍可用tf 函数建立多项式型s 降幂传递函数,但需用多项式乘法函数conv 配合,G0=tf(conv([3],[ 1]),conv(conv([1 0],[1 1]),[ 1])) ② 建立零极点型s 传递函数 方法1. sys = zpk(z,p,k)方法2. s = zpk('s'),再令sys = f(s)。

2. 传递函数的转换① 将任意形式的s 传递函数转换为s 降幂传递函数 sys = tf(sys) ② 将任意形式的s 传递函数转换为s 零极点传递函数 sys = zpk(sys)3. 建立z 传递函数① 将连续传递函数转换为离散传递函数 sysd = c2d(sysc,t,method) ② 建立多项式形式的z 传递函数 方法1. sys = tf(num,den,?t) 方法2. z = tf('z',?t),再令sys = f(z) ③ 建立零极点z 传递函数 方法1. sys = zpk(z,p,k,?t)方法2. z = zpk('z',?t),再令sys = f(z) 4. 建立z -1格式的传递函数直接根据分子和分母建立z -1格式的传递函数sys_z = filt(num,den,?t)当已有多项式形式的z 降幂传递函数时,按以下步骤:① 取z 降幂传递函数a 的分子多项式系数 [num,den] = tfdata(sys_s,'v') ② 建立z -1格式的传递函数sys_z = filt(num,den,?t)5. 将多项式形式的高阶z -1降幂传递函数转换为并联传递函数,按以下步骤: ① “手工”将z -1降幂传递函数a 改写成多项式形式的z 降幂传递函数b 。

② 取z 降幂传递函数b 的分子多项式系数num 和分母多项式系数den 。

③ 利用residue 函数取z 降幂传递函数b 的分项分式,[an ad ak]=residue(num,den)。

分项结果可能出现共轭复数,在这种情况下应将含有共轭复数的分式合并成二次有理质分式。

④ 根据分项结果手工写出z 降幂多项式形式的并联表达式。

⑤ “手工”将z 降幂多项式形式的并联表达式改写成z -1降幂多项式形式的并联表达式。

⑥ “手工”对z -1降幂多项式形式的并联表达式中的每一个分式项降阶,即将每一个分式项变形,使得分式项的分子的阶次比分母的阶次低1阶,变形完毕再将全部常数项合并。

举例设有z -1降幂传递函数 1212010186z 00864z tz 01127z 027z ----++=-+..._..改写成z 降幂传递函数 2201z 0186z 00864tz 01z 127z 027..._..++=-+,取分项矢量 [an ad ak]=residue(nz,dz) 得 an=[ ] ad=[ ] ak=手工写分项分式 1110510105101z 0510105101z 11z 1z ....---==-+---, 令 105101t z p 11z ._-=-1110197101971z 073073z 0271027z 1027z .......------==+---, 令 1073tz p21027z ._.--=- 又令 t z p 3010510107303199_....=-+=故 1105101073t z 0t z p3t z p1t z p2031991z 1z ..____.--=++=+--- 验证 12111205101073010186z 008637z 031991z 1z 1127z 027z ........------+++-=---+实际上,大多数数字控制器的传递函数都是一阶或者二阶的,所以需要分解的并不是很多。

6. 将高阶z -1降幂传递函数生成串联传递函数 使用zpk 函数 sys_zpk= zpk(sys_pl)零极点的概念是相对于z 而不是相对于z -1说的,但对于以z -1为变量的降幂传递函数sys_pl 来说,仍然可以用zpk(sys_pl)生成以z -1为变量的因式积形式传递函数,权且也称为零极点形式。

zpk 函数对于z 降幂传递函和z -1降幂传都能得到合理的结果,原因是zpk 函数的作用就是把分子多项式和分母多项式分别进行因式分解。

相关主题