自动化设备控制和数据采集软件LabMeasure

2018-04-24 03:28李壮志李玉现白彦魁
物理实验 2018年4期
关键词:运算符测控仪表

李壮志,李玉现,白彦魁

(河北师范大学 a.物理科学与信息工程学院;b.物理国家级实验教学示范中心;c.河北省新型薄膜材料实验室,河北 石家庄 050024)

1 软件设计背景

现代化科技实验室在进行物理量数据采集时通常需要使用多种型号的测量仪表,早期的测量仪表一般是用手动方法进行操作,在长时间的测量过程中,需要操作人员不间断地操作,劳动强度大,容易出现记录错误,另外也容易损坏仪表硬件. 在数字集成电路技术发明以后,高级仪表开始配备自动化测量控制接口,其中重要的规范是惠普(HP)公司联合其他仪表生产商推出的IEEE488接口协议(HP-IB),应用此协议的接口后来一般改称为通用接口总线(GeneralPurposeInterfaceBus,GPIB)[1]. 从20世纪70年代开始,大量的高级仪表都设计有GPIB接口. 通常1台GPIB接口仪表均具有听(listen)功能,通过控制机(一般是通用计算机)控制,可以用写(write)命令向仪表发送指令,实现仪表前面板的功能,另外通过读(read)命令,可以将仪表缓存内的数据读入计算机进行处理.

要实现计算机控制的GPIB接口测控系统,通常需要在计算机中插入1张GPIB控制卡,通过GPIB电缆连接仪表,在配置仪表的GPIB地址后,通过编写的控制程序,计算机可以访问某台特定的仪表,通过GPIB协议,通常1台计算机最多可以同时控制14台仪表.

在科研实验室中,串行通讯(serialcommunication)是也是常用的方式[2]. 该接口是20世纪80年代前后,为了方便个人计算机(PC)与低速设备通讯而发展起来的,随着PC机的快速普及,串行接口(serialinterface)以其成本低廉、使用方便获得了广泛应用,PC机上配置的一般是RS232串口,在工控领域还有RS422/485接口,RS232和RS422/485接口之间可以通过接口电路进行协议转换.

尽管GPIB和串行通讯提供了同仪器设备方便的通讯手段,但由于它们数据传输率较慢,在工控领域新的高速通讯协议得到了大力发展,如20世纪80年代后期,HP和Tekronix等公司成立的VXIbus合作组发布的VXI总线协议,HP公司发布的SICL(StandardInstrumentControlLibrary)协议,等等. 另外,随着PC机对高速通讯的要求,Ethernet和USB通讯协议也获得了快速发展,并且它们的使用也扩展到仪器仪表设备控制领域.

为了确保不同厂商、不同接口标准的仪器能相互兼容、可靠通讯和数据交换,需要研制出新的标准,以方便对各种不同仪器设备的编程控制,为此NI,HP/Agilent,Tekronix等35家全球最大的仪器仪表公司在1993年成立联盟,并于1996年2月推出了VISA协议,该协议的目标是能够驱动95%的已有智能仪器仪表[3]. 通过VISA协议提供的函数,可以驱动具有GPIB,RS232,VXI,Ethernet和USB等各种接口的仪器设备.

一直以来,对仪表控制软件的编写一般有2种方式:一种是使用通用高级编程语言如VisualC++,VisualBasic,Delphi等,设计程序界面和处理数据的采集、显示和存储,通过调用诸如GPIB接口卡驱动函数控制仪表,这通常需要较多的编程知识和对GPIB和RS232等总线协议有较多了解,并且编译完成的程序只是针对特定的测控系统,操作者无法改变其配置,如果更换测试系统中的某台仪表或者组建新的系统,则需要重新编写程序,缺乏灵活性. 另一种方式是使用图形化编程语言如LabVIEW(使用G语言)[4-5],它对GPIB和RS232等协议进行了封装,相比传统编程语言有较好的灵活性,但是在测控系统中需安装体积庞大的专用软件,并且其价格昂贵,另外它仍需要每个具体测控系统搭建者花费较长时间深入学习该编程语言.

LabMeasure软件中提供了测量控制软件的另一种编程方式——脚本(script)编程. 对不同的测控要求,控制软件的编写不再是传统的编译-执行方式,而是将具体的控制要求写成脚本程序,在测控操作运行前完成指令的即时编译,既增加了测控系统的灵活性,又降低了专用程序编写的难度.

2 LabMeasure软件的结构及功能

LabMeasure软件结构如图1所示,其中心部分是脚本集成开发环境(script IDE),用户在该环境提供的代码编辑器中编写自己的脚本程序. LabMeasure使用Object Pascal 脚本语言编程,该语言遵循传统的Pascal规则,并做适度的扩展和简化. Pascal语言是接近自然语言的高级编程语言,方便学习掌握. Object Pascal 脚本语言预定义数据类型包括Boolean,Byte,Cardinal,Double,Int64,Integer,ShortInt,SmallInt,String,Variant,Word;结构类型支持集合、枚举、静态数组、动态数组、记录、类等;运算符支持算术运算符、布尔运算符、位逻辑运算符、关系运算符、运算符优先级;条件语句支持If语句和Case语句;循环语句支持For语句、While语句、Repeat语句、Break和Continue语句;等等. 为了方便调试脚本程序,在script IDE窗口中带有详细的调试方式和调试信息的显示,如步入、步出、运行到当前行,以及在任一行设置断点等,并可以通过观察窗口查看变量结果.

图1 LabMeasure软件的构成

为了显示获得的结果,LabMeasure软件提供了终端窗口和二维图形显示窗口,终端窗口用于显示得到的结果,图形显示窗口用来显示获得的二维数据曲线.

2.1 LabMeasure中支持的常规函数

LabMeasure IDE本身支持常用的数学函数和字符串处理等函数如Cos, Sin, Tan, Abs, Exp, Ln, Copy, Delete等,还提供了用于输出程序结果的终端输出函数和二维绘图函数,以及对所采集的数据保存为csv格式文件的存储函数. 其中的二维绘图函数包括:

1)LmSetAxisName(xAxisName: string; yAxisName: string),该函数设置Plot窗口的x和y坐标轴的内容.

2)LmPlot(x: double; y: double),如果没有启动Plot窗口,该函数将动态创建Plot窗口,并向窗口中的直角坐标系发送浮点数x和y,并同时进行显示. 该直角坐标系的横轴和纵轴按输入的数值自动缩放,直角坐标系的横轴和纵轴名称由LmSetAxisName函数设置,如果用户未设置,则使用缺省设置“x-Axis”和“y-Axis”.

(3)LmPlotM(x: double; yArr: array of double),该函数功能同LmPlot,但可以在1个Plot窗口中以x为横坐标,以y0[, y1][, y2]…[, y4]等为纵坐标,可以同时绘制最多5条曲线.

除常用函数外,LabMeasure还内置了几个功能扩展函数库,包括系统应用函数库,数学函数库及变体类型函数库等,对其功能进行扩展.

1)系统应用函数:这些函数在LabMeasure的SysUtils库中,该库提供了文件、字符串、类型转换、时间以及系统方面的函数共约220个.

2)数学函数库:这些函数在LabMeasure的Math库中,该库提供算术、三角、对数、统计和金融方面的计算函数共超过100个.

3)变体(variants)类型函数库,LabMeasure script语言支持Object Pascal语言规范的variants类型,使用该类型时涉及到的variants类型函数在variants函数库中.

2.2 LabMeasure软件内置的通讯函数

现在NI(National Instrument)公司的GPIB板卡在实验室设备控制方面应用最为广泛,部分其他公司的产品会和NI板卡保持兼容性,所以在LabMeasure软件中提供了对NI GPIB函数的直接支持,包括绝大部分GPIB 488.1函数和全部的GPIB 488.2函数.

LabMeasure软件中提供了对RS232通讯函数的直接支持,包括端口控制、数据输入、数据输出、端口状态查询等系列串口操作函数,例如其中的端口控制函数包括LS_open,LS_close,LS_ioctl,LS_flowctrl,LS_flush,LS_DTR,LS_RTS,LS_lctrl,LS_baud等具体的操作函数,分别完成串口打开、关闭、通讯参量设置等功能.

为了应对除GPIB和RS232通讯外其他种类的仪器仪表,LabMeasure软件提供了对VISA函数的支持[6-7]. VISA函数可分6大类,即资源模板函数和操作函数、基本I/O操作函数、格式I/O操作函数、存储I/O操作函数、共享存储操作函数和接口特殊操作函数. 由于LabMeasure通过功能函数库提供了丰富的字符串操作函数及格式化函数,所以不再提供部分格式I/O操作函数及存储I/O操作、共享存储操作函数,LabMeasure支持除此之外的其他全部VISA函数.

为了方便用户在连接物理设备前调试脚本测控程序,LabMeasure对全部支持的GPIB,RS232和VISA函数都支持模拟(simulation)方式.

2.3 LabMeasure功能扩展

LabMeasure支持通过2种方式对系统功能进行扩展:一是将需要用到的功能编制成子程序,储存成LabMeasure script模块文件,然后在调用时直接引用该模块,软件支持在1个脚本程序中使用最多256个模块文件. 另一种方式是通过使用其他通用编译器将需要的功能编译成动态链接库,在LabMeasure的脚本程序中先引用该动态链接库,再调用其中的函数. 软件支持对动态链接库调用的各种约定,如Pascal约定、C约定等.

3 应用示例

LabMeasure采用标准视窗方式编写,使用方法同常用Windows程序一致,熟悉微软视窗操作系统的用户可以快速熟悉其使用.

软件启动后,其界面如图2所示,仅Graph View和Table View功能可用,分别是用图形方式和图表方式打开LabMeasure存储的csv格式文件,除此之外的其他快捷方式都不能使用.

图2 LabMeasure软件的启动界面

在File菜单栏下,通过单击LM Script可以启动LmIDE,此时窗口状态如图3(a)所示. 当启动LmIDE时,LabMeasure会检测计算机中是否安装了GPIB板卡和/或VISA驱动,如果发现,则在LmIDE下侧中间的状态栏中显示,如果没有发现,则需要用户检测其系统中的GPIB板卡及其驱动程序和/或VISA驱动是否正确安装.

(a)LmIDE启动窗口 (b)打开脚本程序后的窗口图3 LmIDE界面

启动LmIDE后,LabMeasure的菜单栏也会做相应的变动,此时可以通过菜单栏或者快捷按钮新建或者打开LM程序工程. 1个LM工程文件中可以包含多个模块文件. 图3(b)中是打开示例文件后的窗口图,此时将鼠标放置在快捷按钮上会得到相应按钮的功能提示,这些快捷按钮仅列举了一些常用功能,其他更多的功能可以从菜单栏上选择,单击相应的菜单按钮即可实现其标题显示的功能.

图4是运行简单的示例程序后的结果,该程序计算并显示了由37个点组成的正弦曲线,为了模拟数据采集过程,使用delay(延时)函数每隔20 ms计算1个数据点,并将计算结果显示在最右侧的终端窗口中,将数据曲线显示在中间的绘图窗口中. 该例子通过简单的数行程序模拟了数据采集的过程,可见LabMeasure程序编写简单,同时具有较高的编程效率.

图4 LabMeasure中的窗口

4 结束语

已经在实验室中使用LabMeasure软件编程,搭建完成了多种自动化测量系统,包括方块电阻四探针测试台、范德堡法薄膜电阻率测试系统、真空场发射测试系统、高精度塞贝克系数和电阻率测量系统等,并应用于教学和科研工作.

总之,LabMeasure软件大幅度降低了科研人员在实验室中搭建自动化测试系统所需要的知识储备,学习过高级编程语言,具有初级编程经验的人员经过短期学习,就能够高效率地搭建适合自己工作需要的自动化测试系统.

参考文献:

[1] 张宜生,王运赣. GPIB通用接口与自动测试系统[M]. 北京:科学出版社,1989.

[2] 范逸之. Visual Basic与RS-232串行通信控制[M]. 北京:中国青年出版社,2000.

[3] IVI Foundation. www.ivifoundation.org[EB/OL].

[4] Ertugrul N. Labview: for electric circuits, machines, drives, and laboratories[M]. London: Prentice Hall PTR, 2002.

[5] King R H, Introduction to data acquisition with LabView [M]. New York: McGraw Hill Higher Education, 2012.

[6] Agilent Technologies, Inc. Agilent VISA Online Reference [Z]. 2005-2009.

[7] 赵会兵. 虚拟仪器技术规范与系统集成[M]. 北京:北京交通大学出版社,2003.

猜你喜欢
运算符测控仪表
◆ 仪表
仪表
老祖传授基本运算符
昆山祺迈测控设备有限公司
用手机插头的思路学习布尔运算符
热工仪表自动化安装探讨的认识
基于现代测控技术及其应用分析
虚拟仪器技术在农业装备测控中的应用
向着新航程进发——远望7号测控船首航记录
奔驰E260车行驶过程中仪表灯熄灭