Examples¶
You can download all nidcpower examples here
nidcpower_advanced_sequence.py¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | #!/usr/bin/python
import argparse
import datetime
import nidcpower
import sys
def example(resource_name, channels, options, voltage_max, current_max, points_per_output_function, delay_in_seconds):
timeout = datetime.timedelta(seconds=(delay_in_seconds + 1.0))
with nidcpower.Session(resource_name=resource_name, channels=channels, options=options) as session:
# Configure the session.
session.source_mode = nidcpower.SourceMode.SEQUENCE
session.voltage_level_autorange = True
session.current_limit_autorange = True
session.source_delay = datetime.timedelta(seconds=delay_in_seconds)
properties_used = ['output_function', 'voltage_level', 'current_level']
session.create_advanced_sequence(sequence_name='my_sequence', property_names=properties_used, set_as_active_sequence=True)
voltage_per_step = voltage_max / points_per_output_function
for i in range(points_per_output_function):
session.create_advanced_sequence_step(set_as_active_step=False)
session.output_function = nidcpower.OutputFunction.DC_VOLTAGE
session.voltage_level = voltage_per_step * i
current_per_step = current_max / points_per_output_function
for i in range(points_per_output_function):
session.create_advanced_sequence_step(set_as_active_step=False)
session.output_function = nidcpower.OutputFunction.DC_CURRENT
session.current_level = current_per_step * i
with session.initiate():
session.wait_for_event(nidcpower.Event.SEQUENCE_ENGINE_DONE)
measurements = session.fetch_multiple(points_per_output_function * 2, timeout=timeout)
session.delete_advanced_sequence(sequence_name='my_sequence')
line_format = '{:,<4} {:,.6g} {:,.6g} {:<6}\n'
print('{:<4} {:<10} {:,<10} {:<6}'.format('Num', 'Voltage', 'Current', 'In Compliance'))
i = 0
for measurement in measurements:
print(line_format.format(i, measurement.voltage, measurement.current, str(measurement.in_compliance)))
i += 1
def _main(argsv):
parser = argparse.ArgumentParser(description='Output ramping voltage to voltage max, then ramping current to current max.', formatter_class=argparse.ArgumentDefaultsHelpFormatter)
parser.add_argument('-n', '--resource-name', default='PXI1Slot2', help='Resource name of a National Instruments SMU')
parser.add_argument('-c', '--channels', default='0', help='Channel(s) to use')
parser.add_argument('-s', '--number-steps', default=256, help='Number of steps per output function')
parser.add_argument('-v', '--voltage-max', default=1.0, type=float, help='Maximum voltage (V)')
parser.add_argument('-i', '--current-max', default=0.001, type=float, help='Maximum Current (I)')
parser.add_argument('-d', '--delay', default=0.05, type=float, help='Source delay (s)')
parser.add_argument('-op', '--option-string', default='', type=str, help='Option string')
args = parser.parse_args(argsv)
example(args.resource_name, args.channels, args.option_string, args.voltage_max, args.current_max, args.number_steps, args.delay)
def main():
_main(sys.argv[1:])
def test_main():
cmd_line = ['--option-string', 'Simulate=1, DriverSetup=Model:4162; BoardType:PXIe', ]
_main(cmd_line)
def test_example():
options = {'simulate': True, 'driver_setup': {'Model': '4162', 'BoardType': 'PXIe', }, }
example('PXI1Slot2', '0', options, 1.0, 0.001, 256, 0.05)
if __name__ == '__main__':
main()
|
nidcpower_measure_record.py¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | #!/usr/bin/python
import argparse
import nidcpower
import sys
def example(resource_name, channels, options, voltage, length):
with nidcpower.Session(resource_name=resource_name, channels=channels, options=options) as session:
# Configure the session.
session.measure_record_length = length
session.measure_record_length_is_finite = True
session.measure_when = nidcpower.MeasureWhen.AUTOMATICALLY_AFTER_SOURCE_COMPLETE
session.voltage_level = voltage
session.commit()
print('Effective measurement rate: {0} S/s'.format(session.measure_record_delta_time / 1))
samples_acquired = 0
print(' # Voltage Current In Compliance')
row_format = '{0:3d}: {1:8.6f} {2:8.6f} {3}'
with session.initiate():
while samples_acquired < length:
measurements = session.fetch_multiple(count=session.fetch_backlog)
samples_acquired += len(measurements)
for i in range(len(measurements)):
print(row_format.format(i, measurements[i].voltage, measurements[i].current, measurements[i].in_compliance))
def _main(argsv):
parser = argparse.ArgumentParser(description='Outputs the specified voltage, then takes the specified number of voltage and current readings.', formatter_class=argparse.ArgumentDefaultsHelpFormatter)
parser.add_argument('-n', '--resource-name', default='PXI1Slot2', help='Resource name of a National Instruments SMU')
parser.add_argument('-c', '--channels', default='0', help='Channel(s) to use')
parser.add_argument('-l', '--length', default='20', type=int, help='Measure record length')
parser.add_argument('-v', '--voltage', default=5.0, type=float, help='Voltage level (V)')
parser.add_argument('-op', '--option-string', default='', type=str, help='Option string')
args = parser.parse_args(argsv)
example(args.resource_name, args.channels, args.option_string, args.voltage, args.length)
def main():
_main(sys.argv[1:])
def test_example():
options = {'simulate': True, 'driver_setup': {'Model': '4162', 'BoardType': 'PXIe', }, }
example('PXI1Slot2', '0', options, 5.0, 20)
def test_main():
cmd_line = ['--option-string', 'Simulate=1, DriverSetup=Model:4162; BoardType:PXIe', ]
_main(cmd_line)
if __name__ == '__main__':
main()
|
nidcpower_source_delay_measure.py¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | #!/usr/bin/python
import argparse
import datetime
import nidcpower
import sys
def print_fetched_measurements(measurements):
print(' Voltage : {:f} V'.format(measurements[0].voltage))
print(' Current: {:f} A'.format(measurements[0].current))
print(' In compliance: {0}'.format(measurements[0].in_compliance))
def example(resource_name, channels, options, voltage1, voltage2, delay):
timeout = datetime.timedelta(seconds=(delay + 1.0))
with nidcpower.Session(resource_name=resource_name, channels=channels, options=options) as session:
# Configure the session.
session.source_mode = nidcpower.SourceMode.SINGLE_POINT
session.output_function = nidcpower.OutputFunction.DC_VOLTAGE
session.current_limit = .06
session.voltage_level_range = 5.0
session.current_limit_range = .06
session.source_delay = datetime.timedelta(seconds=delay)
session.measure_when = nidcpower.MeasureWhen.AUTOMATICALLY_AFTER_SOURCE_COMPLETE
session.voltage_level = voltage1
with session.initiate():
print('Voltage 1:')
print_fetched_measurements(session.fetch_multiple(count=1, timeout=timeout))
session.voltage_level = voltage2 # on-the-fly set
print('Voltage 2:')
print_fetched_measurements(session.fetch_multiple(count=1, timeout=timeout))
session.output_enabled = False
def _main(argsv):
parser = argparse.ArgumentParser(description='Outputs voltage 1, waits for source delay, and then takes a measurement. Then orepeat with voltage 2.', formatter_class=argparse.ArgumentDefaultsHelpFormatter)
parser.add_argument('-n', '--resource-name', default='PXI1Slot2', help='Resource name of a National Instruments SMU')
parser.add_argument('-c', '--channels', default='0', help='Channel(s) to use')
parser.add_argument('-v1', '--voltage1', default=1.0, type=float, help='Voltage level 1 (V)')
parser.add_argument('-v2', '--voltage2', default=2.0, type=float, help='Voltage level 2 (V)')
parser.add_argument('-d', '--delay', default=0.05, type=float, help='Source delay (s)')
parser.add_argument('-op', '--option-string', default='', type=str, help='Option string')
args = parser.parse_args(argsv)
example(args.resource_name, args.channels, args.option_string, args.voltage1, args.voltage2, args.delay)
def main():
_main(sys.argv[1:])
def test_main():
cmd_line = ['--option-string', 'Simulate=1, DriverSetup=Model:4162; BoardType:PXIe', ]
_main(cmd_line)
def test_example():
options = {'simulate': True, 'driver_setup': {'Model': '4162', 'BoardType': 'PXIe', }, }
example('PXI1Slot2', '0', options, 1.0, 2.0, 0.05)
if __name__ == '__main__':
main()
|