PyVisa教程-用Python控制仪器【3,例程】

一个更复杂的例程

下面的例程展示,如何用SCPI命令从Keithley 2000万用表读取10个电压值。在读完之后,程序将计算平均值并输出到屏幕上。

让我们一步一步的介绍程序。首先,初始化仪器:

>>> keithley = rm.open_resource("GPIB::12")
>>> keithley.write("*rst; status:preset; *cls")

此处,我们创建了变量keithley,这是进行深入操作仪器的基础。紧随其后,我们发送初始化和复位命令到仪器。

下一步是发送测量参数给仪器,此处为间隔时间(500ms)和读取电压值的数目(10)。我将不做更多解释,请直接看SCPI命令和(或)Keithley 2000手册。

>>> interval_in_ms = 500
>>> number_of_readings = 10
>>> keithley.write("status:measurement:enable 512; *sre 1")
>>> keithley.write("sample:count %d" % number_of_readings)
>>> keithley.write("trigger:source bus")
>>> keithley.write("trigger:delay %f" % (interval_in_ms / 1000.0))
>>> keithley.write("trace:points %d" % number_of_readings)
>>> keithley.write("trace:feed sense1; trace:feed:control next")

现在,仪器已经准备好开始测量了。接下来的三行命令使仪器等待一个触发脉冲,触发它,并等待直到它发送一个服务请求信号。

>>> keithley.write("initiate")
>>> keithley.assert_trigger()
>>> keithley.wait_for_srq()

发送服务请求信号,仪器显示测量结束并且结果已经准备好传输。我们可以用 keithley.query("trace:data?")获取数据,得到如下结果:

-000.0004E+0,-000.0005E+0,-000.0004E+0,-000.0007E+0,

-000.0000E+0,-000.0007E+0,-000.0008E+0,-000.0004E+0,

-000.0002E+0,-000.0005E+0

然后,我们将其转换成python的数值列表。函数query_assii_values可以完成这项任务。

>>> voltages = keithley.query_ascii_values("trace:data?")
>>> print("Average voltage: ", sum(voltages) / len(voltages))

最后,我们需要复位仪器的数据缓存区和SRQ状态寄存器,以便准备新一次的测量。这些在仪器手册上有详细的说明。

>>> keithley.query("status:measurement?")
>>> keithley.write("trace:clear; trace:feed:control next")

瞧,简洁的18行代码实现了采集数据的目的(自然SCPI命令是比较繁琐的,那又是另一回事了)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章