0

我正在尝试使用 PyVisa 和 Keithley 6430 进行电流 - 电压扫描,执行从零到正值和负值的完整电压循环:从 0 到 +5,回到 0 和从 0 到 -5 再回到又是 0。

为此,我基本上使用了 4 个不同的范围和 4 个不同的 for循环,如下所示:

 #Voltage values
 low = -5
 middle = 0
 high = 5
 step = 1

 voltage_range1 = np.arange(middle,high,step)
 voltage_range2 = np.arange(high,middle,-step)
 voltage_range3 = np.arange(middle,low,-step)
 voltage_range4 = np.arange(low,middle+1,step)

 data = [] 

 for voltage in voltage_range1:
 keithley.write('source:voltage:level {}'.format(voltage)) 
 data.append(keithley.query_ascii_values('read?'))

 for voltage in voltage_range2:
 keithley.write('source:voltage:level {}'.format(voltage)) 
 data.append(keithley.query_ascii_values('read?'))

 for voltage in voltage_range3:
 keithley.write('source:voltage:level {}'.format(voltage)) 
 data.append(keithley.query_ascii_values('read?'))

 for voltage in voltage_range4:
 keithley.write('source:voltage:level {}'.format(voltage)) 
 data.append(keithley.query_ascii_values('read?'))

该程序可以正常运行,但我找不到更实用的方法来执行此操作,例如将整个过程设置在一个电压范围内并避免使用 4 个循环。你有什么想法?

4

1 回答 1

0

我认为这可以工作:

voltage_range = np.array([]) # initialize

for array in (voltage_range1,
              voltage_range2,
              voltage_range3,
              voltage_range4)
    voltage_range = np.append(voltage_range, array)

然后你只有一个循环遍历voltage_range。您可以voltage_rangeN直接用 the np.arange()too 替换,基本上您可以通过更改它们在括号中的位置来制作您想要的任何值序列。

所以修改后你的程序是这样的:

# Voltage values
low = -5
middle = 0
high = 5
step = 1

data = [] 
voltage_range = np.array([]) # initialize

for array in (np.arange(middle,high,step),
              np.arange(high,middle,-step),
              np.arange(middle,low,-step),
              np.arange(low,middle+1,step)):
    voltage_range = np.append(voltage_range, array)

for voltage in voltage_range:
    keithley.write('source:voltage:level {}'.format(voltage)) 
    data.append(keithley.query_ascii_values('read?'))

您也可以合并范围 2 和 3:

for array in (np.arange(middle,high,step),
              np.arange(high,low-1,-step),
              np.arange(low,middle+1,step)):
于 2018-03-27T14:18:04.120 回答