热度 19
2014-3-14 08:59
2662 次阅读|
0 个评论
我将用几篇文章的篇幅,介绍如何向可编程电源发送控制指令,已经利用何种语言对程控电源进行编程。今天我将重点讨论利用哪类 IO 程序库来发送指令 我的建议是以 Agilent IO 程序库为基础,因为它支持安捷伦所以的可编程仪器,也同时支持符合相关标准规范的各种接口,例如RS232, USB, GPIB, LXL等等。您主要有两个选择:使用仪器提供的 SCPI (标准仪器控制指令)通过 IO 直接进行控制(Direct IO);或使用驱动程序(Instrument Driver)来调用各种功能。这套IO库是免费的,无论您在使用安捷伦的仪器,或者其它厂家的仪器,都可以使用这套IO库。您可以点击进入 www.agilent.com.cn/find/io lib 直接免费下载和安装最新版本的 IO 库 我们首先讨论通过 IO 库的 直接控制(Direct IO)。最早我们使用 HPBASIC 编程语言编写仪器控制程序。安捷伦在此方面有两个现代化标准件。第一个标准件是 VISA 程序库。当您使用 C 编程语言对仪器进行编程时, VISA 非常适用。下面是配有 VISA 的 N6700 模块化电源 的一小段 C 代码实例(我故意没有提供注释,让程序以最单纯的形式显示): VISAstatus=viOpenDefaultRM(defrm); VISAstatus=viOpen(defrm,”GPIB0::5”,VI_NULL,VI_NULL,session); viPrintf(session,"VOLT 5,(@1) \n"); viPrintf(session, "OUTP ON, (@1) \n"); viPrintf(session, "MEAS:VOLT? (@1) \n"); viScanf(session,"%s",voltmeasurement); viClose(session); viClose(defrm); 一旦您了解了它的用法 , 便可以得心应手地进行使用。 viPrintf 和 viScanf 函数与某些基本的 C 函数非常相似 , 因此如果您是熟悉 C 语言的程序员 , 那么最好使用这种方法。 另一个较新的选择是 Agilent VISA COM , 适用于支持 COM 的语言。 VISA COM 适用于 Visual Basic 和 C# 环境。下面的程序与上面的程序功能相同,但使用 VB 编程。这要比 VISA 更容易阅读。 Set ioMgr = New AgilentRMLib.SRMCls Set Instrument = New VisaComLib.FormattedIO488 Set Instrument.IO = ioMgr.Open("GPIB0::5") Instrument.WriteString " VOLT 5,(@1)" Instrument.WriteString " OUTP ON, (@1)” Instrument.WriteString "MEAS:VOLT? (@1)” Result = Instrument.Readstring Instrument.IO.Close 另一种选择是使用驱动程序。我们的仪器目前提供两种不同类型的驱动程序: VXI 即插即用驱动程序和 IVI COM 驱动程序。 VXI 即插即用驱动程序在15年前非常流行,目前已经很少用了,在此不予说明。下面是使用 IVI 驱动程序( C# 语言)的程序实例: driver = new Agilent.AgilentN67xx.Interop.AgilentN67xx(); IAgilentN67xxProtection2 protectionPtr; IAgilentN67xxMeasurement measurementPtr; IAgilentN67xxOutput3 outputPtr; int channel driver.Initialize(“GPIB0::5”, idquery, reset, initOptions); outputPtr = driver.Outputs.get_Item(driver.Outputs.get_Name(channel)); protectionPtr = driver.Protections.get_Item(driver.Protections.get_Name(channel)); measurementPtr = driver.Measurements.get_Item(driver.Measurements.get_Name(channel)); outputPtr.VoltageLevel(3.0, 3.0); outputPtr.Enabled = true; mVolt = measurementPtr.Measure(AgilentN67xxMeasurementTypeEnum.AgilentN67xxMeasurementVoltage); driver.Close(); 您可以看到 , 驱动程序比Dirct IO 程序复杂得多。不过仍然有很多理由支持您使用驱动程序。第一个也是最常见的理由是,您的系统本身就是为使用驱动程序设计的。另一个理由是可移植性。有些类型的仪器的 IVI 驱动程序适用于兼容的直流电源。但 IVI 驱动程序的缺点是,其功能与 SCPI 几乎都是一一对应的,因此更高级的功能没多少,您无法节省任何编程时间。 我们主要使用以 Visual Basic 编程的 VISA COM , 它的编程最简单。当然,关于这个问题仁者见仁,智者见智,如果您能够购买我们的仪器并自己编写控制程序,我们将非常高兴。谢谢 !