欢迎来到天天文库
浏览记录
ID:38743279
大小:168.00 KB
页数:9页
时间:2019-06-18
《中级LabVIEW程式设计技巧与观念》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、中级LabVIEW程序设计技巧与观念Iif叙述的写法a=a+1的写法getch()与kbhit()程序中有while循环的结束方法Occurrence的功能及使用方法平行循环执行时的同步性巢状if结构的改良StateMachine的观念及写法 高科技产业需要好的生产设备作为进攻市场的利器。而如何控制生产设备的自动化则是决定此设备优劣的要件之一。在一个公司考虑采用何种系统来控制生产机器,选择多数日系机器都采用的PLC (ProgrammableLogicControllers)系统(如三菱的FX2
2、或A系列),或藉由PC接口(如ISA、PCI、GPIB等)来控制机器的系统,是最优先考虑的难题,因这两种截然不同的控制系统需用不同的软件及各有优劣,因此往往也很难下决定。当初本公司在决定要采用PLC系统或是PC-based系统确实经过一番挣扎,由于大部分工程师的背景并非机械或控制科系出身,要想建立公司自行发展的技术基础,无论是采用PLC系统或是PC-based系统均需重新学习。最后决定采用PC-based的系统来作自动化控制,并使用软件为NationalInstruments公司的LabVIEW(
3、以下简称LV),主要着眼于其发展的弹性与潜力比PLC系统来的大,不仅可随全世界的软件进展而不断改良,而使其应用范围越来越广,举凡机械运动、仪器量测、网络通讯、影像处理…等均可应用,除此之外,更可支持activeX的对象(objects)的插入连结应用于LV中,进而使LV的能力也越发强大到令人咋舌的地步。 在LabVIEW程序设计的技巧与观念上,以下提供一些个人心得供大家参考: if叙述的写法:在LabVIEW中并没有if的语法,这对写惯了text-based程序语言的人来说,刚开始还真有点绑手绑脚
4、,施展不开。解决的方法为所有的if判断叙述均改用case结构来取代即可,原本就有写过C语言的工程师很快就能上手了,但还是要花一小段时间来适应。 a=a+1的写法:有没有搞错?这么基本的写法还要讨论吗?程度也未免太低了吧!没错,它是很简单,但刚开始时也确实有些小困扰,因LabVIEW中,一个变量在一般情形下只能出现在blockdiagram中一次,将一个数值变量加一后再连回自己本身是最直觉的想法,但若如此,便会因dataflow的方向相互抵触的关系出现断线,解决的方法有两种:1.1. 使用l
5、ocalvariable,如:2.2. 若是在循环中便可使用shiftregister来帮忙达成目的,如下图所示,但记得shiftregister最好要给初值,否则初值将预设为0。getch()与kbhit()﹔对C语言有经验的人一定很怀念这两个函式:getch()与kbhit(),这两个函式的功用差不多,差异是kbhit()只会侦测到键盘是否有按键被按下,而getch()则除了kbhit()的功用外,还会传回被按下按键的ASCIIcode。这两个函式可让程序暂停去等待某些键盘指令,非常好
6、用也非常常用,例如:按下”y”或”Y”代表YES,”n”或”N”代表NO等等。但一到LabVIEW中就发现,当程序执行时想要实时读取键盘有何输入并不是很方便,常用的做法是设一个numericcontrol或stringcontrol,用鼠标去移动到control上及按鼠标键,然后再由键盘输入某些键,再按enter或移动鼠标到toolbar上按下一个勾勾的按键,才能将键入的键值由程序读入,对于只为了单纯目的让程序继续的单击动作(如按下”y”或”n”)而言,似乎太麻烦了,然而这类单击动作显然还是非常有
7、需要的。以下提供一个简单的subVI:getch().vi,具有C语言中getch()的功能,如此便很容易加到一般程序中了。当程序读到键盘有按键被按下时,将按下的键值传出后即结束。因其中有用到一个readkeyboard.vi的subVI,使用时要注意在主程序呼叫getch().vi前,要先呼叫过OpenKeyboard.vi,否则getch().vi中的ReadKeyboard.vi会读不到键盘,而主程序结束前要呼叫CloseKeyboard.vi。 程序中有while循环的结束方法:一般而言,
8、当程序执行完所有的程序代码后就自动结束,这种情形也就没什么需要讨论的。所以以下针对程序中有while这种无限循环在程序里面的情形作讨论。1.1. 程序在执行时,按下上方toolbar中的红色圆形停止键。这个方法看起来方便但实际上并不理想,理由是你并没有真正在程序中写使程序结束的程序代码,而是用LabVIEW本身去终止你的程序,程序的dataflow将停止在你按下停止键那一刻的地方。2.2. 稍微改良的简便方法,是用一个BooleanControl(如stop)来连在
此文档下载收益归作者所有