有一个采集程序,要求采集速率为10kHz,该怎么采呢?提供个思路交流一下。 (50分)

  • 主题发起人 主题发起人 lixx
  • 开始时间 开始时间
L

lixx

Unregistered / Unconfirmed
GUEST, unregistred user!
现在要做一个自动探伤系统,要求信号采集速率为10kHz,我的方法是
使用计时器,每隔 100ms 采1000次,这样从总体来看也是1秒采集10,000次
后来我发现:100ms内采集1000次时实际上也许10ms不到就采集了1000次,而剩下的90ms
就什么也没干!从而使整个系统出现大面积漏检!我所需要的是在100ms内进行等分地采集1000次!
如果将计时器设置为1ms采集10次的话,我想可能还会存在同样的问题,我该么办呢?

各位能否提供个思路,参考交流一下?

//现在我正在针对研华PCL-720 I/O板进行编程。
//可是怎么就是调不通,不知哪位有类似的经验,想借鉴一下。
 
这块卡没用过,但类似的东西接触过.
说明书应该告诉你了基地址,在程序中初始化端口后,就可以读写端口了.
注意以下几点:
1.Win2K和NT是不能直接访问端口的
2.每Byte8个位要么全作为输出,要么全作为输入
 
我已经按照说明了设置了基地址,问题是:
我这块卡是当作 开/关 板用,不知用不用设置时钟频率源?
(这块板上面有10M 100k 等三种时钟源,而且还可以四分频、二分频、二倍频等功能。)
各位有没有类似板的调试经验?不妨介绍一下。
 
我没有接触过这些板子,但我觉得厂家应该提供详细的使用手册(编程手册),也就是说,
“用不用设置时钟频率源”等问题,应该看手册或询问厂家。厂家或许还提供了驱动程序。
 
板子使用问题,我已经基本上解决。

采集问题,还请大家帮忙!!
提供个思路即可!
 
没必要设置时钟,采集时不用10KHz,用I/O板频率采集,在存储时自已处理数据改为10KHz,
我以前做过类似的工作,不过就是时时显示和调用已存数据时图象有点不同
 
我从我编写单片机程序和对DELPHI的一些了解来看,是否可以定100微秒的时间,在定时
溢出是读取采样数据,不就OK了吗?
只不过好象DELPHI自带的定时器的基本单位是1ms。。。。
 
windows系统的Timer时间精度好像是十几个毫秒(精度不到1毫秒)……
如何提高精度?如何采集?

如何在100ms内进行等分地采集1000次????????????
如何在100ms内进行等分地采集1000次????????????
如何在100ms内进行等分地采集1000次????????????
分不够可以再加,虽然我没有多少分了…………

如果不想说帮助提前一下,先谢了!
 
在Windows环境中,用传统的VC定时器Timer事件,只能精确55毫秒左右,(Delphi中Timer的精度也高不到那里去吧?)
而用MCI多媒体定时器,通常也只能精确到6毫秒,这可让我怎么采啊!
 
Windows这个多任务操作系统可提供的线程级定时精度也就1ms左右,想用它实现稳定的高于2kHz的采样率
是不现实的(除非系统中没有其它线程和它抢占CPU资源)。建议采用DOS或者其它的实时操作系统(没错
——DOS是实时操作系统!),或者干脆用单片机实现。
另:声卡好像可以实现44.8kHz的采样率——如果是模拟信号的话,何不通过声卡实现?
 
这么讲的话,Windows下使用的那么多数据采集程序,有的速率高达300KHz,它们是怎么实现的?
如果说是依赖特定的硬件比如某种数据采集卡,那么这种采集卡又是如何使用的呢?
我觉得一般的数据采集卡都会支持高速采集的。
 
这还不简单——采集卡将得到得数据存放在内部的缓冲区里(也有可能通过DMA放到内存中),
CPU每隔一段时间整批读出来就可以了。——声卡、网卡不都是这么做的吗?
至于其它的,采集卡的编程手册上应该都有。
 
Similar to the vcl Ttimer component, but with a resolution of 0.1ms and accurate to
0.015ms.
Some observed timing measurements of Tztimer, compared with the (vcl) Ttimer :
{ evaluation of 60 runs on W95, P133, D3}

interval (vcl) Ttimer Tztimer
100 ms 108 +/- 4 ms 99.3 +/- 0.14 ms
10 ms 59 +/- 5 ms 10.1 +/- 0.07 ms
1 ms 59 +/- 6 ms (!) 1.00 +/- 0.02 ms
0.1ms Not available 0.098+/- 0.015 ms
我找到了一个控件,试试看是否可以。其实和楼上所说的一样,采集卡供应商应该有
驱动提供的。如果需要可以发给你,only 4kb。
 
》竹竿
发过来一下,先谢了!
lijshu@yahoo.com.cn
lijshu@263.net
lijshu@163.net
精度真能达到0.1ms?

》creation-zy
这跟你的说的不太一样。因为我要的数据是未知的,是无法预测的,单纯的缓冲是没有意义的。
再仔细看看我的上面的叙述,你就会明白我所说的意思。
 
只有做VXD。利用机器的系统时钟,写一个中断服务程序采集数据。
 
综合各位的看法,我得出一个结论:
要想在Windows下采集数据的速度超过6ms,单纯地靠系统是达不到的,
要想进行高速采集数据必须使用特定数据采集板的驱动程序,
所谓写VXD 也是这样(硬件厂商在编写驱动肯定用的也是类似VXD的技术)
我自己是不能写VXD了,因为不知道电路。

由于这块采集板比较老,以前是在DOS下用,现在想移植到Windows下,
它倒是有个Windows驱动程序,不过太简单了只有几个采集函数,没有提到上面所说的类似的函数
不知大家有没有什么好办法?

这个数据采集板是:
型号:PS-2116
厂商:北京众人精密测控技术公司

另:
如果哪位有这块板的相关资料,不妨说一声。
先谢谢各位了。

 
综合各位的看法,我得出一个结论:
要想在Windows下采集数据的速度超过6ms,单纯地靠系统是达不到的,
要想进行高速采集数据必须使用特定数据采集板的驱动程序,
所谓写VXD 也是这样(硬件厂商在编写驱动肯定用的也是类似VXD的技术)
我自己是不能写VXD了,因为不知道电路。

由于这块采集板比较老,以前是在DOS下用,现在想移植到Windows下,
它倒是有个Windows驱动程序,不过太简单了只有几个采集函数,没有提到上面所说的类似的函数
不知大家有没有什么好办法?

这个数据采集板是:
型号:PS-2116
厂商:北京众人精密测控技术公司

另:
如果哪位有这块板的相关资料,不妨说一声。
先谢谢各位了。

 
后退
顶部