您好,欢迎来一对一服务网! [请登录]  [免费注册]
咨询电话:400-008-1115
仪器的丢点现象及环形内存原理
http://www.otoworld.cn 2011年5月20日 10:31:30
仪器的丢点现象及环形内存原理
添加时间:2011-5-19 
 
  1矛盾的外在表现与内在原因
  边采集数据边显示波形时的情况。实验是用信号发生器发出正弦信号,虚拟仪器使用先采集一段数据,然后立即显示波形的方法。从图一中可以看出,原本相当漂亮的正余弦信号在中间出现了不规则的波形。这将给后面的数据分析带来很大的误差。丢点现象由于会使原本变化缓慢的信号出现突变,就会使采集到的信号出现高频成分,从而产生频率混叠现象。
  产生这种现象的原因主要是:计算机在显示刚采集到的那段数据的时间里,外部信号发生了变化,计算机由于要处理显示信号的问题而无暇顾及外界信号的变化。当计算机显示完数据,再来采集信号时,外界信号已经丢失,于是就出现了图一所示的情况。
  2矛盾的解决方法
  由前面的实验可见:采集信号时波形动态显示与信号数据的完整性是一对矛盾。当然,这对矛盾并不是不可调和的,我们可以利用Windows系统的多线程技术以及环形内存池技术来解决。
  为了提高数据吞吐率以及实现实时数据处理(如随时取数,随时存盘,随时显示波形等功能),可以采用一种最新,最灵活的设计思想,即数据采集传输和数据处理相独立的思想。即用所创建的设备对象在Windows系统空间里开辟一个固定长度为128K,且连续的非分页环形内存池Buffer,将采集的数据填充在环形内存池中,且维护一个当前指针,它指向环形内存池中最新数据的位置环形内存池动态指针变化规律。当设备对象开始数据传输时,程序自动维护这个指针,使这个指针从0位置开始向65535位置方向移动。当到达65535时,设备对象即完成了一个环形周期的操作。只要用户没有暂停设备或释放设备对象,则自动开始下一个环形周期的操作,指针又将开始从0往65535方向移动,其新的数据将逐渐地覆盖上一个环形周期所采集的数据,程序总是这样周而复始地往环形内存池填充最新数据。一个环形周期的时间长短,因其池的深度是固定的,所以唯一取决于设备采集频率,如设备以100KHz(即10微秒一个点)工作,则一个周期为10uS*65536=655360uS,655360/1000=655.36毫秒。
  在编程时可以利用多线程技术,即一个线程只管采集数据,另一个线程只管处理数据。采集数据线程每采集完一段数据就发一个消息给处理数据线程,处理数据线程接到消息就处理数据,同时采集线程也工作。这样就实现了采集数据与处理数据并行操作的功能,从而解决了数据采集时动态显示波形与丢点之间的矛盾。
  3结束语
  环形内存池技术在解决波形动态显示与数据完整性矛盾取得了良好的效果。在计算机的CPU主频越高,信号的频率不是很高的情况下,这种数据采集传输和数据处理相独立的作法更显优越。本文说明了环形内存的原理,读者可以用不同的编程语言去实现。
本信息真实性未经本站证实,仅供参考。资料来源于互联网,如果损害到您的利益请联系我们处理。
s