有关数据采集
我是用AI config,AI start,AI read采用循环缓存的方法进行数据采集的,也就是说采集是连续实时的。但是由于对计算速度有较高的要求,缓存区总是溢出,所以我想对何时采样何时不采样 进行控制,不知道应该怎么对其进行控制啊!
减少一次读取的点数,增大缓存区,这些我都干过了,系统对速度要求比较高,采样率设到最大5M,因为主要是为了提高每秒钟计算的数据量,所以采样率没法降低。而且我发现单纯增大缓存 区并不能从根本上解决问题,只会延缓溢出的时间,趋势还是会溢出的。
一开始我是采用对读取点数进行部分计算,部分不计算的方法,但是还是不能满足我一下步的要求,所以想控制一下何时采样何时不采样来解决缓存区溢出的问题。
只需要单次采集波形,然后计算. 然后整个放在一个大循环里面就是了.
.18
可是这样采集完了再计算要比边采集边计算要慢很多吧?我的本意其实要提高每秒钟计算的数量。
不一定,要看具体的采集卡
一般来说采集卡采集卡采集一段时间的数据缓冲后再读取
这样效率高一些,系统开销要比采一点就计算一次要小得多
是啊,但是数据太多buffer很容易溢出,我用的PCI6111
我试了,这样采集不是连续的,速度还是提高不上去啊,不知道有什么其他好的办法?
你不需要连续采集呀!就这样试,置成你的卡允许的最高采样率,适当控制样本数,只能如此。若还不满足要求,那只能走旁门左道,例如对采样得到的数据设法做插值,来“提高”采样率了。
我不是要提高采样率,采样率5M就足够了。
我现在是连续采集,采样率为5M,每次读取点数为50K来计算一个数据,这样算也就是每秒钟可以计算5M/50K=100个数了吧?可是这样的话不能连续计算,缓存区会溢出报错。曾经采取了一些方法,但是每秒钟计算的数据量不能保证,(要求是每秒要计算80个数以上,以便于以后的数据处理),所以请教各位了,多谢
那应该是你的缓冲区读写机制有问题了
你是不是用的循环方式读取缓冲区数据的?这样的话如果后续的数据处理速度跟不上
很容易就出现缓冲区溢出了
是循环方式,要保持连续采集除了这种方法还有什么好方法么?
你说的没错,是后续的数据处理速度跟不上,计算算法不能改了,所以想让它根据缓存区的情况暂停采集,与此同时继续对数据进行读取和处理,主要是缓存区不要溢出,让计算连续就可以了。
你的计算速度跟不上数据采集速度,是硬伤,没办法的
要么改进算法,要么升级硬件,要么降低采样速率
连续采集就是这样工作的.除非你不用连续采集.
你可以修改数据处理的部分.比如你每次读出50K数据.只处理40K.剩下的丢弃.或者处理几个50K后丢弃一个50K.这个和你停止采集是一个效果.不过如果你丢弃足够的点的话,也许缓冲区不会溢出.
.18
谢谢提出的建议,如果连续采集的话,采样率5M,每次读取50K时,每秒钟计算数据量为100,这是所要求的。这个方法我曾经试过,用每8个50K中的一个进行计算,其他七个丢弃掉,这个时候不会溢出,但是每秒钟计算的数据量却不能保证,这样的情况下,每秒钟只能计算12.5个数。所以……
你怎么还在发帖子阿,问题已经很清楚了,是你的计算平台运算能力不够
赶紧升级算了,或者就接受目前的状况
快去找老板要钱买板子吧
呵呵,那我只能接受现状了……