我将用几篇文章的篇幅,介绍如何向可编程电源发送控制指令,已经利用何种语言对程控电源进行编程。今天我将重点讨论利用哪类 IO 程序库来发送指令
我的建议是以 Agilent IO 程序库为基础,因为它支持安捷伦所以的可编程仪器,也同时支持符合相关标准规范的各种接口,例如RS232, USB, GPIB, LXL等等。您主要有两个选择:使用仪器提供的 SCPI(标准仪器控制指令)通过IO直接进行控制(Direct IO);或使用驱动程序(Instrument Driver)来调用各种功能。这套IO库是免费的,无论您在使用安捷伦的仪器,或者其它厂家的仪器,都可以使用这套IO库。您可以点击进入www.agilent.com.cn/find/iolib 直接免费下载和安装最新版本的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,它的编程最简单。当然,关于这个问题仁者见仁,智者见智,如果您能够购买我们的仪器并自己编写控制程序,我们将非常高兴。谢谢!
文章评论(0条评论)
登录后参与讨论