您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 计算机控制技术西电版第5章数据处理
第5章数据处理方法5.1查表技术5.2数字滤波技术5.3量程自动转换和标度变换5.4测量数据预处理技术第5章数据处理方法第5章数据处理方法在计算机控制系统中,模拟量信号经过输入过程通道转换成数字量送入计算机。这些数字量的输入方法和表示方式各不相同,有的参数只与单一的被测量相关,有的参数则与多个被测量相关,而且相互之间存在不同的线性或非线性的关系。此外,输入的数字量除了有用的信号,还往往携带有被控现场和过程通道中的各种干扰信号。因此,采样数据并不能直接用于运算、显示和控制,还必须对其进行加工和处理。本章主要介绍计算机控制系统中常用的几种数据处理方法,包括查表技术、数字滤波、量程自动转换和标度变换以及数据预处理技术。第5章数据处理方法5.1查表技术在工业过程控制系统中,有些参数的计算非常复杂,用公式计算不但程序很长,而且需要耗费大量的计算时间。还有一些非线性参数,它们的计算是涉及到指数、对数、三角函数以及积分、微分等运算,用公式计算程序设计比较复杂且很难实现。此外,有些参数甚至无法建立相应的数学模型,无法采用常规的方式进行计算。为了解决这些问题,可以考虑采用查表法。查表法主要包括顺序查表法、计算查表法和对分查表法。第5章数据处理方法5.1.1顺序查表法顺序查表法是针对无序排列表格的一种查询方法。因为无序表格中所有项的排列没有一定的规律,所以只能按照顺序从第一项开始逐项寻找,直至找到所要查找的关键字为止。顺序查表法对于无序表格或较短表格而言,是一种比较常用的方法。顺序查表法的步骤如下:(1)设定表格的起始地址。(2)设定表格的长度。(3)设定要搜索的关键字。(4)从表格的第一项开始,比较表格数据和关键字,进行数据搜索。第5章数据处理方法开始判断是关键字否?设定表格初始地址取下一数据设定表格长度设置查找成功标志检索完全部数据否?设置查找失败标志读第一数据读关键字取关键字在表中的地址返回否否是是顺序查表法程序流程图第5章数据处理方法【例5-1】在以TAB为首地址的ROM单元中,有一长度为100字节的无序表格。设待查关键字放在KEYWORD单元,试用软件进行查找。若找到则将关键字所在的内存单元地址存于R2R3寄存器中;未找到则将R2R3寄存器清零。由于待查找的表格是无序表格,所以只能逐单元地搜索。根据题意可画出程序流程图,如下图所示。第5章数据处理方法顺序查表法子程序流程图第5章数据处理方法结合图5.1所示的流程图,编写出能够完成上述任务的MCS-51汇编程序,如下:ORG8000HCHABIAO:MOVCHEACD,KEYWORD;送关键字MOVR4,#100;查找次数送R4MOVA,#18MOVDPTR,#TABLOOP:PUSHAMOVCA,@A+PC;取数据CJNEA,CHEACD,UNFIND;未找到,转UNFINDMOVR2,DPH;已找到,地址送R2R3MOVR3,DPLDONE:RET第5章数据处理方法UNFIND:POPAINCA;求下一数据地址INCDPTRDJNZR4,LOOP;R4≠0,继续查找MOVR2,#0MOVR3,#0TAB:DB;无序表格CHEACDEQU20HKEYWOREEQU21H第5章数据处理方法C语言程序:unsignedcharcodeTab[100];unsignedcharkeyword;unsignedcharsearch(){unsignedchari;for(i=0;i100;i++){if(keyword==Tab[i])break;}returni;}第5章数据处理方法5.1.2计算查表法计算查表法适用于数据按一定的规律排列,并且搜索内容和表格数据地址之间的关系能用公式表示的有序表格。这种有序表格要求各元素在表中排列的格式及所占用的空间必须一致,而且各元素是严格按顺序排列的。它适用于某些数值计算程序,如数码转换程序等。【例5-2】求函数y=x!的值,其中x=1,2,…,7。如果按照求阶乘的运算,必须做x次连乘,程序设计比较复杂。但若将函数值列制成表格就会发现,每一个x的值所对应的y值在表中的地址可以按照下面的公式进行计算。y地址=函数表的基地址+x×2!xy第5章数据处理方法表5-1自变量x,函数y及内存单元地址表xyy地址000Htab00Htab+1101Htab+200Htab+3202Htab+400Htab+5306Htab+600Htab+7418Htab+800Htab+9578Htab+A00Htab+B6D0Htab+C02Htab+D7B0Htab+E33Htab+F第5章数据处理方法设函数表的基地址为tab,自变量x存放在argument单元,查表求得的函数值y存放在result单元,则相应的计算查表法C51程序如下。#includereg51.hintcodetab[]={0x00,0x01,0x02,0x06,0x18,0x78,0x2d0,0x33b0};/*定义函数表*/intresult;intsearch(intargument){unsignedcharx;x=2*argument;/*计算*/result=tab[x];/*查表*/returnresult;}第5章数据处理方法5.1.3对分查表法在前面介绍的两种查表方法中,顺序查表法速度比较慢,计算查表法虽然速度很快,但对表格的要求比较严格,因而都有一定的局限性。在实际应用中,很多表格都比较长,且难以用计算查表法进行查找,但它们一般都能满足从大到小或从小到大的排列顺序,如热电偶的热电势(mV)-测量温度(℃)对照表,流量测量中的差压与流量对照表等。对于这样的表格,可以采用对分查表法,这是一种快速而有效的方法。第5章数据处理方法开始对分数关键字否?读检索关键字保存检索到的数据序号取对分数据设置数据起点、终点检索项序号=对分序号做起点2终点起点到检索范围边界否?是关键字否?对分序号做终点起点数据=关键字否?设置检索失败标志返回否否否否是是是是对分查表法程序流程图第5章数据处理方法在工业过程控制系统中,被控对象所处的环境通常存在着多种干扰源,使得控制系统的输入数据中均含有各种频率的干扰信号。对于高频的干扰信号,可以通过模拟RC滤波器进行滤除,而对于低频干扰信号,模拟RC滤波器的滤波效果较差。为了准确地进行数据测量和控制,通常采用数字滤波器对低频干扰信号进行滤波,以弥补RC滤波器的不足。数字滤波的实质是一种程序滤波,就是通过一定的计算程序,对多次采样信号构成的数据序列进行数学处理,提高有用信号在采样值中所占的比例,减小乃至消除各种干扰信号及噪声,以保证系统工作的可靠性。5.2数字滤波技术第5章数据处理方法数字滤波器与模拟滤波器相比,具有如下优点:(1)无需增加任何硬件设备,只要在程序进入数据处理和控制算法之前,附加一段数字滤波程序即可。(2)由于数字滤波器不需增加硬件设备,所以系统可靠性高,不存在阻抗匹配问题。(3)对于模拟滤波器,通常各通道是专用的,而对于数字滤波器来说,则可多通道共享,从而降低了成本。(4)可以对频率很低(如001Hz)的信号进行滤波,而模拟滤波器由于受电容容量的限制,频率不可能太低。(5)使用灵活、方便,可根据需要选择不同的滤波方法或改变滤波器的参数。第5章数据处理方法常用数字滤波方法:程序判断滤波中值滤波算术平均值滤波加权平均值滤波滑动平均值滤波RC低通数字滤波复合数字滤波第5章数据处理方法5.2.1程序判断滤波1.限幅滤波限幅滤波的做法是把两次相邻的采样值相减,求出增量(以绝对值表示),然后与两次采样允许的最大差值(由被控对象的实际情况决定)ΔY进行比较,若小于或等于ΔY,则取本次采样值;若大于ΔY,则仍取上次采样值作为本次采样值,即:|Y(k)-Y(k-1)|≤ΔY,则Y(k)=Y(k),取本次采样值|Y(k)-Y(k-1)|>ΔY,则Y(k)=Y(k-1),取上次采样值ΔY被称为门限值,是相邻两次采样值所允许的最大偏差,其大小取决于采样周期T及Y值的变化。第5章数据处理方法下面给出用C51编写的参考程序。/*A值可以根据实际情况调整,即ΔY是可以灵活调整的。value为上次采样的有效值,new_value为当前采样值滤波程序返回本次采样的有效值*/#includemath.h#defineA10//设置两次采样允许的最大偏差值charvalue;//上次采样后的有效值变量charfilter(){charnew_value;//本次采样值变量new_value=get_ad();//读入本次采样值if(cabs(new_value-value)A)//比较是否超出最大偏差值returnvalue;//如果超出,返回上次的有效值作为本次的有效值else{value=new_value;returnvalue;}//没有超出,返回本次的采样值作为本次的有效值}第5章数据处理方法限幅滤波主要用于变化比较缓慢的参数,如温度、物理位置等测量系统。具体应用时,关键的问题是最大允差ΔY的选取,ΔY太大,各种干扰信号将“乘虚而入”,使系统误差增大;ΔY太小,又会使某些有用信号被“拒之门外”,使计算机采样效率变低。因此,门限值ΔY的选取是非常重要的。通常可根据经验数据获得,必要时也可由实验得出。第5章数据处理方法2.限速滤波限幅滤波用两次采样值来决定采样结果,而限速滤波则最多可用3次采样值来决定采样结果。其方法是:当|Y(2)-Y(1)|ΔY时,不像限幅滤波那样,用Y(1)作为本次采样值,而是再采样一次,取得Y(3),然后根据|Y(3)-Y(2)|与ΔY的大小关系来决定本次采样值。限速滤波的思想用控制算式可以表示为:作为本次采样值则取时当作为本次采样值则时当继续采样取得保留时当作为本次采样值则时当2/32,233,233,2,122,12YYYYYYYYYYYYYYYYYY第5章数据处理方法限速滤波是一种折中的方法,既照顾了采样的实时性,又顾及了采样值变化的连续性。但这种方法也有明显的缺点:(1)ΔY的确定不够灵活,必须根据现场的情况不断更换新值;(2)不能反应采样点数N3时各采样数值受干扰的情况。因此,它的应用受到一定的限制。实际使用时,一般用取代ΔY,这样可基本保持限速滤波的特性,虽然增加了一步运算,但灵活性有所提高。2)2()3()1()2(YYYY第5章数据处理方法限速滤波程序流程图第5章数据处理方法C语言程序:#includemath.hunsignedcharY1,Y2,Y3,DY,a,b,c;unsignedcharFilter(){a=cabs(Y1-Y2);b=cabs(Y2-Y3);c=(Y2+Y3)1;DY=(a+b)1;if(a=DY){returnY2;}elseif(b=DY){returnY3;}elsereturnc;}说明:返回值同时也可作为Y1,以便下一次滤波计算使用。第5章数据处理方法在keil中printf默认是向串口中发送数据的,所以如果要应用该函数,必须先初始化串口,否则可能引起死机的情况。第5章数据处理方法5.2.2中值滤波所谓中值滤波是对某一参数连续采样N次(一般N取奇数),然后把N次的采样值从小到大(或从大到小)排队,再取中间值作为本次采样值。中值滤波对于去掉偶然因素引起的波动或采样器不稳定造成的误差所引起的脉动干扰比较有效。其实现方法是:(1)连续采样N次(N取奇数);(2)把N次采样值按大小排列;(3)取中间值为本次有效值。这种方法能有效克服因偶然因素引起的波动干扰,对温度、液位变化缓慢的被控参数有良好的滤波效果;缺点是对流量、速度等快速变化的参数不宜使用。第5章数据处理方法下面给出用C51编写的中值滤波法参考程序。/*N值可根据实际情况调整排序采用冒泡法*/#defineN11//设置连续采样的次数charfilter(){charvalue_buf[N];//缓存N次采样
本文标题:计算机控制技术西电版第5章数据处理
链接地址:https://www.777doc.com/doc-2043077 .html