web
オフライン状態です。これはページの読み取り専用バージョンです。
close
  • RE: Unable to set Source Current for SMU (Four Point Probe Experiment)

    See if this application note helps:
    Four Point Probe Resistivity with 2450
  • RE: communicate with two keithley via two gpib cables using python

    You have two keithleys and two gpib cables.
    But how many GPIB interface boards does the computer have?
    If only one gpib card in the PC, then only one program can take charge of it at a time.
    A single program that sends commands to two different gpib address would be needed for simultaneous use of both keithleys.
  • RE: DMM 2701 - Ethernet conection - The web page open but not able to connect to 2701

    The model 2701 uses port 1394 for the LAN communication.
  • RE: Cannot get 2500 readings per second with Keithley 2700

    You can try turning off the display:   :DISPLAY:ENABLE:STAT OFF

    I found an FAQ on tek.com for this topic.  It is indicating that the TRACE buffer is not the fastest one.

    Max Reading Rate from 2700, 2701 or 2750

    Alternate commands:
    *RST
    
    :SENSE:FUNC 'VOLT:DC'
    
    :SENSE:VOLT:NPLC 0.01
    
    :SENSE:VOLT:RANGE 10
    
    :SENSE:VOLT:AVER:STAT OFF
    
    :SAMPLE:COUNT 1000
    
    :TRIG:DELAY 0.0
    
    :SYSTEM:AZERO:STAT OFF
    
    :DISPLAY:ENABLE:STAT OFF
    
    :READ?
    
    Now read the data...
    
    To check for maximum speed apply a 1V RMS at 2Hz to the input. Run the above command sequence.
    
    The 1000 readings should show one complete cycle or less. This shows the meter is taking data at least at a rate of 2000 readings per second.
    
  • RE: Using Keithley 3706A with a python script

    Here is some Python sample code for scanning some channels with model 3706A:
    import pyvisa                                              
    import time                                                
    import matplotlib.pyplot as plt                
    import pandas as pd
    
    
    def check_error():
        status = my3706A.read_stb()
        if int(status) & 4 == 4 :    #test if the EAV (error available) bit is set
            error_response = my3706A.query("print(errorqueue.next())")
            print(error_response)
        else:
            print("No Errors")
    
    def get_scanState():
        my3706A.write("scanState, scanCount, stepCount, lastReading = scan.state()")
        return int(float(my3706A.query("print(tonumber(scanState))")))
       
    
    DEBUG = 0
    my3706A = pyvisa.ResourceManager().open_resource('TCPIP0::192.168.1.214::INSTR')
    #my3706A = pyvisa.ResourceManager().open_resource('USB0::0x05E6::0x3706::04428124::INSTR') # Connect to the keithley and set it to a variable named multimeter.
    my3706A.timeout = 10000  #number of msec to wait for VISA command completions
    #my3706A.write("")
    #put instrument into known state
    my3706A.write('reset()')
    my3706A.write('status.reset()')
    my3706A.write('errorqueue.clear()')
    #allocate a buffer for the measurements
    my3706A.write('buf=dmm.makebuffer(1000)')
    my3706A.write('buf.clear()')
    my3706A.write('buf.appendmode=1')
    my3706A.write('buf.collectchannels=1')
    
    if DEBUG: check_error()
    #configure the DMM settings
    my3706A.write("dmm.func= dmm.DC_VOLTS")  #   TWO_WIRE_OHMS   DC_VOLTS
    my3706A.write("dmm.range=1")
    my3706A.write("dmm.autorange=1")
    my3706A.write("dmm.nplc= 1")   #0.0005 to 15 for 60Hz power
    my3706A.write("dmm.autozero= dmm.ON")
    my3706A.write("dmm.autodelay= dmm.ON")
    
    if DEBUG: check_error()
    #associate these dmm settings with a configuration name
    # do not use a factory preset name, e.g., 'dcvolts'
    # custom settings = requires custom name
    my3706A.write('dmm.configure.set("my_dcvolts")')
    
    if DEBUG: check_error()
    #associate the dmm config with channels
    my3706A.write('dmm.setconfig("1001:1008", "my_dcvolts")')
    
    
    #define a scan
    my3706A.write('scan.measurecount=1')  # one reading per scan
    my3706A.write("scan.create('1001:1008')")
    my3706A.write("scan.scancount = 10")     # 10 scans
    # now that scan is setup, run the scan
    my3706A.write("buf.clear()")   # just in case, clear the buffer of any content
    #my3706A.write("scan.execute(buf)")  # this one does not return until scan completes
    my3706A.write("scan.background(buf)")  # this one returns;  Python needs to coordinate with done.
    
    # setup a while loop to exit when scan state goes to 6 = scan.SUCCESS = done
    script_running = True
    DEBUG_LOOP = 0
    while script_running:
        present_state = get_scanState()
        if DEBUG_LOOP: print("Scan State: " + str(present_state))
        if present_state == 6:
            script_running = False
        time.sleep(0.5) #delay before asking again
    
    #ask for the data
    my3706A.write("printbuffer(1, buf.n, buf.relativetimestamps, buf.readings)")
    raw_data = my3706A.read()
    # raw data will be comman delimited string:
    # time, ch1, time, ch2, time, ch3, time, ch4, time, ch5, time...
    # parse the data
    raw_data_array = raw_data.split(",")
    timestamps = []
    chan1001 = []
    chan1002 = []
    chan1003 = []
    chan1008 = []
    num_channels = 8
    num_elements = num_channels * 2  #time, ch1, time, ch2, time, ch3, time, ch4, time, ch5, time....
    for element in range(0, len(raw_data_array), num_elements):
        timestamps.append(float(raw_data_array[element]))
        chan1001.append(float(raw_data_array[element+1]))
        chan1002.append(float(raw_data_array[element+3]))
        chan1003.append(float(raw_data_array[element+5]))
        chan1008.append(float(raw_data_array[element+15]))
    #create dataframe
    data = {'Timestamp': timestamps, 'Channel 1': chan1001, 'Channel 2': chan1002, 'Channel 3': chan1003, 'Channel 8': chan1008}
    df = pd.DataFrame(data)
    
    # Set 'Timestamp' as the index
    df.set_index('Timestamp', inplace=True)
    # Print the DataFrame
    print(df)
    # ********************  Simple Graph ******************
    plt.figure()
    plt.subplot(3, 1, 1) # nrows=3, ncols=1, index=1
    plt.plot(timestamps, chan1001, 'o-b')
    plt.subplot(312)
    plt.plot(timestamps, chan1002, 'x-r')
    plt.subplot(313)
    plt.plot(timestamps, chan1003, '.-g')
    plt.show()
    
    
    my3706A.clear()
    my3706A.close()
  • RE: 2450 Cyclic Voltametry

    The electrochemistry scripts for use with 2450, 2460 or 2461 are not open source.

    The scripts can be obtained on model number EC-UPGRADE

    EC-UPGRADE Kit Quick Start Guide
  • RE: DAQ6510 OverflowHz/V Issue

    In attached document, is more info and a sample TSP script.

  • RE: Questions about 3706

    On each of the DB78 connectors on the 3720 card, there are the +ILK and -ILK pins.
    Make sure to jumper these two pins together to enable the closure of the backplane relay.

    NOTE:  when using the 3720-ST wiring accessory, these jumpers are made for you.
  • RE: Count number of time a relay on a scanner card switches

    The IVI driver did not define a means to query that information from the card.
    The IVI driver does however have WriteString and ReadString as part of the DirectIO interface.
    //ask for closure counts from a channel list 
    driver.System.DirectIO.WriteString("print(channel.getcount(\"1001,1911\"))");
                    
    resultsListBox.Items.Add(driver.System.DirectIO.ReadString());

     
  • RE: Multiple 2602b SMU LabVIEW (GPIB)

    Hello,
    Please elaborate on the sweep until it finds a drop in current.  Is the sweep implemented as a loop controlled from LabVIEW?  And the LV code is where the evaluation about current drop occurs?