Products > Test Equipment

Rigol DP832 - Firmware list and bugs

<< < (124/153) > >>

skander36:
Hello garrettm ,
I was used your script to calibrate my PSU (832) but with a Siglent DMM (3065X) conviced that SCPI are universally ...
The script is stopped to first message "ch1 DAC-V calibration", the DMM and the PSU are initialized but that is all. No calibration at all .
The problem is that now the PSU cannot be manually calibrated because the source does not increase values at next step (measured value ->input value). Somehow data for calibration is missing .
Any ideas are welcomed.
The PSU can be used but is decalibrated with over 700 mv and 50-100 mA on all channels .
From your script I don't understand how "readDMM" function is done to see what is wrong with my DMM .

garrettm:

--- Quote from: skander36 on March 13, 2020, 09:48:15 pm ---I was used your script to calibrate my PSU (832) but with a Siglent DMM (3065X)

--- End quote ---

Don't worry, my PSU was basically in a similar state and you can recover just fine using the script. But first we need to edit a few lines of code in TelnetCal.java.

If you could upload a copy of the output that would help me understand where something went wrong.

But to start, I assume you already edited TelnetCal.java with the correct port number used to connect to your DMM via Telnet. And also that when you ran the script, you entered the correct IP address for the DMM and PSU.

The problem likely occurred either when trying to read a measurement from the DMM or while configuring it.

First, download the programming manual for your DMM so we can get their SCPI commands. These are simple strings that go something like this conf:volts:dc 100, sets DMM to volts dc 100V range.

Next, assuming you are using Windows, download Putty (a free Telnet client). Then use it to connect to your DMM and send it each of the commands used in readDMM(), dmmLoclVoltMeas(), dmmRemVoltMeas(), dmmLoclCurrMeas() and dmmRemCurrMeas().

For now, let's focus on configuring for DC volts and reading back a measurement.

  public static void dmmRemVoltMeas() throws InterruptedException {
    // configure DMM for voltage measurements
    dmm.send("*cls");
    dmm.send("syst:rem");
    dmm.send("conf:volt:dc");
    dmm.send("volt:dc:nplc 100");
    dmm.send("volt:dc:filt:dig on");
    dmm.send("trig:sour imm");
    dmm.send("trig:del 0");
    dmm.send("trig:coun 1");
    dmm.send("samp:coun 1");
    dmm.send("disp off");
    Thread.sleep(500);
  }

  public static String readDMM() throws InterruptedException {
    dmm.send(":init");
    do { // wait for measurement to complete
      dmm.send("*opc?");
    } while (!dmm.read().equals("1"));
    dmm.send(":fetch?");
    return dmm.read().replaceAll("\\+",""); // remove "+" from values
  }

Looking at the above methods, we would send:

// configure for remote control / volts dc

*cls
syst:rem
conf:volt:dc
volt:dc:nplc 100
volt:dc:filt:dig on
trig:sour imm
trig:del 0
trig:coun 1
samp:coun 1

// READ ROUTINE

// trigger measurement

:init

// is measurement complete? should return 0 if still measuring and 1 when measurement is complete

*opc?

// place measurement in output buffer (Putty reads the output buffer automatically)

:fetch?

// Putty should return
0 or 1
and a voltage measurement if measurement is complete
 
If the DMM reports an error on the display or Putty does not read back a measurement, you will need to change the value of the corresponding string in the above methods to get the script to work using your Siglent DMM.

For the moment, "comment out" the commands

dmm.send("disp off");

and

dmm.send("volt:dc:filt:dig on");

by typing // in front of them. I don't know if your DMM has a digital filter or not and turning the display off is not necessary. The rest of the commands are required to read and configure the DMM for the remote measurement and may need to be tweaked to work with your DMM.

Let me know how your DMM responds to the above commands. Until I know more I can't help you any futher.

garrettm:
@skander36 looking though the Siglent SDM3065X Remote Manual it seems there are some significant differences between it and the Tektronix/Fluke DMM4050.

First, I do not see a digital filter. So we need to comment that out. This is only to help filter measurement noise and is not needed.

Second, they do not use a trigger delay. So we need to comment that out as well.

Third, there doesn't seem to be a way to set the number of power line cycles or NPLC. So we need to comment this out as well. For most HP/Agilent/Keysight and Fluke/Tektronix meters you can set the integration time (0.02, 0.2, 1, 10 and 100). A longer time reduces the influence of external noise on the measurement and increases the number of significant figures reported by the DMM.

Finally, auto ranging is slightly different. Instead of

conf:current:dc 10
current:dc:rang:auto on

used on the DMM4050 to use the 1A to 10A ranges

you would use

conf:current:dc 10
current:dc auto

to hopefully tell it to use the 1A to 10A ranges, but

conf:current:dc auto

may work as well. But you will need to test this since I do not have one of these to play around with.

Overall, its really a quick and easy fix. You just need edit the 5 methods for configuring and reading the DMM for your Siglent meter and you're good to go. And hopefully you learned some programming and SCPI stuff along the way. To be honest, I've learned way more "breaking" things and figuring out where I went wrong than I ever have when they just worked.

skander36:
Hi @garrettm !
Thank you for you time to help me.
When running the script the DMM read the first value (about -140 mV) and stay here .
I also try to eliminate one by one commands to DMM .
For sending SCPI commands I can use also Ultra Sigma SCPI tool .
    dmm.send("*cls");
    dmm.send("syst:rem"); - not work
    dmm.send("conf:volt:dc"); - work
    dmm.send("volt:dc:nplc 100"); - work doing the other commands are supposed to do .(do remote , immediate trig, set NPLC 100)
    //dmm.send("volt:dc:filt:dig on"); - do nothing aparently but may be internally
    //dmm.send("trig:sour imm");
    //dmm.send("trig:del 0");
    //dmm.send("trig:coun 1");
    //dmm.send("samp:coun 1");
    //dmm.send("disp off");
So , even is not in manual "volt:dc:nplc 100" put the DMM in the desired state.
The script can be stopped with control+c so is not blocked.
Command from read DMM also work one by one ...
I don't see the reason why is not working .

garrettm:
If it stalls after the first measurement, then you aren't triggering a new measurement cycle. Assuming *OFC? returns 0 and 1 correctly, then you need to uncomment the commands for triggering:

// replace contents of dmmRemVoltMeas() with

    dmm.send("*cls");
    dmm.send("conf:volt:dc auto");
    dmm.send("samp:coun 1");
    dmm.send("trig:coun 1");
    dmm.send("trig:del 0");
    dmm.send("trig:sour imm");

If this doesn't work then you will need to rewrite readDMM().

I noticed that Siglent do not use a colon ":" in front of :FETCh? and :INIT like the DMM4050 wants.

So change ":fetch?" to "fetch?" and ":init" to "init" in  readDMM().

If that doesn't work, then the Siglent DMM measurement can be done in two ways.

Using :init, *opc? and :fetch?

Or read?


See

page 7,8 for INIT and FETCh?

page 11 for READ?

page 92 for TRIGger Subsystem of note is Source IMMediate and BUS


The problem with using READ? is that we don't know when the measurement is completed. Maybe *OFC? can be used here?

At any rate, you need to be able to remotely configure the DMM using Putty (via Telnet) with individual commands and repeatedly receive measurements when triggered and queried.

(For example, you would type the sequence :init *ofc? :fetch?  or read? every time you want a new measurement.)

Then simply copy this working routine into the script. I can only help you so far, and you need to do your due diligence and read the Siglent documentation and play around with sending the commands. The script is very simple and only automates what you would do yourself. So if you can send one off commands and make that work perfectly, then the script will do the same.

Navigation

[0] Message Index

[#] Next page

[*] Previous page

There was an error while thanking
Thanking...
Go to full version
Powered by SMFPacks Advanced Attachments Uploader Mod