Необъяснимая задержка между PyVISA – USB – GPIB – Keithley 2401Python

Программы на Python
Ответить
Anonymous
 Необъяснимая задержка между PyVISA – USB – GPIB – Keithley 2401

Сообщение Anonymous »

Я пытаюсь измерить кривую вольт-амперного напряжения с помощью SMU Keithley 2401. Подключается через GPIB к USB; Я управляю им через PyVISA (Python 3.10):

Код: Выделить всё

def main():
rm = pyvisa.ResourceManager()
k = cast(MessageBasedResource, rm.open_resource(ADDR))

k.timeout = 60000
k.write_termination = "\n"
k.read_termination = "\n"

# print(f"[{datetime.now():%H:%M:%S}] Connected: {k.query('*IDN?').strip()}")

# ---- Force known idle state ----
k.write(":ABOR")
k.write("*RST")
k.write(":OUTP OFF")

# ---- Minimal configuration ----
k.write(":SOUR:FUNC VOLT")
k.write(":SOUR:VOLT:RANG 20")
k.write(":SENS:FUNC 'CURR'")
k.write(f":SENS:CURR:PROT {I_COMPLIANCE_AMPS}")
k.write(":SENS:CURR:RANG:AUTO ON")
k.write(":TRIG:SOUR IMM")
k.write(":TRIG:COUN 1")
k.write(":FORM:ELEM CURR")
k.write(":OUTP ON")

print("\npoint | t_set_v (s) | t_read (s) | current (A)")
print("-" * 50)

for v in V_POINTS:
# ---- Time voltage set ----
t0 = now()
k.write(f":SOUR:VOLT {v}")
time.sleep(0.0)
t_set = now() - t0

# ---- Time read ----
t1 = now()
resp = k.query(":MEAS:CURR?")
t_read = now() - t1

i = float(resp)

print(f"{v:4.1f}  | {t_set:10.4f} | {t_read:9.4f} | {i: .3e}")

k.write(":OUTP OFF")
k.close()
rm.close()
Вывод:

Код: Выделить всё

point | t_set_v (s) | t_read (s) | current (A)
--------------------------------------------------
0.0  |     0.0022 |    0.1809 | -2.524e-11
0.4  |    16.7798 |    0.0776 |  2.465e-11
0.8  |    16.7799 |    0.0847 | -5.544e-11
1.2  |    16.7799 |    0.0728 |  1.100e-11
1.6  |    16.7799 |    0.0848 |  2.844e-07
2.0  |    16.7798 |    0.0694 |  1.008e-06
Как видите, в этих измерениях наблюдается повторяемая задержка в 16,7799 секунды. Я посмотрел:
  • Код: Выделить всё

    time.sleep
  • Задержки NPLC
  • Проблемы с автоматическим диапазоном
Я не нашел ничего, что могло бы избавиться от этих задержек. Если я добавлю time.sleep, я могу увеличить время, но не ниже 16,7 секунды.
Известны ли какие-либо проблемы с драйверами NI или PyVISA, которые могут вызвать такую ​​задержку? Похоже, это проблема квитирования GPIB или задержка NPLC (1000 циклов включения при 60 Гц = 16,67 секунды)... но я ничего не нашел.
Раньше это была случайная проблема, например. он появлялся в 1 или 2 точках во время сканирования. Теперь это происходит при каждом измерении.

Подробнее здесь: https://stackoverflow.com/questions/798 ... thley-2401
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»