Oscilloscope Remote control TEK emulation mode

July 27, 2021

Overview

This application note describes the features and usage of the Tektronix compatibility mode for remote control of the SIGLENT SDS5000X and SDS6000A oscilloscope series. In many cases, a SIGLENT SDS5000X/6000A scope can replace a similar Tektronix product without many changes to the existing code. Furthermore, it describes in detail the limitations of the individual emulations and the remaining differences between the emulated and the original commands.

 

Instrument Compatibility

An emulated instrument having fewer features than, or the same features as the SDS5000X/6000A can be replaced without special care.

However, replacing an emulated instrument having more features than the SDS5000X/6000A or features that differ from those of the SDS5000X/6000A requires additional care.

The user must:

  • Ensure that the SDS5000X/SDS6000A complies with the functional requirements of the test
  • Verify the application code does not use features in the emulated instrument which are not available with the SIGLENT SDS5000X/SDS6000A.

 

Currently supported Remote Emulation for the SDS5000X/SDS6000A
ManufacturerInstrument
Tektronix3 Series MDO Oscilloscopes
MDO3000 series
MDO4000 series

 

 

Command Compatibility

Most of the remote emulations in the SDS5000X/SDS6000A implement the basic commands of the original instrument. Due to functional differences in hardware and software, in certain remote emulations, the SDS5000X/SDS6000A can only be compatible with some parts.

The command table below shows the compatibility information for a command and the difference between Siglent and Tektronix:

NOTE: Parameters in red are not supported:

Command Compatibility
Command GroupCommandCompatibility Description
AcquisitionACQuire:MODe{SAMple|PEAKdetect|HIRes|AVErage|ENVelope}
 ACQuire:STATEParameter support:{RUN|STOP}
 ACQuire:STOPAfterCompatible
HorizontalHORizontal:RECOrdlengthValue in [,250e3] will set to 250e3

Value in [250e3,1.25e6] will set to 1.25e6

Value in [1.25e6,12.5e6] will set to 12.5e6

HORizontal:SCAleTimebase value is in 1-2-5 steps, not like Tektronix instruments from 400 ps to 1000 s
HORizontal:DELay:MODeCompatible
HORizontal:DELay:TIMeThe display value of UI is the opposite of the set value, which actually takes effect
HORizontal:POSitionCompatible. This setting can be viewed under the menu: Utility>Reference Pos
VerticalSELect:CH<x>Compatible
 CH<x>:POSitionCompatible
 CH<x>:SCAleCompatible
 CH<x>:OFFsetCompatible
 CH<x>:PRObe:GAINCompatible
 CH<x>:BANdwidthParameter supported:{FULl|TWENTY}

Not supported:{<NR3>}

 CH<x>:COUPlingParameter support:{AC|DC}

Not supporedt:{DCREJect}

 CH<x>:INVertCompatible
 CH<x>:TERminationParameter supported :{FIFty|MEG}

Not supported: {<NR3>}

 CH<x>:LABelAll label characters are automatically capitalized
TriggerTRIGger:A:TYPeParameter supported:

{EDGe|LOGIc|PULSe|BUS|VIDeo}

 TRIGger:A:MODeCompatible
 TRIGger:A:LEVelCompatible
 TRIGger:A:EDGE:SOUrceParameters in red are not supported: {CH1|CH2|CH3|CH4|D0|D1|D2|D3|D4|D5|D6|D7|D8|D9|D10|D11|D12|D13|D14|D15|LINE|AUX|RF}
 TRIGger:A:EDGE:COUPlingParameter supported:

{AC|DC|HFRej|LFRej|NOISErej}.

Noise Reject is a single setting item in SDS5000X. When setting the coupling to NOISErej, it will set to DC and turn on the noise reject. When set to others, it will turn off the noise reject.

 TRIGger:A:EDGE:SLOpeCompatible
CursorCURSor:FUNCTION{SCREEN|WAVEform|OFF}
CURSor:SOUrceParameters in red are not supported:

{CH1|CH2|CH3|CH4|REF1|REF2|REF3|REF4|MATH|BUS1|BUS2|BUS3|BUS4|D0|D1|D2|D3|D4|D5|D6|D7|D8|D9|D10|D11|D12|D13|D14|D15|AUTO}

CURSor:VBArs:POSITION<x>Compatible
CURSor:VBArs:HPOS<x>?Compatible
MeasurementMEASUrement:IMMed:SOUrce<x>Parameters in red are not supported:

{CH1|CH2|CH3|CH4|MATH|D0|D1|D2|D3|D4|D5|D6|D7|D8|D9|D10|D11|D12|D13|D14|D15|HIStogram|RF_AMPlitude|RF_FREQuency|RF_PHASe}

 MEASUrement:IMMed:TYPeParameters in red are not supported:

{AMPlitude|AREa|BURst|CARea|CMEan|CRMs|DELay|FALL|FREQuency|HIGH|HITS|LOW|MAXimum|MEAN|MEDian|MINImum|NDUty|NEDGECount|NOVershoot|

NPULSECount|NWIdth|PEAKHits|PEDGECount|PDUty|PERIod|PHAse|PK2Pk|POVershoot|PPULSECount|PWIdth|RISe|RMS|SIGMA1|SIGMA2|SIGMA3|STDdev|TOVershoot|WAVEFORMS}

When the type is set to DELay, it divides into the following 8 types according to the edges and direction: FRFR, FRFF, FFFR, FFFF, FRLR, FRLF, FFLR, FFLF

 MEASUrement:IMMed:VALueCompatible
 MEASUrement:IMMed:UNItsCompatible
 MEASUrement:IMMed:DELay:DIRectionCompatible.

It divides into the following 8 types according to the edges and direction: FRFR, FRFF, FFFR, FFFF, FRLR, FRLF, FFLR, FFLF

 MEASUrement:IMMed:DELay:EDGE<x>Compatible.

It divides into the following 8 types according to the edges and direction: FRFR, FRFF, FFFR, FFFF, FRLR, FRLF, FFLR, FFLF

 MEASUrement:MEAS<x>:SOUrce<x>Compatible
 MEASUrement:MEAS<x>:TYPeParameters in red are not supported:

{AMPlitude|AREa|BURst|CARea|CMEan|CRMs|DELay|FALL|FREQuency|HIGH|HITS|LOW|MAXimum|MEAN|MEDian|MINImum|NDUty|NEDGECount|

NOVershoot|NPULSECount|NWIdth|PEAKHits|PEDGECount|PDUty|PERIod|PHAse|PK2Pk|POVershoot|PPULSECount|PWIdth|RISe|RMS|SIGMA1|SIGMA2|

SIGMA3|STDdev|TOVershoot|WAVEFORMS}

When the type is set to DELay, it divides into the following 8 types according to the edges and direction: FRFR, FRFF, FFFR, FFFF, FRLR, FRLF, FFLR, FFLF

 MEASUrement:MEAS<x>:STATECompatible
 MEASUrement:MEAS<x>:Value?Compatible
 MEASUrement:MEAS<x>:MEAN?Compatible.

Valid only when statistics are turned on. Turn on the statistics by using the Siglent command or customize the default settings

 MEASUrement:MEAS<x>:DELay:DIRectionCompatible.

It divides into the following 8 types according to the edges and direction: FRFR, FRFF, FFFR, FFFF, FRLR, FRLF, FFLR, FFLF

 MEASUrement:MEAS<x>:DELay:EDGE<x>Compatible.

It divides into the following 8 types according to the edges and direction: FRFR, FRFF, FFFR, FFFF, FRLR, FRLF, FFLR, FFLF

MiscellaneousAUTOSetCompatible
 *RSTCompatible.

Siglent’s preset is quite different from Tektronix’s. If need, please customize the preset and save it by the steps: SaveTo Default KeyCurrentSave.

SystemLANGuageParameter in red is not supported:

{ENGLish|FRENch|GERMan|ITALian|SPANish|PORTUguese|JAPAnese|SIMPlifiedchinese|TRADitionalchinese|KOREan}

 TIMECompatible
 DATECompatible
 LOCKCompatible
 UNLockCompatible
 FPANEL:PRESSParameter supported:

{ Runstop|SINGleseq}

 

Activating Remote Emulation

In order to use a specific remote emulation, it must first be activated by the user. Activation is done either

  • Manually using the SDS5000X/SDS6000A front panel
  • Remotely using SCPI commands

 

Manual Operation

Follow the steps below:

UtilityTek Mode, and set the mode to ON

 

Remote Operation

Send the following command to turn on Tek Compatibility mode:

:SYSTem:REMote:STYLe TEKtronix

Send the command back to Siglent mode:

:SYSTem:REMote:STYLe SIGLent

 

Example

The following program code realizes the following functions: Setting channel, triggering, and measure delay between waveforms.

 Environment: Windows 7 32-bit, Python v3.6.5, pyvisa-1.9

Python Code:


import visa

def main():
    _rm = visa.ResourceManager()&lt;/p&gt;
    sds = _rm.open_resource("TCPIP0::10.12.255.21::inst0::INSTR")&lt;/p&gt;
#Set channel parameters
    sds.write("SELect:CH1 ON")
    sds.write("SELect:CH2 ON")
    sds.write("CH1:SCAle 1")
    sds.write("CH2:SCAle 1")
    sds.write("CH1:POSition 0")
    sds.write("CH2:POSition 0")
#Set the timebase
    sds.write("HORizontal:SCAle 2e-6")
#Trigger the signal stably
    sds.write("TRIGger:A:TYPe EDGE")
    sds.write("TRIGger:A:EDGE:SOUrce CH1")
    sds.write("TRIGger:A:EDGE:COUPling DC")
    sds.write("TRIGger:A:LEVel 0")
#Measure the delay between C1 and C2
    sds.write("MEASUrement:MEAS3:STATE ON")
    sds.write("MEASUrement:MEAS3:SOUrce1 CH1")
    sds.write("MEASUrement:MEAS3:SOUrce2 CH2")
    sds.write("MEASUrement:MEAS3:TYPe DELay")
    sds.write("MEASUrement:MEAS3:DELay:DIRection FORWards")
    sds.write("MEASUrement:MEAS3:DELay:EDGE1 RISing")
    sds.write("MEASUrement:MEAS3:DELay:EDGE2 RISing")
    sds.query("MEASUrement:MEAS3:VALue?")
if __name__ == "__main__":
    main()