具有高可靠性的高速连续数据采集的设计与实施方法_第1页
具有高可靠性的高速连续数据采集的设计与实施方法_第2页
具有高可靠性的高速连续数据采集的设计与实施方法_第3页
具有高可靠性的高速连续数据采集的设计与实施方法_第4页
具有高可靠性的高速连续数据采集的设计与实施方法_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、    具有高可靠性的高速连续数据采集的设计与实施方法    具有高可靠性的高速连续数据采集的设计与实施方法    类别:单片机/DSP             &nbsp作者:武汉华中理工大学水电与数字化工程学院(430074)吴道虎         宜昌中国

2、船舶重工集团公司第710研究所(443003)王绪军    来源:电子技术应用             摘要:从硬件和软件设计两个方面介绍保证PCI总线的高速连续采集系统的数据完整性、可靠性的实用关键技术及具体实施方法、应用案例,列出了大量实用的设计技术及应用程序。该设计先进、可靠,在实践中得到了应用。            &

3、#160;                       关键词:高速数据采集         可靠性和完整性 关键技术 设计                 在

4、许多测量与控制领域,如电力谐波测试、声光信号处理、现代雷达系统等元均要求在线进行小波数字信号分析与处理,其中最为关键的是如何利用香农(Shannon)采样理论将外部信号毫无失真地采集并转化为计算机所用的数字信号。目前较为流行的方法是提高A/D的转换速率和计算机的处理速度。同时,提高数据的传输速率也是较为关键的。本文以高速数转换芯片AD1674为基础,采用PCI总线协议,从硬件和软件设计入手探讨提高整个数据采集系统的最大采样频率和高可靠性的方法,其中有些方法得到了实践证实。        一般而言,触发A/D转换有软

5、件触发、实时器同步触发及外部触发三种方式。而数据的传输方式有软件查询、中断方式、DMA方式及FIFO方式。四种数据传输的速率比较如下(以A/D转换基频10MHz为例):        软件查询 1020kS/s(每秒10k次,与所用计算机的主频有关)        中断方式 1030kS/s        DMA方式 200kS/s  &

6、#160;     FIFO方式(w/repeat input string) 330kS/s        在一般控制系统中,采用软件触发A/D、软件查询和中断数据传输方式就能满足测控要求。但要求高速连续数据采集的情况下,显然不能满足系统要求。在笔者设计的智能化高速连续数据采集系统中,采用了定时器同步触发A/D与FIFO(带重复字符输入方式)数据传输方式相结合的方法大大提高了系统的采样频率和数据的可靠性,改善了在Windows环境下数据传输的性能。 &#

7、160;      1         高速连续数据采集系统设计的几项关键技术        1.1 定时触发脉冲源的设计        由于系统要求高可靠性、高采样频率以及连续采样,利用Intel         82

8、54定时计数功能来触发A/D转换,严格控制时序以及数据采样间隔,合理利用Intel         8254的三个定时计数器。定时计数器0作备用,用作A/D的外部触发源,定时器1和2配合使用。其中定时器1的输入和定时时钟基频(40MHz)相联,其输出作为定时器2的输入,定时器2的输出作为A/D转换的定时脉冲触发源。        定时器1和2均采用方式2工作。定时计数器1和2的计数值CounterT1和CounterT2,必须满足如下关

9、系式:        CounterT1×CounterT2=时钟基频/SampleSpeed(系统的采样频率)。        其初始化程序如下(编程平台为Visual         C+6.0):        ucValue = 0xb4; /定时器2,方式2,

10、ucValue为定时器2的初始化值        _outp(BaseAdr+33,ucValue); /BaseAdr为板卡的基地址        _outp(BaseAdr+32,CounterT2 & 0xff);        _outp(BaseAdr+32,(CounterT2 >> 8)&   &

11、#160;     0xff);        ucVaue=(ucValue & 0xc0)| 0x40; /定时器1,方式2        _outp(BaseAdr+33,ucValue);        _outp(BaseAdr+31,CounterT1 & 0xff); 

12、       _outp(BaseAdr+31,(CounterT1 >> 8) &         0xff);        1.2 双端口RAM技术        系统要求不间断连续要样。为了克服常规的固定I/O端口读写方式容易造成丢失数据且数据传输速率低的缺陷,

13、系统采用双端口RAM技术。利用计算机内存直接映象技术,对内存物理地址直接读写,克服了数据传输的瓶颈效应,满足了系统的实时性。在双端口RAM设计过程中,按照工业控制标准实行全地址译码,以确保全地址空间的每一个存储单元的地址在总线上唯一。        双端口RAM采用英国ARCT公司的双端口RAM         HK12S25(8K×8bit),采样数据与PC接口采用FIFO存储器(先入先出存储器)作为缓冲,系统具有FIFO全

14、满(FULL)、半满(HALF)标志。HALF标志用于决定PC机什么时间开始读取转换结果,当PC监测到HALF信号有效,表明在FIFO中至少有4K个数据可以为PC读取。同时FIFO至少提供4000个空间作为读数时A/D数据存放的缓冲区。由于PC采用RAM映射方式从FIFO读数据,通常速度为1.2M2M字/秒,PC机有充足的时间来进行实时数据处理等操作。        寄存器的定义(BaseAdr+20):        D7 D6 D5

15、 D4 D3 D2 D1 D0        FULL HALF 中断标志        输入模拟通道转换控制采用LUT(RAM查找表)驱动模式,LUT的容量为256单元,即输入通道转换有256种模式。同时,LUT专门提供一条额外的控制线输出到外部,可以为用户提供可编程状态标志、同步采样保持器控制等功能。同时应特别注意LUT驱动通道转换的功能,它可以提供非线性通道控制模式不同的通道具有不同的采样速度。   

16、     利用_fmemmove(data 1,data2,Samplen)将数据映射到高端内存,其中:data1为数据目的指针,指向一个内存中足够大的空间;data2可以用FP_SEG、P_OFF来赋值;Samplen为传输字节长度。为了进一步提高访问高端内存地址的速度,也可在VC+中嵌入汇编语言_asm         movX1,X2。不过,假如采用面向对象的VC+编程,采用_fmemmove足够以满足系统的采样要求。   

17、60;    1.3 多线程的数据采集软件设计        在要求高速、高可靠性和连续采样的情况下,一方面要求系统不间断地进行数据采集,同时还要进行数据的在线定时处理,否则将会造成数据的丢失或不连续。在软件设计中,引入了Windows线程的多任务处理技术(multitasking)。一个线程是程序的一条执行路径。MFC(Microsoft         Foundation Class)明确区

18、分了两种线程:用户界面线程(UI)是一个消息泵,用于处理用户界面的任务;工作者线程(Worker         Thread)完成用户自己定义的任务,可以充分利用工作者线程来完成数据的采集、传输以及处理,以保证数据的实时性、完整性和连续性。        在使用多线程时,如何防止两个线程同时访问同一个数据集(SRAM中的4K个数据可以看作是一个数据集),以及当HALF      

19、60;  FLAG标准已出现,一个线程正在往SRAM中写数据时,另一个线程要读取SRAM的数据,该如何处理,是保证数据完整性和连续性的关键。有四种使线程编程更安全的线程同步对象,保证多个线程能在一起适当地协调工作:Critical         Section(临界区)、Mutexe(互斥)、Semaphore(信号量)以及Event(事件)。其中Critical         Section是保证在某一个时刻只

20、有一个线程能访问SRAM的简易方法,通过对邻界区对象的Locking(加锁)和Unlocking(解锁)来使得任何线程都可以调用访问SRAM中的数据集,同时每个线程都必须礼貌地等待他们访问受保护的SRAM中数据的机会;Mutexe与Critical         Section很相似,只是使用起来稍复杂一点;Semaphore与前两者也很相似,但Semaphore允许多个线程同时访问同一资源。这与前两者在同一时刻只允许一个线程访问一个资源的限制不同。在创建Semaphore时,需要指出允许同时访问同一资源的最大线

21、程数目。在本系统中,主要有数据采集、标志位辨别、数据传输、信号处理等线程,使用Semaphore方法已足以满足要求。但是在设计线程时,要合理规划多个线程对同一资源的使用顺序,这可以通过设定每个线程的优先级别来实现。在本系统中数据采集具有最高的优先级,其次为数据传输。线程优先级常量设定如下:        THREAD_PRIORITY_ABOVE_NORMAL         设定一个比普通级高一组的优先级  

22、60;     THREAD_PRIORITY_BELOW_NORMAL         设定一个比普通级低一级的优先级        THREAD_PRIORITY_HIGHEST         设定一个比普通级高二级的优先级      

23、0; THREAD_PRIORITY_LOWEST         设定一个比普通级低二级的优先级        THREAD_PRIORITY_NORMAL         设定为正常优先级        应用程序为:    &

24、#160;   UNIT THREADSAMPLE(LPVOID param)         Csemaphore Semaphore(2,6);        someResource.UseResource();        :messageBox(HWND) param;    

25、    _outp(BaseAdr+2,0x34); /选择Pacer触发A/D        _outp(BaseAdr+4,0x01); /启动Pacer         UNIT THREADTRANSDATA(LPVOID param)         float data1,data2;  

26、;      someResource.UseResource();        :MessageBox(HWND) param;        _fmemmove(data1,data2,Samplen);        1.4 高速数据锁存技术    &

27、#160;   在高速连续数据采集系统设计时,高速数据的锁存一直是个难点。A/D转换的速率越快,数据锁存的难度越大。为确保数据的完整性,采用将数据输出端口的数据分成四路输出,为了补偿数据的传输延时以及SRAM的建立时间,在进行四分频时要推迟12个时钟,数据进入SRAM后,便可以将数据分组打包传输给计算机进行处理。        1.5 板卡的抗干扰措施        在高速连续数据采集系统设计时,应避免各个

28、信号之间的共模干扰以及信号的完整性。在本PCB设计时,采用了六层板设计技术,分别为布线和元件层、模拟地和±12V电源层、数字地以及ECL的VCC信号层、模拟+5V和数字+5V和+3.3V层、模拟-5V和数字-5V和+2.5V层、布线和元件层,并且使用了大面积的电源和地层可以使各信号线与地或电源平面之间形成与紧偶合以达到减少信号线之间的共模干扰。模拟信号与数字信号相互隔离,并单独供电。这些措施的采用,有效地抑制了信号间的共模干扰。        2 实际应用    &

29、#160;   笔者设计的基于PCI总线协议的板卡已应用于某国防项目,由于篇幅的原因,省略硬件结构图,程序框图如图1所示。为了加快数据的读写速度,采用了16Bits寄存器,在读取A/D转换结果时可一次读入16Bits数据。16Bits数据格式如下:                                          部分关键源代码如下:        #include "CtrsysDoc.h" #include         "afx.h" #include "

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论