完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
设计了一个闭环反馈程序。
我的思路是: 一、首先使用串口和一系列子VI(这里称仪器VI0)向仪器发送命令,但是我想要这部分程序只在启动程序的最开始运行一次(简单来说,就是向仪器发送一次命令,让仪器开始运行产生数据) 二、仪器接收到命令后开始运行,产生的数据由DAQ助手接收,再利用生产者消费者模式将数据处理后反馈给控制仪器的子VI(这里称仪器VI1)(消费者模式中的VI1用来接收处理后的数据,再将其反馈给仪器,因此相当于构成了一个闭环)。 我的问题是: 仪器VI0只需要运行一次(仪器的初始启动),因此把它放在生产者消费者模式之外;仪器启动之后就会产生反馈数据,所以仪器VI1放在消费者框中来不断的对仪器进行反馈控制。这样就需要两次调用VISA资源名,运行程序会报错。 请问应该怎样解决这个问题,或者有没有其他方法可以实现相同的功能? |
|
相关推荐
2 条评论
5个回答
|
|
首先可以确定的是多次、依次调用INIT.VI来打开仪器资源、进行操作、再关闭时不会出错的。其次我这边不能确定您这边的错误讯息,所以只能暂时提两点问题。
1、一般的仪器init都会有reset和query,且默认是“T”,可以考虑在初始运行时做reset,之后再次进行调用时,可将其设为“F”。 2、针对您这边描述的“两次调用会出错”,进行猜测,是否是因为两次的调用会有重叠部分,可以考虑使用顺序结构或者错误簇(推荐)进行顺序控制试一下
最佳答案
|
|
1 条评论
|
|
方法有很多,你的程序主要是打开和关闭有两个,打开后直到结束程序时再关闭,而且你都用生产消费了,为啥还在循环外搞事情
|
|
5 条评论
|
|
用一个while循环里放一个条件结构。添加3个移位寄存器,分别连接VISA资源、错误簇和真常量。真常量用于第一次循环运行VI0(条件结构真),然后赋值该移位寄存器右端成假。(相当于第一次循环运行条件真,之后都运行条件结构假)。条件结构假里放顺序结构,先运行你的生产者结构部分,在运行VI1。循环结束记得关闭VISA,不然下次运行会报错。由于我公司电脑文件加密的原因上传不了图片。
|
|
5 条评论
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
用udl里的字符串信息在局域网内其他电脑连接sql数据库为什么为出现连接失败拒绝访问?
1778 浏览 2 评论
为什么同一个队列引用的全局变量,运行在两个子vi中发现队列数据丢失了
1389 浏览 0 评论
1593 浏览 0 评论
关于labview2024版本的lvanlys.dll出错的问题
3381 浏览 3 评论
1511 浏览 2 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-24 14:16 , Processed in 3.325913 second(s), Total 159, Slave 121 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号