1、第2章 智能仪器典型处理功能及实现方法,2.1 智能仪器故障的自检 2.2 自动测量功能 2.3 测量误差及典型的误差处理方法 2.4 数字滤波 思考题与习题,2.1 智能仪器故障的自检,2.1.1 自检方式的种类及特点1) 开机自检开机自检是在仪器电源接通或复位之后进行的,主要检查显示器、仪器的接插件、ROM、RAM等。自检中如果没发现问题, 就显示仪器一切正常的特征字符或直接进入测量程序;如果发现问题,则及时报警并显示故障代码,以提醒用户并避免仪器带病工作;当故障严重时,也可以停机待修。开机自检是对仪器正式投入运行之前所进行的全面检查,完成开机自检后, 系统在以后的运行中不再进行这一过程。
2、,2) 周期性自检系统仅在开机时进行一次性的自检,并不能保证在以后的工作过程中仪器不会出现故障。为了使仪器一直处于良好的工作状态,可以采用周期性自检的方式。周期性自检是将仪器的自检分成若干项,程序设计时安排在仪器的每次(或几次)测量间隙插入一项自检操作。这样,经过多次测量之后便可完成仪器的全部自检项目,周而复始。由于这种自检是自动进行的且不影响仪器的正常工作,因此通常不为操作人员所觉察(除非发生故障而告警)。,3) 键控自检除了上述两种自检外,还可以在仪器的面板上设置“自检”按键,即当用户对仪器的可信度产生怀疑时,可通过按下该键来启动一次自检程序,微处理器根据按键译码后转到相应的自检程序执行自
3、检操作,这就是键控自检。键控自检是一种人工干预的检测方式。 在上述几种不同方式的自检过程中,如果发现仪器出现某种故障,仪器自身通常会以适当的形式发出指示。智能仪器一般都通过其面板上的显示器,以文字或数字的形式显示出错代码。出错代码通常以“Error X”字样表示, 并常常用发光二极管伴以闪烁信号,以引起注意。其中“X”为故障代号,操作人员根据出错代码,通过查阅仪器使用手册便可确定故障内容以及故障处理的方法。 ,2.1.2 自检的方法1. ROM或EPROM的检测由于智能仪器中的ROM或EPROM是用来存放仪器的控制程序的,是不允许出故障的,因而对ROM或EPROM的检测是至关重要的。ROM或E
4、PROM故障的检测一般采用“校验和”的方法,其具体的做法是:在将仪器程序机器码写入ROM或EPROM的时候,保留一个单元(一般是最后一个单元)。此单元不是用于写程序代码,而是用于写入“校验字”。“校验字”应能满足ROM或EPROM中所有单元的每一列都具有奇数个“1”。自检程序的内容是: 对每一列数进行异或运算,如果ROM或EPROM无故障,各列的运算结果应都为“1”,即校验和等于FFH。这种算法见表21所示。 表中ROM地址的前7个(06)单元是程序代码,最后一个单元内容为对应于上面程序的奇数校验字01001110(使ROM中的每一列的“1”为奇数个)。这样,ROM的校验和为11111111,
5、即FFH。 ,表2-1 校验和算法示意,2. RAM的检测数据存储器RAM是否正常是通过检验其“读写功能”的有效性来体现的。通常可选用特征字55H(01010101B)和AAH(10101010B),分别对RAM的每一个单元进行“先写后读”的操作, 其自检的流程图如图2-1所示。,图2-1 RAM自检流程图,基本方法是:先将55H(或AAH)写入RAM的一个单元,然后从该单元中读取数据,并与55H(或AAH)相比较。若不相符, 则显示出错并给出出错单元地址;若相符,则再写入AAH(或55H),然后从该单元中读取数据,并与AAH(或55H) 相比较。 若不相符,则显示出错并给出出错单元地址;若相
6、符,则修改地址指针,用同样的方式对下一个单元进行“读写”检测。依此类推,直到最后一个单元检测完毕即可结束。,3. 总线的自检大多数智能仪器中的微处理器总线都是经过缓冲器再与各I/O器件和插件等相连接的,这样即使缓冲器以外的总线出了故障,也能维持微处理器的正常工作。这里所谓的总线自检, 是指对经过缓冲器的总线进行检测。由于总线没有记忆能力, 因此总线自检中设置了两组锁存触发器,用于分别记忆地址总线和数据总线上的信息。这样,只要执行一条对存储器或I/O设备的写操作指令,地址线和数据线上的信息便能分别锁存到这两组触发器(地址锁存触发器和数据锁存触发器)中。我们通过对这两组锁存触发器分别进行读操作,将
7、地址总线和数据总线上的信息与原有的输出信息进行比较,便可判知总线是否存在故障。具体实现的电路原理图见图2-2。,图 2-2 总线检测电路原理图,4. 显示器与键盘的检测智能仪器的显示器、键盘等I/O设备的检测往往采用与操作者合作的方式进行。检测程序的内容为:先进行一系列预定的I/O操作,然后操作者对这些I/O操作的结果进行检验。如果检验的结果与预先的设定(或设想)一致,就认为功能正常; 否则, 应对有关的I/O通道进行检修。 键盘检测的方法是,CPU每取得一个按键闭合的信号就反馈一个信息。如果按下某单个按键无反馈信息,往往是该键接触不良;如果按下某一排键均无反馈信号,则有可能与对应的电路或扫描
8、信号有关。,显示器的检测一般有两种方式:一种是让各个显示器的所有发光段全部发亮,即显示出“888”。当显示的内容表明显示器各发光段均能正常发光时,操作人员只要按任意键,显示器应全部熄灭片刻,然后脱离自检方式进入其他操作。 第二种方式是让显示器显示某些特征字, 若正常,则几秒钟后自动进入其他操作。,5. 输入输出通道的自诊断1) 数据采集通道的自诊断智能仪器的数据采集通道一般是由A/D转换器和多路开关构成的。自诊断时,系统占用多路模拟开关的一个通道,接一个已知的标准电压,使系统对该已知电压进行A/D转换。若转换结果与预定值相符,则认为数据采集通道正常;若有少许偏差, 则说明数据采集通道发生漂移;
9、若偏差过大,则判断为故障。 其自诊断原理电路如图2-3所示。,图 2-3 输入输出通道自诊断原理电路图,2) 模拟量输出通道的自诊断智能仪器的模拟量输出通道的自诊断一般由D/A完成。模拟量输出通道自诊断的目的是为了确保模拟输出量的准确性, 而要判断模拟量是否准确又必须将该输出转换为数字量,这样, CPU才能进行判断。因此,模拟量输出通道的自诊断离不开数据采集环节。图2-3是一种借助于多路数据采集通道对D/A进行自诊断的方案。适当调整电位器RW分压比,使D/A、A/D 的环节增益为1,即可达到满意的诊断效果。D/A自诊断的前提是数据采集通道工作正常。,6. 接插件的自检 1) 检查插件是否插入利
10、用系统内单片机与插件之间的应答信号出现与否来判断插件是否已经插入,这项自检比较简单,可以在主程序或子程序里加入相应的插件检查语句。一旦发现问题,系统会自动发出停机指令, 等待操作者处理。,2) 检查插件工作状态是否正常这项自检较为复杂,常常采取模拟方法进行。实际系统中要运用故障诊断学理论,并配备专用的设备和诊断程序。 实际的智能仪器系统种类很多,需要解决的自检项目也各不相同,在此不可能一一列举。读者可根据具体情况进行选择, 也可以参考有关的书籍。,2.1.3 自检软件的结构及特点智能仪器的自检都是通过执行相应的软件实现的,上面介绍的各种自检项目一般应分别编制成相应的子程序,以便需要时调用。 设
11、各段子程序的入口地址为TSTi(i=0,1,2, , n),序号(即故障代码)为TNUM(0,1,2, )。编程时, 由序号通过表2-2所示的测试项目表(TSTPT)来寻找某一项自检子程序入口,若检测有故障发生,便显示其故障代码TNUM。 周期性自检是在测量间隙进行的,为了不影响仪器的正常工作, 有些自检项目不宜安排在周期性自检项目中,例如显示器周期性自检、键盘周期性自检、破坏性RAM周期性自检等。而开机自检和键盘自检则不存在这个问题。,表2-2 测 试 项 目 表,图2-4 含自检的智能仪器操作流程图,一个典型的含有自检在内的智能仪器的操作流程图如图2-4所示。其中,开机自检被安排在仪器初始
12、化之前进行,检测项目应尽量多选。周期性自检STEST被安排在两次测量循环之间进行,由于两次测量循环之间的时间间隙有限,因此一般每次只插入一项自检内容,多次测量之后才能完成仪器的全部自检项目。可以完成周期性自检子程序的操作流程图如图2-5所示。当进入STEST自检程序后,根据偏移量(自检序列号)TNUM和测试表格首地址TSTPT找到自检子程序TSTi,并进入该项自检操作。程序中设置故障标志Tfi,当检测出有故障时,将其置“1”,并同时显示故障代码; 否则置“0”。无论故障发生与否,每进行一项自检,就使TNUM加1,以便在下一次测量间隙中进行下一项自检,直到所有项目检测完毕,将TNUM清零。,图
13、2-5 周期性自检子程序的操作流程图,2.2 自动测量功能,2.2.1自动零点调整测试仪器零点漂移的大小以及零点是否稳定是造成测量误差的主要原因之一。智能仪器与常规仪器一样,由于传感器、 测量电路、 信号放大器等输入通道不可避免地存在着温度漂移、 时间漂移等情况,从而给仪器引入了零位误差,这类误差通常属于系统误差。消除这种误差最常用的方法是选择优质的输入放大器和A/D转换器, 但是这种方法的代价高,而且效果也是有限的。因此,要想通过硬件来确保零点稳定是非常困难的, 尤其是在环境温度变化较大的场合就更不容易做到了。然而, 智能仪器的自动零点调整功能却可以较好地解决这一问题。,图2-6是一种采用单
14、片机控制的自动零点调整的电路原理框图。首先,单片机依据系统软件,通过输出端口控制继电器吸合,使仪器的输入端K接地,启动一次测量并将测量值Uos存入智能仪器RAM中的某一指定单元内。这个Uos值即为仪器的传感器、放大器、A/D转换器等输入通道所产生的零点漂移值。接着, 单片机控制继电器释放,使输入端K接至被测电压Ui,此时单片机从A/D转换器的输出端测得的Uo值实际上是被测值Ui与输入通道零点漂移值Uos之和。因此,精确的被测值Ui应根据下式得到:,Ui = Uo-Uos,(21),图 2-6 自动零点调整的电路原理框图,2.2.2 自动量程转换通常,当测试仪器的测量范围很宽,而传感器、显示器或
15、其他数字部件的分辨率有限时,为了获得较高的测量精度,要求仪器具有自动量程转换的功能。 智能仪器中自动量程转换的方法主要有以下两种: (1) 根据被测量的大小,仪器自动切换到不同量程的传感器上运行; (2) 在传感器与单片机的接口电路中引入可编程增益放大器,通过自动改变放大器的增益达到量程切换的目的。,图2-7是不同量程传感器切换的原理框图。图中仅以两个(也可以是多个)不同量程的传感器为例,说明其工作原理。 假设1传感器的最大测量范围为M1,2传感器的最大测量范围为M2,且M1M2。两个传感器的工作均由单片机控制,程序设计为:仪器启动后总是1传感器先接入工作,2传感器处于过载保护状态,以免因过载
16、而损坏2传感器。然后根据被测量的大小,确定由哪一个传感器工作。图2-8为不同量程传感器自动切换的程序流程图。由流程图可见,哪一个传感器处于正常工作状态是根据标志位F0的状态来判别的。若F0=0,则1传感器正常工作,单片机调用相应的1传感器处理和显示程序; 若F0=1,则2传感器正常工作,单片机调用2传感器处理和显示程序。,图 2-7 不同量程传感器切换的原理框图,图 2-8 不同量程传感器自动切换的程序流程图,程控放大器量程切换的原理框图如图2-9所示,单片机根据所测信号幅值的大小,控制改变放大器的增益。对幅值小的信号采用大增益,对幅值大的信号改用小增益,使A/D转换器信号满量程达到均一化。,
17、图2-9 程控放大器量程切换的原理框图,表2-3 程控放大器的8种增益,2.2.3 自动校准通常,为了保证仪器测量精度的可靠性和合法性,必须对仪器进行定期校准。传统的仪器校准是通过对已知标准校准源直接测量,或通过与更高精度的同类仪器进行比较测量来实现的。这种校准过程必须由专业人员操作,仪器校准后, 有时还需要根据检定部门给出的误差修正表来对测量结果进行修正, 使用起来非常麻烦。,大多数智能仪器都为用户提供了一种极为方便的自动校准方式。当需自动校准时,操作者只要按下自动校准的按键,仪器的显示屏便提示操作者应输入的标准电压。操作者按提示要求将相应的标准电压加到输入端后,再按一次自校键,仪器就进行一
18、次测量并将标准量(或标准系数)存入到“校准量存储器”中。然后,显示器提示下一个要求输入的标准电压值,再重复上述测量与存储过程。当对预定的校正测量完成之后,校准程序还能自动计算每两个校准点之间的插值公式的系数,并把这些系数也存入“校准量存储器”中。这时,就在智能仪器的内部存储了一张校准表和一张内插公式的系数表。在正常测量应用时, 这两张表将同测量结果一起形成经过修正的准确测量值, 这种方法又称为“校准存储器法”。仪器中的校准存储器一般采用电可擦除只读存储器(EEPROM)或由电池供电的非易失性RAM,以确保仪器断电后数据不会丢失。,2.3.1 测量误差的表示及误差的分类1. 测量误差的表示方法1
19、) 绝对误差由测量所得到的被测量的值x与其真值A0之差称为绝对误差, 用x表示,即,x = x - A0,(2-2),因为测量结果x总含有误差,可能大于A0,也可能小于A0,所以,x是既有大小,又有正负且有单位的数值,其大小和符号分别表示测量结果偏离真值的程度和方向。,2.3 测量误差及典型的误差处理方法,注意:式(2-2)中,A0表示真值。真值是一个理想的概念,一般来说是无法精确得到的,而在实际应用中通常是用实际值A来代替真值A0。实际值又称为约定真值,它是根据测量误差的要求,使用高一级或几级的标准仪器或计量器具测量所得之值, 这时,式(22)可改写为,x = x - A,(2-3),这是绝
20、对误差通常使用的表达式。,另外,与绝对误差的绝对值大小相等而符号相反的值称为修正值,用C表示:,C = -x = A - x,(2-4),对仪器进行定期检定(校准)时,用标准仪器与受检仪器相对比,获得修正值,并将修正值以表格、 曲线或公式的形式给出。这样,在测量时,利用测量的结果与已知的修正值相加, 即可得到被测量的实际值, 即,A = x + C,(2-5),例1-1 一只量程为10 V的电压表,当用它进行测量时, 测量指示值为7.5 V。若检定时,7.5 V刻度处的修正值为-0.1 V,求被测电压的实际值U。,解,U = 7.5+(-0.1)= 7.4 V,2) 相对误差绝对误差虽然可以说
21、明测量结果偏离实际值的情况,但不能确切反映测量的精确程度。例如,分别测量两个频率,其中一个频率为f1=1000 Hz,其绝对误差f1=1 Hz;另一个频率为f2 =1 000 000 Hz,其绝对误差f2=10 Hz。尽管f2的绝对误差f2大于f1的绝对误差f1,但我们并不能因此而得出f1的测量较f2精确的结论。 恰恰相反,f1的测量误差对f1 =1000 Hz来讲占0.1%,而f2的测量误差仅仅占f2 =1 000 000 Hz的0.001%。为了弥补绝对误差的不足, 引入相对误差的概念。,绝对误差与被测量真值的比值用百分数来表示,称为相对误差,用表示,即,(2-6),相对误差没有量纲,只有
22、大小及符号。由于真值在实际测量中是难以得到的,因此通常用实际值A代替真值A0来表示相对误差,用A来表示:,(2-7),A称为实际相对误差。,在误差较小、要求不高的场合,也可用测量值x代替实际值A,由此得出示值相对误差,用x来表示:,(2-8),在测量仪器中,经常用绝对误差与仪器满刻度值xm之比来表示相对误差,称为引用相对误差(或称满度相对误差),用n表示:,(2-9),式中: xm仪器在该量程范围内出现的最大绝对误差; xm满刻度值; nm仪器在工作条件下的最大引用误差。,2. 误差的分类1) 随机误差 在相同条件下进行多次测量,而每次测量结果都会出现无规律的随机变化的误差,这种误差称其为随机
23、误差或偶然误差。 根据研究发现,当测量次数足够多时,随机误差服从一定的统计规律,且具有单峰性、有界性、对称性和相消性等特点。 随机误差反映了测量结果的精确度。 随机误差越小, 测量精确度越高。,2) 系统误差在一定的条件下,测量误差的数值(大小及符号)保持恒定或按照一定的规律变化的误差称为系统误差。恒定不变的误差称为恒定系统误差,例如,在校验仪器时,标准表存在的固有误差、仪器的基准误差等。按一定规律变化的误差称为变化系统误差,例如,由仪器的零点漂移、放大倍数的漂移以及热电偶冷端随室温变化而引入的误差等。 系统误差决定了测量的准确度。 系统误差越小, 测量结果越准确。 可见,系统误差和随机误差都
24、对测量结果起着决定性的作用。因此,要使测量的准确度高,两者的值都要很小才行。,3) 粗大误差粗大误差是指在一定的条件下,测量值明显地偏离实际值时所对应的误差,简称为粗差。 粗大误差是由读数错误、记录错误、操作不正确、测量中的失误以及存在不被允许的干扰等原因造成的,所以,粗大误差又称为疏失误差。 粗大误差明显地歪曲了测量结果,就其数值而言,它远远大于随机误差和系统误差。 显然,要提高测量精度,对于上述三类误差都应采取适当的措施进行防范和处理,以减少或消除这些误差对测量结果的影响。智能仪器的主要优点之一就是可以利用微处理器的数据处理能力减小测量误差,达到提高仪器测量精度的目的。,2.3.2 随机误
25、差的处理方法随机误差通常是由于仪器在测量过程中的一系列互不相关的独立因素,如外界电磁场的变化、温度的变化、空气的扰动、 大地的微震以及随机干扰信号对测量值的综合影响所造成的。相对于一次测量而言,随机误差是没有一定规律的。如上所述,当测量次数足够多时,测量结果中的随机误差服从一定的统计规律,而且大多数按正态分布。因此,消除随机误差最为常用的方法是取多次测量结果的算术平均值, 即,(2-11),此外,智能仪器还可以根据测量的实际情况自动变动N值,达到既可减小随机误差的影响,又能适当地提高测量速度的目的。例如,某种具有自动量程转换功能的智能电压表,可根据被测电压的大小,自动选择由小到大的6挡量程(编
26、号分别为1, 2,6)。当工作于最低挡即第1挡量程时,被测信号很弱, 随机误差的影响相对最大,因而这时测量次数就应多取一些(N取大一点,如:取N=10);在第2挡时,同样的随机误差影响相对小一些,这时可取N=6; 同理,在第3挡时,取N=4;在第4挡时,取N =2;在第5挡和第6挡时,只作单次测量处理, 故取N=1。其操作流程如图2-10所示。,图 2-10 自动量程转换及求平均值的流程图,这种智能电压表的自动量程转换与求平均值工作的过程是:系统运行前将量程预置为最高(Q=6), 然后进行测量并判断测量值是否为欠量程。 如果为欠量程,则判断这时的Q是否为1,若不为1,则降低一挡量程(即Q=Q-
27、1),再重复上述测量、判断过程,直到不是欠量程或Q=1时为止;若Q为1,则取N=10并进行平均值计算。 如果不是欠量程,则判断是否为超量程。 如果是超量程,则判断此时Q是否等于6。若此时Q=6, 则作过载显示;若Q不等于6,则升高一挡量程(即Q=Q+1),再重复上述测量、判断过程,直到不是超量程为止,然后判断此时的Q等于多少。根据Q的值可选取N等于10、6、4、2或者1,最后再计算其平均值。通过上述自动量程转换的过程, 我们可以看出系统最终选择了最合适的量程,然后根据量程的大小再选取适当的N值求取平均值,显然提高了仪表的测量精度。,2.3.3 系统误差的处理方法1. 利用误差模型修正系统误差一
28、般通过分析建立系统的误差模型,再由误差模型求出误差修正公式。误差修正公式通常含有若干个误差因子,修正时, 可先通过校正技术把这些误差因子求出来,然后利用修正公式来修正测量结果,从而可以削弱系统误差的影响。 然而,不同的仪器或系统其误差模型的建立方法也不一样, 没有统一方法可循。这里仅举一个典型的实例进行分析、讨论。,图 2-11 误差模型和校正电路图 (a) 误差模型; (b) 校正电路,图中的x是输入电压(被测量),y是带有误差的输出电压(测量结果),是影响量(例如零点漂移或干扰),i是偏差量(例如直流放大器的偏置电流), k是影响特性(例如放大器增益变化)。从输出端引一反馈量到输入端以改善
29、系统的稳定性。 在无误差的理想情况下,有=0,i=0,k=1,于是存在关系y=x。 在有误差的情况下,则有,(2-12),(2-13),由此可以推出,可改写成下列简明形式:,x = b1y + b0,(2-14),其中,,误差因子的求取是通过校正技术来完成的,误差修正公式(2-14)中含有两个误差因子b0和b1,因而需要做两次校正。 假设建立的校正电路如图2-11(b)所示,图中E为标准电池, 则具体校正步骤如下: 1) 零点校正先令输入端短路,即S1闭合,此时有x=0,于是得到输出为y0。按照式(2-14)可得方程如下:,0 = b1y0 + b0,2) 增益校正再令输入端接上标准电压,即S
30、2闭合(S1、S3断开),此时有x=E,于是得到输出为y1。同样可得方程如下:,E = b1y1 + b0,联立求解上述两个方程, 即可求得误差因子为,3) 实际测量 最后,令S3闭合(S1、S2断开),此时得到输出为y(结果)。于是,由上述已求出的误差因子b0和b1可获得被测量的真值为,智能仪器的每一次测量过程均按上述三步来进行。由于上述过程是自动进行的,且每次测量过程很快,因此,即使各误差因子随时间有缓慢的变化, 也可消除其影响,实现近似于实时的误差修正。,2. 利用校正数据表修正系统误差如果对系统误差的来源及仪器的工作原理缺乏充分的认识而不能建立误差模型,则可以通过建立校正数据表的方法来
31、修正系统误差。 具体步骤如下: (1) 在仪器的输入端逐次加入一个个已知的标准电压x1, x2,xn,并实测出对应的测量结果y1,y2,yn。 (2) 如果将实测的yi(i=1,2,n)值对应于存储器中的某一区域,yi作为存储器中的一个地址,再把对应的xi值存入其中,这就在存储器中建立了一张校准数据表。,(3) 实际测量时,令微处理器根据实测的yi去访问内存, 读出其中的xi, xi即为经过修正的测量值。 (4) 若实际测量的y值介于某两个标准点yi和yi+1之间, 为了减少误差,还要在查表的基础上作内插计算来进行修正。 采用内插技术可以减少校准点, 从而减少内存空间。最简单的内插是线性内插,
32、当yiyyi+1 时,取,由于这种内插方法是用两点间一条直线来代替原曲线的,因而精度有限。如果要求更高的精度,可以采取增加校准点的方法,或者采取更精确的内插方法,例如n阶多项式内插、三角内插、 牛顿内插等。,3. 通过曲线拟合来修正系统误差,1) 连续函数拟合法连续函数一般采用多项式来进行拟合(当然也不排除采用解析函数,如ex、lnx和三角函数等),多项式的阶数应根据仪器所允许的误差来确定。一般情况下,拟合多项式的阶数愈高, 逼近的精度也就愈高。但阶数的增高将使计算繁冗,运算时间也迅速增加,因此,拟合多项式的阶数一般采用二阶或三阶。 现在以热电偶的电势与温度之间的关系式为例, 讨论连续函数拟合
33、的方法。,热电偶的温度与输出热电势之间的关系一般可用下列三阶多项式来逼近:,R = a+bx -p+cx +2 -p+dx3p,(2-15),将式(2-15)变换成嵌套形式得,R =(dxp+c)xp+bxp+a,(2-16),式中,R是读数(温度值),xp由下式导出:,xp= x+a+bT0+cT 20,(2-17),2) 分段曲线拟合法分段曲线拟合法,即把非线性曲线的整个区间划分成若干段,将每一段用直线或抛物线去逼近。只要分点足够多,就完全可以满足精度要求,从而回避了高阶运算,使问题化繁为简。 分段基点的选取可按实际情况决定,既可采用等距分段法, 也可采用非等距分段法。非等距分段法是根据函
34、数曲线形状的变化来确定插值之间的距离的。非等距插值基点的选取比较麻烦, 但在相等精度条件下,非等距插值基点的数目将小于等距插值基点的数目,从而节省了内存,减少了仪器的硬件投入。,(1) 分段直线拟合法。 分段直线拟合法是用一条折线来代替原来实际的曲线, 这是一种最简单的分段拟合方法。 设某传感器的输入输出特性如图2-12所示。图中,x是测量数据,y是实际被测变量,分三段直线来逼近该传感器的非线性曲线。由于曲线低端比高端陡峭,因此采用不等距分段法。,图2-12 分段直线拟合,由此可写出各段的线性插值公式为,图2-13 分段直线拟合程序流程图,(2) 分段抛物线拟合法。 若输入输出特性曲线很弯曲,
35、而测量精度又要求比较高, 可考虑采用多段抛物线来分段进行拟合。 图2-14所示的曲线可以把它划分成、 四段, 每一段都分别用一个二阶抛物线方程 y=a -ix +2+b -ix+c -i(i=1,2,3,4)来描绘。其中, 抛物线方程的系数ai , bi , ci可以通过下述方法获得:,图2-14 分段抛物线拟合,每一段找出三个,即点xi-1 ,xi1和xi(含两分段点),例如在线段中找出x0、x11、x1及对应的y0 , y11 , y1, 在线段中找出x 1 , x21 , x2点及对应的y值y1 , y21、y2等。 然后解下列联立方程:,求出的系数ai ,bi,ci与x0,x1,x2,
36、x3,x4值一起存放在指定的ROM中。进行校正时,先根据测量值x的大小找到所在分段,再从存储器中取出对应段的系数ai,bi,ci,最后运用公式y=aix2+bix+ci去进行计算就可得到y值。 具体流程如图2-15所示。,图 2-15 分段抛物线拟合程序流程图,2.3.4 粗大误差的处理方法粗大误差是指在一定的测量条件下,测量值明显地偏离实际值所形成的误差。粗大误差明显地歪曲了测量结果,应予以剔除。由于粗大误差的产生带有偶然性,因此不能采用上述方法加以克服。实际应用中,在测量次数比较多时(N20), 测量结果中的粗大误差宜采用莱特准则判断;若测量次数不够多时,宜采用格拉布斯准则判断。当对仪器的
37、系统误差采取了有效技术措施后,对于测量过程中所引起的随机误差和粗大误差, 一般可按下列步骤处理:,(1) 求测量数据的算术平均值:,(2) 求各项的剩余误差:,(3) 求标准偏差:,(4) 判断粗大误差(坏值): 可运用公式|vi|Gi进行判断,其中G为系数。 在测量数据为正态分布的情况下,如果测量次数足够多, 习惯上采用莱特准则判断,取G=3;如果测量次数不够多,宜采用格拉布斯准则判断,系数G需要通过查表求出。 对于非正态分布的测量数据,应根据具体分布形状来确定剔除异常数据的界限。,(5) 如果判断存在粗大误差,给予剔除,然后重复步骤(1)(4)(每次只允许剔除其中最大的一个);如果判断不存
38、在粗大误差,则当前算术平均值、各项剩余误差及标准偏差估计值分别为,(2-19),(2-20),(2-21),式中a为坏值个数。,在上述测量数据的处理过程中,为了削弱随机误差的影响,提高测量结果的可靠性,应尽量增加测量次数,即增大样品的容量。但随着测量数据的增加,人工计算就显得相当繁琐和困难。若在智能仪器软件中安排一段程序,便可在测量进行的同时也能对测量数据进行处理。图2-16给出了实现上述功能的程序流程图图。,图2-16 数据处理程序流程图,2.4 数字滤波,2.4.1中值滤波法所谓中值滤波法,是指对被测参数连续采样N次(N一般选为奇数),然后将这些采样值进行排序并选取中间值。 中值滤波能有效
39、地克服偶然因素引起的波动或采样器不稳定引起的误码等造成的脉冲干扰,并且采样次数N越大,滤波效果越好, 但采样次数N太大则会影响仪器的测试速度,所以N一般取3或5。 对于变化很慢的参数,有时也可增加次数,例如15次;对于变化较为剧烈的参数,此法不宜采用。,中值滤波程序主要由数据排列和取中间值两部分组成。 数据排列可采用几种常规的排序方法,如冒泡法、沉底法等。 下面给出的中值滤波程序采样次数N选为3,三次采样后的数据分别存放在寄存器R2、R3和R4中。程序执行完以后,中值存放在R3中。,FLT10: MOV A, R2 ;R2R3,交换XCH A, R3MOV R2, A,FLT11: MOV A
40、, R3 ;R3R4, 交换XCH A, R3XCH A, R4 ;R3R2?CLR CSUBB A, R2JNC FLT12 ;R3R2, 结束MOV A, R2 ;R3R2, R2为中值MOV R3, A ;中值送入R3 FLT12: RET,2.4.2 平均滤波法,1. 去极值平均滤波法 算术平均滤波对抑制随机干扰效果比较好,而对脉冲干扰的抑制能力较弱,明显的脉冲干扰会使平均值远离实际值。 但中值滤波对脉冲干扰的抑制非常有效,因而可以将两者结合起来形成去极值平均值滤波。去极值平均值滤波的算法是: 连续采样N次,去掉一个最大值,再去掉一个最小值,求余下N-2个采样值的平均值。根据上述思想可
41、做出去极值平均滤波程序的流程图, 如图2-17所示。,图2-17 去极值平均滤波程序的流程图,2. 递推平均滤波法 上述的去极值平均滤波法需要连续采样若干次后,才能进行运算而获得一个有效的数据,因而速度较慢。当系统要求数据计算速度较高时,该方法便无法使用。例如,某A/D转换芯片的转换速率为10次/s,当系统要求每秒输入4次数据时,则N取值就不能大于2。为了克服这一缺点,可采用递推平均滤波方法。该方法是先在RAM中建立一个数据缓冲区,依顺序存放N次采样数据(即把N个测量数据看成一个队列, 队列的长度固定为N)。然后每采进一个新的数据,就将新数据存入队尾, 同时将缓冲区中最早采集(队首)的一个数据
42、去掉。 最后,(2-22),图2-18 递推平均滤波方法流程图,程序清单如下: FLT30: ACALL INPUTA ;采样值放在A中MOV R0, A ;排入队尾INC R0 ;调整队尾指针 MOV A, R0ANL A, 4FHMOV R0, A ;建新队尾指针MOV R1, 40H ;初始化MOV R2, 00HMOV R3, 00H,FLT31: MOV A, R1 ;取一个采样值ADD A, R3 ;累加到R2、 R3中MOV R3, ACLR A ;ADDC A, R2MOV R2, AINC R1CJNE R1, 50H, FLT31 ;累计完16次 FLT32: SWAP A
43、 ;(R2, R3)/16XCH A, R3SWAP AADD A, 80H ;四舍五入ANL A, 0FHADDC A, R3RET ;结果在A中,递推平均滤波法对周期性干扰有良好的抑制作用,平滑度高,灵敏度低;但对偶然出现的脉冲性干扰的抑制作用差, 不易消除由于脉冲性干扰引起的采样值偏差。因此,它不适用于脉冲干扰比较严重的场合,而适用于高频震荡的系统。 通过观察不同N值下递推平均的输出响应来选取N值,既能少占用计算机时间,又能达到最好的滤波效果。 可以看出,递推平均滤波法与算术平均滤波法在数学处理上是完全相似的,只是N个数据的实际意义不同而已。,3. 加权平均滤波法上述的平均滤波方法的主要
44、缺点是:为了提高对干扰的抑制效果,必须增大平均范围N;但增大N将会引起有用信号的失真,特别是会引起有用信号中高频分量丰富的峰值部位的失真。图2-19表示了递推平均滤波中峰值失真、 噪声幅度与平均次数N的关系。为协调三者的关系,可以采用加权平均滤波法。,图2-19 峰值失真、噪声幅度与N的关系,所谓加权平均,是指参加平均运算的各采样值按不同的比例进行相加并求取平均值。加权系数一般先小后大,以突出后若干次采样值的效果,加强系统对参数变化趋势的辨识。N项加权平均滤波的算法为,式中,C0,C1, ,CN-1为常数, 它们的选取有多种方法,但应满足C0+C1+CN-1=1。,设各采样值已存于内部RAM中
45、,在SAMP开始的单元中, 采样值为双字节,加权系数Ck为两位小数,扩大256倍变成整数后,以二进制形式存于COEFF开始的单元中。程序中调用双字节的乘法子程序MULT21,R5指出被乘数低位地址,R6指出乘数地址,乘积放在PRODT开始的三个单元中,由R1指出。 运算结果去掉最低字节后即为滤波值,存放在DATA开始的单元中。程序如下:,WEIGHT: MOV R0, DATA ;清结果单元CLR AMOV R2, 03H,LOOP:MOV R0, AINC R0DJNZ R2, LOOPMOV R5, SAMP ;采样值首址送R5MOV R6, COEFF ;系数首址送R6MOV R1, P
46、RODT ;乘积首址送R1MOV R2, N ;滤波数据项数送R2 LOOP1: ACALL MULT21 ;计算Ckyk,最低字节为小数部分MOV R0, DATA ;累加MOV R7, 03HCLR C,LOOP2: MOV A, R0ADDC A, R1MOV R0, AINC R0INC R1DJNZ R7, LOOP2INC R5 ;修正采样值与系数地址INC R5INC R6DJNZ R2, LOOP1RET,2.4.3 低通数字滤波法将描述普通硬件RC低通滤波器特性的微分方程用差分方程来表示,便可以用软件算法来模拟硬件滤波器的功能。简单的RC低通滤波器的传递函数可以写为,(2-2
47、4),式中, =RC,为滤波器的时间常数。,由公式(2-24)可以看出,RC低通滤波器实际上是一个一阶滞后滤波系统。将式(2-24)离散可得其差分方程的表达式如下:,y(n)=x(n)+(1-)y(n-1),式中:x(n)本次采样值; y(n)本次滤波的输出值;y(n-1)上次滤波的输出值;=1-e-T/滤波平滑系数, 其中,T为采样周期。,图2-20 RC低通数字滤波流程图,假如将式(2-25)变化为,y(k)=x(k)-(1-)y(k-1),(2-26),则可实现高通数字滤波。,2.4.4 复合滤波法在智能仪器的实际应用中,所面临的干扰往往不是单一的, 有时既要消除脉冲干扰,又要使得数据平
48、滑。因此,通常可以把前面介绍的两种以上的方法结合起来使用,形成复合滤波。 例如,防脉冲扰动平均值滤波算法就是一种应用实例。这种算法的特点是先用中值滤波算法滤掉采样值中的脉冲性干扰, 然后把剩余的各采样值进行递推平均滤波。其基本算法如下: 如果y1y2yn,其中3n4(y1, yn分别是所有采样值中的最小值和最大值), 则,(2-27),思考题与习题,1.什么是智能仪器的故障自检?故障自检一般包括哪些内容?2.什么是周期性自检?3.为什么要设置开机自检?开机自检主要检查哪些内容?4. 为什么要进行自动零点调整?请画出采用单片机系统自动零点调整的原理示意图,并阐述实现自动零点调整的过程。 5. 试根据图2-8画出采用三个不同量程传感器的自动切换程序流程图。,6. 什么是随机误差?什么是系统误差?什么是粗大误差?它们各有何特点?7. 在智能仪器设计中,克服系统误差通常可采用哪些方法?试简述其中一种方法的基本原理。 8. 常用的数字滤波方法有哪些?试说明各种滤波方法的特点和使用的场合。 9. 与硬件滤波器相比, 采用数字滤波器有何优点?10. 是不是智能仪器采用数字滤波器后就不需要硬件模拟滤波器了?为什么?11. 本章学习中你认为哪些内容比较难掌握?,