• RE: How to automate sweeping every 10 min

    At subsite level in the project, go to subsite setup and enable Cycle Mode.<br> Then if you highlight the subsite when clicking the Run button, all enabled tests under that level will be executed once per cycle.&#160; The data will appear at each test but rather than Append2, Append3, etc.&#160; They will be cycle1, cycle2, etc.<br> <br> How to also have some pause for 10 minutes for each cycle?<br> Do you have the compiler a the KULT tool is functional on your 4200?<br> If yes, you could make a simple routine that waits for the desired duration before returning control back to KITE for the cycles to continue.<br> <br> NOTE:&#160; on the new 4200A-SCS, the compiler is always there.&#160; Older 4200-SCS, depending on vintage, needed it installed as an option.&#160; Open the KULT tool from desktop icon and see if it complains or not.
  • RE: How to use the status model on a 3706A

    Hello Lars,<br> <br> Are you saying it is not working for you?&#160; Or you just want to better understand it.<br> <br> I ran just the TSP portion from Test Script Builder, and I am seeing the SRQ annunciator on the front panel.&#160; So I conclude the Python status byte polling loop should be OK.<br> <br> Each of your functions that perform a scan, also make use of waitcomplete().&#160; This will cause the code execution to stall there until the scan finishes.&#160; This seems fine.<br> <br> If you want the SRQ notification on operation complete, the opc bit in status.standard register set &quot;feeds&quot; the ESB bit in the status byte.<br> <br> I would make minor chance to your code and instead use these lines to configure the status subsytem:<br> status.request_enable = 32 &#160; -- enable SRQ on ESB<br> status.standard.enable = 1 &#160; -- OPC bit in this register feeds the ESB bit<br> <br> The last thing your TSP script does is call opc();&#160; when that is able to report complete, the ESB bit will go to logic 1 and the SRQ will go logic 1.<br> The value of the status byte will be 96 or bit pattern 01100000 (in TSP use print(status.condition) to see value of status byte).<br> <br> &#160;
  • RE: Partial waveforms being generated

    Hi Howard,<br> <br> I've attempted to duplicate, but not seeing any issue yet.<br> I've used the Burst mode and sourcing an ARB defined series of pulses.&#160; Also used Burst mode and Pulse from the Basic mode.<br> For me, on the scope capture, the first burst of pulses after turning the output on has the expected number of pulses.<br> <br> If just a single burst is desired upon a software command, you can config the AFG for External trigger source and send *TRG command to satisfy the external trigger.<br> <br> Looks like we will need a little more information in attempt to duplicate the issue.<br> <br> Andrea
  • RE: Real-time data acquisition: how to achieve high speed with Labview and the KEITHLEY 6485?

    The 6485 data sheet reports reading rate as fast as 1000/sec.<br> The footnotes give the measurement settings required to get these speeds.<br> But these outcomes would be for N measurements into the internal buffer.<br> Transfer across the bus to PC takes more time.<br> <br> You seem to be wanting to transfer each reading one by one to have speedy update on your LabVIEW.<br> This maximizes the overhead, so will be slower than the max possible of 1000/sec when streaming to internal buffer.<br> <br> If you can locate a voltage reading instrument with sufficiently fast reading rate, you could use that to monitor the 2V analog output from the picoammeter. &#160;You need something that can continuously stream data to the PC.<br> <br> A DMM6500 could be of help. &#160;Here is app note that details streaming using Python:<br> https://www.tek.com/en/documents/application-note/data-logging-power-profiles-wireless-iot-and-other-low-power-devices<br> <br> Here is a note on evaluating the speed of 6485 analog output to step changes of current. &#160;This is just to illustrate the usefulness of the AO:<br> https://www.tek.com/en/documents/application-note/how-fast-can-i-make-measurements-picoammeter<br> <br> &#160;
  • RE: Update rate of K2450

    <span style="font-size:11pt;"><span style="line-height:107%;"><span style="font-family:Calibri,sans-serif;">If I understand, you want to sweep or source a series of voltage values but do it from a Loop on the PC side where you send a command for each source level.</span></span></span><br> <span style="font-size:11pt;"><span style="line-height:107%;"><span style="font-family:Calibri,sans-serif;">And if also obtaining measurements, from your loop you are also sending commands to cause a current measurement to occur.</span></span></span><br> <span style="font-size:11pt;"><span style="line-height:107%;"><span style="font-family:Calibri,sans-serif;">You will have overhead and possibly some timing variation by the loop-based approach.</span></span></span><br> <span style="font-size:11pt;"><span style="line-height:107%;"><span style="font-family:Calibri,sans-serif;">Using TSP command set and Python, I have this code that does the loop and obtains a measurement.</span></span></span><br> <span style="font-size:11pt;"><span style="line-height:107%;"><span style="font-family:Calibri,sans-serif;">The measurements are sent to PC at the end (one bus transfer).</span></span></span><br> <span style="font-size:11pt;"><span style="line-height:107%;"><span style="font-family:Calibri,sans-serif;">Duration at each source level is about 900usec. Scope shot image uploaded.</span></span></span><br> <br> <span style="font-size:11pt;"><span style="line-height:107%;"><span style="font-family:Calibri,sans-serif;">If I instead send each measurement one by one, the duration increases to about 3.6msec; I have set the integration rate to fastest and turned off autozero.</span></span></span><br> <br> <span style="font-size:11pt;"><span style="line-height:107%;"><span style="font-family:Calibri,sans-serif;">If you know source values ahead of time and can load them into a Source Config List, you can get faster operations.</span></span></span><br> <span style="font-size:11pt;"><span style="line-height:107%;"><span style="font-family:Calibri,sans-serif;">From datasheet for 2450, you can approach 1700 Hz Source-Measure rate at 0.01 NPLC.</span></span></span><br> <span style="font-size:11pt;"><span style="line-height:107%;"><span style="font-family:Calibri,sans-serif;">Look at the System Measurement Speeds table in datasheet (pg 10).</span></span></span> <pre class="linenums prettyprint">my_instr.write(&quot;reset()&quot;) my_instr.write(&quot;status.clear()&quot;) my_instr.write(&quot;errorqueue.clear()&quot;) MEAS_RANGE = 100e-3 cmd_list = [&quot;smu.source.func = smu.FUNC_DC_VOLTAGE&quot;, &#160; &#160; &#160; &#160; &#160; &#160; &quot;smu.source.autorange = smu.OFF&quot;, &#160; &#160; &#160; &#160; &#160; &#160; &quot;smu.source.range = 20&quot;, &#160; &#160; &#160; &#160; &#160; &#160; &quot;smu.source.ilimit.level = &quot; + str(MEAS_RANGE), &#160; &#160; &#160; &#160; &#160; &#160; &quot;smu.source.delay = 0&quot;, &#160; &#160; &#160; &#160; &#160; &#160; &quot;smu.source.autodelay = smu.OFF&quot;, &#160; &#160; &#160; &#160; &#160; &#160; &quot;smu.source.readback = smu.OFF&quot;, &#160; &#160; &#160; &#160; &#160; &#160; &quot;smu.measure.func = smu.FUNC_DC_CURRENT&quot;, &#160; &#160; &#160; &#160; &#160; &#160; &quot;smu.measure.autorange = smu.OFF&quot;, &#160; &#160; &#160; &#160; &#160; &#160; &quot;smu.measure.range = &quot; + str(MEAS_RANGE), &#160; &#160; &#160; &#160; &#160; &#160; &quot;smu.measure.nplc = 0.01&quot;, &#160; &#160; &#160; &#160; &#160; &#160; &quot;smu.measure.autozero.enable = smu.OFF&quot; &#160; &#160; &#160; &#160; &#160; &#160; ] &#160; &#160;&#160; for cmd in cmd_list: &#160; &#160; my_instr.write(cmd) &#160; &#160;&#160; &#160; &#160;&#160; #lets loop thru some source levels and measure speed with scope debug = 1 voltage_list = {} for i in range(0, 11): &#160; &#160; voltage_list[i] = i/10 print(voltage_list) &#160; &#160; &#160; &#160;&#160; my_instr.write(&quot;smu.source.output = smu.ON&quot;) for j in range(0,1): &#160; &#160; for i in range( 0 ,len(voltage_list)): &#160; &#160; &#160; &#160; my_instr.write(&quot;smu.source.level = &quot; + str(voltage_list[i])) &#160; &#160; &#160; &#160; my_instr.write(&quot;smu.measure.read()&quot;) &#160; #obtain a reading into the buffer &#160; &#160; &#160; &#160; #print(my_instr.query(&quot;print(smu.measure.read())&quot;)) &#160;# this will slow you down! &#160; &#160; &#160; &#160;&#160; &#160; &#160; &#160; &#160; &#160; &#160; #all done, turn output off my_instr.write(&quot;smu.source.level = 0&quot;) my_instr.write(&quot;smu.source.output = smu.OFF&quot;) #bring the data back from the buffer print(my_instr.query(&quot;printbuffer(1, defbuffer1.n, defbuffer1.readings)&quot;)) </pre>
  • RE: 2600-PCT-2B Parametric Curve Tracer SPECIFICATION

    The 2600-PCT-2B contains two SourceMeter models: &#160;2651A and 2636B.  Many (not all) of the specs you seek will be in the datasheet for the individual SMUs.  I encourage you to contact your closest sales office and discuss your application and concerns.
  • RE: Resistance below zero

    Is the sample in any sort of shielded test fixture?<br> <br> Double check your connections.&#160; Are you making use of meter-connect to connect LO of Amps meter to the LO of the V-Source?<br> <br> When was your electrometer last calibrated? Perhaps try with an axial leaded high ohms device as practice and to raise confidence in function of the instrument.<br> <br> There are many instructional videos on the 6517B web page.<br> Try this one:&#160;&#160;https://www.tek.com/en/video/how-to/how-to-make-a-resistance-measurement-using-the-model-6517b-electrometer-with-auto-and-manual-modes
  • RE: How should I do if I want to get current noise power spectrum density (pA/sqrt(Hz))?

    Check out this application note pertaining to our 4200A-SCS and 1/f noise measurements:<br> <a href="https://www.tek.com/en/documents/application-note/flicker-noise-measurements-using-the-4200a-scs-parameter-analyzer">1/F Noise Measurement with 4200A-SCS</a>
  • RE: Reading and printing DMM buffer using Python 3.11.3

    Here is some Python code that might more in line with what you are trying to do.<br> I will upload an image of the outputs I get.&#160; I have been feeding a 500Hz sine wave to the DMM7510. <pre class="linenums prettyprint">debug = 1 NUM_SAMPLES = 100 my_instr.write('*RST') my_instr.write(':TRACe:MAKE &quot;voltDigBuffer&quot;,' + str(NUM_SAMPLES)) my_instr.write(':DIG:FUNC &quot;VOLTage&quot;') my_instr.write(':SENS:DIG:VOLT:INP AUTO') my_instr.write(':SENS:DIG:VOLT:RANG 10') my_instr.write(':SENS:DIG:VOLT:SRATE 5000') &#160; #5KHz sample rate my_instr.write(':SENS:DIG:VOLT:APER AUTO') my_instr.write(':SENS:DIG:COUN ' + str(NUM_SAMPLES)) my_instr.write(':TRAC:POIN ' + str(NUM_SAMPLES)) my_instr.write(':TRAC:CLE') my_instr.write(':TRAC:TRIG:DIG &quot;voltDigBuffer&quot;') # wait for done before asking for the data time.sleep(1) &#160;#pause before asking for data if debug == 1: &#160; &#160; my_instr.write(':TRAC:DATA? 95, 100, &quot;voltDigBuffer&quot;, REL, READ') &#160; &#160; print(&quot;****** response to last five points query *************&quot;) &#160; &#160; print(my_instr.read()) #split, parse, etc. &quot;&quot;&quot; raw_data will be comma delimted string of&#160; timestamp, reading, timestamp, reading,... etc. &quot;&quot;&quot; #ask for all the data #TODO: &#160;adjust for NUM_SAMPLES raw_data = my_instr.query(':TRAC:DATA? 1, 100, &quot;voltDigBuffer&quot;, REL, READ') raw_data_array = raw_data.split(',') timestamps = [] Digitized_V = [] # use step of 2 because there are two elements per reading for i in range(0, len(raw_data_array), 2): &#160; &#160; if len(raw_data_array[i]) &gt; 0: &#160; &#160; &#160; &#160; timestamps.append(float(raw_data_array[i])) &#160; &#160; &#160; &#160; Digitized_V.append(float(raw_data_array[i+1])) if debug == 1: &#160; &#160; print(&quot;******* Timestamps *******************&quot;) &#160; &#160; &#160; &#160; &#160; &#160; print(timestamps) &#160; &#160; print(&quot;******** Voltage ******************&quot;) &#160; &#160; print(Digitized_V) &#160; &#160; print(&quot;**************************&quot;) &#160; &#160; print() #graph it plt.autoscale(True, True, True) #plt.axis([0, 0.2, 0, 50e-6]) plt.plot(timestamps, Digitized_V, 'c--') plt.show() </pre>
  • RE: Reading and printing DMM buffer using Python 3.11.3

    In general, when the command you send ends with the question mark (a query type command), you should immediately follow with a read to pull the response to the query command off the output queue.<br> <br> You are sending more than one command in a row.&#160; The first time you read, you will get the response from the first query command, not from the most recent.<br> <br> I'll attach a screen image of your code and the outputs but using a read after each query command.