连续传递函数离散化的方法与原理
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录
第一章 模拟化设计基础
数字控制系统的设计有两条道路,一是模拟化设计,一是直接数字设计。如果已经有成熟的模拟控制器,可以节省很多时间和部分试验费用,只要将模拟控制器离散化即可投入应用。如果模拟控制器还不存在,可以利用已有的模拟系统的设计经验,先设计出模拟控制器,再进行离散化。
将模拟控制器离散化,如果用手工进行,计算量比较大。借助数学软件MATLAB 控制工具箱,可以轻松地完成所需要的全部计算步骤。如果需要的话,还可以使用MATLAB 的SIMULINK 工具箱,进行模拟仿真。
第一节 步骤
步骤1 模拟控制器的处理
在数字控制系统中,总是有传输特性为零阶保持器的数模转换器(DAC ),因此,如果模拟控制器尚未设计,则应以下
图的方式设计模拟控制器,即在对象前面加上一个零阶保持器,形成一个新对象Ts
1e G s s ()--,然后针对这个新对象求模拟
控制器D(s)。事实上,模拟控制器一般是已经设计好的,无法或不方便更改了,离散化后的系统只好作为近似设计了。 然而,按照上述思路,可否将已有的控制器除以一个零阶保持器再离散化呢?还没有这方面的实际经验。 以下假设选定的G(s),D(s)如下图,而且不对G(s)作添加保持器的预处理。 步骤2 离散化模拟控制器
离散化模拟控制器之前,先要确定离散化算法和采样时间。离散化算法有好几种,第二章中有详细的论述,现假定采用双线性变换法。确定采样时间,需要考虑被控对象的特性,计算机的性能,以及干扰信号的影响等,初步可按采样时间T<,Tp 为被控对象时间常数,或T=~τ,为被控对象的纯滞后,初步确定后再综合平衡其它因素,当然这需要一定的经验,现在假定取秒。
假设模拟控制器为s 2
D s 8s 15
+=⋅+(),在MATLAB 中,用c2d 函数进行离散化,过程为:
转换结果为:
步骤3 检验数字控制器的性能
数字控制器的性能项目比较多,我们仅以直流增益,频率特性,零极点分布说明。 直流增益 dcgain(dz)
返回直流增益
频率特性 bode(ds,'r',dz,'g') 伯德图,见下页左图 零极点分布 pzmap(dz) 零极点分布图,见下页右图
步骤4 离散化控制对象
为了进行模拟仿真,需要对控制对象进行离散化,由于步骤1所说的原因,应把被控对象视为零阶保持器与原对象的串连,即应对
Ts
1e G s s
()--进行离散化,这时可在c2d 函数中使用零阶保持器(zoh)方法,如果认为不需要添加零阶保持器,即直接对G(s)离散化,则应在c2d 函数中使用冲击响应不变法(imp )。 借用零阶保持器(zoh)方法,将对象20
G 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 2
D s 8s 15
+=+⋅()的tustin 离散式为
1
1
U 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秒