文档介绍:该【连续传递函数离散化的方法与原理 】是由【可爱的嘎GD】上传分享,文档一共【35】页,该文档可以免费在线阅读,需要了解更多关于【连续传递函数离散化的方法与原理 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。(完整word版)连续传递函数离散化的方法与原理
(完整word版)连续传递函数离散化的方法与原理
(完整word版)连续传递函数离散化的方法与原理
数字控制器的模拟化设计
目录
第一章 模拟化设计基础 1
第一节 步骤 1
第二节 在MATLAB中离散化 3
第三节 延时e—Ts环节的处理 5
第四节 控制函数分类 6
第二章 离散化算法 10
摘要 10
比较 11
第一节 冲击响应不变法(imp,无保持器直接z变换法) 11
第二节 阶跃响应不变法(zoh,零阶保持器z变换法) 11
第三节 斜坡响应不变法(foh,一阶保持器z变换法) 11
第四节 后向差分近似法 12
第五节 前向差分近似法 14
第六节 双线性近似法(tustin) 15
第七节 预畸双线性法(prevarp) 17
第八节 零极点匹配法(matched) 18
第三章 时域化算法 19
第一节 直接算法1—双中间变量向后递推 19
第二节 直接算法2—双中间变量向前递推 20
第三节 直接算法3-单中间变量向后递推 21
第四节 直接算法4—单中间变量向前递推(简约快速算法) 21
第五节 串联算法 22
第六节 并联算法 23
第四章 数字PID控制算法 24
第一节 微分方程和差分方程 25
第二节 不完全微分 25
第三节 参数选择 26
第四节 c51框架 27
第五章 保持器 33
第一节 零阶保持器 33
第二节 一阶保持器 30
附录 两种一阶离散化方法的结果的比较 31
以连续传递函数为基础的数字控制设计1/35
第一章 模拟化设计基础
数字控制系统的设计有两条道路,一是模拟化设计,一是直接数字设计。如果已经有成熟的模拟控制器,可以节省很多时间和部分试验费用,只要将模拟控制器离散化即可投入应用。如果模拟控制器还不存在,可以利用已有的模拟系统的设计经验,先设计出模拟控制器,再进行离散化。
将模拟控制器离散化,如果用手工进行,计算量比较大。借助数学软件MATLAB控制工具箱,可以轻松地完成所需要的全部计算步骤。如果需要的话,还可以使用MATLAB的SIMULINK工具箱,进行模拟仿真。
第一节 步骤
步骤1 模拟控制器的处理
在数字控制系统中,总是有传输特性为零阶保持器的数模转换器(DAC),因此,如果模拟控制器尚未设计,则应以下图的方式设计模拟控制器,即在对象前面加上一个零阶保持器,形成一个新对象,然后针对这个新对象求模拟控制器D(s)。事实上,模拟控制器一般是已经设计好的,无法或不方便更改了,离散化后的系统只好作为近似设计了。
然而,按照上述思路,可否将已有的控制器除以一个零阶保持器再离散化呢?还没有这方面的实际经验。
以下假设选定的G(s),D(s)如下图,而且不对G(s)作添加保持器的预处理。
步骤2 离散化模拟控制器
离散化模拟控制器之前,先要确定离散化算法和采样时间。离散化算法有好几种,第二章中有详细的论述,现假定采用双线性变换法。确定采样时间,需要考虑被控对象的特性,计算机的性能,以及干扰信号的影响等,初步可按采样时间T<,Tp为被控对象时间常数,或T=(~)τ,为被控对象的纯滞后,初步确定后再综合平衡其它因素,当然这需要一定的经验,。
假设模拟控制器为,在MATLAB中,用c2d函数进行离散化,过程为:
ds=zpk(-2,-15,8) %建立模拟控制器的s传递函数
dz=c2d(ds,,'tustin') %将模拟控制器按tustin方法转换为z传递函数的数字控制器
dz=c2d(ds,0。05,'tustin') %将模拟控制器按tustin方法转换为z传递函数的数字控制器
转换结果为:
步骤3 检验数字控制器的性能
数字控制器的性能项目比较多,我们仅以直流增益,频率特性,零极点分布说明。
(完整word版)连续传递函数离散化的方法与原理
(完整word版)连续传递函数离散化的方法与原理
(完整word版)连续传递函数离散化的方法与原理
以连续传递函数为基础的数字控制设计2/35
直流增益 dcgain(dz) 返回直流增益1。0667
频率特性 bode(ds,'r’,dz,'g’) 伯德图,见下页左图
零极点分布 pzmap(dz) 零极点分布图,见下页右图
步骤4 离散化控制对象
为了进行模拟仿真,需要对控制对象进行离散化,由于步骤1所说的原因,应把被控对象视为零阶保持器与原对象的串连,即应对进行离散化,这时可在c2d函数中使用零阶保持器(zoh)方法,如果认为不需要添加零阶保持器,即直接对G(s)离散化,则应在c2d函数中使用冲击响应不变法(imp)。
借用零阶保持器(zoh)方法,将对象带一阶保持器离散化的过程如下:
.。。。.。 %模拟控制器D(s)转换为D(z)的过程见前
gs=zpk([ ],[0,-2],20) %建立对象的s传递函数
g1z=c2d(gs,,'zoh’) %借用c2d函数进行带零阶保持器的对象的离散化
转换结果为:
步骤5 模拟仿真
求离散系统的闭环传递函数和连续系统的闭环传递函数。
离散系统的闭环传递函数为:
连续系统的闭环传递函数为:
用MATLAB算TRCZ与TRCS:
trcz=dz*g1z/(1+dz*g1z)
trcs=ds*gs/(1+ds*gs)
结果为:
(完整word版)连续传递函数离散化的方法与原理
(完整word版)连续传递函数离散化的方法与原理
(完整word版)连续传递函数离散化的方法与原理
以连续传递函数为基础的数字控制设计3/35
用MATLAB函数STEP画阶跃响应图形:
hold on %图形保持
step(trcs,’r’,2) %画连续系统的阶跃响应图,红色,终止时间为2秒
step(trcz,'b’,2) %画离散系统的阶跃响应图,兰色,终止时间为2秒
响应图形为:
步骤6 求数字控制器的时域表达式
上面已经求出, 连续传递函数的tustin离散式为
,或 。
对上式取z反变换,得时域表达式,根据此式就可以写出计算的程序代码来了。
除上述步骤之外,在编写程序代码时,还需要考虑几个问题:
① ADC位数
ADC位数是一个硬件问题,在系统设计时,就应该结合控制算法,仔细分析ADC位数对控制精度的影响。
② 数据类型
在控制算法中有3种数据类型可以采用:无符号整数,定点数,浮点数。我们知道,无符号整数运算既是最简单和速度最快的运算,又是定点数运算和浮点数运算的基础。在数据动态范围比较小的情况下,应尽可能用无符号整数运算代替定点数运算和浮点数运算。
浮点数运算是一整套运算,包括加,减,乘,除,对阶,规格化,溢出处理等一系列子程序,使用浮点数的程序,将占用比较多的代码空间和比较长的运行时间。不论使用汇编语言还是c语言,对于是否使用浮点数运算,都应进行比较仔细的酌斟。
③ 数值计算误差
数值计算引入的误差有3个方面,一是定点数字长不够或者浮点数有效数字过少,一是两个相近的数相减,一是加减乘除次数过多。在程序设计中,应优化算法以避免计算误差的引入.
(完整word版)连续传递函数离散化的方法与原理
(完整word版)连续传递函数离散化的方法与原理
(完整word版)连续传递函数离散化的方法与原理
以连续传递函数为基础的数字控制设计4/35
第二节 在MATLAB中离散化
1. 建立s降幂传递函数
① 建立多项式型s降幂传递函数
方法1. sys = tf(num,den)
方法2。 s = tf('s’),再令sys = f(s)
例: 已知,用tf函数建立多项式型s降幂传递函数,,若G0以零极点形式给出,即已知,仍可用tf函数建立多项式型s降幂传递函数,但需用多项式乘法函数conv配合,G0=tf(conv([3],[0。5 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,Dt)
方法2。 z = tf('z’,Dt),再令sys = f(z)
③ 建立零极点z传递函数
方法1。 sys = zpk(z,p,k,Dt)
方法2. z = zpk('z’,Dt),再令sys = f(z)
4。 建立z-1格式的传递函数
直接根据分子和分母建立z—1格式的传递函数 sys_z = filt(num,den,Dt)
当已有多项式形式的z降幂传递函数时,按以下步骤:
① 取z降幂传递函数a的分子多项式系数 [num,den] = tfdata(sys_s,'v')
② 建立z-1格式的传递函数 sys_z = filt(num,den,Dt)
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降幂传递函数
(完整word版)连续传递函数离散化的方法与原理
(完整word版)连续传递函数离散化的方法与原理
(完整word版)连续传递函数离散化的方法与原理
以连续传递函数为基础的数字控制设计5/35
改写成z降幂传递函数 ,
取分项矢量 [an ad ak]=residue(nz,dz)
得 an=[0。5101 —0。1971]
ad=[ ]
ak=
手工写分项分式 , 令
, 令
又令
故
验证
实际上,大多数数字控制器的传递函数都是一阶或者二阶的,所以需要分解的并不是很多.
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函数的作用就是把分子多项式和分母多项式分别进行因式分解.
第三节 延时环节e—Ts的处理
在建立s传递函数的LTI模型时,对于延时环节e-T s,可按如下方法处理:
1。 在tf函数中使用属性'inputdely’或者’iodely’ ,例如:
>〉 tf([1 -1],[1 3 5],'inputdelay’,)
将返回以下形式的传递函数
s – 1
exp(—0。35*s) * ——---——————--—
s^2 + 3 s + 5
使用这个方法不能建立形如的传递函数,因为带延时的传递函数不能与不带延时的传递函数相加,但可以使用c2d进行离散化,但要求延时时间t必须是采样时间Dt的整数倍,若不是整数倍,则在转换时不理会延时环节,例如:
用tf函数建立2个传递函数,主体部分相同,但一个无输入延时,,
〉〉 a=tf([1 -1],[1 4 5]) s — 1
---—---——-—--—-—
s^2 + 4 s + 5
〉> a1=tf([1 —1],[1 4 5],’iodelay',) s — 1
exp(—*s) * ——-—----—-—--——
s^2 + 4 s + 5
若采样时间为0。05,因为延时时间是采样时间的整数倍,转换结果的主体部分完全一样:
〉> c2d(a,,’imp') z^2 - z + 9。146e-018
———-——-—--—-—-—------—---———-- sampling time: 0。05
(完整word版)连续传递函数离散化的方法与原理
(完整word版)连续传递函数离散化的方法与原理
(完整word版)连续传递函数离散化的方法与原理
以连续传递函数为基础的数字控制设计6/35
z^2 - 1。807 z +
>> c2d(a1,0。05,’imp') z^2 — 1。039 z + 9。146e—018
z^(—7) * —-—-——-—-——-——-———-—-——-—---— sampling time:
z^2 - z +
若采样时间为0。1,因为延时时间不是采样时间的整数倍,结果的主体部分不一样:
>〉 c2d(a,,'imp') z^2 - 1。06 z + —018
---——-----——----------—-----— sampling time:
z^2 - z + 0。6703
>> c2d(a1,,'imp') 0。768 z - 0。851
z^(-3) * ——-——-—--———---———-— sampling time: 0。1
z^2 — 1。629 z + 0。6703
2。 将e-Ts有理化
设,因e—Ts的一阶有理表达式是 ,故 。
为了对ts进行离散化,,则。
3. 在离散化时使用恒等式
设,因,采样时间为Δt,若T=mΔt,则,因为离散化时总是认为,故取。
根据以上假设,用MATLAB的c2d函数对g(s)进行离散化,则,进而。
则。
第四节 控制函数分类
以下函数在control toolbox中,这里所述仅限于siso模型
1 创建多项式形式的传递函数
sys = tf(num,den) 创建一个s降幂多项式连续传递函数sys,分子多项式系数和分母多项式系数分别为num和den。
sys = tf(num,den,Dt) 创建一个z降幂离散传递函数sys,Dt是采样时间,行矢量num和den同上。
sys = tf(sys) 把一个任意的lti模型sys转换成多项式传递函数,例如把零极点模型转换成多项式传递函数。
sys = tf 创建一个空的tf对象。
sys = tf(m) 指定静态增益m.
2 创建零极点形式的传递函数
sys = zpk(z,p,k) 创建一个零极点模型的连续传递函数sys,零极点矢量分别是z和p,增益是k。
sys = zpk(z,p,k,Dt) 创建一个零极点模型的离散传递函数sys,零极点矢量分别是z和p,增益是k,采样时间是Dt。在零极点对象中,如果没有零点,则z=[]。
sys = zpk 创建一个空的零极点对象。
(完整word版)连续传递函数离散化的方法与原理
(完整word版)连续传递函数离散化的方法与原理
(完整word版)连续传递函数离散化的方法与原理
以连续传递函数为基础的数字控制设计7/35
sys = zpk(d) 指定静态增益d。
3 创建任意形式的传递函数
s = tf('s') 指定多项式传递函数变量为s变量
z = tf(’z’,Dt) 指定多项式传递函数变量为z变量,Dt为采样时间
形如的传递函数,既不能直接用tf函数建立,也不能直接用zpk函数建立。
定义了s=tf(’s')后,写出赋值式f=10/(s*(0。25*s+1)*(*s+1)),回车后即可得到多项式型传递函数,再令f1=zpk(f),可得.
s = zpk(’s') 指定零极点传递函数变量为s变量
z = zpk(’z’, Dt) 指定零极点传递函数变量为z变量,Dt为采样时间
定义了s = zpk('s'),写出赋值式f=10/(s*(*s+1)*(*s+1)),回车后即可得到零极点型传递函数。
4 建立z—1降幂离散传递函数
sys = filt(num,den,Dt) 返回z-1降幂离散传递函数,num和den分别是分子和分母多项式系数,Dt是采样时间。
sys = filt(m) 返回增益离散传递函数。
5 连续函数离散化
sysd = c2d(sysc,t,method)把连续传递函数sysc转换成采样时间为Dt的离散传递函数,字符串method为离散化方法: ’zoh’(零阶保持,即阶跃响应不变),'foh'(一阶保持),'imp’(冲击响应不变,v6以上版本),'tustin’ (双线性近似),’prewarp'(带预畸变的双线性近似),'matched’(零极点匹配).
注: ① 缺省的方法是'zoh'
② 'foh'的算法是而不是,这一点可以通过验证证实,验证方法是,令,但此结果中,的分子和分母将含有公因式,所以应进一步用zpk函数把表示成零极点形式,然后用“手工”的方法写出不含公因式的来,可以看到,最后的结果与用foh方法得到的结果完全一致。
③ 当使用'prewarp'方法时,临界频率wc(in rad/sec)作为第四个输入来指定,如sysd = c2d(sysc,t,’prewarp',wc) 。另有1种形式是,opt = c2dOptions(’Method’,'tustin',’PrewarpFrequency’,。5), c2d(ds,.05,opt)。
6 取多项式模型传递函数的分子和分母的系数矢量
[num,den] = tfdata(sys,’v’) 对于siso模型sys返回作为分子和分母系数的单行矩阵num和den。
[num,den,t] = tfdata(sys,’v’) 同上,同时返回采样时间Dt.
7 取零极点模型传递函数的零点和极点的单行矩阵
[z,p,k] = zpkdata(sys,'v') 返回lti模型sys的零极点矢量z和p,增益k。
8 取e-T s近似式
[num,den] = pade(t,n) 返回e—T·s的n阶pade近似式,行矢量num和den是s的降幂多项式系数.
e-Ts的一阶有理表达式是 。
e-T·s的高阶有理表达式是
(完整word版)连续传递函数离散化的方法与原理
(完整word版)连续传递函数离散化的方法与原理
(完整word版)连续传递函数离散化的方法与原理
以连续传递函数为基础的数字控制设计9/35
9 画阶跃响应图
step(sys) 画出由tf,zpk,or ss等函数创建的lti模型sys的阶跃响应图。
step(sys,tfinal) 画出lti模型sys从t=0到t=tfinal的阶跃响应图。对于未指定采样时间的离散模型,tfinal被解释为采样的数目。
step(sys,t) 使用用户提供的矢量t画阶跃响应图。对于离散时间模型,t的形式应该是ti: Dt:tf,在这里,,t的形式应该是ti:dt:tf,在这里,,tf是终止时间。因为阶跃输入总是假定在t=0开始,所以通常不考虑ti和tf,即只使用一个终止时间t。
step(sys1,sys2,。..,t) 在一个单个的图上画出多个lti模型sys1,sys2,。。. 的阶跃响应图,时间矢量t是可选择,还可以以step(sys1,¢r¢,sys2,¢y¢,sys3,¢gx¢)的方式对每一个系统指定颜色,线型和标记。
[y,t] = step(sys) 返回用于仿真的时间t的输出响应y,但并没有图形画在屏幕上,如果sys有ny输出和nu输入和lt = length(t),y就是一个尺寸为[lt ny nu]的阵列,而y(:,:,j)给出第j个输入通道的阶跃响应.
10 画脉冲响应图
impulse 脉冲响应函数,用法与step相同
11 画频率响应图——伯德图(连续或离散)
bode(sys) 画伯德图
bode(sys,{wmin,wmax}) 在频率wmin,wmax(in radians/second)之间画伯德图
bode(sys,w) 按指定的频率矢量w(in radians/second)画伯德图
bode(sys1,sys2,..。) 画多个lti模型sys1,sys2,..。的伯德图
bode(sys1,sys2,。。.,w) 按指定的频率矢量w(in radians/second)画多个lti模型sys1,sys2,.。。的伯德图
以下函数在符号工具箱symbolick中,需注意,在使用这些函数前,要对所使用的变量进行符号说明,例如:
syms a t %是用空格分隔而不是用逗号分隔
a=sin(t)
L=laplace(a)
12 福里哀变换 fourier
反福里哀变换 ifourier
13 拉普拉斯变换 laplace
反拉普拉斯变换 ilaplace
14 z变换 ztrans
反z变换 iztrans
注:以上3 种变换必须是符号表达式,例如:
syms t
laplace(sin(t))
15 改善公式的可读性 pretty
16 多项式转换为符号表达式 poly2sym
17 化简符号表达式 simplify
18 取符号表达式的分子和分母 numden
以下函数在符号工具箱polyfun中,在公式变换中可能会用到
19 部分分式展开 [an ad ak] = residue(n,d)
n和d分别为原分式的分子和分母矢量,an和ad分别为分项式的分子和分母矢量,ak为整式部分。这是一个数学公式,在数字控制器程序设计中,利用部分分式展开的方法,把高于2阶的分式变换为不高于2阶的分式之和,从而把高阶传递函数算法变为低阶传递函数并联的算法。在使用这个方法时,不论在分子矢量中还是在分母矢量中,如果有共轭复数出现,则应将其整合为2阶质因式。
(完整word版)连续传递函数离散化的方法与原理
(完整word版)连续传递函数离散化的方法与原理
(完整word版)连续传递函数离散化的方法与原理
以连续传递函数为基础的数字控制设计9/35
20 多项式乘法 c = conv(a,b) a×b=c
21 多项式除法 [q,r] = deconv(b,a) b÷a=q..。r,即b = conv(a,q) + r
(完整word版)连续传递函数离散化的方法与原理
(完整word版)连续传递函数离散化的方法与原