; TestController device configuration file for Owon DGE1030 function generator ; Version 0 ; Date 29-04-2026 ; Written by Lucas Volwater, lucas@eluke.nl, username "Lucky Luke" at circuitsonline.net. ; Adapted from Rigol DG1000Z config file by Gertjan Miedeman, originaly based on DG9xx by bateau020, source originally from HKJ and HBO. ; For use with TestController, software to control and log data. ; Tested with DGE1030 over USB interface. ; TestController must be restarted before any changes in this file will be used. ; TestController Manual is here: https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html ; Some tips: ; ; - The Front Panel is not locked while in remote mode. ; So any missing setting in the TestController Setup Menu can be set on the DGE1030 Front Panel. ; ; Known issues: ; #idString OWON,DGE1030, #name Owon DGE1030 #handle DGE1030 #port comfixedbaud ; Alternate port types: comnobaud or com, com lets the user define baudrate on the "Load devices" page #baudrate 115200 ; The author statement is used for the listing in the About window. #author Lucas Volwater #notes Device configuration file for OWON DGE1030 function generator - The DGE1030 Front Panel is not locked while in remote mode. So any missing setting in the TestController Setup Menu can be set on the Front Panel. For example all the built-in arb wave shapes. ; A list of possible column name with unit and formatter (SI, Time, Int, D0..D6) ; Format: #value ColumnName Unit Format {Selector} ; Selector is only used when column layout varies with mode, this often require the use of #cmdMode #value frequency Hz SI #value Amplitude V SI #value Offset V SI #value phase radians SI ; How to poll for data, this is used for table and #values? ; a #askMode, #cmdMode and #prepareSample is used before this is string is used. ; Number of returned values must match number of columns defined with #value ; This is a single line command #askValues SOUR1:FREQ?;SOUR1:VOLT:AMPL?;SOUR1:VOLT:OFFS?;SOUR1:PHAS? ; Format of answer: f=float, u=remove trailing letters, x=skip, *=Zero upper case values if this value is 0 #askValuesReadFormat ffff ; Accept this delay when reading values (seconds) #readingDelay 2 ; Mode change have a longer delay on reading values (seconds) #modeChangeDelay 10 ; String to ask about actual meter mode, it is mostly used for DMM's ; This is a single line command ;#askMode ; When one of these commands are used through the command interface a new configuration will be done before using #askMode ; Only one word for each #mayModifyMode ; Specify command without initial colon and in the shortest possible form ;#mayModifyMode ; Prepare the meter to response to #askValues ;#prepareSample arm:sour imm;:arm:count 1;:trig:sour imm;:trig:count 1;:trig:samp:count 1;init ; Initial commands to meter when establishing connection #initCmd *RST;SYST:BEEP;OUTP1:STAT OFF; ; Final command to meter before breaking connection #finalCmd *RST;SYST:BEEP;OUTP1:STAT OFF; ; Used to turn output off for power supplies, generators and electronic loads #outputOff OUTP1:STAT OFF ; ---------- Programming interface --------- #interfaceType ARB ARB:1 #interface setFrequency SOUR1:FREQ (value) #interface setAmplitude SOUR1:VOLT (value) #interface setOffset SOUR1:VOLT:OFFS (value) #interface setWaveform SOUR1:FUNC:SHAP:(value) #interface setOn OUTP1:STAT (getElement("off on",value," ")) #interface getFrequency SOUR1:FREQ? #interface getAmplitude SOUR1:VOLT? #interface getOffset SOUR1:VOLT:OFFS? #interface getWaveform SOUR1:FUNC:SHAP? :string: :readmath: getElement(unQuote(value),0,",") #interface getOn OUTP1:STAT? :readmath: listIndex(getMatch(value,"(ON)|(OFF)"),"OFF ON"," ") #interface readFrequency 0 #interface readAmplitude 1 #interface readOffset 2 ; -------------------- Setup Menu CH1 -------------------- #cmdSetup color _ Channel_1 (255,204,51) #cmdSetup indicator Output_state Channel_1 :read: OUTP1:STAT? :updatealloff: Off (value)=="0" (204,255,204) On (value)=="1" (0,153,0) #cmdSetup buttons Output_state Channel_1 :write: OUTP1:STAT Off OFF On ON #cmdSetup combobox Waveform Channel_1 :read: SOUR1:FUNC:SHAP? :readmath: getElement(unQuote(value),0,",") :write: SOUR1:FUNC:SHAP # :update: Channel_1.Arbitrary Sine SIN Square SQU Pulse PULS Ramp RAMP Noise PRN SinC SINC Lorentz LORENTZ Gauss_pulse GAUSSPULSE Stair_down STAIRDN Stair_up STAIRUP Airy AIRY Exp._rise EXPRISE Exp._fall EXPFALL CosH COSH Abs._sine ABSSINE DC DC ; --There are mannnnny more possibilities for waveshapes, built into the DGE1030. Set them from the device, or add them here. #cmdSetup separator _ Freq_1 2 100 Raised #cmdSetup number Frequency Freq_1 :read: SOUR1:FREQ? :textwidth: 8 :write: SOUR1:FREQ # :update: Freq_1.Period :tip: MaxFrequency is only possible in sine mode. :updatemodechange: Hz 1u 30M ;#cmdSetup number Period Freq_1 ;not possible on DGE1030? ;:read: :SOUR1:PER? ;:write: :SOUR1:PER # ;:textwidth: 8 ;:update: Freq_1.Frequency ;:tip: MinPeriod is only possible in sine mode. ;:updatemodechange: ;s MinPeriod 1M #cmdSetup separator _ Ampli_1 2 100 Raised ;TODO ;#cmdSetup radio Amplitude_unit Ampli_1 ;:enable: CalZ_1.Load_Imp=="9.900000E+37" ;:visible: CalZ_1.Load_Imp=="9.900000E+37" ;:read: :SOUR1:VOLT:UNIT? ;:string: ;:write: :SOUR1:VOLT:UNIT # ;:update: Ampli_1.Amplitude, Ampli_1.High_Level, Ampli_1.Low_Level, Ampli_1.Offset ;:tip: Amplitude units available are Volts peak to peak, Volts RMS and dBm
dBm is not possible with High Z (High ; Impedance) setting ;:updatemodechange: ;Vpp VPP ;Vrms VRMS ; Is always in Volts, for now... (TODO?) ;#cmdSetup radio Amplitude_unit Ampli_1 ;:enable: CalZ_1.Load_Imp!="9.900000E+37" ;:visible: CalZ_1.Load_Imp!="9.900000E+37" ;:read: :SOUR1:VOLT:UNIT? ;:string: ;:write: :SOUR1:VOLT:UNIT # ;:update: Ampli_1.Amplitude, Ampli_1.High_Level, Ampli_1.Low_Level, Ampli_1.Offset ;:tip: Amplitude units available are Volts peak to peak, Volts RMS and dBm
dBm is not possible with High Z (High ; Impedance) setting ;:updatemodechange: ;Vpp VPP ;Vrms VRMS ;dBm DBM #cmdSetup number Amplitude Ampli_1 :enable: Ampli_1.Amplitude_unit=="VPP" :visible: Ampli_1.Amplitude_unit=="VPP" :read: SOUR1:VOLT? :write: SOUR1:VOLT # :textwidth: 8 :update: Ampli_1.High_Level, Ampli_1.Low_Level, Ampli_1.Offset :tip: Vpp Amplitude + offset must be within +/- TBD V. Limits depend on load Z and unit. :updatemodechange: Vpp 1m 20 ; TODO might not be possible? ;#cmdSetup number Amplitude Ampli_1 ;:enable: Ampli_1.Amplitude_unit=="VRMS" ;:visible: Ampli_1.Amplitude_unit=="VRMS" ;:read: :SOUR1:VOLT? ;:write: :SOUR1:VOLT # ;:textwidth: 8 ;:update: Ampli_1.High_Level, Ampli_1.Low_Level, Ampli_1.Offset ;:tip: Amplitude + offset must be within +/-10V. Limits depend on load Z and unit. ;:updatemodechange: ;Vrms 1m 7 ; TODO ? ;#cmdSetup number Amplitude Ampli_1 ;:enable: Ampli_1.Amplitude_unit=="DBM" ;:visible: Ampli_1.Amplitude_unit=="DBM" ;:read: :SOUR1:VOLT? ;:write: :SOUR1:VOLT # ;:textwidth: 8 ;:update: Ampli_1.High_Level, Ampli_1.Low_Level, Ampli_1.Offset ;:tip: Amplitude + offset must be within +/-10V. Limits depend on load Z and unit. ;:updatemodechange: ;dBm -56 23 #cmdSetup number High_Level Ampli_1 :read: SOUR1:VOLT:HIGH? :textwidth: 8 :write: SOUR1:VOLT:HIGH # :update: Ampli_1.Amplitude, Ampli_1.Low_Level, Ampli_1.Offset :tip: Must be > Low Level. Limits depend on load Z. :updatemodechange: V -10 10 #cmdSetup number Low_Level Ampli_1 :read: SOUR1:VOLT:LOW? :textwidth: 8 :write: SOUR1:VOLT:LOW # :update: Ampli_1.Amplitude, Ampli_1.High_Level, Ampli_1.Offset :tip: Must be < High Level. Limits depend on load Z. :updatemodechange: V -10 10 #cmdSetup number Offset Ampli_1 :read: SOUR1:VOLT:OFFS? :textwidth: 8 :write: SOUR1:VOLT:OFFS # :update: Ampli_1.Amplitude, Ampli_1.High_Level, Ampli_1.Low_Level :tip: Vpp Amplitude + offset must be within +/-10V. Limits depend on load Z. :updatemodechange: V -10 10 ; TODO? ;#cmdSetup separator _ Offset_1 ;2 100 Raised ; TODO Seperate offset for the DC (Arb) mode. If that is at all possible with DGE1030? ;#cmdSetup number DC_Offset Offset_1 ;:read: SOUR1:VOLT:OFFS? ;:textwidth: 8 ;:write: SOUR1:FUNC:SHAP DC; SOUR1:VOLT:OFFS #; ;:tip: Amplitude + offset must be within +/-10V. Limits depend on load Z. ;:updatemodechange: ;V -10 10 #cmdSetup combobox Load_Imp CalZ_1 :read: OUTP1:IMP? :write: OUTP1:IMP # :update: Ampli_1.Amplitude, Ampli_1.Low_Level, Ampli_1.High_Level, Ampli_1.Offset :tip: Calibrates Amplitude settings to match the actual load impedance :updatemodechange: 50_Ohm 5.000000E+01 75_Ohm 7.500000E+01 110_Ohm 1.100000E+02 600_Ohm 6.000000E+02 1_kOhm 1.000000E+03 10_kOhm 10.000000E+03 High_Z INF #cmdSetup separator _ Phase_1 2 100 Raised #cmdSetup number Phase Phase_1 :read: SOUR1:PHAS? :readmath:toDeg(value); :write: SOUR1:PHAS # DEG :tip: Phase of the signal. :updatemodechange: deg 0 360 ; Phase is always read in Radians but can be set in degrees or radians. Default is radians, that is why DEG is specified here to get DEGrees #cmdSetup separator _ Ramp_1 2 100 Raised #cmdSetup number Symmetry Ramp_1 :read: SOUR1:FUNC:RAMP:SYMM? :write: SOUR1:FUNC:RAMP:SYMM # :tip: Symmetry for ramp :updatemodechange: % 0 100 ; NOTE: Ducy of square cannot be set this way, only for pulse! ; #cmdSetup separator _ Square_1 ; 2 100 Raised ; #cmdSetup number Duty_cycle Square_1 ; :read: SOUR1:SQU:DCYCLe? ; :write: SOUR1:SQU:DCYCLe # ; :tip: Duty cycle for pulse. ; :updatemodechange: ; % 0 100 #cmdSetup separator - Pulse_1 2 100 Raised #cmdSetup number Duty_cycle Pulse_1 :read: :SOUR1:PULSE:DCYCLE? :update: Pulse_1.Width Pulse_1.Rise Pulse_1.Fall :write: SOUR1:PULSE:DCYCLE # :tip: Duty cycle for pulse :updatemodechange: % 0 100 #cmdSetup number Width Pulse_1 :read: SOUR1:PULSE:WIDTH? :textwidth: 8 :write: SOUR1:PULSE:WIDTH # :update: Pulse_1.Duty_cycle Pulse_1.Rise Pulse_1.Fall :tip: Pulse Width :updatemodechange: s MinPeriod 1M #cmdSetup number Rise_time Pulse_1 :read: SOUR1:PULSE:TRAN:LEAD? :textwidth: 8 :write: SOUR1:PULSE:TRAN:LEAD # :update: Pulse_1.Duty_cycle Pulse_1.Width Pulse_1.Fall :tip: Pulse Rising edge, up to 0.625 x pulse width :updatemodechange: s 10n 1M #cmdSetup number Fall_time Pulse_1 :read: SOUR1:PULSE:TRAN:TRA? :textwidth: 8 :write: SOUR1:PULSE:TRAN:TRA # :update: Pulse_1.Duty_cycle Pulse_1.Width Pulse_1.Rise :tip: Pulse Falling edge, up to 0.625 x pulse width :updatemodechange: s 10n 1M #cmdSetup selector Settings_1 Channel_1 Channel_1.Waveform SIN Freq_1. Ampli_1. CalZ_1. Phase_1. SQU Freq_1. Ampli_1. CalZ_1. Phase_1. Square_1. RAMP Freq_1. Ampli_1. CalZ_1. Phase_1. Ramp_1. PULS Freq_1. Ampli_1. CalZ_1. Phase_1. Pulse_1. NOISE Ampli_1. CalZ_1. USER Freq_1. Ampli_1. CalZ_1. Phase_1. DC Offset_1. CalZ_1. ; -------------------- Setup Menu Utility -------------------- #cmdSetup number display_brightness Utility :write: DISP:BRIG # :read: DISP:BRIG? :tip: Set display brightness percent 10 100 #cmdSetup separator _ Utility 2 100 Empty #cmdSetup separator _ Utility 2 100 Raised #cmdSetup separator _ Utility 2 100 Empty