Teledyne Oscilloscope base classes
Teledyne Oscilloscope
- class pymeasure.instruments.teledyne.TeledyneOscilloscope(adapter, name='Teledyne Oscilloscope', **kwargs)
Bases:
SCPIUnknownMixin
,Instrument
A base abstract class for any Teledyne Lecroy oscilloscope.
All Teledyne oscilloscopes have a very similar interface, hence this base class to combine them. Note that specific models will likely have conflicts in their interface.
- Attributes:
WRITE_INTERVAL_S: minimum time between two commands. If a command is received less than WRITE_INTERVAL_S after the previous one, the code blocks until at least WRITE_INTERVAL_S seconds have passed. Because the oscilloscope takes a non neglibile time to perform some operations, it might be needed for the user to tweak the sleep time between commands. The WRITE_INTERVAL_S is set to 10ms as default however its optimal value heavily depends on the actual commands and on the connection type, so it is impossible to give a unique value to fit all cases. An interval between 10ms and 500ms second proved to be good, depending on the commands and connection latency.
- ch_1
- Channel
- ch_2
- Channel
- ch_3
- Channel
- ch_4
- Channel
- autoscale()
Autoscale displayed channels.
- property bwlimit
Set the internal low-pass filter for all channels.(dynamic)
- center_trigger()
Set the trigger levels to center of the trigger source waveform.
- ch(source)
Get channel object from its index or its name. Or if source is “math”, just return the scope object.
- Parameters
source – can be 1, 2, 3, 4 or C1, C2, C3, C4, MATH
- Returns
handle to the selected source.
- default_setup()
Set up the oscilloscope for remote operation.
The COMM_HEADER command controls the way the oscilloscope formats response to queries. This command does not affect the interpretation of messages sent to the oscilloscope. Headers can be sent in their long or short form regardless of the CHDR setting. By setting the COMM_HEADER to OFF, the instrument is going to reply with minimal information, and this makes the response message much easier to parse. The user should not be fiddling with the COMM_HEADER during operation, because if the communication header is anything other than OFF, the whole driver breaks down.
- display_parameter(parameter, channel)
Same as the display_parameter method in the Channel subclass.
- download_image()
Get a BMP image of oscilloscope screen in bytearray of specified file format.
- download_waveform(source, requested_points=None, sparsing=None)
Get data points from the specified source of the oscilloscope.
The returned objects are two np.ndarray of data and time points and a dict with the waveform preamble, that contains metadata about the waveform.
- Parameters
source – measurement source. It can be “C1”, “C2”, “C3”, “C4”, “MATH”.
requested_points – number of points to acquire. If None the number of points requested in the previous call will be assumed, i.e. the value of the number of points stored in the oscilloscope memory. If 0 the maximum number of points will be returned.
sparsing – interval between data points. For example if sparsing = 4, only one point every 4 points is read. If 0 or None the sparsing of the previous call is assumed, i.e. the value of the sparsing stored in the oscilloscope memory.
- Returns
data_ndarray, time_ndarray, waveform_preamble_dict: see waveform_preamble property for dict format.
- property intensity
Set the intensity level of the grid or the trace in percent
- measure_parameter(parameter, channel)
Same as the measure_parameter method in the Channel subclass
- property memory_size
Control the maximum depth of memory (float or string). Assign for example 500, 100e6, “100K”, “25MA”.
The reply will always be a float.
- run()
Starts repetitive acquisitions.
This is the same as pressing the Run key on the front panel.
- single()
Causes the instrument to acquire a single trigger of data.
This is the same as pressing the Single key on the front panel.
- stop()
Stops the acquisition. This is the same as pressing the Stop key on the front panel.
- property timebase
Get timebase setup as a dict containing the following keys:
“timebase_scale”: horizontal scale in seconds/div (float)
“timebase_offset”: interval in seconds between the trigger and the reference position (float)
- property timebase_offset
Control the time interval in seconds between the trigger event and the reference position (at center of screen by default).
- property timebase_scale
Control the horizontal scale (units per division) in seconds for the main window (float).
- timebase_setup(scale=None, offset=None)
Set up timebase. Unspecified parameters are not modified. Modifying a single parameter might impact other parameters. Refer to oscilloscope documentation and make multiple consecutive calls to timebase_setup if needed.
- Parameters
scale – interval in seconds between the trigger event and the reference position.
offset – horizontal scale per division in seconds/div.
- property trigger
Get trigger setup as a dict containing the following keys:
“mode”: trigger sweep mode [auto, normal, single, stop]
“trigger_type”: condition that will trigger the acquisition of waveforms [edge, slew,glit,intv,runt,drop]
“source”: trigger source [c1,c2,c3,c4]
“hold_type”: hold type (refer to page 172 of programing guide)
“hold_value1”: hold value1 (refer to page 172 of programing guide)
“hold_value2”: hold value2 (refer to page 172 of programing guide)
“coupling”: input coupling for the selected trigger sources
“level”: trigger level voltage for the active trigger source
“level2”: trigger lower level voltage for the active trigger source (only slew/runt trigger)
“slope”: trigger slope of the specified trigger source
- property trigger_mode
Control the trigger sweep mode (string).
<mode>:= {AUTO,NORM,SINGLE,STOP}
auto : When AUTO sweep mode is selected, the oscilloscope begins to search for the trigger signal that meets the conditions. If the trigger signal is satisfied, the running state on the top left corner of the user interface shows Trig’d, and the interface shows stable waveform. Otherwise, the running state always shows Auto, and the interface shows unstable waveform.
normal : When NORMAL sweep mode is selected, the oscilloscope enters the wait trigger state and begins to search for trigger signals that meet the conditions. If the trigger signal is satisfied, the running state shows Trig’d, and the interface shows stable waveform. Otherwise, the running state shows Ready, and the interface displays the last triggered waveform (previous trigger) or does not display the waveform (no previous trigger).
single : When SINGLE sweep mode is selected, the backlight of SINGLE key lights up, the oscilloscope enters the waiting trigger state and begins to search for the trigger signal that meets the conditions. If the trigger signal is satisfied, the running state shows Trig’d, and the interface shows stable waveform. Then, the oscilloscope stops scanning, the RUN/STOP key is red light, and the running status shows Stop. Otherwise, the running state shows Ready, and the interface does not display the waveform.
stopped : STOP is a part of the option of this command, but not a trigger mode of the oscilloscope.
- property trigger_select
Control the condition that will trigger the acquisition of waveforms (string).
Depending on the trigger type, additional parameters must be specified. These additional parameters are grouped in pairs. The first in the pair names the variable to be modified, while the second gives the new value to be assigned. Pairs may be given in any order and restricted to those variables to be changed.
There are five parameters that can be specified. Parameters 1. 2. 3. are always mandatory. Parameters 4. 5. are required only for certain combinations of the previous parameters.
<trig_type>:={edge, slew, glit, intv, runt, drop}
<source>:={c1, c2, c3, c4, line}
<hold_type>:=
{ti, off} for edge trigger.
{ti} for drop trigger.
{ps, pl, p2, p1} for glit/runt trigger.
{is, il, i2, i1} for slew/intv trigger.
<hold_value1>:= a time value with unit.
<hold_value2>:= a time value with unit.
Note:
“line” can only be selected when the trigger type is “edge”.
All time arguments should be given in multiples of seconds. Use the scientific notation if necessary.
The range of hold_values varies from trigger types. [80nS, 1.5S] for “edge” trigger, and [2nS, 4.2S] for others.
The trigger_select command is switched automatically between the short, normal and extended version depending on the number of expected parameters.
- trigger_setup(mode=None, source=None, trigger_type=None, hold_type=None, hold_value1=None, hold_value2=None, coupling=None, level=None, level2=None, slope=None)
Set up trigger.
Unspecified parameters are not modified. Modifying a single parameter might impact other parameters. Refer to oscilloscope documentation and make multiple consecutive calls to trigger_setup and channel_setup if needed.
- Parameters
mode – trigger sweep mode [auto, normal, single, stop]
source – trigger source [c1, c2, c3, c4, line]
trigger_type – condition that will trigger the acquisition of waveforms [edge,slew,glit,intv,runt,drop]
hold_type – hold type (refer to page 172 of programing guide)
hold_value1 – hold value1 (refer to page 172 of programing guide)
hold_value2 – hold value2 (refer to page 172 of programing guide)
coupling – input coupling for the selected trigger sources
level – trigger level voltage for the active trigger source
level2 – trigger lower level voltage for the active trigger source (only slew/runt trigger)
slope – trigger slope of the specified trigger source
- property waveform_first_point
Control the address of the first data point to be sent (int). For waveforms acquired in sequence mode, this refers to the relative address in the given segment. The first data point starts at zero and is strictly positive.
- property waveform_points
Control the number of waveform points to be transferred with the digitize method (int). NP = 0 sends all data points.
Note that the oscilloscope may provide less than the specified nb of points.
- property waveform_preamble
Get preamble information for the selected waveform source as a dict with the following keys:
“requested_points”: number of data points requested by the user (int)
“sampled_points”: number of data points sampled by the oscilloscope (int)
“transmitted_points”: number of data points actually transmitted (optional) (int)
“memory_size”: size of the oscilloscope internal memory in bytes (int)
“sparsing”: sparse point. It defines the interval between data points. (int)
“first_point”: address of the first data point to be sent (int)
“source”: source of the data : “C1”, “C2”, “C3”, “C4”, “MATH”.
“grid_number”: number of horizontal grids (it is a read-only property)
“xdiv”: horizontal scale (units per division) in seconds
“xoffset”: time interval in seconds between the trigger event and the reference position
“ydiv”: vertical scale (units per division) in Volts
“yoffset”: value that is represented at center of screen in Volts
- property waveform_sparsing
Control the interval between data points (integer). For example:
SP = 0 sends all data points. SP = 4 sends 1 point every 4 data points.
- write(command, **kwargs)
Write the command to the instrument through the adapter.
Note: if the last command was sent less than WRITE_INTERVAL_S before, this method blocks for the remaining time so that commands are never sent with rate more than 1/WRITE_INTERVAL_S Hz.
- Parameters
command – command string to be sent to the instrument
Teledyne Channel
- class pymeasure.instruments.teledyne.teledyne_oscilloscope.TeledyneOscilloscopeChannel(parent, id)
Bases:
Channel
A base abstract class for channel on a
TeledyneOscilloscope
device.- property bwlimit
Control the internal low-pass filter for this channel.
The current bandwidths can only be read back for all channels at once! (dynamic)
- property coupling
Control the coupling with a string parameter (“ac 1M”, “dc 1M”, “ground”).
- property current_configuration
Get channel configuration as a dict containing the following keys:
“channel”: channel number (int)
“attenuation”: probe attenuation (float)
“bandwidth_limit”: bandwidth limiting enabled (bool)
“coupling”: “ac 1M”, “dc 1M”, “ground” coupling (str)
“offset”: vertical offset (float)
“skew_factor”: channel-tochannel skew factor (float)
“display”: currently displayed (bool)
“unit”: “A” or “V” units (str)
“volts_div”: vertical divisions (float)
“inverted”: inverted (bool)
“trigger_coupling”: trigger coupling can be “dc” “ac” “highpass” “lowpass” (str)
“trigger_level”: trigger level (float)
“trigger_level2”: trigger lower level for SLEW or RUNT trigger (float)
“trigger_slope”: trigger slope can be “negative” “positive” “window” (str)
- property display
Control the display enabled state. (strict bool)
- property display_parameter
Set the waveform processing of this channel with the specified algorithm and the result is displayed on the front panel.
The command accepts the following parameters:
Parameter
Description
PKPK
vertical peak-to-peak
MAX
maximum vertical value
MIN
minimum vertical value
AMPL
vertical amplitude
TOP
waveform top value
BASE
waveform base value
CMEAN
average value in the first cycle
MEAN
average value
RMS
RMS value
CRMS
RMS value in the first cycle
OVSN
overshoot of a falling edge
FPRE
preshoot of a falling edge
OVSP
overshoot of a rising edge
RPRE
preshoot of a rising edge
PER
period
FREQ
frequency
PWID
positive pulse width
NWID
negative pulse width
RISE
rise-time
FALL
fall-time
WID
Burst width
DUTY
positive duty cycle
NDUTY
negative duty cycle
ALL
All measurement
- insert_id(command)
Insert the channel id in a command replacing placeholder.
Subclass this method if you want to do something else, like always prepending the channel id.
- measure_parameter(parameter: str)
Process a waveform with the selected algorithm and returns the specified measurement.
- Parameters
parameter – same as the display_parameter property
- property offset
Control the center of the screen in Volts by a a float parameter. The range of legal values varies depending on range and scale. If the specified value is outside of the legal range, the offset value is automatically set to the nearest legal value.
- property probe_attenuation
Control the probe attenuation. The probe attenuation may be from 0.1 to 10000.
- property scale
Control the vertical scale (units per division) in Volts.
- setup(**kwargs)
Setup channel. Unspecified settings are not modified.
Modifying values such as probe attenuation will modify offset, range, etc. Refer to oscilloscope documentation and make multiple consecutive calls to setup() if needed. See property descriptions for more information.
- Parameters
bwlimit –
coupling –
display –
invert –
offset –
skew_factor –
probe_attenuation –
scale –
unit –
trigger_coupling –
trigger_level –
trigger_level2 –
trigger_slope –
- property trigger_coupling
Control the input coupling for the selected trigger sources (string).
ac: AC coupling block DC component in the trigger path, removing dc offset voltage from the trigger waveform. Use AC coupling to get a stable edge trigger when your waveform has a large dc offset.
dc: DC coupling allows dc and ac signals into the trigger path.
lowpass: HFREJ coupling places a lowpass filter in the trigger path.
highpass: LFREJ coupling places a highpass filter in the trigger path.
- property trigger_level
Control the trigger level voltage for the active trigger source (float).
When there are two trigger levels to set, this command is used to set the higher trigger level voltage for the specified source.
trigger_level2
is used to set the lower trigger level voltage.When setting the trigger level it must be divided by the probe attenuation. This is not documented in the datasheet and it is probably a bug of the scope firmware. An out-of-range value will be adjusted to the closest legal value.
- property trigger_slope
Control the trigger slope of the specified trigger source (string).
<trig_slope>:={NEG,POS,WINDOW} for edge trigger <trig_slope>:={NEG,POS} for other trigger
parameter
trigger slope
negative
Negative slope for edge trigger or other trigger
positive
Positive slope for edge trigger or other trigger
window
Window slope for edge trigger
(dynamic)
Teledyne MAUI Oscilloscope
- class pymeasure.instruments.teledyne.TeledyneMAUI(adapter, name='Teledyne Oscilloscope', **kwargs)
Bases:
TeledyneOscilloscope
A base class for the MAUI-type of Teledyne oscilloscopes.
This base class works out of the box. Some properties, especially the number of channels, might have to be adjusted to the actual device.
The manual detailing the API is “MAUI Oscilloscopes Remote Control and Automation Manual” (link).
- ch_1
- Channel
- ch_2
- Channel
- ch_3
- Channel
- ch_4
- Channel
- download_image(**kwargs)
Get a BMP image of oscilloscope screen in bytearray of specified file format.
The hardcopy destination is set to “REMOTE” by default.
- Parameters
**kwargs – Keyword arguments for
hardcopy_setup()
- force_trigger()
Make one acquisition if in active trigger mode.
No action is taken if the device is in ‘Stop trigger mode’.
- hardcopy_setup(**kwargs)
Specify hardcopy settings.
Connect a printer or define how to save to file. Set any or all of the following parameters.
- Parameters
device – {BMP, JPEG, PNG, TIFF}
format – {PORTRAIT, LANDSCAPE}
background – {Std, Print, BW}
destination – {PRINTER, CLIPBOARD, EMAIL, FILE, REMOTE}
area – {GRIDAREAONLY, DSOWINDOW, FULLSCREEN}
directory – Any legal DOS path, for FILE mode only
filename – Filename string, no extension, for FILE mode only
printername – Valid printer name, for PRINTER mode only
portname – {GPIB, NET}
- property hardcopy_setup_current
Get current hardcopy config.
- property trigger
Get trigger setup as a dict containing the following keys:
“mode”: trigger sweep mode [auto, normal, single, stop]
“trigger_type”: condition that will trigger the acquisition of waveforms [edge,slew,glit,intv,runt,drop]
“source”: trigger source [c1,c2,c3,c4]
“hold_type”: hold type (refer to page 172 of programing guide)
“hold_value1”: hold value1 (refer to page 172 of programing guide)
“hold_value2”: hold value2 (refer to page 172 of programing guide)
“coupling”: input coupling for the selected trigger sources
“level”: trigger level voltage for the active trigger source
“slope”: trigger slope of the specified trigger source
Teledyne MAUI Channel
- class pymeasure.instruments.teledyne.teledyneMAUI.TeledyneMAUIChannel(parent, id)
Bases:
TeledyneOscilloscopeChannel
Base class for channels on a
TeledyneMAUI
device.- autoscale()
Perform auto-setup command for channel.
- property current_configuration
Get channel configuration as a dict containing the following keys:
“channel”: channel number (int)
“attenuation”: probe attenuation (float)
“bandwidth_limit”: bandwidth limiting, parsed for this channel (str)
“coupling”: “ac 1M”, “dc 1M”, “ground” coupling (str)
“offset”: vertical offset (float)
“display”: currently displayed (bool)
“volts_div”: vertical divisions (float)
“trigger_coupling”: trigger coupling can be “dc” “ac” “highpass” “lowpass” (str)
“trigger_level”: trigger level (float)
“trigger_slope”: trigger slope can be “negative” “positive” “window” (str)
- setup(**kwargs)
Setup channel. Unspecified settings are not modified.
Modifying values such as probe attenuation will modify offset, range, etc. Refer to oscilloscope documentation and make multiple consecutive calls to setup() if needed. See property descriptions for more information.
- Parameters
bwlimit –
coupling –
display –
offset –
probe_attenuation –
scale –
trigger_coupling –
trigger_level –
trigger_slope –