微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 测试测量 > Labview > 串口高速数据采集的频率如何控制

串口高速数据采集的频率如何控制

时间:10-02 整理:3721RD 点击:
      请问大家做串口高速数据采集的时候一般怎么控制频率的,假设采样频率为500HZ,那么每间隔2ms就要采集一次,可是用等待或者等待下一个毫秒函数都会有误差,对于高速数据采集的时候好像不合适了,现在频率越做越高发现这个问题越来越突出,不知道遇到这样的问题,各位会如何保证采样频率的准确性。谢谢啦!

用时钟分频

时钟分频不是硬件的吗?我不是很懂你说的什么意思,能详细说明一下吗,或者给个图就更好了

大家说说吧。

没人想过这个问题吗?

你自己把话说清楚,串口,什么串口。别人怎么回答,可以搜索后在提问

就一般的232串口啊,关键这个问题和串口无关,其他口也行,问的是如何保证高频率,是串口还是网口还是SUB口或者板卡都无所谓,只是想知道怎么精确控制频率。

你的程序写好没有,通讯成功了没有

我写的采集程序怎么慢到每隔300ms才能采集一次呢?采集快了跟下位机通信就出现错误。

当然,我做过好几个项目的串口数据采集,频率不断提升,只是现在发现我用延时控制频率的方法有缺陷,频率越高越明显。

或者是你下位机频率不够快呢,上位机程序的运行费时都很小很小。

波特率  字节数  下位机的运行频率   232串口一般就是100--200MS的运用,要快就要考虑别的通讯方式,

波特率115200,一帧52字节,下位机频率之前是100HZ,现在已经200HZ,已经极限了。

波特率115200,一帧52字节,下位机频率之前是100HZ,现在已经200HZ,已经极限了。

你好,这是我的程序框图,麻烦您看一下问题在哪儿

你好,这么说我现在延时300ms也不是很慢吗?如果想高速传输数据的话跟电脑通信一般采用什么通信方法?

你的采样频率是500HZ了,即2ms采集一次数据,这个数据会暂时存储在串口的缓冲区中,一般串口的最大存储字节数为4096,一定要在字节数存储满之前,把数据捞走,否则会有数据丢失的情况。而你的捞取数据间隔为2ms,相当于采集的一次数据,不知道你这采集一次的数据字节数大小为多少?一般镭射数据都在8—16字节数,也就是说它采集一次,你捞取一次,这样缓冲区的字节永远不会溢出(最好用属性节点:端口字节数,端口有多少,我就一次捞多少)。如果一次采集的数据的字节数就大于4096,那么就要再降低捞取间隔时间(最低为1ms),如果还不满足,就请不要用串口采集了,请考虑用模拟量采集卡来收集数据。

你好,我的一次是54字节,频率目前是200HZ。用串口应该能够搞定,问题在于我的思路可能有问题。我是每5ms读取一次串口,是按串口大小属性节点读取全部字节的,然后将读取的数据进行处理计算显示写入保存等操作。关键是5ms的读取频率我是用等待下一毫秒控制的,你知道的,这个肯定会有误差。但是我一帧54字节,按波特率115200来算发送一次也需要4.785ms,这个和5ms太接近了,所以如果读取的时间不是刚刚好5ms ,很容易就会出现在数据还没发送完就开始读取了,就会不能读到完整的数据,这样频率就达不到。所以想知道大家是如何精确控制高频率的。

小编你的波特率是115200,一次字节是54(没有起始位、校验位、停止位情况下),发送一次时间应该是(54*8)/115200*1000=3.75ms。我之前做过一个项目是CCS(光谱聚焦),类似于镭射,用来测量产品的高度差。它本身的采样频率设置到1000HZ,波特率也是115200,一次采集的数据字节是数16,没有起始位、校验位、停止位,我的捞取时间间隔是2ms,用模组移动采集到的数据波形与它本身自带的软件所形成的波形是一致的。你做下参考

应该是有两个停止位的,时间是4.6785ms。我的功能能实现,也有波形图表显示曲线,我测的是惯导系统的,就是测量姿态角的,只是频率达不到要求,因为有些读取的 不是完整的一帧然后我校验的时候就会不通过然后就会被舍去,所以总会少部分数。我不懂你说的模组移动什么意思,能详细点说明,或者更给个图或者程序参考一下吗。谢谢


应该是有两个停止位的,时间是4.6785ms。我的功能能实现,也有波形图表显示曲线,我测的是惯导系统的,就是测量姿态角的,只是频率达不到要求,因为有些读取的 不是完整的一帧然后我校验的时候就会不通过然后就会被舍去,所以总会少部分数。我不懂你说的模组移动什么意思,能详细点说明,或者更给个图或者程序参考一下吗。谢谢

就看你这部分程序我觉得没问题啊,我有个帖子有类似的程序,你可以参考一下,那个可以采集200HZ 的温度数据

300ms肯定是很慢了。我觉得一般的速度什么口都够了,非要高速的话,可以考虑用数据采集卡,或者用C++之类的语言编写,那个很容易实现很快的速度

300ms肯定是很慢了。我觉得一般的速度什么口都够了,非要高速的话,可以考虑用数据采集卡,或者用C++之类的语言编写,那个很容易实现很快的速度

正被这个问题困扰,能和我说说你的模组移动的思想吗?

还未解决,谁解答一下啊

谁有好的结构分享一下

欢迎继续解答。

毫秒函数有誤差?指的是下位機還是上位機?

有啊,定时5ms肯定不是刚好5ms。书上说定时循环、等待下一毫秒、等待函数精度以此递减。

我说的是LV的定时,我用的是等待下一毫秒或者等待函数控制频率,会有误差,如果当下位机频率很高并且数据帧很大时,我这样的结构因为定时精度问题,会有很大的弊病。

下位機頻率多高 大於115200 還是多少好像就好使了

那你定時1ms行不行

继续请求解答解答

串口高速数据采集,下位机盲发的,如何实现呢

波特率115200,一帧57字节,发送就需要大概4ms,如果定时1ms,那每次都读取的是不完整的帧。

100HZ已实现,丢数的概率是百万分之四。

希望频率可继续提升

好东西谢谢分享

新建了一个LabVIEW技术起不保守交流群(557572818),欢迎加入一起交流讨论。

一般软件循环至少2ms这个在上位机很难达到
除非用实时系统

读取的数据不完整,你可以通过拼接 处理
数据存储到硬盘也是会占用时间的

你好,小编,你的问题解决了吗?我现在做的是一秒3200帧,一帧13字节,波特率为460800,是不是用串口不可能实现?现在读取十几秒就会出错。

目前不知道我的程序最大能达到多大频率,试过200HZ的没有问题,没有更高频率的硬件给我实验

学习一下。

靠软件定时采集不可能精确到mS,另外串口通信速率太低,也不可能做高速数据采集,至少需要用USB,PCI接口的数据采集卡,并且是带缓存的数据采集卡才可以,采样时钟是采集卡提供,采集的数据保存在板卡的缓存,labview至少读取缓存。你可以在某宝上搜一下"高性价比USB多功能数据采集-100K单端\差分AD、DA、IO、PWM、计数"类似的采集卡可以做到100K的采样速率,并且提供有视频教程

靠软件定时采集不可能精确到mS,另外串口通信速率太低,也不可能做高速数据采集,至少需要用USB,PCI接口的数据采集卡,并且是带缓存的数据采集卡才可以,采样时钟是采集卡提供,采集的数据保存在板卡的缓存,labview至少读取缓存。你可以在某宝上搜一下"高性价比USB多功能数据采集-100K单端\差分AD、DA、IO、PWM、计数"类似的采集卡可以做到100K的采样速率,并且提供有视频教程

多谢小编...
多谢小编...

你好,这些我知道,目前就是想知道串口能达到多大频率,并且都是如何实现高频率。比如目前我能实现200HZ的数据采集,我希望能达到500。

我现在做的是下位机每2MS发送一次19字节的数据,能记录文件,但是如果加上数据处理就会出问题 ,你能指导下我吗!万份感谢

你想通过串口来控制采集频率?你是在逗我吗?
串口通信是在时间上是很稳定的。你的采集频率和读取频率完全是两个问题,因为串口通信有缓存存在,你的读取频率小于采集频率一般也是没有问题的。当然如果你的采集频率非常高,每一组数据又很大,串口丢数据是必然 的。根据波特率能直接估计出每秒能传输的数据的量,自己估算下。

这个是没法精确控制的。我的做法是,检测包头包尾,如果是完整的一组就用,不是就留下拼接到下一组收到的数据上。

好像算起来还没超过理论值?但是感觉串口用这么高的频率出错是必然的,不出错才有鬼了。

这个是硬件问题吧。明显是处理速度跟不上啊。这个要不储存延后处理,要么升级硬件啊。

这个具体怎样操作呢。我本是想采集数写入文件同时进行数据解码进行前面板显示。不知如果用生产者和消费者模式可不可实现。下位机每2ms发送一次19字节的数据。包括两字节帧头,中间数据,一位校验和,无停止位。

这个具体怎样操作呢。我本是想采集数写入文件同时进行数据解码进行前面板显示。不知如果用生产者和消费者模式可不可实现。下位机每2ms发送一次19字节的数据。包括两字节帧头,中间数据,一位校验和,无停止位。

e

.

我的问题就是如何在高频率大数据量的情况下保证少丢数,根据波特率和数据包大小,串口的通信频率可以很大

理论上是很可以很大,但是频率上去后,出错率也会上升啊。至少在我这是这个样子。如果真的需要高速采集数据真心建议考虑其它的通信方式。这玩意初始设计时应用场景就不是什么高速通信的场合,后面来提高通信频率之类的只能说是属于废物利用,可以工作,但是不只能指望它有多好的可靠性和稳定性

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top