连续传递函数离散化的方法与原理.doc
数字控制器的模拟化设计
目录
第一章 模拟化设计1
第一节 步骤1
第二节 在MATLAB中离散化3
第三节 延时环节的处理5
第四节 控制函数分类6
第二章 10
摘要10
比较1
第一节 冲击响应不变法(imp,无保持器直接z变换法)1
第二节 阶跃响应不变法(zoh,零阶保持器z变换法)1
第三节 斜坡响应不变法(foh,一阶保持器z变换法)1
第四节 后向差分近似法1
第五节 前向差分近似法1
第六节 双线性近似法(tustin)1
第七节 预畸双线性法(prevarp)1
第八节 零极点匹配法(matched)
第三章 19
第一节 直接算法1—双中间变量向后递推
第二节 直接算法2—双中间变量向前递推
第三节 直接算法3—单中间变量向后递推2
第四节 直接算法4—单中间变量向前递推(简约快速算法)2
第五节 串联算法2
第六节 并联算法2
第四章 数字PID控制算法2
第一节 微分方程和差分方程2
第二节 不完全微分2
第三节 参数选择2
第四节 c51框架
第五章 保持器33
第一节 零阶保持器
第二节 一阶保持器
附录 两种一阶离散化方法的结果的比较
第一章 模拟化设计
数字控制系统的设计有两条道路,一是模拟化设计,一是直接数字设计。如果已经有成熟的模拟控制器,可以节省很多时间和部分试验费用,只要将模拟控制器离散化即可投入应用。如果模拟控制器还不存在,可以利用已有的模拟系统的设计经验,先设计出模拟控制器,再进行离散化。
将模拟控制器离散化,如果用手工进行,计算量比较大。借助数学软件MATLAB控制工具箱,可以轻松地完成所需要的全部计算步骤。如果需要的话,还可以使用MATLAB的SIMULINK工具箱,进行模拟仿真。
第一节
步骤1 模拟控制器
在数字控制系统中,总是有传输特性为零阶保持器的数模转换器(DAC),因此,如果模拟控制器尚未设计,则应以下图的方式设计模拟控制器,即在对象前面加上一个零阶保持器,形成一个新对象,然后针对这个新对象求模拟控制器D(s)。
然而,按照上述思路,可否将已有的控制器除以一个零阶保持器再离散化呢?还没有这方面的实际经验。
以下假设选定的G(s),D(s)如下图,而且不对G(s)作添加保持器的预处理。
步骤2 离散化模拟控制器
离散化模拟控制器,要确定采样时间。
模拟控制器为MATLAB中,用c2d函数进行离散化,过程为:
转换结果为:
步骤3 检验数字控制器的性能
数字控制器的性能项目比较多,我们仅以直流增益,频率特性,零极点分布说明。
直流增益 dcgain(dz)返回直流增益1.0667
频率特性 bode(ds,'r',dz,'g')伯德图,见下页左图
零极点分布 pzmap(dz)零极点分布图,见下页右图
步骤4 离散化控制对象
为了进行模拟仿真,需要对控制对象进行离散化,由于步骤1所说的原因,应把被控对象视为零阶保持器与原对象的串连,即应对进行离散化零阶保持器(zoh)方法。
用零阶保持器(zoh)方法,将对象离散化的过程如下:
转换结果为:
步骤5 模拟仿真
求离散系统的闭环传递函数和连续系统的闭环传递函数。
离散系统的闭环传递函数为:
连续系统的闭环传递函数为:
用MATLAB算TRCZ与TRCS:
结果为:
用MATLAB函数STEP画阶跃响应图形:
响应图形为:
步骤6 求数字控制器的时域表达式
上面已经求出, 连续传递函数的tustin离散式为,或 。
对上式取z反变换,得时域表达式,根据此式就可以写出计算的程序代码来了。
编写程序代码问题
① ADC位数
ADC位数是一个硬件问题,在系统设计时,就应该结合控制算法,仔细分析ADC位数对控制精度的影响。
② 数据类型
在控制算法中有3种数据类型可以采用无符号整数,定点数,浮点数我们知道,无符号整数运算既是最简单速度最快的运算,又是定点数运算和浮点数运算的基础在数据动态范围比较小的情况下,应尽可能用无符号整数运算代替定点数运算和浮点数运算。
浮点数运算是一整套运