欢迎访问ic37.com |
会员登录 免费注册
发布采购

LabVIEW编程实时控制KEITHLEY6517A静电计

日期:2012-9-18标签: (来源:互联网)

LabVIEW编程实时控制KEITHLEY 6517A静电计

基于GPIB接口总线,采用6517A中最简单的按钮命令,在LabVIEW5.1平台上实现了对6517A面板操作的实时控制和信息的同步显示。

关键词:LabVIEW编程;计算机模拟;6517A静电计

REMOTE Real?time Operation of KEITHLEY 6517A Ele ctromet er Based on LabVIEWWANG Jie(NATIONAL Synchrotron Radiation Laboratory, UNIVERSITY of Science an d TECHNOLOGY of China,

Hefei 230029, China)Key words: LabVIEW PROGRAMMING; COMPUTER simulation; 6517A elect rometer1总体考虑

LabVIEW提供了任意一个程序调用另一个LabVIEW程序的办法,即将后者作为一个子程序(即subVI)。因此在实验站的数据采集主程序中,将模拟的6517A作为主程序调用的subVI嵌入其中(当然这个子程序完全可以不依赖于主程序而能够独立运行)。根据主程序的要求,6517A的subVI具备以下特点:

代码简洁,执行效率高;完全能实现真实面板上各个按键的功能,并可以基本同步显示6517A显示的各种信息;独立的窗口,不在视觉上干扰主程序窗口,以方便用户的使用。

对于复杂的未编译的LabVIEW程序,要求代码尽可能简洁,这有益于提高运行速度。而且考虑到6517A参数的调整仅仅是实验站数据采集与控制的一小部分,我们未使用KEITHLEY公司随仪器提供的LabVIEW子程序。对于6517A,有三个途径可以实现面板按键的功能:一是用它的SCPI命令中有关功能选择的命令,如使用SENSe命令组里的各种命令选择测量内容(电压、电流、电阻和电荷)以及与测量这些量有关的各类参数[1]。这种方式功能全面,可用一条足够长的命令直接实现某个功能,而这个功能可能需要按多次按键才能实现,而且用户勿需知道6517A前面板的显示信息(KEITHLEY公司提供的LabVIEW子程序即是这样编写的)。缺点是代码命令长、书写复杂,而且要对所有的SCPI命令非常熟悉。另一种是使用SYSTEM命令组里的SYSTem:KEY〈NRf〉命令。6517A功能面板上每一个功能键均对应了一个数字,如执行:SYSTem:KEY 15相当于人工按一次按键V(电压)。使用这种方式基本就是在计算机显示器上“复制”了前面板的按键,虽然设置某个参数需要多次按键且需要在计算机上同步显示选择菜单,但其代码简洁,且可以利用LabVIEW提供的界面功能,在外型上完全模拟6517A的前面板,不失为一种好方法。第3种方法是用DDC语言,该语言的语法简洁,但不易记忆,难以维护,功能也不强。我们在编写时未予考虑。? 2.1子程序的结构

整个6517A子程序是一个大的whileloop循环。在循环内是前面板上所有按键对应的命令和显示子程序,循环结束的条件是Boolean按钮“RETURN”=false。这种结构有两个作用,由于LabVIEW程序的执行是并行的,因此可以随时接受任意一个虚拟按键的命令,另一是计算机屏幕的显示与静电计的显示基本同步。子程序被设置为“调用时打开、结束后关闭”,在视觉上不影响主程序的使用,即在按下RETURN后,子程序窗口即被关闭。

2.2按钮

图1是6517A subVI的界面,图中字符“Ω”已被替换为“Ohm”。它尽量模仿了实际仪器的前面板,只不过是用RETURN按钮取代了6517A的POWER开关。每个按钮的机械动作置为“Latch when Released”,这样每按一次图中的按钮,程序通过GPIB接口给6517A发送一个相应的命令,完成手工按键的动作。随即按钮浮起,不会导致误动作。按钮对应的程序是一个“true?false” case structure。在True CASE中写入命令:SYSTem:KEY 〈NRf〉(图2),False CASE中为空。当用鼠标点击按键时,6517A将根据命令完成相应的按键动作。如图中的命令,GPIB write控件将:SYST:KEY 15发送给6517A,完成一次按“V”键。

如前文所述,采用SYSTem:KEY〈NRf〉方法,显示将成为最重要的部分,用户必须根据反馈的提示继续按键,才能最终设置参数。6517A前面板有2个显示:一是主显示行,一是次显示行。前者主要显示测量的类型(电压、电流等)、菜单说明、错误信息等,后者则是显示测量选择的范围、菜单选项、其他的信息等。6517A提供了不同的编程命令,主显示和次显示的命令分别为:DISPly:WIND1:DATA?和:DISPly:WIND2:DATA?。在此我们调用了KEITHLEY提供的6517 DISPLAY read子程序,将6517A两个显示行的字符读入计算机。但有两个问题需解决。

为了更好的显示测量值的单位,6517A显示行存在一些特殊符号,如次显示行的温度符号℃,主显示行的电阻单位Ω(欧姆),量级单位μ(即表示10-6)等。但实际测试表明计算机接收到的6517A的信号,只能正确显示出标准ASCII码中的数字0~9、字母A~B和a~b,因此仅使用上述命令将显示乱码,无法正确反映6517A的全部显示信息。作者经过分析,得到了非ASCII码经过GPIB接口后对应的编码如下(表1)。

? 第二个问题是字符的闪烁。6517A次显示的菜单排列是并列的,选中哪个项目,该项目就闪烁,以提示操作人员。命令:DISP:WIND2:ATTR?可以探测当前显示的所有字符的状态。当某个字符闪烁时,则对应的状态为1,否则为0。因此用上述命令读回的字符串中需要寻找是否存在1,1从第几个位置开始,共有几个1。得到这个信息后,就可以设法使对应的字符在计算机屏幕上闪烁。为得到闪烁的效果,程序采用了等长度的空格和字符交替显示的方法,交替的频率用时间延迟控件控制(图4)。利用whileloop结构中的loop index作为交替显示的依据。因此控制loop结构的执行时间,即可控制闪烁的快慢。

2.4关于RETURN键的进一步讨论

RETURN键是控制整个子程序的逻辑量。但由此也带来一个问题,程序运行时发现当第一次参数设置完毕,退出子程序后,RETURN有可能仍保持在false状态,那么紧接着第二次调用子程序时,将因为RETURN=false而无法进入循环(或仅循环1次便结束)。为此利用了LabVIEW的并行处理特性,在RETURN置false时将完成2个动作,首先是将逻辑常数True赋值给RETURN(利用了local variable,不会干扰其中断循环的作用),然后再退出循环,这样保证了下一次的调用。? 程序利用LabVIEW强大的界面控件和方便的通讯控件完成了对KEITHLEY的6517A静电计模拟。实际测试结果表明,该程序达到了预期的设计要求,在仿制的面板上可以任意调整6517A的参数,并同步显示前面板的信息,大大方便了开展同步辐射实验的用户的使用。由于编程使用:SYSTem:KEY〈NRf〉命令,使得整个程序简单明了,易于维护,也适合于作为子程序调用。本程序的编写思路完全适用于KEITHKEY其他的设备,经过简单的修改,我们已经在6514和6845上实现了仿真功能。