miniyulinr 发表于 2020-8-3 16:54:11

用C8051采集电压信号,Labview做上位机,Labview采样频率低

用C8051采集电压信号,单片机采样频率为50Hz,用串口助手接收数据时采样频率为50Hz,30秒接收1500个点;用Labview上位机接收数据时,采样频率最后只有20Hz,我用上位机30秒时间直接收到595个点。请问如何提高上位机的采样频率,谢谢大家

天下乌鸦一般黑 发表于 2020-8-3 17:08:19

按理说 pc端接收这点数据显示出来问题不大。就是对labview不了解,看你这个图的意思,收到一次就要在曲线里描点一次,界面的刷新耽误时间,你试试不更新界面,看看能搞定50hz不。

Dogdays 发表于 2020-8-3 17:22:22

没有用过labview,你的操作是否涉及到不断的打开和关闭串口?

以前遇到过一个情况,上位机不断的打开和关闭端口,两次操作中间要花费50~100ms左右

zirong0804 发表于 2020-8-3 19:20:48

1-使用MOXA卡,想要1Mbps 以上使用NI板卡
2-labview编程,使用生产者--消费者模式

jjj206 发表于 2020-8-3 19:25:13

Dogdays 发表于 2020-8-3 17:22
没有用过labview,你的操作是否涉及到不断的打开和关闭串口?

以前遇到过一个情况,上位机不断的打开和关 ...

打开和关闭串口在大框外的两个黄色图标实现,也就是在大循环外实现,只操作一次,不存在频繁操作的问题。

miniyulinr 发表于 2020-8-4 20:35:49

原来的单片机输出带了换行符,WINDOWS中,换行符占了两个字节,今天把换行符去掉了,上位机频率与单片机采样频率相差不大,结果算是比较满意。我也不清楚为什么多了两个字节会有这么大的影响。

huangqi412 发表于 2020-8-5 07:56:52

换行符能影响速率?你这才多少字节和速率

ssaiwo 发表于 2020-8-5 08:23:12

跟labview没关系,楼主程序写的有问题,在Bytes at port这个位置会丢失好多数据,你观察一下就能看出来

Firman 发表于 2020-8-5 08:26:43

ssaiwo 发表于 2020-8-5 08:23
跟labview没关系,楼主程序写的有问题,在Bytes at port这个位置会丢失好多数据,你观察一下就能看出来 ...

大神,可否带labvⅰew入门?

ssaiwo 发表于 2020-8-5 08:40:17

Firman 发表于 2020-8-5 08:26
大神,可否带labvⅰew入门?

大神不敢当,以电工的基础知识labview入门很简单的,labview例程很丰富,你可以安装上试试,有不明白的地方随时问我

miniyulinr 发表于 2020-8-5 10:39:34

ssaiwo 发表于 2020-8-5 08:23
跟labview没关系,楼主程序写的有问题,在Bytes at port这个位置会丢失好多数据,你观察一下就能看出来 ...

好的,谢谢,

miniyulinr 发表于 2020-8-5 10:41:56

huangqi412 发表于 2020-8-5 07:56
换行符能影响速率?你这才多少字节和速率

我也不知道,学生,只是通过这个方法解决了我目前的问题。对于目前的我来说,只需要数据满足我的需要就可以

miniyulinr 发表于 2020-8-5 10:45:31

ssaiwo 发表于 2020-8-5 08:23
跟labview没关系,楼主程序写的有问题,在Bytes at port这个位置会丢失好多数据,你观察一下就能看出来 ...

我观察不出来,能详细解释一下吗,感谢

ssaiwo 发表于 2020-8-5 12:10:40

miniyulinr 发表于 2020-8-5 10:45
我观察不出来,能详细解释一下吗,感谢

看visa配置串口控件,上面有个启用终止符的选项,默认是开启的
你启用了终止符,上次读取的数据会被下一次的覆盖,按道理讲应该能看到读取缓冲区里面数值长度是不停变化的才对,这时需要使用移位寄存器,将字符串移位拼接
或者你关闭终止符,应该也会好用(我没具体测试),你现在这个程序和你测试的一样,不发送换行符是好用的,有换行符的接收会不正常

xiaoergao 发表于 2020-8-5 12:47:29

配置一下终止符。VISA默认的是10(0x0A)对应的是回车符号。可以改成换行。(但是实际应用单片机只输出回车就好了)。
接收数据直接填一个比较大的数。遇到结束符会自动输出的。不要用Bytes of port。那个查询接收多少字节的必须电脑端和下位机时间配合比较好才行。
用上面说的方法别说50Hz了。只要波特率够50kHz都没问题。
另外提到的波形图表刷新率问题,对于简单的小程序的话,不用担心。直接更新就好了,labview会自己处理的。

miniyulinr 发表于 2020-8-6 10:11:19

收到,谢谢大家

miniyulinr 发表于 2020-8-7 20:24:36

xiaoergao 发表于 2020-8-5 12:47
配置一下终止符。VISA默认的是10(0x0A)对应的是回车符号。可以改成换行。(但是实际应用单片机只输出回车就 ...

请问不用Bytes of Port的意思是删掉这个属性节点吗,还是其他的,谢谢

sniper.q 发表于 2020-8-8 15:09:01

miniyulinr 发表于 2020-8-7 20:24
请问不用Bytes of Port的意思是删掉这个属性节点吗,还是其他的,谢谢

如何你用了结束符, 且单片机会一直发送就可以不用
把VISA的接收缓冲区设一个大的buffer, VISA在检查到结束符后就会从buffer中提取这一行给你
如果是HEX收发的必须关闭结束符, 否则HEX随机会有0D, 0A这种数据

xiaoergao 发表于 2020-8-8 16:14:54

给你个参考下把,图片下载直接拖到程序框图里就可以了。

miniyulinr 发表于 2020-8-8 20:36:30

sniper.q 发表于 2020-8-8 15:09
如何你用了结束符, 且单片机会一直发送就可以不用
把VISA的接收缓冲区设一个大的buffer, VISA在检查到结 ...

我想请教一个新问题,最近才发现的新问题。我用两个串口对不同的传感器同时进行采样。两组数据存储的时候总是出现问题,保存时间为60秒,数组二有3042组数据;数组也有3042组数据,但是数组这一组从2092-3042都为0。但是双方的波形图表上的波形都正常,数组那一组的波形图表上并未出现0。不知道怎么去解决这个问题。非常感谢。

xiaoergao 发表于 2020-8-8 21:01:28

2个串口的数据未必同时到达,不能放在1个while里面。

miniyulinr 发表于 2020-8-9 09:29:55

xiaoergao 发表于 2020-8-8 21:01
2个串口的数据未必同时到达,不能放在1个while里面。

我刚试了一下,不放在一个while里面,得到的结果还是和以前一样。{:cry:}

xiaoergao 发表于 2020-8-9 13:53:24

labview的延时和单片机可能有错位分包现象,你用我发的那个程序段试试看

miniyulinr 发表于 2020-8-9 15:53:16

xiaoergao 发表于 2020-8-9 13:53
labview的延时和单片机可能有错位分包现象,你用我发的那个程序段试试看

您好,试了一下,不太行。失败了

miniyulinr 发表于 2020-8-9 17:47:31

在我帅气同桌的帮助下问题都已得到解决。非常感谢大家和我的同桌

armok. 发表于 2020-12-31 10:32:51

因为举报该帖子被自动屏蔽和移走。
原论坛:51单片机

armok. 发表于 2020-12-31 11:45:43

帖子移动通知:
原分论坛:举报自动屏蔽区
目标分论坛:51单片机
移动时间:0小时之后

zx310500 发表于 2020-12-31 17:14:13

{:smile:}正好学习下;
页: [1]
查看完整版本: 用C8051采集电压信号,Labview做上位机,Labview采样频率低