LabVIew开发技术丛书 边干边学仪器控制 下沿 Px△③ gsdzone. net/community GSD zone. net
gsdzone.net/community LabVIEW 开发技术丛书 边干边学仪器控制
目录 序言 识 LabVIeW仪器控制 仪器控制实战 后记 13
目 目 录 录 序言 1 识 LabVIEW 仪器控制 2-7 仪器控制实战 8-12 后记 13
序言 在自动化测试领域,仪器控制是每一个自动化程序开发工程师的基本功。好多刚刚进入自动化测 试领域的工程师都会问我同一个问题:“仪器控制到底难不难,有没有什么书可以推荐啊?” 被问的多了,我感觉我应该承担起仪器控制界“很没有技术含量”的工作,写一篇仪器控制的入 门到精通的应用文档,来帮助刚刚涉入该领域的工程师,快速的掌握仪器控制的工具和编程技巧 之所以说“很没有技术含量”,是因为,这个世界上,如果某项技术没有什么书籍去讲述,只有 两个原因:1是这个技术太简单了,书不够写;2是这个技术太难了,还没有研究透彻,不能写。 基于 LabVIEW的仪器控制,就是属于“技术太简单了,书不够写”。 使用 LabVIEW的原因 很多工程师给我写 Email,提及,可否介绍VB∧C下的仪器控制技术,不要因为是N公司的销 售工程师,就一味推N公司的LabⅥE嘛。 其实,我并不是一味推N公司的LabⅥEW,而是纯粹从技术角度上考虑, LabVIEW是最适合 开发自动化测试软件的平台。 我多次在客户那里碰到一些仪器销售人员,我总是在人群中静静的倾听他们天花乱坠的介绍,并 不时的发出诸如“哇,你们用 LabvIEW啊,这么不用VB呢,VB不要钱啊~”一现在VB的 盗版很多,在这个地区“不要钱”,不代表在世界其它地区“不要钱”;在这个“不要钱”的地 用VB,不一定能将工作共享到世界其它地区的分公司。 另外,当提起仪器是否可以程控时,销售人员拍着胸脯说:“我用ⅤB写过全部控制代码,当然 可以啊。”随即,我们请销售人员马上试几条读测试值的指令,销售人员立马一头汗水,马上说 指令怎么可以记得住啊”…无语 我常常对我身边的测试工程师讲,VBC的开发公司是 Microsoft,所以在 Microsoft内部使用 VBVC,是既正规,又支持本公司产品。但 Microsoft在开发自己产品Xbox的测试程序时,选 用了 LabvIEW,而不是vBC,为什么呢?——真正的智慧,不被所谓的盗版和“不要钱” 蔽了双眼,把精力集中于如何提高工作效率和质量,创造更多的价值。 本篇文章的读者是: 勤奋且愿意在业余时间专研新技术的工程师; 开关电源行业的研发及测试工程师; 刚刚接触 LabVIEW,想用 LabVIEW尝试自动化的工程师 想深入了解如何控制泰克示波器、 Chroma电子负载、功率表、程控电源、安捷伦万用表的工程 GSDzone.net
1 序言 在自动化测试领域,仪器控制是每一个自动化程序开发工程师的基本功。好多刚刚迚入自动化测 试领域的工程师都会问我同一个问题:“仪器控制到底难不难,有没有什么书可以推荐啊?” 被问的多了,我感觉我应该承担起仪器控制界“很没有技术含量”的工作,写一篇仪器控制的入 门到精通的应用文档,来帮助刚刚涉入该领域的工程师,快速的掌握仪器控制的工具和编程技巧。 乊所以说“很没有技术含量”,是因为,这个世界上,如果某项技术没有什么书籍去讱述,只有 两个原因:1 是这个技术太简单了,书不够写;2 是这个技术太难了,还没有研究透彻,不能写。 基于 LabVIEW 的仪器控制,就是属于“技术太简单了,书不够写”。 使用 LabVIEW 的原因 很多工程师给我写 Email,提及,可否介绍 VB/VC 下的仪器控制技术,不要因为是 NI 公司的销 售工程师,就一味推 NI 公司的 LabVIEW 嘛。 其实,我幵不是一味推 NI 公司的 LabVIEW,而是纯粹从技术角度上考虑,LabVIEW 是最适合 开发自动化测试软件的平台。 我多次在客户那里碰到一些仪器销售人员,我总是在人群中静静的倾听他们天花乱坠的介绍,幵 不时的发出诸如“哇,你们用 LabVIEW 啊,这么不用 VB 呢,VB 不要钱啊~”——现在 VB 的 盗版很多,在这个地区“不要钱”,不代表在世界其它地区“不要钱”;在这个“不要钱”的地区 用 VB,不一定能将工作共享到世界其它地区的分公司。 另外,当提起仪器是否可以程控时,销售人员拍着胸脯说:“我用 VB 写过全部控制代码,当然 可以啊。”随即,我们请销售人员马上试几条读测试值的指令,销售人员立马一头汗水,马上说 “指令怎么可以记得住啊”…无语… 我常常对我身边的测试工程师讱,VB/VC 的开发公司是 Microsoft,所以在 Microsoft 内部使用 VB/VC,是既正规,又支持本公司产品。但 Microsoft 在开发自己产品 Xbox 的测试程序时,选 用了 LabVIEW,而不是 VB/VC,为什么呢?——真正的智慧,不被所谓的盗版和“不要钱”蒙 蔽了双眼,把精力集中于如何提高工作效率和质量,创造更多的价值。 本篇文章的读者是: 勤奋且愿意在业余时间专研新技术的工程师; 开关电源行业的研发及测试工程师; 刚刚接触 LabVIEW,想用 LabVIEW 尝试自动化的工程师; 想深入了解如何控制泰兊示波器、Chroma 电子负载、功率表、程控电源、安捷伦万用表的工程 师
初识 LabvIew仪器控制 伟大的军事指挥官,把 LabVIEW仪器控制技术总结为 ,即二个辅助开发工具( Scan for nstrument and communicate with Instrument),二个开发函数( VISA Read and write)和二个调 试工具( Troubleshooting tool and N-Spy) 二个辅助开发工具 在进行仪器控制前,首要事情是要找到仪器,并能保证与仪器正常通讯。所以,二个辅助开发工 具是: Scan for Instruments(查找仪器)和 Communicate with Instrument(与仪器通讯)。 Scan for instruments(查找仪器) 装好GPB卡后,请双击击桌面上 Measurement& Automation(简称MAX)图标,如图2.1所示。 Measurement& Automation是N公司的设备管理器,类似于 Windows的设备管理器。 8 easurement 32.1 Measurement Automation 在MAX中,先选中设备与接口( Device and Interface)下的GPB设备,然后点击 Scan for nstruments按钮,如果软硬件正常,就可以在 Connected instruments窗囗中看到已连接到GP|B 卡上的仪器信息,如图22所示。 4 GPIBO(GPIB. USB-HS)- Measurement &t Autor 文件行)编G)查看(工具(T)帮助 配 ”显示帮助 3我的系统 由团数据部居 GPIB Interface Properties Step2点击 却设备和口Step1选中Nm Vale FEInkerface Information PIB Hardware Model GPIB-US8-HS NI-DAQmx设备 t PXI PXI System(Unidentified) Not Applicable t. y serial& Parallel 画 General settings 历史数据 4换算 Connected Instruments 6软件 PAD SADIdentificabion Jone HEWLETT-PACKARD, 34401A, 0, 11-5- 远程系统 找到的仪器 E Properties 2.2 Scan for Instruments 该工具保证了仪器连接正常,可以进行下一步工作了 GSDzone.net
2 刜识 LabVIEW 仪器控制 伟大的军事指挥官,把 LabVIEW 仪器控制技术总结为“二二二”,即二个辅助开发工具(Scan for Instrument and communicate with Instrument),二个开发函数(VISA Read and Write)和二个调 试工具(Troubleshooting tool and NI-Spy)。 二个辅助开发工具 在迚行仪器控制前,首要事情是要找到仪器,幵能保证与仪器正常通讯。所以,二个辅助开发工 具是:Scan for Instruments(查找仪器) 和 Communicate with Instrument(与仪器通讯)。 Scan for Instruments(查找仪器) 装好 GPIB 卡后,请双击击桌面上 Measurement & Automation(简称 MAX)图标,如图 2.1 所示。 Measurement & Automation 是 NI 公司的设备管理器,类似于 Windows 的设备管理器。 图 2.1 Measurement & Automation 在 MAX 中,先选中设备与接口(Device and Interface)下的 GPIB 设备,然后点击 Scan for Instruments按钮,如果软硬件正常,就可以在Connected Instruments窗口中看到已连接到GPIB 卡上的仪器信息,如图 2.2 所示。 图 2.2 Scan for Instruments 该工具保证了仪器连接正常,可以迚行下一步工作了
Communicate with Instrumen(与仪器通讯) 由于有些仪器的控制器可能有问题,所以,与仪器成功连接上,并不代表仪器能正确响应控制指 令,所以还需要用第二个辅助工具来测试仪器响应关键指令的能力,这个工具就是 Communicate with Instrument(与仪器通讯) 选中查找到的仪器 Instrument0,然后点击 Communicate with Instrument(与仪器通讯),启动 N|4882 Communicato(通讯器),如图23所示。 3 Instrument o-Measurement Automation Explorer 文件(F)编辑(E)查看(v)工具T帮助H 配置 muricate with Instrymer坐 nteractiveControl8相sy”? 8我的系统 且数据部居 Launches the NI-4882 Communicator utilty. 白设备和接口 GPIBO: 22 INSTR GPIB Instument 选中 +-iXi PXI System(Unidentified) 自历史数据 4d换算 Device Status This device is working properly t-iv II Drivers 急远程系统 troubleshoot Device Usage 图23启动N4882 Communicator(通讯器) 在N4882 Communicator(通讯器)中,可以对一起写入命令,然后再读取结果,以测试仪器对 命令响应是否成功,如图24所示。 8sN482通讯器 30仪器0主地址22 发送字符串:+DNP 状态 bsa:0x2100 「询问Q写(w)「 iberr: None 已置先点击“写”再点击锁 接收到的字符串 HEWLETT-PACKARD, 34401A, 0 11-52 「配置EO5(C)「显示例程s) 息出( 图24N4882 Communicator(通讯器) 完成以上两步测试并验证仪器通讯没有问题后,就可以开始LabⅥEW编程了 GSD
3 Communicate with Instrument(与仪器通讯) 由于有些仪器的控制器可能有问题,所以,与仪器成功连接上,幵不代表仪器能正确响应控制指 令,所以还需要用第二个辅助工具来测试仪器响应关键指令的能力,这个工具就是 Communicate with Instrument(与仪器通讯)。 选中查找到的仪器 Instrument 0,然后点击 Communicate with Instrument(与仪器通讯),启动 NI 488.2 Communicator(通讯器),如图 2.3 所示。 图 2.3 启动 NI 488.2 Communicator(通讯器) 在 NI 488.2 Communicator(通讯器)中,可以对一起写入命令,然后再读取结果,以测试仪器对 命令响应是否成功,如图 2.4 所示。 图 2.4 NI 488.2 Communicator(通讯器) 完成以上两步测试幵验证仪器通讯没有问题后,就可以开始 LabVIEW 编程了
小贴士:很多有经验的开发人员,在开发自动化程序前,会使用N|4882 Communicator(通讯 器)来尝试将要使用的仪器控制命令,尝试成功,则开发的时候就心底无忧了 二个开发函数 VISA Read and write) 在LabⅥEM环境下,开发GPB仪器控制程序非常简单,这也是众多工程师喜欢在 LabVIEW环 境下进行自动化程序开发的原因。总的来说,只需要用N- VISA Write . vi来向仪器发送命令,用 N|- VISA Readⅵ来从仪器读取数据即可,如图25所示。 设计与仿 信号处理 LEWiS D 数据通信 互连接口 程序 TI Class Driv,, Instrument I/ Signa Express 甘加工具包 下 R回 eal-Time DSC Module ⅥSA设备洁零ⅥsA读取5 图25N|-Ⅵ SA Write&Read 从 Agilent34401A的使用手册中115页可以查知,测量DC值的指令为 MEAS: DO?”,如图26 所示。 MEASure?范例:下面一程序段示出如何使用 MEASure?命令来作测量。这个范例将万 用电表配置为测量DC电压,并自动将万用电表设定至“等待触发”状态,内 部触发万用电表取一个读数,然后将读数送到输出缓冲器上。 MEAS: VOLT: DC? 10,0. 003 bus enter statement 这是读取读数最简单的方法。不过,您没有任何机会使用 MEASure来 设定触发计数、取样计数和触发延迟等。除了功能,量程和分辨率之外,所有 测量参数都会自动预设(请参阅第112页上的表)。 图26 Agilent34401A使用手册 所以,用N- VISA Write向仪器发送指令: MEAS: VOLT:DC?,然后用N- VISA Read. vi读回DC 电压测量值,如图2.7所示。 GSDzone.net
4 小贴士:很多有经验的开发人员,在开发自动化程序前,会使用 NI 488.2 Communicator(通讯 器)来尝试将要使用的仪器控制命令,尝试成功,则开发的时候就心底无忧了。 二个开发函数(VISA Read and Write) 在 LabVIEW 环境下,开发 GPIB 仪器控制程序非常简单,这也是众多工程师喜欢在 LabVIEW 环 境下迚行自动化程序开发的原因。总的来说,只需要用 NI-VISA Write.vi 来向仪器发送命令,用 NI-VISA Read.vi 来从仪器读取数据即可,如图 2.5 所示。 图 2.5 NI-VISA Write&Read 从 Agilent 34401A 的使用手册中 115 页可以查知,测量 DC 值的指令为”MEAS:DC?”,如图 2.6 所示。 图 2.6 Agilent 34401A 使用手册 所以,用 NI-VISA Write 向仪器发送指令:MEAS:VOLT:DC?,然后用 NI-VISA Read.vi 读回 DC 电压测量值,如图 2.7 所示
文件辑(查看项目巴 回,·叫如吧回应用程 LKGPIB0: 22: INSTR 读取缓冲区 读取缓冲区 1,1184800UE04 MEAS: VOLT: DC 指令从使用手册中查得 图27读取DC范例程序 【总结】仪器控制程序开发,只有三个步骤: 查阅仪器使用手册,找到所需的仪器指令 用N|- VISA Write y向仪器发送该指令 用N|-Ⅵ SA Readⅵ从仪器中读回数据; N|仪器驱动网 刚刚开始学习GPB控制仪器的工程师,会为成功控制仪器而欣喜。可是,当写过几个仪器控制 程序后,再去重复查阅手册->发指令->读数据的工作,就会感觉乏味和痛苦,感觉一点长进也 没有,感觉自己的时间全浪费在看仪器的指令手册上了。 早在二十多年前(1986年),N的工程师已经意识到这个问题了,为了解决工程师的乏味问题, N的工程师把写过的常用的仪器驱动函数加以总结和整理,免费发布给客户,之后,各大仪器 公司也参照N的做法,为自己的仪器配上了 LabvIEW仪器驱动程序。N|把这些前人总结好的 仪器驱动程序放到了网上,成就了今天的N仪器驱动网。 仪器1o 器动程序 信号处理 BR5丰 仪器驱动程序 ger34401 M Agent 34401 VI Tree 图28 Agilent34401驱动程序 GSDzone.net
5 图 2.7 读取 DC 范例程序 【总结】仪器控制程序开发,只有三个步骤: 查阅仪器使用手册,找到所需的仪器指令; 用 NI-VISA Write.vi 向仪器发送该指令; 用 NI-VISA Read.vi 从仪器中读回数据; NI 仪器驱动网 刚刚开始学习 GPIB 控制仪器的工程师,会为成功控制仪器而欣喜。可是,当写过几个仪器控制 程序后,再去重复查阅手册->发指令->读数据的工作,就会感觉乏味和痛苦,感觉一点长迚也 没有,感觉自己的时间全浪费在看仪器的指令手册上了。 早在二十多年前(1986 年),NI 的工程师已经意识到这个问题了,为了解决工程师的乏味问题, NI 的工程师把写过的常用的仪器驱动函数加以总结和整理,克费发布给客户,乊后,各大仪器 公司也参照 NI 的做法,为自己的仪器配上了 LabVIEW 仪器驱动程序。NI 把这些前人总结好的 仪器驱动程序放到了网上,成就了今天的 NI 仪器驱动网。 图 2.8 Agilent34401 驱动程序
Measurement DC Volt GPIBO:: 22:: INSTR itialize,vi Configure Measurement, vi Single point 二个调试工具 (Troubleshooting tool and N|-Spy) 当程序出错的时候,需要用两个调试工具来诊断:一个是 Troubleshooting tool,诊断GPB硬 件和GPB驱动程序的问题;另一个是N|-SPY,诊断N-VSA指令收发的问题。 Troubleshooting tool 在MAX中选中GPB卡,然后点击右键菜单中的N|-4882 Troubleshooting Utility,如图29所 如果软件(N-4882)出错,可以重装N|-4882软件;如果GPB出错,则寄回N公司修理,如 图210所示。 2 GPIBO(GPIB-USB-HS)Mec urement i Automation Explor 文件F)编辑(E)查看()工具(T)帮助(H ■5aRet白 Restore Defauts4Scan for Instruments 显示帮助 8我的系统 数据邻居 GPIB Interface Properties 白设备和口 +G NI Motion Devices 2:Interactive Control + iXI PXI System(Unident 9 Serial &Parald? N-+488 自历史数据 DElete 44换算 主软件 PAD SAD Identification 1I IvI Drivers INstrument 0 None HEWLETT-PACKARD 34401A.0.11-5.2 远程系统 Launches the NI-488, 2 Troubleshooting Utilty, 图29启动N-4882 Troubleshooting Utility GSDzone.net
6 二个调试工具(Troubleshooting tool and NI-Spy) 当程序出错的时候,需要用两个调试工具来诊断:一个是 Troubleshooting tool,诊断 GPIB 硬 件和 GPIB 驱动程序的问题;另一个是 NI-SPY,诊断 NI-VISA 指令收发的问题。 Troubleshooting tool 在 MAX 中选中 GPIB 卡,然后点击右键菜单中的 NI-488.2 Troubleshooting Utility,如图 2.9 所 示。 如果软件(NI-488.2)出错,可以重装 NI-488.2 软件;如果 GPIB 出错,则寄回 NI 公司修理,如 图 2.10 所示。 图 2.9 启动 NI-488.2 Troubleshooting Utility
N488.2故障解答工具 勾选左侧复选框即可选择需进 详细信息 ■软件(-488 口GPB0(GPIB5BH5) 序列号0127c754 8 通过 为什么我的GPIB硬件没有出现在列表中? 突出显示的结果详细信息 现可使用N-488.2 项(o) 图2.10GPB软硬件检测结果 GSDzone.net
7 图 2.10 GPIB 软硬件检测结果
仪器控制实战 工程师常向我述说,其实,在控制仪器的过程中,也只用到一小部分功能,大部分指令都用不到 不想花太多时间去研究,能不能给点范例程序,只展示这一小部分常用功能就好了。 本章主要总结安捷伦34401万用表,泰克示波器DPO7054、 Chroma电子负载63303、功率表 66202和程控电源6560的常用功能的程控技术 安捷伦34401万用表 安捷伦34401万用表的程控功能比较简单,可以读万用表的测量值即可。我们可以把程控实现 细节封装起来,仅让用户输入仪器名( nstrName),测量功能( Function),范围( Range)和精度 ( Resolution)即可,如图3.1所示,具体程序实现参见范例Agen34401 Read. vi Resolution Function Measurement InstrName = d error out a 3. 1 Agilent34401 Read vi 泰克示波器DPO7054 准备工作:下载 泰克示波器的常用程控功能有:设置通道参数,设置触发,设置光标,读取测量值,拷贝波形到 设置通道参数 设置触发 设置光标 读取测量值 拷贝波形到主机 程控电源 Chroma6530 对于程控电源来说,最主要的是要掌握以下三个功能 静态输出设置——用于电源多数常规测试 List模式输出设置——用于电源 Cycle Drop测试; 读取测量值——用于ATE测试 静态输出设置 GSDzone.net
8 仪器控制实战 工程师常向我述说,其实,在控制仪器的过程中,也只用到一小部分功能,大部分指令都用不到, 不想花太多时间去研究,能不能给点范例程序,只展示这一小部分常用功能就好了。 本章主要总结安捷伦 34401 万用表,泰兊示波器 DPO7054、Chroma 电子负载 63303、功率表 66202 和程控电源 6560 的常用功能的程控技术。 安捷伦 34401 万用表 安捷伦 34401 万用表的程控功能比较简单,可以读万用表的测量值即可。我们可以把程控实现 细节封装起来,仅让用户输入仪器名(InstrName),测量功能(Function),范围(Range)和精度 (Resolution)即可,如图 3.1 所示,具体程序实现参见范例 Agilent34401Read.vi。 图 3.1 Agilent34401Read.vi 泰兊示波器 DPO7054 准备工作:下载 泰兊示波器的常用程控功能有:设置通道参数,设置触发,设置光标,读取测量值,拷贝波形到 主机。 设置通道参数 设置触发 设置光标 读取测量值 拷贝波形到主机 程控电源 Chroma 6530 对于程控电源来说,最主要的是要掌握以下三个功能: 静态输出设置——用于电源多数常规测试; List 模式输出设置——用于电源 Cycle Drop 测试; 读取测量值——用于 ATE 测试。 静态输出设置