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 oscilloscope series. In many cases, a SIGLENT SDS5000X 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 can be replaced without special care.

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

The user must:

  • Ensure that the SDS5000X complies with 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.

 

Currently supported Remote Emulation for the SDS5000X
Manufacturer Instrument
Tektronix 3 Series MDO Oscilloscopes
MDO3000 series
MDO4000 series

 

 

Command Compatibility

Most of the remote emulations in the SDS5000X implement the basic commands of the original instrument. Due to functional differences in hardware and software, in certain remote emulations the SDS5000X 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 Group Command Compatibility Description
Acquisition ACQuire:MODe {SAMple|PEAKdetect|HIRes|AVErage|ENVelope}
  ACQuire:STATE Parameter support:{RUN|STOP}
  ACQuire:STOPAfter Compatible
Horizontal HORizontal:RECOrdlength Value 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:SCAle Timebase value is in 1-2-5 steps, not like Tektronix instruments from 400 ps to 1000 s
HORizontal:DELay:MODe Compatible
HORizontal:DELay:TIMe The display value of UI is the opposite of the set value, which actually takes effect
HORizontal:POSition Compatible. This setting can be viewed under the menu: Utility>Reference Pos
Vertical SELect:CH<x> Compatible
  CH<x>:POSition Compatible
  CH<x>:SCAle Compatible
  CH<x>:OFFset Compatible
  CH<x>:PRObe:GAIN Compatible
  CH<x>:BANdwidth Parameter supported:{FULl|TWENTY}

Not supported:{<NR3>}

  CH<x>:COUPling Parameter support:{AC|DC}

Not supporedt:{DCREJect}

  CH<x>:INVert Compatible
  CH<x>:TERmination Parameter supported :{FIFty|MEG}

Not supported: {<NR3>}

  CH<x>:LABel All label characters are automatically capitalized
Trigger TRIGger:A:TYPe Parameter supported:

{EDGe|LOGIc|PULSe|BUS|VIDeo}

  TRIGger:A:MODe Compatible
  TRIGger:A:LEVel Compatible
  TRIGger:A:EDGE:SOUrce Parameters 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:COUPling Parameter 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:SLOpe Compatible
Cursor CURSor:FUNCTION {SCREEN|WAVEform|OFF}
CURSor:SOUrce Parameters 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
Measurement MEASUrement: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:TYPe Parameters 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:VALue Compatible
  MEASUrement:IMMed:UNIts Compatible
  MEASUrement:IMMed:DELay:DIRection Compatible.

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>:TYPe Parameters 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>:STATE Compatible
  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:DIRection 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>: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

Miscellaneous AUTOSet Compatible
  *RST Compatible.

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

System LANGuage Parameter in red is not supported:

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

  TIME Compatible
  DATE Compatible
  LOCK Compatible
  UNLock Compatible
  FPANEL:PRESS Parameter 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 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()