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命令是比較繁瑣的,那又是另一回事了)。

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