提高实时系统数据采集质量的研究

发布时间:2009-4-9 17:38    发布者:李宽
关键词: 实时系统 , 数据采集 , 研究 , 质量
前向通道是实时系统的“入口”,即数据之源。对小型实时系统来说,其一般构成模型为:传感器放大器、采集器(A/D)以及相关联的外围电路。这些器件乃至构成的电路的稳定性、线性度、抗干扰能力直接影响到数据的采集质量。如果不考虑成本,在系统设计时全部采用军用级芯片,情况会好些,但仍程度不同地存在上述问题;如果采用一般商用级芯片,问题就严重了。这就要求工程人员在系统设计时,无论是采用商用级、工业级芯片,还是采用军用级芯片,都应该从设计角度寻求、采取一些弥补措施,以提高数据采集质量,进而提高系统的可靠性和稳定性。
1 动态“零漂”补偿技术
前向通道中的传感器、放大器、A/D易受温度(导致温漂)、时间(导致时漂)等因素影响而引起系统“零位”动态变化,即所谓“零漂”。恰当地使用动态“零漂”补偿技术能够有效地抑制“零漂”带来的采集数据误差。图1为笔者在某炉温闭环控制系统中采用的动态“零漂”补偿实用电路。其中AD7503是单片集成的CMOS8选1多路模拟开关,其前7路分别接7个传感器,第8路S8接模拟地。公共输出端OUT通过R1电阻与放大器AD524输入端相连。A/D采用12位双积分ICL7109芯片。其补偿原理是:在单片机8031控制下,分时地对动态“零漂”及各路传感器进行采集、处理,最终得到不含“零漂”的有效采样净值参加插值运算。具体步骤如下:


    (1)通过8031程控使AD7503开关SK接S8,即模拟地。
   (2)延迟1ms,消除AD7503开关时间及电阻、电容放电时间带来的开关闭合过渡过程。这点应引起足够注意,只有在SK可靠接地之后才能进行“零位”采集;否则,如果在过渡过程进行“零位”采集,则会产生随机性误差,而且被测试的温度愈高,呈现的误差愈大,出现的概率愈频繁。但延迟时间也不能过长,过长会影响系统的实时速度。
    过渡过程主要由R、C放电时间决定。
    T=(R1+Ron)×C1=(220+170)×10×105×10-9=0.39ms
    其中:
    T:放电时间;
    Ron:AD7503导通电阻。
    图2是用示波器在放大器AD524输出端(管脚10)观察到的这一过程的波形图。


    (3)启动A/D连续采样数次,然后求其算术平均值,记为x0(x0即动态“零漂”采样值):


    (4)通过8031程控使AD7503开关SK接某一路传感器(例如传感器1端S1)。
    (5)延迟1ms,消除电阻、电容充电带来的过渡过程。
    (6)启动A/D连续采样数次,然后求其算术平均值,记为x1(x1即含有动态“零漂”的有效信号采样值):
(ti:当前采样值,n:采样次数)
    (7)求有效信号采样净值y(即从上述有效信号采样值中滤掉“零漂”值)。按照理论x1≥x0,但实际由于在“零位”附近的有效信号采样值,很可能出现x10的现象。因而求有效信号采样净值y不能简单地使用公式y=x1-x0,而应按照下列关系式进行:
    若x1≥x0   则y=x1-x0
    否则 y=0
    (8)使用y进行插值运算,最终求出实际温度值,并在数码管组成的显示器LED上进行显示。
    此方法虽然编程(特别是用汇编语言或梯形语言编程)较复杂,但效果相当明显。
2 滤波技术
2.1 电容滤波器
电容滤波法是小型实时系统经常采用的一种廉价而有效的无源滤波技术。但在实际应用中,采用什么样的电容?电容容量应该选取多大?滤波电容接在靠近放大器输出一端还是接在靠近A/D输入一端效果好些?这些都是系统设计中要经常遇到的实际问题。笔者曾在某便携式巡检记录仪中使用美国MAXIM公司的MAX189串行、12位A/D芯片,它为8脚封装,实用电路如图3所示。使用PIC16C74单片机的SPI(串行外围接口)口进行全双工编程采集。按照MAXIM公司给出的典型应用电路,在MAX189模拟信号输入Ain端(管脚2)无图3中的滤波器,但实际应用时发现,按照典型应用电路进行采集误差很大。后在MAX189 Ain端接入如图3所示的低、高通滤波器(以下简称滤波器),收到了显著的效果。


根据笔者近几年的工程设计与实践,认为对电容滤波器,一般应选择耐压高、绝缘性好、温度系数小、自谐振频率高的电容。其容量要根据具体系统进行实验确定,既不能选择过大,也不能选择过小。过大会损伤有用信号,过小则达不到滤波效果。另外,在许多实用采集电路中,将滤波电容接在放大器的输出一端,笔者认为没有接在A/D输入一端效果好。
2.2  数字滤波
2.2.1 数字滤波方法
硬件滤波器只是提高实时系统数据采集质量的措施之一,它和其它任何滤波技术一样,很难彻底抑制各种干扰,因此很有必要进行数字滤波。经典的数字滤波方法较多,有算术平均值法、超值滤波法、比较取舍法、滑动算术平均法、竞赛评分法以及一阶低通滤波法等。究竟采用哪种滤波技术应视具体情况而定。笔者认为至少应考虑采集器A/D的类型。如果A/D属积分型,其对尖脉冲有较强的抑制能力,但转换速度慢,采用滑动滤波技术能够达到扬长避短的作用。滑动滤波技术的基本思想是:取长度为N的队列,把每次采样值放入队尾,同时扔掉队首的一个采样值,再求队列的算术平均值作为本次采集的最终有效值。这种数字滤波方法速度快,但对尖脉冲干扰抑制能力较差。笔者曾在某综合测试台湿度、温度监视系统设计中采用国产3位半双积分型5G14433采集器。为既能达到数字滤波的效果,又不影响系统实时速度,故使用上述的滑动滤波技术,收到了良好的效果。如果A/D为逐次比较式,一般转换速度快,但对尖脉冲抑制能力相对较弱,宜采用竞赛评分滤波法。
2.2.2  改进型竞赛评分滤波法
竞赛评分滤波法由于既能消除脉冲干扰,又能滤除低频纹波,是工程上常用的一种数字滤波方法。其基本思想是:对某一点的多次采样值进行比较,舍弃最大、最小值,把余下的采样值取算术平均值作为该点的最终有效采样值。实践证明此方法对干扰噪音较大的系统来效果不够理想,为此笔者在某配料系统研制中对上述经典的竞赛评分滤波法进行了改进,称“改进型竞赛评分滤波法”。其基本思想是:加大某一点的采样次数,然后对该点的多次采样值进行排序,舍弃最大、最小段(而不是最大、最小值),把余下的中间段4(或8)个采样值进行算术累加,然后右移2(或3)次即取算术平均值作为该点的最终有效采样值。这种方法虽然效果明显,但不能直接应用到小型实时系统中,因小型实时系统一般采用可编程控制器PLC或单片机作为控制部件直接面对物理层,其内存空间极为有限。为此进一步改进如下:对某一点施以N次(N≥6)改进型竞赛评分滤波法,得到N个有效采样值,记为t1,t2…tn(n=N),再对t1,t2…tn进行一次改进型竞赛评分滤波法,将所得值作为该点的最终有效采样值。当然这种方法是以时间和空间来换取数据精度的。
3 接地技术
在低电平放大电路中,合理地接地是减少地噪声干扰,提高数据采集质量的重要举措,必须予以特别注意。就一般情况而言,在硬件设计时,系统中的模拟公共地线应该与数字公共地线分开,然后只在一点汇集,呈“星形”状。笔者在某分析仪系统研制中曾使用北京某公司生产的PS_2119放大、采集多功能模板,为减少长距离信号传输带来的空间干扰,选用差分输入。该系统的工作原理是:当用X光线以不同的角度照射光电装置中的被测物时,其光电转换装置输出的电压幅值与X光线照射的角度成函数关系。该输出电压经放大、采集、数据处理,最后以余弦波的形式在PC上显示测试结果。图4为该系统曾经使用的不正确接地线路,其中:
    H:差分高端输入端子。
    L:差分低端输入端子。
    AGND:模拟地端子。


这种接地方法产生的后果是PC上显示的余弦波形毛剌较大,经检验产品合格率低。后改为图5所示的接地方法,其输出的余弦波形光滑,经检验产品误差在允许范围之内。
从电路分析的角度看,图4、图5都使放大采集板的差分低端L、模拟地AGND与光电转换装置的“模拟地”等三点达到“共地”的目的,但接地形式不同,产生的结果却截然相反。


4 供电技术
电源噪声对数据采集质量有着严重的危害性。在采用交流供电的实时系统中,电压波动会使系统产生随机性误差。同样,在采用干电池供电的便携式实时系统中,电池衰减会导致系统出现“时漂”。对于这些问题,已经出现了许多成熟有效的技术措施,如各种稳压器、低通滤波器、光电隔离器等。然而,前向通道对电压的波动是非常敏感的,仅采用上述措施还不够,特别对于那些物理要求传感器信号在现场放大,而采样、控制又独成体系的实时系统,其供电应特别注意。一般在设计这种系统时,为供电方便,往往将传感器、放大器与A/D所在的电路采用分开供电的方法,即传感器、放大器由现场供电,而A/D所在的电路采用另外的供电形式。这种将前向通道分开供电的方法存在一定的弊端。比较好的方法应当尽可能地对传感器、放大器、A/D采用同一电源,最好是同一电源的同一输出端子供电。这样一旦发生电源波动,则传感器、放大器、A/D的满度输出也随之变化,其最终采样值会相对基本保持不变或变化很小。
5 接口初始化技术
电源噪声及空间干扰常常会引起系统接口参数的变化,进而导致系统出现许多异常现象,严重时会使系统死机。在实际运行的实时系统中,往往会发生这样的现象:当某系统在前一时刻还处于最佳运行状态时,后一时刻却突然出现死机现象,甚至这种现象无法使用系统复位键进行清除,只好去电再加电即冷启动之后才能使系统恢复正常工作。出现这种情况除系统的容错处理存在一定缺陷之外,另一个重要原因就是因为系统对接口的初始化时序安排不当。例如,有些实时系统在设计时把初始化参数安排在冷启动之后一次完成,随后予之不理。这种方法至少会使系统潜伏着一定的缺陷。比较好的方法是在系统每次调度某一接口之前,先对其进行初始化,然后再调度。当然这对使用一块或两块可编程接口的简单系统来说比较容易。随着数字技术的不断发展,市场上已经涌现出了可编程放大器、可编程A/D、可编程键盘/显示驱动、可编程实时钟、可编程E2PROM以及本身带有多种可编程功能接口和可编程双向位控功能的单片机。使用这些智能器件能使系统硬件变得简单而可靠,但同时也带来了接口初始化和编程问题。为避免上述干扰对接口产生影响,较好的方法应当是在系统设计之前,首先从系统软、硬件两方面进行仔细分析,研究各接口在具体系统中的时序及相互制约关系;然后在每次调度具体接口之前先对其进行初始化,然后再调度。在没有对系统进行上述分析的情况下,简单地按先初始化再调度的方法对各接口进行操作,会顾此失彼,甚至整个系统无法运行。
上述方法均已在实际生产中得到应用,且收到了良好的效果。需要指出的是:上述方法适宜的采集对象为缓慢变化的信号,工业现场的大部分信号例如压力、温度、湿度、交变的电压、电流等均属此类信号。如果采集的对象为高速变化信号,应采用DSP(数字信号处理机)及其相关技术。
本文地址:https://www.eechina.com/thread-2588-1-1.html     【打印本页】

本站部分文章为转载或网友发布,目的在于传递和分享信息,并不代表本网赞同其观点和对其真实性负责;文章版权归原作者及原出处所有,如涉及作品内容、版权和其它问题,我们将根据著作权人的要求,第一时间更正或删除。
alpha321 发表于 2009-11-14 12:20:28
文章长了点,我来一个小结:
1、动态零漂补偿;
2、滤波,包括模拟和数字的;
3、接地;
4、供电;
5、接口初始化。
其中1、3、4项为基础工作,即“治本”,2、5项为“治标”,可配合软件进行。
搞数采的参考资料,很不错。
wfnic 发表于 2011-7-10 10:52:31
japja1
wmmx 发表于 2012-2-2 17:16:40
不错,顶一下
您需要登录后才可以发表评论 登录 | 立即注册

厂商推荐

相关视频

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
快速回复 返回顶部 返回列表