This post is a part of a series of posts about instrumentation. Get the full code here. For setup details, see the original post.
DC power supplies can be found in all kinds of different laboratory environments.
Making supplies programmable improves the reproducibility of experiments. In this post, we will look at various features of the DP800 series programmable DC power supply.
Display Modes

The default display mode is not the best. Luckily, there are a few to choose from.
instrument = DP800("192.168.254.101")
instrument.set_display_mode("NORM") # default
instrument.set_display_mode("WAVE") # time series
instrument.set_display_mode("DIAL") # dial
instrument.set_display_mode("CLAS") # classic
Timer & Delayer
The timer and delayer functions are somewhat limited by an update interval of 1 second. This supply is theoretically capable of creating periodic functions with a period of 10 seconds to well over a day.
# Timer
instrument = DP800("192.168.254.101")
instrument.set_timer_cycles("I") # infinite
instrument.set_timer_end_state("LAST") # use last state
instrument.set_timer_groups(2048) # max groups
instrument.enable_timer()
# Delayer
instrument = DP800("192.168.254.101")
instrument.set_delay_cycles(99999)
instrument.set_delay_end_state("OFF")
instrument.set_delay_groups(2048)
instrument.enable_delay()
Monitor & Triggering
This device has overvoltage, overcurrent, overtemperature, subassembly level self testing, monitoring, and 4-bit digital external triggering.
# Monitor
instrument = DP800("192.168.254.101")
instrument.enable_monitor()
instrument.enable_monitor_outoff()
instrument.enable_monitor_warning()
instrument.enable_monitor_beeper()
# Trigger
instrument = DP800("192.168.254.101")
instrument.get_trigger_source_type() == "BUS"
instrument.set_trigger_current(0.001)
instrument.enable_trigger_input()
instrument.set_trigger_response("ON")
instrument.set_trigger_sensitivity("MID")
instrument.set_trigger_input_source(2)
instrument.set_trigger_type("FALL")
instrument.set_trigger_voltage(0, 1)
instrument.set_trigger_condition(">V", 0)
instrument.set_trigger_duty_cycle(90)
instrument.enable_trigger_output()
instrument.set_trigger_period(1)
instrument.set_trigger_polarity("NEGA")
instrument.set_trigger_signal("SQUARE")
instrument.set_trigger_output_source(2)
instrument.set_trigger_delay(1)
Memory functions: Analyzer, Recorder
There is also various recall functions, such as a recorder and analyzer. It’s usually better to offload analysis and instrument setup to the host computer, so not all of these functions were implemented.
# Analyzer
instrument = DP800("192.168.254.101")
instrument.set_record_period(1)
instrument.set_record_destination("RIGOL.ROF", 10)
instrument.enable_record()
time.sleep(1)
instrument.disable_record()
instrument.set_analyzer_file(10)
instrument.set_analyzer_start_time(1)
instrument.set_analyzer_end_time(1)
instrument.run_analyzer()
# Recorder
instrument = DP800("192.168.254.101")
instrument.set_record_destination("RIGOL.ROF", 10)
instrument.set_record_period(10)
instrument.enable_record()
Conclusion

I was disappointed with this device as it compares to the DS1000Z series oscilloscope. In some cases, there were many commands to perform the same action (and no simple way to take screenshots)!
On the plus side, this device offers great value for three output channels, 100μV measurement precision, and high performance programmable I/O.