DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2157|回复: 0
打印 上一主题 下一主题

[待整理] 基于电磁感应的多层管柱电磁探伤测井系统

[复制链接]
跳转到指定楼层
楼主
发表于 2015-4-28 06:53:14 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
        摘要:本文提出了一种使用电磁感应进行多层石油管道探伤的方法。同时利用PIC32芯片作为主控芯片,控制IGBT全桥电路激励线圈,并通过放大和采样信号,设计并制作了测井硬件系统。本文还设计了一个能够配合此系统的能够接受CAN总线信号,并进行数据分析和绘图的功能全面的软件。本文的提出为多层石油管道的电磁探伤提供了整套解决方案。

           
          概述
          设计背景与意义
          油气田套管损坏(以下简称套损)问题是石油开发到一定时期遇到的普遍技术难题,国内外各油田均受到该问题的困扰。随着高压注采、超高压压裂等各种增产措施的应用和油田开发时间的增长、泥岩吸水蠕变、岩层滑动、油层出砂、油田开发过程中断层复活、射孔、天然地震、油层压实等原因,各油田油水井套管损坏问题将会越来越严重。
           
          我国各大油田油井损伤非常严重,大庆油田1997年套管损坏576口井, 2001年套损井超过700口,整个油田已累计损坏超过8000口井,截至2003年4月,胜利油田共有套损井5400多口。
           
          套损井的大量存在,不仅是固定资产的闲置浪费,还会导致地层压降逐渐加大,储量控制程度变差,进而造成油田水驱储量、可采储量不同程度的损失,因此,套损井是制约油田稳产的瓶颈问题,开展套损预防与治理技术的研究应用,弄清复杂地层套损机理,寻求相应的预防措施,延长套管使用寿命是目前世界各套损井油气田迫切需要解决的课题之一,对提高老油田整体开发效益具有重要意义。在这样的环境下,测井就显示出来重要的作用,被列为石油行业十大学科之一。
           
          目前用于套管检测的工程测井仪的方法较多,包括井径仪、超声波成像仪及电磁检测仪等。其中井径仪对仪器居中要求很高,偏心会导致测量误差,而且该仪器对于套管严重错断的井不适用;超声波法受钻井液影响比较大,如果钻井液密度较大,则声波衰减严重,影响检测精度,检测前必须进行洗井和替换钻井液,增加了劳动强度。而电磁检测仪是根据电磁原理给出套管完整度的评价,它不受井内液体、套管积垢、结蜡以及井壁附着物的影响,且测量精度比较高。
           
          俄罗斯多层管柱电磁探伤成像测井仪MID-K就是利用电磁理论进行探伤的。在国内,针对电磁探伤的研究也是一个热点,但是大部分都是集中于理论研究,所设计的电磁探伤测井系统的性能和检测精度还不是很好,因此我们想基于PIC32 32位单片机设计一个高性能和检测精度的电磁探伤测井系统。
           
          瞬变电磁法套管检测基本原理
          瞬变电磁法又称时间域电磁法,它是根据电磁感应理论向发射线圈中通以双极性直流脉冲,当发射线圈中的电流发生变化时,必将在其周围产生磁场,该磁场称为一次磁场。
          根据导体中的电磁渗透理论,其磁力线穿过油管进入套管,在油管和套管中分别产生感应电流 (如图 1所示)。在直流电脉冲结束后,二次磁场在接收线圈中产生感应电动势 。若套管或者油管存在裂缝特别是纵向裂缝时,将部分或全部切断感应电流的通路,这将减少感应电动势的衰减时间。
           
       

        图 1  探头检测原理示意图

         

          数学模型
          用图 2所示的包含等效电感Lc和等效电阻Rc的单匝环路来等效感应电流环路,两者具有相似的规律
           
       

        图 2  有限导体的等效回路示意图

        其中,emf为感应电动势, 为感应电流, 为管柱的等效电阻, 为管柱的等效电感。假设等效回路切断一次场的磁通量为 ,则等效回路的瞬态方程为:
           
                  (1)
          即         
                        (2)
          其中
         
          为等效时间常数。
           
          解微分方程(1)或(2),得到瞬态电流方程为:
          (3)
           
          由于在实际工作中激励源波形在线圈中发生变化,发射波形多为斜阶跃波。假设 为斜阶跃变化的场, 为双极性直流脉冲的关断时间,那么,磁通将在 时间内从 迅速减小到零,对于 就可以表示为:
           
                (4)
          依据法拉第电磁感应定律,在等效回路中产生的感应电动势由 给出,因此可以得到等效回路中感应电流表达式为:
           
                  (5)
           
          由式(5)得到一次场脉冲间歇期间( )观测到的感应电压为
           
            (6)
          在 的情况下
                   (7)
           
          式中 分别为发射线圈与等效回路、等效回路与接收线圈之间的互感系数,它们与发射线圈、接收线圈与管柱之间相对位置、管柱的几何形状有关,当线圈及管柱确定以后,该参数视为常数;接收线圈的感应电动势与管柱的阻抗 有关,而阻抗 又是由管柱的几何形状、内径、外径、电导率以及磁导率等参数所确定的,从而能够在接收线圈中感应电动势与上述参数之间建立一种函数关系,通过接收线圈的感应电动势来判断管柱的几何形状、大小和电磁参数的变化,这亦是利用瞬变电磁法对管柱进行检测的原理。
        信号的衰减特性
          由公式(7)可以看出,接收到的感生电动势近似于指数衰减曲线。且根据电磁理论,钢管的厚度越大,感应电动势的衰减就缓慢,反之,感应电动势的衰减就较快。在感应电动势的衰减过程中,较小的时问段主要表示内管的变化,较大的时间段主要表示外管的变化,采用这种方法可以把内外管的影响区别开,这一点已从理论和实验两个方面给出了证明和验证。
           
          在瞬变电磁法检测时,管柱上利用接收线圈观测到的感应电压的异常幅度衰减速度很大程度上决定于管柱的时间常数 值。在 值较大的情况下,尽管初始响应的幅值并不是很大,但信号的衰减相当缓慢,典型的衰减时间范围从100us至20ms,跨越近二个级次。在这么宽的时间范围内,信号衰减的规律如图 3所示,在早期,信号幅值高而且衰减速度很快;在晚期的信号很弱,衰减速度却慢的多。对于同一个观测信号而言,从早期到晚期的信号幅值从几伏变到几十微伏,此大的动态范围内的信号一般都要求准确测定。
           
       

        图 3  瞬变电磁信号采样示意图

         

          如此看来,瞬变信号在早、中、晚期的衰减速度差别相当大。为了在很宽的时间范围内不失真地准确确定瞬变衰减特性,除了在足够宽的时间范围内必须有足够的采样点外,各采样点之间的间隔及采样门宽应随观测点不同而有所改变。如图1.3所示,在早期,信号幅值高而且衰减速度快,因此采样时间间隔及门宽都必须相当窄才能保证足以精确地分辨信号的衰减特性;在晚期,采样间隔及门宽应增大,以适应弱信号衰变慢的特性。
           
          此外,为了保证采样的精确性,必须对早、中、晚期进行不同倍数的放大,以适应衰减曲线动态范围差异大的特点。
           
          系统方案
          系统架构图
           

        图 4  系统框图

           
          系统主要包括Microchip公司的微控制器PIC32MX7F512L ,MOSFET驱动模块IR2110,多路模拟开关HI-201,CAN收发器芯片CTM8251A,以及双极性模数转换器AD7894。
           
          系统实现功能
          位于井下的PIC32单片机通过MOSFET驱动模块在发射线圈中产生双极性方波,使得接收线圈由于电磁感应产生衰减感应电动势,单片机控制多路开关和可变增益放大电路,对不同时期的衰减曲线选择不同放大倍数和采样频率进行采样,将采样数据和温度等辅助信息封装成帧,通过CAN总线与PC终端通信,并最终在PC的用户界面上绘制测井曲线和井壁厚度谱。
           
          以上述理论为基础,在实际应用中通过测得感生曲线,曲线衰减越快且划分为早期中期和晚期等三段曲线,用迭代的算法绘制早期和晚期的测井曲线,即可将不同层管柱的损伤分离出来。这就是运用电磁法对多层管柱探伤的原理。
           
          硬件电路的设计
          电源设计
          电源系统包括井上和井下两部分。井下仪器需要的电源包括PIC32单片机工作需要的+3.3V电源,运放OP07、驱动芯片IRS2110等需要的±15V电源,驱动IGBT的+12V驱动电源,以及双极性模数转换器AD7894需要的工作电压5V和高精度基准电压2.5V。
           
          电源系统结构
          电磁探伤测井仪的电源系统结构如图 9。该电源系统由地面变压器、直流稳压电路以及多个DC/DC电压转换电路组成。其中地面变压器的作用是将220V交流电转换为15V交流电,然后再经过直流稳压电路转换为直流电。通过电缆将直流电送至井下,在井下通过DC/DC变压转换电路输出井下仪器需要的12V、3.3V、±15V、5V、2.5V等电压。
           
       

        图 5  电源系统结构框图

        直流稳压电路
          本电源系统的直流稳压电路如图 6所示,T1为15V双向变压器,输出有效值为正负15V的交流电,经过整流桥2W10整流后,再由π型网络滤波,输出20V左右的直流电。其中在整流桥的每个二极管两端都并联了一个0.1u的电容,能够很好地吸收二极管的开关噪声,减少后级电路对前级电路的干扰,注意电容的耐压值需大于变压器输出的电压峰值的2倍以上,且必须为瓷片电容。在π型滤波电路中,电容的耐压值也为输入电压的2倍,且电容值较大,交流成分能够较好地被滤掉,输出电压比较平滑。
           
       

        图 6  变压器和直流稳压电路

         

          正负15V电压转换电路
          运放OP07、IRS2110等芯片的工作电压为±15V,利用7815和7915三端稳压芯片可以实现,如图 7所示。其中二极管1N4001起到保护电路的作用。
           
       

        图 7  正负15V电压转换电路

         

          12V、3.3V电压转换电路
          12V为MOSFET管IRF630N的开启工作电压。如图 8所示。
           
       

        图 8  12V、3.3V电压转换电路

         

          5V、2.5V精密基准电压转换电路
          AD7894是ADI公司的14Bits双极性模数转换器,采样时需要一个高精度的2.5V基准电压,而一般的稳压芯片未能提供如此高精度的输出。我们选择的是摩托罗拉公司的低电压基准MC1403芯片,MC1403的输出电压波动在25mV以内,能够达到1%的精度,且应用电路简单,性价比高。如图 14所示为精密基准电压转换电路。
           
       

        图 9  2.5V精密基准电压转换电路

         

          发射机模块
          双极性脉冲产生原理
          根据上述原理,基于瞬变电磁法(TEM)进行电磁探伤,必须在发射线圈中双极性电流脉冲作为激励,这可由全桥电路产生实现,如图 10所示:
           
       

        图 10  双极性脉冲产生电路

         

          当S1,S4开启,S2,S3断开时,负载发射线圈两端电压为+U,产生双极性方波的正1/4周期波形;当S2,S3开启,S1,S4断开时,负载发射线圈两端电压为-U,产生双极性方波的负1/4周期波形。
           
          故可通过控制开关周期性地开启和断开,来获得双极性脉冲。其理想波形如图 11所示。
           
       

        图 11  全桥电路产生的理想波形

           
          假定采样间距为1cm,测井速度为144m/h,则一个测量周期T = 1cm/(4cm/s) = 250ms。因此,我们将每段脉冲宽度定为125ms。
        发射机模块的实现
          四路单刀单掷应该具备开启/关断可靠,延迟小,驱动电路简单的特点,同时具备一定的功耗特性。综合以上各点考虑,我们选用IR公司的小功率MOSFET管IRF630N。
           
          相应的驱动芯片我们选用同是IR公司的IRS2110。其为高速双通道电压型开关驱动器,配置简单,只需2块芯片就能驱动整个全桥电路,节约成本。
           
          电桥的负载为发射线圈。我们小组通过查阅资料,以文献指标为参考,采用0.6mm漆包线,将发射线圈和接收线圈密绕在同一根空心塑胶管上,实物如图 12所示:
           
       

        图 12  自制发射线圈实物图

           
          经测量,发射线圈和接收线圈的指标为:D=2.6cm,L=0.31mH,R=2.7Ω。 发射机电路连接如图 13所示,其中负载为发射线圈。
       

        图 13  发射机电路原理图

           
          IRS2110的输入与PIC32单片机的RD9,RD11两脚相连。通过RD9和RD11电平的交替变化,时序如图7所示,就可以产生交替变化的栅压,进而控制MOSFET开关的开启,在发射线圈两端产生双极性脉冲。
           
       

        图 14  发射机模块时序图

           
          然而,在实际应用中,电流脉冲总存在一定的上升延迟和下降延迟,使电流达到稳态的时间变长,尤其是当下降沿陡度不够时,接收线圈对二次场的感应受到一次场的干扰;除此之外,电流脉冲呈线性下降,能够在油管中产生稳定的感生电流。
           
          故对发射线圈电流脉冲要求:上升沿尽量陡,下降沿陡且线性度好。
           
          衰减曲线的模拟及模型解释
          鉴于比赛的时间紧迫和缺少不同损伤类型油井管道等硬件条件,我们小组经过讨论,决定用可变电阻和瓷片电容并联充放电地形式来模拟接收线圈中的指数衰减曲线,电路如下图所示:
           
       

        图 15  衰减曲线模拟电路

           
          模拟的衰减曲线衰减速率与可变电阻的阻值有关。根据前述衰减速度同管壁损伤的关系和
          电容充放电公式: ,当滑动变阻器的阻值变小时,模拟的是管壁较薄(有损伤)的情况;当滑动变阻器的阻值增大时,模拟的是管壁较厚(无损伤)的情况。
           
          接收机模块
          接收机模块由接收线圈,前置放大电路,可编程放大电路以及模数转换器组成。其中,接收线圈如前文所述,和发射线圈密绕在同一根空心塑胶管上。
        前置放大电路
          在瞬变电磁法套管检测中,信号源是不接地的接受线圈,感应的电压信号衰变同指数曲线的形态相似,幅度的变化范围很大,且在时间上早、中、晚期的衰变速度相差相当大。信号的频带宽度较小,频谱能量主要集中在低频部分。就信号的动态范围考虑,前置放大电路的放大倍数应该很小,信号中、晚期属弱信号,必须考虑放大器的性能:信号的频带宽度要求放大器是低频放大。为了提高瞬变电磁信号数据采集的精度,减少系统的噪声,可以从两个方面着手,一方面是尽量减少前置放大电路的噪声系数,因为前级放大对噪声的影响最大;另一方面必须考虑信号源阻抗与前置放大电路源阻抗的匹配,以提高额定功率的增益。此外,放大电路输入阻抗应使接收线圈处于临界阻尼状态的匹配。按照以上要求,根据瞬变电磁信号的特点,选择多运放组合的测量放大器作为前置放大电路是较适合的。测量放大器具有很高的共模抑制比,可抑制各种共模干扰引入的误差。
           
          瞬变电磁法套管检测系统的前置放大电路如图 16所示,选择普通放大器集成芯片OP07来设计通用的测量放大器,三运放组成的测量放大器如图中所示。
           
          上面设计的三运放组合式测量放大器由两级构成,第一级为对称的同相放大器,第二级为差动放大器。
           
       

        图 16  前置放大电路

         

          为了提高电路的抗共模干扰能力和抑制漂移的能力,设置测量放大器上下对称,根据虚短虚断,可以推出测量放大器闭环增益为:
         
          由上式可知,通过调节电阻R1,可以很方便的改变测量放大器的闭环增益。
           
          可变增益放大电路
          在瞬变电磁法套管检测系统中,欲测量的二次场信号的基本特点就是信号弱,且动态范围较大,而且要对三路磁探头信号进行分时处理。为了满足瞬变电磁信号动态范围大、信号弱,以及要对三路磁信号测量的要求,在电路设计中采用前置放大电路后通过四路单刀单掷开关接可变增益放大电路的方法,在不同的时期对三路磁信号进行分时测量,由PIC单片机控制不同的放大倍数,这样可以减小信号的动态范围,从而使三个磁探头的信号均能实现有效的检测。可变增益放大电路的原理图如图3.8所示,它是由放大器集成芯片OP27和四路单刀单掷模拟开关H1201相配合构成的,OP27具有噪音低、线性好、稳定性高的特点,对于磁探头信号能实现精确的放大。
           
       

        图 17  可变增益放大电路

           
          由于纵向探头A是主探头,其作用最为重要;横向探头B,C为辅助探头,协助纵向探头A工作,在同一个时期对三路探头进行分时处理时,采样顺序定为A,A,A,B,C,A,A,A,B,C…这是由PIC32的RD1,RD2,RD3三个引脚控制的。
           
          不同时期信号的放大倍数是由PIC32的RD12,RD13,RD4三个引脚控制的:
          RD12有效,早期增益
          RD13有效,中期增益
          RD4有效,晚期增益
          通过调节 的阻值,即能改变放大倍数。
           
          模数转换芯片的选择
          将可变增益放大电路输出的信号送入模数转换器,即完成了对接收线圈信号的采集。根据电磁法管柱探伤的特点,模数转换器应具有如下特点:
           
           
  •                 较高的采样速率。根据香农采样定律,只有当采样频率不小于采集信号频谱最高频率的2倍,才能不失真地还原出采样信号。瞬变电磁方法实际上是宽频的电磁系统,在理论上,其频谱可以无限延伸,其中包括了频域电磁方法的整个频带(几Hz—几kHz)。因此,模数转换器的最高采样频率最少为10kHz。        
  •                 支持双极性采样。由于激励信号时双极性脉冲,所以接收线圈产生的信号也应是双极性的。        
  •                 较高的采样精度。由于采样信号具有动态范围大的特点(几V—几十uV),在采样后期,经过放大的信号幅值仍然很小,这就需要较高的采样精度,模数转换器的转换位数应不小于12Bits。
           
          综合以上各方面考虑,我们选用了ADI公司的14Bits模数转换器AD7894。其采样速率可达到160ksps以上,输入范围为-10V — +10V,1LSB仅为1.22mV,且为单电压供电,使用简单。
        主要参数的计算
          接收机模块的主要参数包括:前放增益;前,中,后三个时期的划分和增益;采样时隙和点数确定。
           
          设计参数时要遵守以下三点:1. 信号放大后不能超过模数转换器的动态范围-10V--+10V,控制采样的放大倍数 ;1. 为了保证采样的精确性,要合理地划分时期 ;3. 前期衰减快,时隙应较小;后期衰减慢,时隙应较大。经过实验和计算,我们确定以上参数为:前放增益:2,前期增益:2,中期增益5.5,后期增益11。
           
          前期:2ms—11ms  A探头采样6*3个点,B探头采样6个点,C探头采样6个点。采样时隙 300us。
           
          中期:11ms—45ms  A探头采样12*3个点,B探头采样12个点,C探头采样12个点。采样时隙 400us。
           
          后期:45ms—110ms  A探头采样30*3个点,B探头采样30个点,C探头采样30个点。采样时隙 500us。
           
          通信模块设计
          油井、气井的一般深度为 3km 左右,有的甚至深达 5km。对于一般的传输方法都不能满足如此大距离的有效传输。CAN-bus协议是一种通用的串行通讯标准,在实际场合中有许多的应用,比如:汽车、煤矿、油田、舰船、电力、生产线等。其具有通信速率高、开放性好、报文短、纠错能力强以及控制简单、扩展能力强、系统成本低等特点。CAN总线短距离通信中的数据传输率最高可达到10Mbps,远距离通信可以达到10km。本系统采用CAN总线实现井上和井下的通信,在中间加入数个CAN中继器后,可以以50kbps的波特率稳定的通信。
           
          PIC32MX CAN模块介绍
          PIC32MX795F512L单片机提供有控制器局域网(Controller Area Network,CAN)模块,CAN模块实现了CAN2.0B协议,该协议主要用于工业和汽车应用。该异步串行数据通信协议能在电气噪声环境下提供可靠的通信。PIC32MX器件系列可以集成了两个CAN模块。
           
       

        图 18  PIC32MX CAN 模块框图

           
          图 18是PIC32MX CAN 模块框图。CAN模块有32个报文FIFO,每个FIFO最多可包含32个报文,总共可包含1024个报文,32 个用于报文过滤的接收过滤器,4个用于报文过滤的接收过滤器屏蔽器寄存器,能够自动响应远程发送请求。并且提供环回、监听所有报文和监听模式,用于自检、系统诊断和总线监视;低功耗工作模式;专用的时间标记定时器等特性。PIC32MX7系列强大的CAN模块能够快捷地实现系统的通信部分功能。
           
          CAN总线电路
          图 19为给出了典型 CAN 总线拓扑的图示。
           
       

        图 19  典型的 CAN 总线网络

           
          CAN收发器我们选择通用 CAN 隔离收发器CTM8251AT,CTM8251AT是一款带隔离的通用CAN收发器芯片,该芯片内部集成了所有必需的CAN隔离及CAN收、发器件,这些都被集成在不到3平方厘米的芯片上。该芯片特别适合+3.3V系统的CAN控制器,实现CAN节点的收发与隔离功能。CTM8251A接口芯片可以实现带隔离的CAN收发电路,隔离电压可以达到DC2500V,可以取代在以往的设计方案中需要光耦、DC-DC电源隔离、CAN收发器等其他元器件才能实现带隔离的CAN收发电路,其接口简单,使用方便。
           
       

        图 20  CAN总线模块电路

        图20是本系统中CAN总线模块的电路。其中C1RX和C1TX接PIC32MX795F512L单片机的CAN1模块接收和发送管脚(87、88管脚)。CGND为收发器地,FGND为屏蔽线地,FGND接电缆屏蔽线。
           
          CTM8251AT与CAN总线的接口部分也采取了一定的安全和抗干扰措施。CTM8251AT的CANH和CANL引脚各通过一个5.1Ω的电阻和CAN总线相连,电阻可以起到一定的限流的作用,保护CTM8251AT免受过流的冲击。由于是远距离,所以终端的一对电阻(RT1)是必要加的,电阻值随着通讯距离的增加应进行适当的增加,在2km通信距离以内一般设为120Ω。
           
          通信协议设计
          井下设备完全受井上PC客户端控制,如开始测井、暂停测井等,井下设备负责响应上位机的命令。本系统中定义了测井数据帧、命令帧和应答帧三种帧结构。数据帧主要用于井下设备向上位机发送的测井数据,命令帧用于上位机向井下设备发送控制命令,应答帧为双方接收到测井数据帧和命令帧之后应答成功或者失败的帧结构。
           

           
  •                 测井数据帧
          测井数据帧结构定义如表格1所示。测井数据帧包括起始标志字节、帧序号字节、类型字节、当前时间字节、当前深度字节、温度字节、伽马射线字节、发射电路字节、纵向探头A电压字节、横向探头B电压字节、横向探头C电压字节、校验和字节以及结束标志字节。
           
        表格 1  测井数据帧结构

                               
                                        起始标志

                       
                               
                                        帧序号

                       
                               
                                        类型字节

                       
                               
                                        当前时间

                       
                               
                                        当前深度

                       
                               
                                        FSTA

                       
                               
                                        3字节

                       
                               
                                        1字节(’D’)

                       
                               
                                        4字节

                       
                               
                                        4字节

                       
                               
                                        温度

                       
                               
                                        伽马射线

                       
                               
                                        发射电流

                       
                               
                                        纵向探头A电压

                       
                               
                                        横向探头B电压

                       
                               
                                        4字节

                       
                               
                                        2字节

                       
                               
                                        2字节

                       
                               
                                        48*3*2字节

                       
                               
                                        48*2字节

                       
                               
                                        横向探头C电压

                       
                               
                                        校验和

                       
                               
                                        结束标志

                       
                               
                                         

                       
                               
                                         

                       
                               
                                        48*2字节

                       
                               
                                        4字节

                       
                               
                                        FEND

                       
                               
                                         

                       
                               
                                         

                       
<div style="clear:both;">                           除了帧结构的定义以外,整个系统的通信还需要遵守以下规则:
        在测井状态中,单片机控制IGBT全桥电路产生125ms的正向脉冲,根据不同的时刻控制可编程放大的倍数并进行A/D采样。采样结束后单片机控制IGBT全桥电路再次产生125ms的负向脉冲,同时通过CAN总线向上位机发送测井数据帧,如果100ms内未发送成功则返回发送失败标志并推出发送。负向脉冲后重复放大和采样,并发送测井数据帧。最后判断是否有发送失败的测井数据帧,并发送失败的数据帧。
           
          CAN总线数据处理流程图
          系统采用PIC32MX的CAN1模块,波特率设为100kbps,分别使用2个32个报文深的FIFO作为发送和接收FIFO,采用接收中断的方式来接收上位机的数据。在接收中断服务程序中对接收到的数据进行处理。如图 25为CAN总线数据处理的流程图。
           
       

        图 25  CAN总线数据处理的流程图

           
          系统在接收到一个完整的数据帧之后,且校验和正确,会对接收缓存数据进行处理,会根据不同的类型的数据帧做相应的操作。当发生未能正确接收一个完整的数据帧时,下位机会返回错误类型,并回复NAK应答帧。
           
          实时时钟
          PIC32MX 器件上提供的实时时钟和日历(Real-Time Clock and Calendar,RTCC)硬件模块及其操作。RTCC是为需要长时间维持精确时间的应用设计的,无需或只需最少的CPU干预。该模块为低功耗使用进行了优化,以便在跟踪时间的同时延长电池的使用寿命。使用RTCC模块的要求是需要一个外部32.768 kHz时钟晶振。
           
          测井数据帧的当前时间使用RTCC模块提供,该模块只需要初始化并设置起始时钟和日历即可自动运行。
           
          上位机软件设计
          概述
          需求概述
          本软件的功能主要为接收本系统硬件部分发送的数据,通过一定的协议解析,提取并分析信息,计算管壁厚度,绘制厚度可视化的图形,为工程人员提供直接的和有效的资料。
           
          由于本系统在探伤的同时,着重分析损伤位置,因此必须对远近有所分离,另外最好能够绘制从远到近的厚度谱图,因此,本软件需要绘制两种图线,一种划分为远场近场两条曲线,另一种给出彩色的厚度谱图。
           
          由于测井时间很长,工程人员很难全程跟踪,为了便于从存储的信息中恢复信息以便日后查阅,还需要给本软件增加文件存储和图像存储的功能。
           
          最后,工程人员还需要实施观测现场状况,随时得到从井下传递来的信息,这样随时观测的方法,可以有效的节省测井时间,对于损伤过大的井可不必测完。
           
          软硬件支持环境
          本软件采用VS2008编译通过,在编写中使用了.net3.5架构,因此运行本软件需要Microsoft .net3.5运行时库的支持。
           
          另外,本系统采用USBCAN模块进行通信,由于厂商没有给出其在Windows Vista和Windows 7下的驱动,因此,本软件只能工作在Windows XP系统下,且需要安装USBCAN模块驱动。
           
          程序建模
          本程序采用面向对象程序设计方法,其中的多数功能被封装在对象中,程序有较好的移植性和安全性。程序主要封装在以下几个类中
           
                                                                         类
                       
                                                                         用途
                       
                               
                                           
  •                                                                                  
                       
                                                                         记录测井全程信息、
                       
                               
                                           
  •                                                                                  
                       
                                                                         文件存储和读出
                       
                               
                                           
  •                                                                                  
                       
                                                                         由下位机传来的8字节信息
                       
                               
                                           
  •                                                                                  
                       
                                                                         由下位机传来的数据包
                       
                               
                                           
  •                                                                                  
                       
                                                                         其中包括一正一反两个数据包,记录其平均值和其他的数据处理结果
                       
                               
                                           
  •                                                                                  
                       
                                                                         测井曲线图
                       
                               
                                           
  •                                                                                  
                       
                                                                         衰减曲线图
                       
                               
                                           
  •                                                                                  
                       
                               
                                           
  •                                                 总线通信                                
                       
<div style="clear:both;">                    
          界面设计
          下图为一软件运行时截图,可以看到程序右左上方的文件/设备控制区,右上方图形控制区,左下方的信息显示区以及右下方的图形显示区组成。而其中最重要的,也是占用面积最大部分是图形显示区,较大的面积保证了观看的方便。另外,为了观察直观的一手数据,我们还专门设置了显示由采样设备直接传来的未经处理的衰减信号,以便工程人员直接判断测井系统是否正常工作,以及管壁是否发生严重损伤。这个衰减曲线是可以隐藏的,因为它毕竟不是主要需要显示的内容,而且占用屏幕空间较大。如果你觉得图像显示空间还不够大,甚至可以隐藏图例。这里图例被设计成悬浮于绘图之上,可以跟随滚动条滑动而动。
           
       

        图 26  电磁测井工具软件界面

           
          USBCAN接收模块
          由于采用了USBCAN-2A模块,因此,这里的使用了厂商提供的驱动程序和dll程序,但是提供的程序是基于c++的,我们的C#程序还需要进行适用于.Net架构的封装。这其中包括数据类型的转换,结构体重写和函数的引用。
           
          函数引用使用DllImport语句,以打开设备函数为例:
           
          [DllImport("ControlCAN.dll")]
          public static extern UInt32 VCI_OpenDevice(UInt32 DeviceType, UInt32 DeviceInd, UInt32 Reserved);
           
          这里引用的是ControlCAN.dll中的函数,使用静态和外部的引用方式。
           
          第二个要重新封装的的是数据类型,由于.Net架构和C++的数据类型不同,因此需要进行大量的改写。如Dword类型应转换为Uint32类型,这种转换往往比较模式化,具体转换这里不再赘述。
           
          第三个也是最重要的就是结构体的重写。例如
        public struct VCI_CAN_OBJ

                {

                    public UInt32 ID;

                    public UInt32 TimeStamp;

                    public Byte TimeFlag;

                    public Byte SendType;

                    public Byte RemoteFlag;//是否是远程帧

                    public Byte ExternFlag;//是否是扩展帧

                    public Byte DataLen;

                    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]

                    public Byte[] Data;

                    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]

                    public Byte[] Reserved;

                };

         

          这个结构体,需要在类中重新描述,其中的数据类型应按照标准数据类型转换,另外其中的数组应使用MarshalAs修饰符修饰,表示在托管代码和非托管代码之间传送数据。驱动程序中的代码被托管,这里要收集其数据,必须使用MarshalAs方法。
           
          最后,由于我们程序使用的数据格式比较固定,因此本类中也对一些常用的方法进行了封装,使得CAN模块对上层程序透明,上层程序在接收数据的时候好像没有底层方法一样。例如CAN模块定义了打开设备,初始化设备,开始CAN三个方法,但是由于我们的参数是规定好的,因此在程序中就将这三个方法进行了一层封装,每当建立USBCAN实例的时候在构造函数中自动打开设备。
           
          数据分析模块
          CAN模块接收过来的数据需要对其进行分析。这里我们采用的是正则表达式分析方法。正则表达式在C#方便易用,效率高,功能强大。
           
          每次接收过来的数据时8字节的小字符串,实际上是8个0-255的数,由于ASCII码最大只允许到127,超过127的数值都被转化成为值为63的”?”字符,因此这里采用ISO8859-1中规定的扩展ASCII码进行转码。
           
          小字符串分为五种,分别用以下五种正则表达式进行匹配:@"^EMISTART$"、@"^FSTA((.|\n){4})$"、@"^((.|\n){8})$"、@"^EMITOEND$"、@"^((.|\n){4})FEND$",分别表示“测井开始”、“数据包开始”、“内容数据”,“测井结束”,“数据包结束”。分析出五种帧的不同,则可以进行相应的操作。如接收到测井开始帧,则创建新的测井实例,重置图片,重置存储文件。如果接收到测井结束,则销毁测井实例。收到数据包开始的标志时应创建新的消息实例,收到内容帧应在最后创建的消息包实例后附加信息。如果收到了数据包结束标志则开始数据的处理。
           
          收到了数据包结束标志,马上开始的应该是数据处理的部分。其算法流程如下:
           
       

           
          第一步是判断大小,一个标准的数据包大小是512字节,如果不是,则应该抛弃,这一步的判断大大节省了判断的时间,毕竟校验和还是比较麻烦的判别方法,很多错误的数据会由于大小不一致被抛弃。
           
          第二步的校验和判断,这里采用的每四个字节拼合成一个32位整形数据,再进行加和的方式,最后得到数据和传递来的数据比较,一致则认为传递没有错误。经实测,传递错误率不足千分之一。
           
          第三步是发送ACK和NAK信息。
           
          第四步对数据进行分拆,从字符型数据得到有意义的整形或浮点型数据。分拆的过程同样使用的是正则表达式的技术,其表达式为:@"^FSTA((.|\n){3})D((.|\n){4})((.|\n){4})((.|\n){4})((.|\n){2})((.|\n){2})((.|\n){288})((.|\n){96})((.|\n){96})((.|\n){4})FEND$"
           
          接受下来的数据采用移位递加的方式求其相应的整形值,如温度值为4字节32位数据,接收时首先加其最左侧字节,右移8位后加左数第二字节,依以此类推得到其整型值,由于我们规定传送的是其1000倍的数据,因此再除以1000即可。其他数据的计算方式类似。
         
          软件滤波
          由于AD采样的不确定性,很有可能造成某几个数据的偏差或整体偏差,因此我们采用一些方法来消除测量中产生的偶然因素。
           
          首先由于发送激励信号时候如果电流只有一个方向,则可能因为几何因素造成较大的差异,因此,在激励时我们采用双极性方波,正采样一次再负采样一次,两次的绝对值取平均则可得到良好的数据结果。
           
          另外除了消除了几何结构造成的偏差,仍不能达到我们的要求,对于近场区的值,如果我们只相信一个采样点的值则会造成偏差,因此我们对进场数据采平均值,对远场平均取平均值。采用平均的算法速度较快,占用系统资源少,效果可以接受。
           
          文件存储与恢复
          文件部分功能被封装在FileSave类中,其中实现了保存、追加等功能。
           
          文件存储
          在穿件文件对象时首先根据获取的路径创立文件,如果在读文件过程中则文件以只读方式打开,写文件过程中,自动获取系统时间,保存由系统时间决定的时间,这样的文件名便于查看时调出。
           
          保存文件的方式为来什么存什么,即直接存储下位机传来的信息,当然这些信息是经过验证的,符合校验和的信息,校验和也被存储在文件中,这样在读取文件时仍能进行判断,以防止文件在存储过程中的被篡改现象。
           
          文件恢复
          当工程人员不在测井时,仍可由存储的测井数据回复测井曲线,读出过程和测井过程使用同一段代码,算法一致,极大地提高了代码复用率,效率也比较高。在读出过程中仍可校验和等数据,对于校验和不正确的数据包予以抛弃。
           
          图像的存储
          另外,恢复测井曲线很慢,而且信息冗余量比较大,因此我们同样设置了图像保存的借口。这样工程人员就可以用普通的看图软件打开存储的图像,分析图像数据了。
           
          绘图模块
          整个程序需要绘制两种图像,分别为衰减曲线和测井曲线。衰减曲线的绘制被封装在DecayGrapg类中,而测井曲线被封装在PDGraph中。二者的工作原理大同小异,使用的均是.Net提供的GDI+。在构造函数中首先完成框架和图例的绘制,随后根据传递的信息划线。
           
          系统测试
          测试设备
          http://www.eefocus.com/test-measurement/337673/file:///C:UsersADMINI~1AppDataLocalTempmsohtmlclip1\01clip_image140.png     MOTECH  LPS-305S数控式直流稳压电源
          特性:工频220V输入,两路双极性电压输出
          用途:系统供电
          特殊要求:供电电压可调,电压稳定
           
          http://www.eefocus.com/test-measurement/337673/file:///C:UsersADMINI~1AppDataLocalTempmsohtmlclip1\01clip_image140.png     Agilent 7104示波器
          特性:4通道,采样速率达4GSa/s
          用途:检测波形
          特殊要求:采样速率快,多通道
           
          http://www.eefocus.com/test-measurement/337673/file:///C:UsersADMINI~1AppDataLocalTempmsohtmlclip1\01clip_image140.png     致远USB CAN-2A CAN接收设备
          用途:实现CAN转USB的功能,PIC32单片机通过CAN总线与PC通信
          http://www.eefocus.com/test-measurement/337673/file:///C:UsersADMINI~1AppDataLocalTempmsohtmlclip1\01clip_image140.png     Visual stidio 2008
          用途:用户界面设计,测井曲线绘制
           
          http://www.eefocus.com/test-measurement/337673/file:///C:UsersADMINI~1AppDataLocalTempmsohtmlclip1\01clip_image140.png     MAPLAB开发环境
          用途:编写PIC32主程序,编译,下载
           
          井下电路部分测试
          模拟的衰减曲线波形
          模拟产生的衰减曲线如下图所示:
           
       

        图 27  模拟的衰减曲线(100ms/div)

         

       

        图 28  模拟的衰减曲线(5ms/div)

         

          曲线峰值3.3V,示波器显示可以看出,模拟的衰减曲线类似指数衰减,但在后期有纹波干扰。
         
          可编程模块控制信号
          RD12,RD13,RD4三个引脚信号如图 29所示,在一个周期内交替有效(低电平),有效期分别为9ms,24ms,75ms,和之前划分的早,中,晚三个时间段相符合。
           
          RD1,RD2,RD3三个引脚信号如图 30所示,实现了对纵向探头A,横向探头B,C分时采样的功能。
           
       

        图 29  时期划分控制信号

           
       

        图 30  探头选择控制信号

           
          编程放大后的信号曲线
          可编程放大模块输出的信号如下图所示,早、中、晚三个时期的放大倍数分别为2, 5.5, 11。
       

        图 31  编程放大后的衰减曲线(50ms/div)

           
       

        图 32  编程放大后(绿)和放大前(黄)的信号(20ms/div)

           
          总结
          我们团队主要实现了电磁探伤系统的以下功能:

           
  •                 井下硬件电路的设计
          选择了合适的信号处理芯片,以分时、编程放大的方式对探头信号进行了处理。
           

           
  •                 通信与传输技术研究
          以CAN总线为基础,制定了一套适用于井下系统和地面系统之间协作的通信协议。
           

           
  •                 数据处理,解释系统的研究
          地面解释系统对采集到的数据进行处理,绘出内层油管和外层套管的测井曲线,并能同步显示管道的厚度谱,带给油井工作者更直观的信息。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-9-28 20:15 , 耗时 0.146614 秒, 22 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表