1、电子设计教程v第五章 算法简介5.1 数字PID 控制算法 5.1.1 PID控制系统简介控制系统简介 PID控制器是一种线性控制器,用输出量y(t)和给定量r(t)之间的误差的时间函数e(t)=r(t)-y(t)的比例(P)、积分(I)和微分(D)的线性组合构成控制量u(t),简称PID控制。PID控制组合了比例控制、积分控制和微分控制这三种基本控制规律,通过改变调节器参数来实现控制,基本输入输出关系为:连续时间PID控制系统下图所示,)()(1)()(0dttdeTdtteTteKtuDtIP5.1.2 PID参数控制效果分析参数控制效果分析 PID控制的三基本参数为 、,经实验测试,可总
2、结出这三项参数的实际控制作用为:v比例调节参数():比例调节是主要的控制部分,但过大的比例会使系统的稳定性下降。增大 ,系统的反应变灵敏、速度加快、稳态误差减小,但振荡次数也会加多、调节时间加长。v积分调节参数():消除系统静态(稳态)误差(),提高系统的控制精度。积分调节会使系统的稳定性下降,动态响应变慢,超调加大。积分控制一般不单独作用,而是与P或者PD结合作用。v微分调节参数():反映系统偏差信号的变化率,可以预见偏差的变化趋势,产生超前控制作用,使偏差在未形成前已被消除。因此,微分控制可以提高系统的动态跟踪性能,减小超调量,但对噪声干扰有放大作用,过强的微分调节会使系统剧烈震荡,对抗干
3、扰不利。PKIKDKPKPKIK)()(lim)(limtCtRtettDKv注意注意:常规的常规的PID控制系统中,减少超调和提控制系统中,减少超调和提高控制精度难以两全其美。主要是积分作用高控制精度难以两全其美。主要是积分作用有缺陷造成的。如果减少积分作用,静差不有缺陷造成的。如果减少积分作用,静差不易消除,有扰动时,消除误差速度变慢;而易消除,有扰动时,消除误差速度变慢;而加强积分作用时又难以避免超调,这也是常加强积分作用时又难以避免超调,这也是常规规PID控制中经常遇到的难题。控制中经常遇到的难题。5.1.3 数字数字PID控制的实现控制的实现 数字控制系统大多数是采样数据控制系统,进
4、入系统的连续时间信号必须经过采样和量化后转换为数字量,方能进行相应的计算和处理。当采样周期相当短时,用求和代替积分,用差商代替微商,将描述连续时间PID算法的微分方程变为描述离散时间PID算法的差分方程。数字PID控制通常有以下两种实现:v位置式位置式PID控制算法控制算法 位置式PID控制算法实现框图数字数字PID控制的实现控制的实现根据此框图得到差分方程:此式是数字PID算法的非递推形式,称全量算法,其中 为控制量基值(n=0时的控制量);为第n个采样时刻的控制量;为采样周期。算法中为实现求和,必须存储系统偏差的全部值 ,得出的全量输出 是控制量的绝对数值,这种控制量确定了执行机构在控制系
5、统中的位置(如阀门控制中,输出对应阀门的位置),因此将这种算法称为“位置算法”。010010)()(ueeKeKeKueeTTeTTeKunnDniiInPnnSDniiISnPn0unuSTienu增量式增量式PID控制算法控制算法v当执行机构需要的不是控制量的绝对值,而是控制量的增量(例如去驱动步进电动机)时,需要用PID的“增量算法”,其简化示意图如图5-3所示:增量式PID控制算法简化示意图增量式PID算法的差分方程为)2(2111nnnSDnISnnPnnneeeTTeTTeeKuuu5.1.4 PID算法的饱和特性算法的饱和特性 实际的控制系统存在着饱和特性(当控制变量达到一定值后
6、,系统的输出变量便不再增长,系统进入饱和区),要求系统的控制变量必须限制在某个范围之内,即 。若超出此范围,系统实际执行的不是控制量的计算值,而是控制量的最值(或 ),达不到预期控制效果,甚至会引起振荡。这种现象在开工、停工或大幅度改变给定值的情况下尤其容易发生,此时需要改进算法。v位置算法的改进位置算法的改进 积分分离法 积分分离法是在误差量较大时不进行积分,直至误差在一定值之内后才在控制量的计算中加入积分累积。差分方程为:maxminuuumaxuminu)(10nnDniiiInPneeKeKKeKu其中,为门限值积分分离法如图5-4所示。遇限削弱积分法 这种改进算法的基本思想是:当控制
7、进入饱和区后便不再进行积分项的累加,而只执行削弱积分的运算。这种算法可以避免控制量长时间停留在饱和区。有效偏差法 这种方法是将实际执行的控制量对应的误差值作为有效误差值进行积分累加,而不是用实际的误差值进行积分累加。v增量算法的比例与微分增量算法的比例与微分 增量式数字PID算法中没有累加和项,不会出现积分饱和,避免了大的超调和振荡。但在增量算法中可能出现比例和微分饱和。为抑制微分饱和、加速系统的动态过程,可采用积累补偿法。积累补偿法的基本思想是将那些因饱和而未能执行的控制增量信息累积起来,一旦有可能时再补充执行。5.1.5 PID参数整定方法参数整定方法v确定控制器结构确定控制器结构 在选择
8、数字PID控制参数之前,应先确定控制器结构。对允许有静差(或稳态误差)的系统,应适当选择P或PD控制器,使稳态误差在允许的范围内;对必须消除稳态误差的系统,应选择包含积分控制的PI或PID控制器;对于存在滞后的对象,往往都加入微分控制。一般情况下,PI、PID和P控制器应用较多。v选择参数 工程上PID控制器参数通常是通过试凑法或实验经验公式来确定的。、较难确定,调节周期可能会很长,要在具体系统中反复调节。下面介绍几种确定参数的具体做法。采样周期的选择采样周期的选择 数字PID控制中需要对控制信号采样,采样周期是需要精心选择的重要参数,系统的性能与采样周期的选择密切相关,选择时主要考虑的因素分
9、析如下:v香农(Shannon)采样定理:(为被采样信号的上限角频率)v闭环系统对给定信号的跟踪要求采样周期要小。PKIKDKmaxSTmaxu从抑制扰动的要求来说,采样周期应该选择得小些。u从执行元件的要求来看,有时要求输入控制信号要保持一定的宽度。u从计算精度考虑,采样周期不宜过短。u从系统成本上考虑,希望采样周期越长越好。综合上述各因素,应在满足控制系统性综合上述各因素,应在满足控制系统性能的要求下,尽可能选择低的采样速率。能的要求下,尽可能选择低的采样速率。右图给出了选择采样周期的经验,在试凑过程中可根据此经验来预选采样周期,然后进行多次试凑,选择性能较好的一个作为最后的采样周期。采样
10、周期的经验选择 右表给出了常用被控量的经验采样周期。常见被控量的经验采样周期 采用实验试凑法确定参数采用实验试凑法确定参数 实验凑试是通过闭环运行或模拟,观察系统的响应曲线,根据各参数对系统的影响反复凑试,直至出现满意的响应,从而确定PID控制参数。参数的确定主要遵循如下的规则参数的确定主要遵循如下的规则:v比例项独立实验比例项独立实验 v加入积分项加入积分项v加入微分项减小超调和震荡加入微分项减小超调和震荡 v划分小控制区间,测取每个区间最适合划分小控制区间,测取每个区间最适合PID 参数。参数。PID参数的改变对控制质量的影响并不十分敏感,因而不同的比例、积分、微分组合,可能达到相近的控制
11、效果。实际应用中,只要受控过程或受控对象的主要指标达到设计要求,相应的控制器参数即可作为有效的控制参数。采用实验经验法确定参数采用实验经验法确定参数 根据实验经验法调整PID参数时常用扩充临界比例度法。利用这种方法,参数的整定不依赖于受控对象的数学模型,直接在现场整定,简单易行,适用于有自平衡特性的受控对象。扩充比例度法整定数字扩充比例度法整定数字PID控制器参数的步骤是:控制器参数的步骤是:v预选一个足够短的采样周期,一般应小于受控对象纯延迟时间的十分之一。v用选定的使系统工作。v选择控制度。v根据所选择的控制度,查实验经验表得出数字PID中相应的参数 、和 。实验经验表如下图所示:STPK
12、ITDT扩充临界比例度法数字PID控制器的参数计算表运行与修正 当设计对稳定时间和稳定范围有具体的要求时,单纯的拟和逼近无法适应动态环境的要求,而PID控制又难以调整全局。这时通常将PID算法的比例、积分和微分的思想融入分段拟和中,不断的调节各个控制段的系数,最终达到精确控制。5.2 大林算法v许多实际工程中经常遇到一些纯滞后调节系统,滞后时间比较长,但要求系统具有较好的动态特性和稳定性、没有超调量或很少超调量。这类系统采用PID算法控制效果往往欠佳,而大林算法对改善滞后给系统带来的不良影响具有良好的效果,本文就大林算法的原理作一简单介绍。5.2 大林算法v通常将被控对象看成是带有纯滞后的一阶
13、或二阶惯性环节,其传递函数分别为:v 或 v其中 、为对象的时间常数,为对象的纯滞后时间,N为正整数,K为对象的放大倍数。1()1SKeGc ss12()(1)(1)SKeGc sss12N5.2 大林算法v在控制系统中,A/D转换环节近似为一采样开关,D/A环节近似为临界器,传递函数为,故系统是一个具有零阶保持器的单变量调节系统。整个闭环系统的脉冲传递函数为:sesGS10 111sesezzGSNS5.2 大林算法v大林算法的设计目标是设计一个合适的数字控制器,使整个闭环系统的传递函数为带有原纯滞后时间的一阶惯性环节,即:,其中 为闭环脉冲传递函数。直接数字控制器为满足:代入可得:11se
14、sS z()()()1()zD zG zz1/1/1(1)()()1(1)NTTTNZeD zG zeZeZ5.2 大林算法v同时 ,其中E(k)为输入偏差,U(k)为输出控 量,对 进行 逆Z变换即可得到U(k)与E(k)、U(k-1)、E(k-1)、U(k-2)等之间的关系,数字控制器的最终表达式为:其中,U(k)为k时刻的输出值,E(k)为k时刻的误差值,E(k1)为k1时刻的误差值,U(kN1)为kN1时刻的输出值。()()()U zD zE z()D z)1()1()1()1()()(1121NkUbkUbkEakEakU5.2 大林算法v与PID算法相同的是,算法的关键在于各个系数
15、以及对象时间常数的确定,存在不易调试的问题。v在调整系数时应在对其控制思想透彻了解的基础上整体考虑,根据系统的飞升曲线确定对象的纯滞后时间和系统时间常数,选取合适的采样周期,然后再不断地去调整值,可利用Matlab进行模型的反复论证,直到闭环系统的指标达到最佳。v由于大林算法对系统的要求有严格限制,也就消除了由于超调引起的系统不稳定等因素的影响,特别适用于微机控制。5.3 模糊控制算法 v当系统的影响因素十分复杂、建立精确的数学模型特别困难时,就要使用模糊控制了。模糊控制是以模糊集合论、模糊语言变量以及模糊逻辑推理为基础的一种智能化数字控制方法,不用建立数学模型,根据实际系统的输入输出的结果数
16、据,参考现场的运行经验,就可对系统进行实时控制。5.3.1 模糊控制概述模糊控制概述v模糊控制是一种非线性控制,鲁棒性强,干扰和参数变化对控制效果的影响被大大减弱,尤其适合于非线性、动态特性不易掌握及纯滞后系统的控制。v模糊算法是用模糊语言表述一组规则的算法,如:误差是正大、误差的变化是正大,则控制量的变化是负大;误差是正大、误差的变化是正中,则控制量的变化是负大。其中“正大”、“正中”和“负大”等模糊词都可以用模糊子集来表示。对于数字信号来说就是根据实测数据建立一个对应的系数矩阵,当被控量变化时就从矩阵中找出对应的控制量来加以控制。5.3.2 模糊控制原理模糊控制原理v模糊控制算法是建立在人
17、们对对象操作经验基础上的,通过操作经验确定模糊控制规则,使各规则之间有一定的互补性,以便使模糊控制规则在整体上具有相当的可调整性。即使某条规则出问题而被删除,模糊控制仍然可以得到与原来相近的控制效果。v例如在温度控制系统中,制订“温度低,温升慢,则加热控制量较高”、“温度低,温升快,则加热控制量高”、“温度高,温升较快,则加热控制量较高”等规则,这些规则涵盖温度控制系统中所有可能出现的状态特征,采用格式如:if(误差大且偏差率大)then(控制量小)的控制规则来实施对过程的控制。5.3.2 模糊控制原理模糊控制原理v基本模糊控制器的典型结构如图5-6所示。图5-6 模糊控制的基本结构5.3.2
18、 模糊控制原理模糊控制原理v图中虚线框出的部分为模糊控制器,以被控对象参数的误差E及误差变化率G作为输入量,经模糊化后转换成模糊输入,根据输入条件满足的程度和控制规则进行模糊推理得到模糊输出,该模糊输出经过模糊决策转化成非模糊量后用于过程的调节。5.3.3 模糊控制器设计模糊控制器设计v根据图5-6所示的模糊控制器的典型结构可知,基本模糊控制器的设计步骤可分为:v(1).将实验经验归纳为定性描述的一组if then 形式的条件语句,也称模糊控制规则或模糊控制模型;v(2).将模糊控制常取的三个变量:偏差E、偏差变化率G和控制量U进行模糊化处理。模糊化处理就是把输入变量映射到一个合适的响应论域或
19、模糊集合的标识符。v设误差的基本论域为-e,e ,误差所取的基本论域为-n,-n+1,0,n-1,n,其中e 表征误差大小的精确量,n 是在0e 范围内连续变化的误差离散化后分成的档数,一般取6 或7。然后通过量化因子进行论域变换,量化因子k定义为ke=n/e。5.3.3 模糊控制器设计模糊控制器设计v按照以上方法同样对误差变化率G进行模糊化。v由于量化因子的有限选择,难以保证被控过程的全过程都处于最佳控制状态,这样会降低模糊控制系统的鲁棒性。因此对于大纯滞后系统,可采用由数组量化因子实现的变量化因子,或采用在不同状态下对量化因子进行自调整等方法;v(3).应用模糊推理的方法,通过模糊算法,根
20、据E和EC由控制规则计算出模糊控制量C,并在不断实验中调整和校准模糊规则;v(4).通过模糊判决,由C得出确切清晰的控制量U,从而构造基本模糊控制器的查询表并存储,以备实时控制使用。5.3.3 模糊控制器设计模糊控制器设计v将模糊推理中产生的模糊量转化为精确量是模糊系统中的重要环节,称为解模糊化。常见的解模糊器主要为重心解模糊器、中心平均解模糊器、最大值解模糊器等,这些方法在不同程度上有着一定的局限性,依据计算简便和连续性来比较这三种解模糊器,中心平均解模糊器是最好的解模糊器。v对于带基本模糊控制器的被控过程,在运行中,每当测量到输出偏差E,计算出相应的偏差变化G,然后根据E和G从查询表中找出
21、相应的控制量U,便可实现实时控制。注意,必须根据实测数据建立模糊控制表。5.3.4 小结小结v模糊控制器与一般控制器的相似点在于,这些控制器的基本组成环节是一致的,即由控制对象、控制器和反馈通道等环节组成。但模糊控制不受数学模型的束缚,采用模糊控制表,并在实际调试过程中反复经人工修正。因此,确立模糊控制算法,或者说确立模糊规则,是设计模糊控制系统中最重要的环节。v每种控制算法都有自己的不足之处,模糊控制的主要缺陷为:没有形成完整的理论体系,没有完整的稳定性和鲁棒性分析、系统的设计方法(包括规则的获取和优化、隶属函数的选取等);存在稳态精度比较低、抖动及饱和等问题;适应能力有限。5.4 运动控制
22、算法v有些系统需要控制物体按一定规则运动,这时就需要使用运动控制算法实现。Bresenham算法是常用的图形扫描算法,仅使用整数加法和乘2运算即可实现,产生线段的速度很快,作为运动轨迹的控制效果非常好。v由于任何形状的曲线均可以划分为若干个线段的组合,因此先以产生线段的方法来论述Bresenham算法。5.4.1 产生线段整数产生线段整数Bresenham算法算法v直线方程为:,其中m和b是常数。显示直线的像素点只能取整数值坐标,当0m1 且 时,设 是直线上第i个像素点坐标,它是直线上的点 的最临近点,并且 ,如图5-7(a)所示。图5-7 直线的像素点表示bmxy始终xx)(iiyx,ii
23、yx,iixx 5.4.1 产生线段整数产生线段整数Bresenham算法算法v图5-7(b)中,在 处直线上点的y值为 该点距离点 和点 的距离分别是 和 :v两个距离之差为 ,此值为正时说明直线上的点离 较近,此点的像素点坐标应取 ;否则表示直线上点离 较近,像素点坐标应取 。1ixxbxmyi)1()1(iiyx,)11(iiyx,1d2diiiybxmyyd)1(1bxmyyydiii)1()1()1(2122)1(221byxmddii)11(iiyx)11(iiyx,)1(iiyx,)1(iiyx,5.4.1 产生线段整数产生线段整数Bresenham算法算法v如果直线与坐标网格相
24、交如图5-7(c)所示,则 ,仍表示直线像素点应取 。若值为零,像素点坐标规定取 。由于 ,故 和 符号相同,可将 定义为一个新的判别量。(式中 ,为常数,为起点,为终点。)20d 01d021dd)1,1(iiyx)1(iiyx,0)(12xxxcyxxyddxpiii22)(21)(21dd ip12yyy)12(2bxyc1x2x5.4.1 产生线段整数产生线段整数Bresenham算法算法v对 的表达式作进一步简化,找出 的递推关系。将表达式中的下标i改写成i+1得到:,减 去 ,并利用 ,可得 ,按是否大于0取值1 或0。再利用 和 ,由原式,可以得到的初始值为:。在计算式 和计算式
25、 中只需用到整数相加和乘2运算,而二进制数乘2运算可通过左移位来实现,因此这个算法速度快并易于硬件实现。ipipcyxxypiii11122cyxxypiii2211iixx)(2211iiiiyyxypp)(1iiyybxmy11xymxyp 21)(2211iiiiyyxyppxyp 215.4.1 产生线段整数产生线段整数Bresenham算法算法v根据以上分析可总结出Bresenham算法可以写成:图5-8给出了此算法的流程图。xyp 2111iixx020)(211111iiiiiiiiiipyppyypxyppyy,当,当,5.4.1 产生线段整数产生线段整数Bresenham算法
26、算法5.4.1 产生线段整数产生线段整数Bresenham算法算法v为对任意方向的线段作图,先在线段起始点处将平面分成八 个区间如图5-9所示,由线段的终点位置来决定线段位于哪个 区。图上标出了对应每个区间内和的变化规律。沿x或y轴作 图时的另一变量增量为0。v需要将原计算公式作适当修正以适应对任何方向线段的作 图:当线段处于、或区时,以 和 代替前面式中的和;当线段处于、或区时,将式 中x和y对换。xy5.4.1 产生线段整数产生线段整数Bresenham算法算法图5-9 线段起始点区分线段方向示意图绘制完整线段的整数Bresenham算法的c语言代码见附录。5.4.2 产生圆的整数产生圆的
27、整数Bresenham算法算法 v利用Bresenham算法绘制线段后,接下来探讨圆的绘制方法。圆心在坐标系原点、半径为R的圆方程是 ,为使得由此公式产生的圆表示尽量精确,需用尽可能多的在圆周上的像素点来画圆。v因为 ,所以若采用x值在 R到R的范围内每次以1为增量来对应计算y值再取 整,不但计算量大,而且在 处x的很小变化将引起y的很大变化,使相邻像素点之间距离较大。而Bresenham圆的画法仅需做整数加法和乘法2运算,又能得到精致的图形。222Ryx22xRydxyxdy)0,(yRx5.4.2 产生圆的整数产生圆的整数Bresenham算法算法v在实际计算中,只要求出1/8的圆周像素点
28、坐标,再利用对称关系即可画出整个圆。先针对图5-10讨论从点(0,R)开始顺时针方向1/8圆周的画法。v在0 xy的1/8圆周上,像素坐标x值单调增加、y值单调减 少。又因为 ,取 ,圆周上相应点y 值变化小于1。若点 是画圆像素点,则下一个像素点 只能是图 中的H或D中的一个。这两点离圆周 的距离平方差分别为:1yxdxdy11iixx),(iiyx),(11iiyx222)1(RyxdiiH222)1()1(iiDyxRd5.4.2 产生圆的整数产生圆的整数Bresenham算法算法图5-10 圆与像素格点的关系5.4.2 产生圆的整数产生圆的整数Bresenham算法算法v采用类似画线段
29、的Bresenham算法建立一个与误差有关的并且较方便计算的判算函数,它的正负值就可以决定取哪一点 作为下一个象素坐标 。v建立函数 若精确圆弧是图5-10中的,则 和 。此时若 ,则表示H点比D点离圆接 近,所以应选H点为 。而 时,则选D点 为 。v若精确圆弧是或,则 和 ,所以 ,应选择H点;v若精确圆弧是或,则 和 ,所以 ,应选择D点。),(11iiyxDHiddp0Hd0Dd0ip),(11iiyx0ip),(11iiyx0Hd0Dd0ip0Hd0Dd0ip5.4.2 产生圆的整数产生圆的整数Bresenham算法算法v利用 作判别函数,时,H点是下一个画圆像素点;当 时,D点是下
30、一个画圆像素点。v用i+1代替上式下标i得 的递推公式:ip0ip0ip1222)1(2222RyyxddpiiiDHiip64)(212211iiiiiiixyyyypp5.4.2 产生圆的整数产生圆的整数Bresenham算法算法v画圆始点()的判别函数 初始值为 。在接着的画圆过程中,若下一个像素选H点,将 和 代入 的递推公式;若下一个像素选D点,将 和 代入递推公式。因此算法可表示为:Ryx11,0ipRp23111iixxiiyy1ip11iixx11iiyyRp23111iixx0,64,0,10)(4,11111iiiiiiiiiiiiipxppyypyxppyy若若5.4.2
31、 产生圆的整数产生圆的整数Bresenham算法算法v圆的其他部分可以由这1/8的部分翻转镜像快速得到,但实际操作过程中还存在点的次序问题。相比显示学,在控制领域中(如绘图、切割)等需要一气呵成,往往要求按顺时针顺序依次画出每个点。v解决这类问题的方法有两个:(1)用RAM储存前1/8部分的坐标,然后储存通 过镜像对称求出接下来的1/8部分坐标,接着调整 顺序输出。剩下的6组1/8部分如法炮制。(2)按顺时针求出8组1/8圆每部分的Bresenham算法表达 式,依次切换使用。5.4.2 产生圆的整数产生圆的整数Bresenham算法算法v前者算法简单,只需要组Bresenham算法。而后者需
32、要8组,会占用更多的程序存储空间;但同时前者需要较大的RAM单元,尤其在计算高精度大半径的圆时,数据存储量会大的惊人,必然导致需扩充片外RAM,因此存在计算上限。后者运算出一组坐标 就输出一组,不需要保存,无论精度如何、半径如何都不存在扩充数据存储器的问题;再者,前者算法需要先算再执行,对于控制应用需要花时间等待运算完成才能开始绘图或切割,实时性差。后者的运算和控制运行是交叉进行的,工作连续,虽然这样并不比前者节省时间,但若在控制运行时的等待过程中用Bresenham运算代替,可以节省总时间。故此通常选择第二种算法。),(iiyx5.4.2 产生圆的整数产生圆的整数Bresenham算法算法图
33、5-11 象限编号和算法实现顺序 5.4.2 产生圆的整数产生圆的整数Bresenham算法算法v在此给出完整的8组1/8圆的算法表达式。象限顺序为顺时针,编号如图5-11所示。(段入口 的运算式)(y及 的迭代式)1222)1(2222Ryyxpiiii11iixx0,10)(4,10,64,1111iiiiiiiiiiiiipyxppyypxppyy若若1pip5.4.2 产生圆的整数产生圆的整数Bresenham算法算法v (段入口 的运算式)(x及 的迭代式)1222)1(2222Rxxypiiii1pip11iiyy0,64,0,10)(4,11111iiiiiiiiiiiiipyp
34、pxxpyxppxx若若5.4.2 产生圆的整数产生圆的整数Bresenham算法算法v v 1222)1(2222Rxxypiiii11iiyy0,10)(4,10,64,1111iiiiiiiiiiiiipyxppxxpyppxx若若1222)1(2222Ryyxpiiii11iixx0,64,0,10)(4,11111iiiiiiiiiiiiipxppyypyxppyy若若5.4.2 产生圆的整数产生圆的整数Bresenham算法算法v v 1222)1(2222Ryyxpiiii11iixx0,10)(4,10,64,1111iiiiiiiiiiiiipyxppyypxppyy若若12
35、22)1(2222Rxxypiiii11iiyy0,64,0,10)(4,11111iiiiiiiiiiiiipyppxxpyxppxx若若5.4.2 产生圆的整数产生圆的整数Bresenham算法算法v v 1222)1(2222Rxxypiiii11iiyy0,10)(4,10,64,1111iiiiiiiiiiiiipyxppxxpyppxx若若1222)1(2222Ryyxpiiii11iixx0,64,0,10)(4,11111iiiiiiiiiiiiipxppyypyxppyy若若画圆的Bresenham算法的c语言代码在附录中给出。5.5 其它控制算法其它控制算法 各种实际控制系
36、统中,常用的控制算法除了前面介绍的PID控制算法、大林控制算法和模糊控制算法及它们的改进算法,还有Smith预估控制法、分段拟和控制法、神经自适应算法、智能控制算法等等。对于某些复杂的控制过程,有时难以总结出较完整的经验,尤其当对象动态特性发生变化,或者受到随机干扰的影响时都会影响控制的效果。在实际控制过程中,常将模糊控制与PID控制、Smith预估控制、预测控制及神经网络等其他控制方法结合互补,使控制不断朝着自适应、自组织、自学习的方向发展。5.6 压缩算法压缩算法v按照编码失真程度数据压缩可以分为两个主要的分支:有损压缩和无损压缩。v无损压缩 (1).游程编码 (2).Huffman编码
37、(3).算术编码 (4).LZW编码v有损压缩 (1).PCM编码:PCM原理是由抽样、量化、编码三个步骤构成,功能是完成模数转换。这种编码方法原理简单、易于实现,且音质很好,几乎不存在失真,但每一个模拟量的采样都需要一个字节的存储空间,存储器的利用率低。(2).M增量编码增量编码:M增量编码只用一位码记录前后语音采样S(n)、S(n-1)的比较结果,若S(n)S(n-1),编为“1”码,反之编为“0”码,这样每个byte可以用一个bit来表示,压缩率达到8:1。这种技术可最大限度的加长存储时间,但噪声大,信号失真严重。(3).DPCM编码编码:DPCM编码是一种比较成熟的压缩编码方法,通过对
38、信号抽样值与信号预测值的差值进行量化编码,可以压缩数码率,提高存储空间利用率。DPCM编码的数学表达式如下。其中,表示当前采样值,表示增量的累加值,作为预测值,表示 与 的差分值,以四位存入RAM。8 ()(1)8)()()(1)(-8()(1)7)7 ()(1)7)S nA ne nS nA nS nA nS nA n()S n()A n(1)A n()e n()A n(1)A n(4).插值编码插值编码 如线性内插的方法,在每两相邻的一对样本值之间插入两样本值的算术平均值;抛物线拟合内插的方法,即用每三个相邻的样本值拟合出一个估计的样值。内插示意图如右图所示。5.7 软件滤波v软件滤波是通
39、过某种数值运算,达到改变输入信号中所含频率分量的相对比例、或滤除某些频率分量的目的。实验中往往会因为噪声、干扰、等诸多因素的影响,造成采集到的数据达不到预期效果,对数据的分析以及结果造成不利的影响。这个时候可以采用软件滤波的方法对采集到的数据进行处理,减小抖动偏差,使采集到的数据尽可能的准确。此外除了可使用(有源、无源)滤波器对信号或波形进行平滑处理外,还可以先将波形用A/D采集,然后使用软件滤波,最后通过D/A输出波形,同样可以起到对波形的平滑处理和消除毛刺等效果。v软件滤波的方法有很多种,下面介绍常用的几种。5.7.1 限幅滤波限幅滤波v限幅滤波又称为程序判断滤波,根据多次采集到的数据,如
40、果当前采集值与前一次采集的数值相差一般维持在一定的偏差内,则将每次采集到的数据和前一次的数据进行比较,如果他们的差的绝对值小于则本次采集到的数据有效,否则无效舍弃。v这种滤波方法能够克服偶然因素引入的脉冲干扰,也可以消除波形上的尖峰毛刺,但是不能抑制周期性的干扰,而且其对波形处理的平滑度较差,是一种最简单的基本滤波方法,程序设计也非常简单、运算速度快、占用RAM少。5.7.2 中值滤波中值滤波v将原来的采样间隔进行细分,也就是在原来的采样间隔内采样N次,然后把N次采样值按照大小排序,取中间值为本次采样值。v这种滤波方法能够有效的克服偶然因素引起的波动干扰,特别是对于像温度、液位等变化缓慢的被测
41、参数有良好的滤波效果,但是对于流量、速度或者其他快速变化的信号参数则不适合使用这种方法。中值滤波法的程序设计要稍复杂一些,排序可以使用冒泡法或者选择排序法等,由于引入了排序算法,所以该方法不能处理速度要求很高的信号。其运算处理速度和占用的RAM直接受所选择的数值N决定。5.7.3 算术平均滤波算术平均滤波 v该方法也是先将原来设计要求的采样间隔进行细分,在内采样N次,但是对于采集进来的数据不是进行排序,而是进行算术平均,算术平均的结果作为本次采样值。N值的选取比较关键,N值较大者处理信号的平滑度会较高,但是灵敏度降低;相反,N值较小者处理信号的灵敏度提高,但是平滑度降低。v这种滤波方法是适用于
42、对具有随机干扰的信号进行处理,并且被处理的信号必须具有一个平均值,信号在这个平均值上下波动。该方法对于高速信号并不适用。其运算处理速度和RAM的占用率也直接受所选择的数值N决定。5.7.4 递推平均滤波递推平均滤波 v递推平均滤波又称为滑动平均滤波,是将连续N个采样值设为一个先入先出的队列,队列的长度为N,每次采样得到的新数据加入队尾,并扔掉原队列的队首,然后对队列中的N个数据进行算术平均,获得的结果作为此次采样值。v这种方法对于周期性干扰有良好的抑制作用,平滑度也很高。但是灵敏度较低,对于偶然出现的脉冲干扰的抑制作用较差,不适用于脉冲干扰比较严重的场合,其运算处理速度和RAM的占用率也直接受
43、N值影响。5.7.5 中值平均滤波中值平均滤波 v中值平均滤波也称为防脉冲干扰平均滤波,相当于中值滤波和算术平均滤波思想的结合。连续采样N个数据,去掉其中的最大值和最小值,求剩下的N2个数据的算术平均作为一次采样值。v此法综合了两种滤波法的优点,可以有效抑制、消除脉冲干扰,但也只能用在速度比较慢的场合,不适合高速环境,运算处理速度和RAM占有率由N决定。5.7.6 限幅平均滤波限幅平均滤波 v顾名思义,限幅平均滤波就是将限幅滤波和递推平均滤波的思想结合起来,每次采样得到的数据先进行限幅处理,再送入队列进行递推平均滤波处理。v该法也是结合两种滤波法的优点,有效抑制偶然出现的脉冲干扰、可消除由此而
44、引起的采样偏差,但不适用于高速信号的处理,其运算处理和RAM的占用率直接受N值影响。5.7.7 一阶滞后滤波一阶滞后滤波 v取一个比例常数k(其中0k1),本次输出的结果k本次采样值(1k)前一次输出值,当前的输出值不仅受当前采样值的影响还受前次的输出值影响,影响的程度由k值决定。v该滤波方法适用于波动频率较高的场合,对于周期性干扰具有良好的抑制作用且运算量不大。但是该方法会造成相位滞后,滞后程度取决于k值,灵敏度低,并且不能消除频率高于采样频率一半的干扰信号。5.7.8 加权递推平均滤波加权递推平均滤波 v该方法是递推平均滤波的一种改进,在不同时刻采样进来的数据具有不同的权重。通常情况是距离
45、当前时刻越近的采样值的权重越大(特殊情况除外)。赋予刚刚采样得到的数据的权重越大,则灵敏度越高,但是信号的平滑度降低。v此法适用于有较大纯滞后时间常数的对象和采样周期短的情况。对于变化缓慢、采样周期长的情况,则不能迅速反映系统当前所受干扰的严重程度。该方法占用RAM较多。5.7.9 消抖滤波消抖滤波 v设置一个滤波计数器,将每次采样值与当前的有效值比较,如果采样值等于当前有效值,计数器清零;反之,计数器加一,并确判断滤波计数器是否达到设定的溢出上限。如果计数器溢出,将本次的值替换当前有效值,并清零计数器。v此法对变化缓慢的被测参数有较好的滤波效果,并可避免系统在临界值附近时显示器上数值的抖动和控制器的反复开关跳动。但此法不适用于快速变化的参数测量控制。5.7.10 限幅消抖滤波限幅消抖滤波 v限幅消抖滤波为限幅滤波和消抖滤波的结合:先进行限幅处理,再进行消抖滤波处理。v 此方法综合了限幅滤波和消抖滤波的优点,改进了消抖滤波中的一些不足,避免了将干扰值导入系统,但不适用于快速变化的参数。v基本的软件滤波方法如上所述,(数字滤波器也属于软件滤波,也有其应用的场合,但是消耗的资源会更大些,)这些软件滤波的方法适用场合不同,要根据不同的环境和被测参数的特征来选择不同的滤波方法,也可以几种方法混合使用,以达到抑制、消除干扰,平滑波形,消除抖动,稳定控制和输出结果的目的。