其他主题讨论区

取消
显示结果 
搜索替代 
您的意思是: 

初学labview的一些困惑

鄙人熟悉硬件,熟悉下位机编程,现在想通过上位机软件编程来实现电脑界面控制下位机(奈何某宝上没有成熟的17寸以上的串口控制屏),为了编程更灵活而没有使用组态类的软件,选择了QT和labview,由于QT的ui界面实现有一定工作量,遂选择了labview,而且所有教材在应用上位机和下位机的控制系统里都极力推荐labview,于是就开始了。

界面很开搭建完成。

在实现逻辑里遇到了头大的事情:

1、按钮互锁,这个在控制领域里那么常见的功能居然无法很好的实现,我的要求很简单,10个按钮,同一时刻要么全部弹起要么一个按下其他禁用。有人用属性节点,可是10个按钮呢,连线太多,并且禁用属性不是布尔量。有人用radio buttons可是我不想让一个按下后其他也能动作。有人用事件,可是只是顺带提了一句,并没有相应的例程可供参考。而比较郁闷(奇葩)的是:那么多的教材、视频教程、指导资料里居然没有一个人提起按钮互锁这个控制领域用烂了的功能。

2、while循环,多么熟悉的字眼,也能出现疑问?很正确,出现了。试玩labview当然首选按钮和灯了,A按钮控制A灯,B按钮控制B灯,玩的很嗨,这时候突发奇想,把其中一组放到了while循环里,这时候再运行发现另一组不能用了……说好的数据流驱动呢,A组招谁惹谁了,我想说的是while在实现其自身功能的时候影响到了不相关的逻辑运行啊

3、串口,这个太老生常谈了吧,居然也能进坑,谁叫咱是小白中的小白呢,没办法啊,要是老黑就不来发牢骚了,专心干项目或者来论坛解答问题要紧。不闲扯了,问题是所有的串口介绍(书籍上、视频里)通篇一律的直接把串口数据引导了一个字符串显示框里,试问,我把串口数据弄显示框里对于一个自控或者说测控设备来说有毛用啊,真正麻烦与不会的地方是数据的处理,由于是带帧协议的那种,可是没有发现一个人讲到……

希望有大神来帮忙……救救一个在labview海里狗刨的小白……

0 项奖励
1 条消息(共 4 条)
4,153 次查看

您好,

我不是很明白。请问您可以把您的问题简化吗?

0 项奖励
2 条消息(共 4 条)
4,103 次查看

1.用好for循环,多按钮互锁也不麻烦。

2.控件两个循环一起刷新会有冲突,不能很好驾驭刷新冲突的话,可以用梯形图的思路用一个while循环实现所有功能。

3.所有的协议解析,用基于Excel的表格配置解析就不难改动和变化了。当然前提是协议结构的Excel的列实现。

初学labview 不用幻想两点一线的提升路径,干就完了。活干的多了,水平就上去了。labview是不完美的,但是是个有力的工具,尺有所短,寸有所长,该用的地方用就是。

 

hil2.pnghil3.png

pang00@163.com
0 项奖励
3 条消息(共 4 条)
1,988 次查看

您好

1.多按钮互锁可以使用事件结构,在编辑事件时可以勾选限制事件队列中最大实例数,并将实例设置为1,此时只可同时进行一个事件,当该事件触发时,此时再由其他按钮触发的事件不会执行。同时也可以使用For循环,将控件引用合成为数组使用索引接入For循环中设置控件的禁用属性置,使用For循环可大量减少属性节点的连线。对于将控件引用合成数组,可以使用Ctrl+Shift+Space呼出快速放置面板,再使用Ctrl+Shift+W实现快速接线。

2.因为没有源代码图片,我猜测您在实现“A按钮控制A灯,B按钮控制B灯”时执行VI选择的是连续运行,此时可以理解为该程序在一个while循环中,在每一个循环中:A按钮赋值给A灯,B按钮赋值给B灯,当上述两个动作都执行完毕后才会执行下一循环。而当把其中一组(比如B组)放入while循环中时,假设您运行VI时选择的是连续运行,同理,可以理解为该程序在一个while循环中又嵌套了一个While循环,在外层的一个循环中:A按钮赋值给A灯,和一个While循环(B按钮赋值给B灯),同理,当上述两个动作都执行完毕后才会执行下一循环,因为B按钮赋值给B灯的循环一直无法结束,故无法进入下一循环,也就出现“另一组不能用了”的情况。此时将另一组置于同一个或另外一个while循环均可使用。

3.数据解析的工作可以从网上找一些实例,对帧的处理可以采用字节及字符串相关函数。

 

另外,无论是Labview、QT还是Wincc、C#,其归根到底还是工具,真正能发挥工具的作用还是人。Labview的优点在于图形化了编程语言,使其上手更简单一些。但同样,与其他编程语言一样,也需要先去学习自带的函数,在B站有许多相当不错的教程。正如您提问的第三条问题,可以去学习字符串相关函数的知识。

0 项奖励
4 条消息(共 4 条)
1,357 次查看