老赤脚医生:
如何向电源发送编程指令–程控电源技术和应用(53)我将用几篇文章的篇幅,介绍如何向可编程电源发送控制指令,已经利用何种语言对程控电源进行编程。今天我将重点讨论利用哪类 IO 程序库来发送指令我的建议是以 AgilentIO 程序库为基础,因为它支持安捷伦所以的可编程仪器,也同时支持符合相关标准规范的各种接口,例如RS232,USB,GPIB,LXL等等。您主要有两个选择:使用仪器提供的 SCPI(标准仪器控制指令)通过IO直接进行控制(DirectIO);或使用驱动程序(InstrumentDriver)来调用各种功能。这套IO库是免费的,无论您在使用安捷伦的仪器,或者其它厂家的仪器,都可以使用这套IO库。您可以点击进入www.agilent.com.cn/find/iolib 直接免费下载和安装最新版本的IO库我们首先讨论通过IO库的直接控制(DirectIO)。最早我们使用 HPBASIC 编程语言编写仪器控制程序。安捷伦在此方面有两个现代化标准件。第一个标准件是 VISA 程序库。当您使用 C 编程语言对仪器进行编程时,VISA 非常适用。下面是配有 VISA 的 N6700 模块化电源的一小段 C 代码实例(我故意没有提供注释,让程序以最单纯的形式显示):VISAstatus=viOpenDefaultRM(&defrm);VISAstatus=viOpen(defrm,”GPIB0::5”,VI_NULL,VI_NULL,&session);viPrintf(session,"VOLT5,(@1)\n");viPrintf(session,"OUTPON,(@1)\n");viPrintf(session,"MEAS:VOLT? (@1)\n");viScanf(session,"%s",&voltmeasurement);viClose(session);viClose(defrm);一旦您了解了它的用法,便可以得心应手地进行使用。viPrintf 和 viScanf 函数与某些基本的 C 函数非常相似,因此如果您是熟悉 C 语言的程序员,那么最好使用这种方法。另一个较新的选择是 AgilentVISACOM,适用于支持 COM 的语言。VISACOM 适用于 VisualBasic 和 C#环境。下面的程序与上面的程序功能相同,但使用 VB 编程。这要比 VISA 更容易阅读。SetioMgr=NewAgilentRMLib.SRMClsSetInstrument=NewVisaComLib.FormattedIO488SetInstrument.IO=ioMgr.Open("GPIB0::5")Instrument.WriteString"VOLT5,(@1)"Instrument.WriteString"OUTPON,(@1)”Instrument.WriteString"MEAS:VOLT? (@1)”Result=Instrument.ReadstringInstrument.IO.Close另一种选择是使用驱动程序。我们的仪器目前提供两种不同类型的驱动程序:VXI 即插即用驱动程序和 IVICOM 驱动程序。VXI 即插即用驱动程序在15年前非常流行,目前已经很少用了,在此不予说明。下面是使用IVI 驱动程序(C# 语言)的程序实例:driver=newAgilent.AgilentN67xx.Interop.AgilentN67xx();IAgilentN67xxProtection2protectionPtr;IAgilentN67xxMeasurementmeasurementPtr;IAgilentN67xxOutput3outputPtr;intchanneldriver.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 几乎都是一一对应的,因此更高级的功能没多少,您无法节省任何编程时间。我们主要使用以 VisualBasic 编程的 VISACOM,它的编程最简单。当然,关于这个问题仁者见仁,智者见智,如果您能够购买我们的仪器并自己编写控制程序,我们将非常高兴。谢谢!