Python: ошибка тайм-аута при чтении больших данных из Keithely 2400 SMU
Я использую Python для удаленного управления SMU Keithely 2410 и столкнулся с проблемой чтения данных из буфера, если есть более 250 точек. Кажется, он работает нормально для <200 баллов, но при>250 баллах я получаю ошибку тайм-аута с:trace:data? команда, которую я вложил:
values = np.array(inst.query_ascii_values (':trace:data?'))
Это проблема с методом.query_ascii_values ()? Я очень плохо знаком с Python. Я ссылаюсь на руководство пользователя Keithley 2400 SMU по командам для связи с SMU.
Мой код Python ниже.
import visa
import numpy as np
import matplotlib.pyplot as plt
np.set_printoptions(threshold='nan')
# Initialize Instrument
rm = visa.ResourceManager()
rm.list_resources()
inst = rm.open_resource('GPIB0::22::INSTR')
# Write Measurement Parameters
inst.write('*rst; status:preset; *cls')
inst.write(':status:measurement:enable 512; *sre 1')
inst.write(':sense:current:nplcycles 0.01')
inst.write(':route:terminals front')
inst.write(':sense:average off')
inst.write(':sense:function:conc off')
inst.write(':source:function voltage')
inst.write(":sense:function 'current:dc'")
inst.write(':sense:current:protection 0.1')
inst.write(':source:voltage:mode sweep')
inst.write(':source:voltage:start 1')
inst.write(':source:voltage:stop 1')
inst.write(':source:voltage:step 0')
inst.write(':source:sweep:spac lin')
inst.write(':source:delay .001')
inst.write(':arm:source bus')
inst.write(':trace:poin 200')
inst.write(':trigger:count 200')
inst.write(':trace:feed sense1')
inst.write(':trace:feed:control next')
inst.write(':trace:tstamp:format absolute')
# Begin Measurement
inst.write(':output on')
inst.write(':initiate')
inst.assert_trigger()
inst.wait_for_srq()
# Read Buffer Data
values = np.array(inst.query_ascii_values(':trace:data?'))
# Reset Instrument For Future Measurements
inst.write(':*cls')
inst.write(':*sre 0')
inst.query(':status:measurement?')
inst.write(':trace:clear')
inst.write(':output off')
#Plot Measurement
b=values.reshape((200,5))
t = b[:,3]
I = b[:,1]
plt.plot(t,I);
plt.xlabel('time (s)');
plt.ylabel('current (A)');
plt.title('TDDB Leakage Current');
plt.show()
runfile('C:/Users/Mosto/Python Scripts/ivsweep.py', wdir='C:/Users/Mosto/Python Scripts') Traceback (последний вызов был последним):
Файл "", строка 1, в исполняемом файле ('C: / Users / Mosto / Python Scripts / ivsweep.py', wdir = 'C: / Users / Mosto / Python Scripts')
Файл "C:\Anaconda2\lib\site-packages\spyder\utils\site\sitecustomize.py", строка 880, в исполняемом файле runfile (имя файла, пространство имен)
Файл "C:\Anaconda2\lib\site-packages\spyder\utils\site\sitecustomize.py", строка 87, в execfile exec(compile(scripttext, filename, 'exec'), glob, loc)
Файл "C:/Users/Mosto/Python Scripts/ivsweep.py", строка 46, в values = np.array(inst.query_ascii_values (':trace:data?'))
Файл "C:\Anaconda2\lib\site-packages\pyvisa\resources\messagebased.py", строка 455, в query_ascii_values block = self.read()
Файл "C:\Anaconda2\lib\site-packages\pyvisa\resources\messagebased.py", строка 332, в файле read message = self.read_raw(). Decode (enco)
Файл "C:\Anaconda2\lib\site-packages\pyvisa\resources\messagebased.py", строка 306, в блоке read_raw, status = self.visalib.read(self.session, size)
Файл "C:\Anaconda2\lib\site-packages\pyvisa\ctwrapper\functions.py", строка 1582, в read ret = library.viRead(сессия, буфер, count, byref(return_count))
Файл "C:\Anaconda2\lib\site-packages\pyvisa\ctwrapper\highlevel.py", строка 188, в _return_handler вызывает ошибки.VisoEEror (ret_value)
VisaIOError: VI_ERROR_TMO (-1073807339): истекло время ожидания до завершения операции.