完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
最近刚学习labview,写了一个小程序用于温度监测和控温硬件:温度采集模块研华4018,控温采用的简单的继电器通断的方法,使用的是研华4168,另有研华4561用于将
232信号转为u***信号,与电脑通讯。 现在程序能实现温度采集和控温以及数据存储功能,但长期运行时,会出现采集的所有温度信号都为零的情况,继电器模块也无法运行,通常程序出错时,继电器断开,但数据存储功能正常,只是存的各通道温度数据均为空,只有第一行的采样时间信号。 根据网上的一些建议,我在出口读写前后,以及while循环中后都添加了时间延迟,但效果依然不好。 一开始数据储存采用的是写入电子表格的方法,改成TDMS之后,依然出现上述问题。 程序现在采样频率是2s一次,数据存储一般1min一次。 请各位大神指导一下,该如何修改这个程序,希望修改后程序能长期稳定运行,如果能在此基础上能提高采样频率就更好了。 麻烦各位不吝赐教。 |
|
相关推荐
6个回答
|
|
程序有点乱啊,不需要加那么多延时,而且你这种延时方法是最不准确的。建议用整体顺序结构而不是每个延时的地方加一个顺序,然后你数据提取部分好像也不是很科学。
|
|
|
|
那应该怎么样加延时,请您详细说一下
|
|
|
|
你好,你上边采集的程序有些复杂了,串口发送读取这里不用加那么多延时,发送和读取的函数之间加一个延时就足够了; 你在发送串口指令前的"VISA设备清空"函数也参与循环吗?如果参与了,这个函数会把输入输出缓冲区都清空,很可能你这里就没有VISA资源了,就无法正常进行通信了,你可以试试"VISA清空I/O缓冲区"函数,如图;还有不用每次都清除缓冲区的,数据量没有那么大吧? |
|
|
|
延时加的有点多,串口发送和接受之间加一个延时就够了;
VISA设备清零 每次循环都执行可能会清除掉输入缓存,使通信报错,一般都是清空接收缓冲区,在结束通信的时候清空,可以使用 VISA清空I/O缓冲区 如图
|
|
|
|
感谢4楼。
我昨天又调试了一下。 发现,程序出错的时候,visa串口错误1073807194 指令输入到串口中,但设备没有返回测量值。 我自己编写的程序和网上下的串口助手都是这情况,但使用研华官方调试软件却没有问题,能正常返回测试温度。 那么这样的话,是不是硬件以及线路都没有问题,是Visa写入vi 出了问题 |
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
580 浏览 0 评论
1670 浏览 1 评论
用udl里的字符串信息在局域网内其他电脑连接sql数据库为什么为出现连接失败拒绝访问?
2392 浏览 2 评论
为什么同一个队列引用的全局变量,运行在两个子vi中发现队列数据丢失了
1851 浏览 0 评论
2036 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-4 06:11 , Processed in 0.707083 second(s), Total 83, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号