使用python控制仪器【控制苏州联讯源表SMU】
文章目錄
- 使用python控制儀器【控制蘇州聯訊源表SMU】
- 搭建環境
- 1、安裝python
- 2、安裝PyCharm
- 3、使用PyCharm創建項目
- 4、添加VISA資源
- 5、安裝PyVisa
- 連接設備
- 6、連接設備
- 控制設備
- 7、一個更復雜的例程
- 讀寫數據
- 8、將數據寫入excel
- 9、顯示掃描波形
使用python控制儀器【控制蘇州聯訊源表SMU】
搭建環境
1、安裝python
鏈接: https://www.python.org/downloads/windows/
選中自定義安裝,勾選中“Add python3.7 to path”,可自動增加環境變量,不需要手動添加
之后一直點下一步就可以了。
win+R 運行cmd,輸入“python”
安裝成功后可輸入“print”測試,如果打印成功,代表安裝成功了
2、安裝PyCharm
網址:
打開網址,如圖操作,點擊Community即可自動下載:
https://www.jetbrains.com/zh-cn/pycharm/download/#section=windows
雙擊安裝文件
可選擇自定義路徑安裝
全勾上
一直點擊下一步,安裝成功。
3、使用PyCharm創建項目
新建項目
創建成功,右鍵單擊點擊項目,可選擇創建你的第一個py文件,如圖:
填寫模塊名稱:
鼠標右鍵空白處,選擇run,可調試運行文件:
運行成功、失敗,下方可查看運行日志,如圖:
4、添加VISA資源
- 打開NI MAX,添加設備資源
添加一個網口設備
填入設備的ip地址
ip address:192.168.170.8
port:8807
添加成功
5、安裝PyVisa
PyVisa是用來控制各種各樣的測量儀器的Python包,適用諸如GPIB、RS232、USB、Ethernet等接口。
安裝包有兩種方法
- 方法1
打開終端,輸入安裝pyvisa庫的指令,安裝成功后,會有安裝成功的提示。
- 方法2
打開python packages選項,搜索pyvisa,點擊安裝
連接設備
6、連接設備
輸入下面的代碼
# 導入庫 import pyvisa # 創建 VISA資源管理器的對象。 rm = pyvisa.ResourceManager() # 打開指定資源名稱的設備。一旦設備被打開,您就可以使用返回的設備對象進行與設備的通信和控制。 my_Instrument = rm.open_resource('TCPIP0::192.168.170.8::8807::SOCKET') # 配置通訊超時時間 my_Instrument.timeout = 5000 # 配置截止符 my_Instrument.read_termination = '\n' # 查詢設備信息 instrumentMessage=my_Instrument.query('*IDN?') # 打印設備信息 print(instrumentMessage)運行代碼
按 Shift+F10 執行或者點擊綠色的運行按鈕
運行結果,返回設備的基本信息
控制設備
7、一個更復雜的例程
下面的例程展示,如何用SCPI命令控制S3022F完成一個電壓掃描,start為1V,stop為5V,掃描10個點,線性掃描,將測量電壓數據打印出來。
import pyvisa import time rm = pyvisa.ResourceManager() my_Instrument = rm.open_resource('TCPIP0::192.168.170.8::8807::SOCKET') my_Instrument.timeout = 5000 my_Instrument.read_termination = '\n' instrumentMessage=my_Instrument.query('*IDN?') print(instrumentMessage)#發送SCPI指令 my_Instrument.write(':SOUR:FUNC:MODE VOLT,(@101)') my_Instrument.write(':SOUR:VOLT:MODE SWE,(@101)') my_Instrument.write(':SOUR:FUNC:SHAP DC,(@101)') my_Instrument.write(':SOUR:SWE:SPAC LIN,(@101)') my_Instrument.write(':SOUR:VOLT:RANG 10,(@101)') my_Instrument.write(':SOUR:CURR:RANG 0.01,(@101)') my_Instrument.write(':SENS:CURR:PROT 0.01,(@101)') my_Instrument.write(':SOUR:VOLT:STAR 1,(@101)') my_Instrument.write(':SOUR:VOLT:STOP 5,(@101)') my_Instrument.write(':TRIG:COUN 10,(@101)') my_Instrument.write(':SOUR:SWE:POIN 10,(@101)') my_Instrument.write(':SENS:VOLT:NPLC 1,(@101)') my_Instrument.write(':OUTP 1,(@101)') my_Instrument.write(':INIT (@101)')#循環讀取狀態寄存器,讀取到1024,掃描完成,跳出循環,讀取電壓值 while (1):time.sleep(1)end = my_Instrument.query(':STAT:OPER:COND? (@101)')print(end)if (end == '1024'):break # 獲取掃描電壓值 voltageList = my_Instrument.query_ascii_values(":FETC:VOLT?") print(voltageList)運行結果如下,運行成功后,可以打印出掃描測量出的電壓值。
讀寫數據
8、將數據寫入excel
測量的數據一般會通過文件保存,這里采用excel進行保存,使用最常用的讀寫excel的python庫。
安裝所需要的軟件包xlwings,通道python packages安裝或者通過指令安裝
輸入如下指令
運行成功后顯示如下信息,也可以打開excel查看數據
9、顯示掃描波形
通過將數據通過圖形的方式顯示出來可以更加直觀。
需要安裝Matplotlib庫
Matplotlib是一個用于創建高質量圖形的Python庫。它提供了廣泛的數據可視化功能,使用戶能夠以各種方式呈現數據。
執行代碼
import pyvisa import time import xlwings as xw import matplotlib.pyplot as pltrm = pyvisa.ResourceManager() my_Instrument = rm.open_resource('TCPIP0::192.168.170.8::8807::SOCKET') my_Instrument.timeout = 5000 my_Instrument.read_termination = '\n' instrumentMessage=my_Instrument.query('*IDN?') print(instrumentMessage)#發送SCPI指令 my_Instrument.write(':SOUR:FUNC:MODE VOLT,(@101)') my_Instrument.write(':SOUR:VOLT:MODE SWE,(@101)') my_Instrument.write(':SOUR:FUNC:SHAP DC,(@101)') my_Instrument.write(':SOUR:SWE:SPAC LIN,(@101)') my_Instrument.write(':SOUR:VOLT:RANG 10,(@101)') my_Instrument.write(':SOUR:CURR:RANG 0.01,(@101)') my_Instrument.write(':SENS:CURR:PROT 0.01,(@101)') my_Instrument.write(':SOUR:VOLT:STAR 1,(@101)') my_Instrument.write(':SOUR:VOLT:STOP 5,(@101)') my_Instrument.write(':TRIG:COUN 10,(@101)') my_Instrument.write(':SOUR:SWE:POIN 10,(@101)') my_Instrument.write(':SENS:VOLT:NPLC 1,(@101)') my_Instrument.write(':OUTP 1,(@101)') my_Instrument.write(':INIT (@101)')#循環讀取狀態寄存器,讀取到1024,掃描完成,跳出循環,讀取電壓值 while (1):time.sleep(1)end = my_Instrument.query(':STAT:OPER:COND? (@101)')print(end)if (end == '1024'):break # 創建新文件 wb = xw.Book() # 添加名為"voltage"的工作表 wb.sheets.add('voltage') # 取消活動工作表選擇 wb.sheets[0].select() # 獲取要寫入的數據 voltageList = my_Instrument.query_ascii_values(":FETC:VOLT?") currentList = my_Instrument.query_ascii_values(":FETC:CURR?") # 將數據寫入Excel文件 sheet = wb.sheets['voltage'] sheet.range('A1').value = '電壓(V)' for i in range(len(voltageList)):sheet.range((i+2, 1)).value = voltageList[i] # 修改保存路徑和文件名 save_path = 'D:/test.xlsx' # 保存并關閉文件 wb.save(save_path) wb.close() print(f"已成功創建名為 '{save_path}' 的Excel文件,并在其中添加了名為 'voltage' 的工作表,并將數據寫入該工作表。") #*************************顯示掃描波形***************************************************# x = voltageList y = currentList # 創建圖形并繪制數據,數據源是電壓,縱坐標是電壓值,橫坐標是數據的索引 plt.plot(x, marker='o') # 添加標題和標簽 plt.title('Voltage Data') plt.xlabel('index') plt.ylabel('Voltage (V)') plt.grid()#創建圖形并繪制數據,數據源是電壓,橫坐標是電壓值,縱坐標是數據的索引 (fig, ax1) = plt.subplots() ax1.plot(x, y, marker='o') ax1.grid() # 設置子圖的橫縱坐標軸標簽 ax1.set_xlabel('Voltage') ax1.set_ylabel('Current') # 設置子圖的標題 ax1.set_title('Voltage vs. Current') # 顯示圖形窗口 plt.show()總結
以上是生活随笔為你收集整理的使用python控制仪器【控制苏州联讯源表SMU】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于NLP自然语言以token单位的ch
- 下一篇: websocket python爬虫_p