Logging from meters

The “#askValues data:last? ” is used to read the data from the meter

It looks like you can use any off:

#askValues read?
#askValues fetch?
#askValues meas?

I do not know which one is best

Also look for #prepareSample and the lines after it, they are send to start measuring. I use them to setup a trigger.

Note: Most commands use everything from the #command to the next #command, with exception some of the parameters just after the #command and some special tags, the text is transmitted to the meter.

Thanks, got it working at least for VDC using the meas? command. Need to send system:remote first.

That command is probably best put in the #initCmd tag.

Handling modes requires two type of settings:
One to read the actual mod:
#askMode :SENSE:FUNCTION?

And a coupe of commands to select modes:
#cmdMode VAC VOLT:AC
abort;
*cls;
conf:volt:ac

The VOLT:AC is what the meter answers to the #askMode command and the lines below the #cmdMode command is how to select that mode.
Finally you remove the #cmdMode that you do not need

If you get this worked out you have a full configuration for the meter.

I’m getting ;; –410,“Query INTERRUPTED” error message if I try to switch the meter operating mode via the popup menu.

Also, adding the SYSTEM:REMOTE command to the #initCmd results in the same error

Writing these commands, such as CONF:VOLT:AC in the input field in the program works fine.

I read here, that there needs to be a short delay between SCPI commands to avoid this.

edit: For the measurement to work on other modes than VOLT:DC, I had to change the #askValues to READ?, because MEAS? just switches the meter to the default VOLT:DC mode.

You can try sticking a “;*ESR?” after the commands that need a delay, if this do not work I will add a delay function.

You can put many command on the same line with ; (semicolon) between them. The software will split them and send them on at a time. Anything with a ? will for a wait for the answer.

Still getting the 410 error while switching modes.

For some reason the system:remote under #initCmd started to work now even without the *ESR?

Could you have forgotten to restart the software after editing and saving the definition?

I have added a delay function, use [time_in_millis] as a SCPI command, this means it must be on its own line or with semicolons before and after it.
I.e. either this:
*cls
[1000]
SENSE:FUNCTION:ON “PER”

or this:
*cls;[1000];SENSE:FUNCTION:ON “PER”

for a 1 second delay. The minimum is [1] and the maximum is [9999], no spaces is allowed inside the brackets.

Did you upload the updated software to support the delay command. Meter reports 101,“Invalid character”.

Yes, I did. It has version 0.13 on the About screen (You can reach that from the configuration page). It is a bit hysteric about the format, if there is anything but bracket numbers bracket it will ignore it.
The SCPI output part will split into separate commands on all ; and newlines, then it will remove leading and trailing spaces. What is left is checked for the delay function and else send to the meter.

I have written a short description on how to add a SCPI multimeter:

http://lygte-info.dk/project/TestControllerConfigDMM%20UK.html

You have probably figured most of it out already.

A description on how to use simple scripting: http://lygte-info.dk/project/TestControllerScriptingExample%20UK.html

I have also added the Siglent SDM3045X bench multimeter.

Thanks for all the work!

I’ve been logging for 24 hours straight and this thing is rock solid. Haven’t gotten the delay commands to work yet so switching the operating mode isn’t happening for me.

The software is not really ready for long time logging yet, it will hit a memory limit after some time (Some Java options can improve this).

I wonder about the delay, it works from V0.13.
Here are two examples (Pictures cannot be spoiled by the automatic formatting):

I am using the V0.13. Every time I put the delay in brackets, the meter beeps for error and reports

Doesn’t matter if I put it into the device config file or enter it directly in the program.

No. Only my newer meters I get a invalid character due to the ” in the sense line (The 34401 may be different).

Yes, that’s what I noticed. I get no errors with any of the other commands such as :sense:function:on “volt:dc”, only the bracketed delay command triggers the error beep.

I just checked in the 44401A manual and did not find the function:on command anywhere. It looks like you have to use function “range”, not function:on “range” and can optionally stick a “sense:” before the function

The sense:function:on “volt:dc” or “volt:ac” still works fine without error for changing the DMM mode. It doesn’t matter if I leave out the :on part at the end or include it. Conf:volt:ac or conf:volt:dc also work.

So the problem is not the SCPI command for changing mode. It’s the delay. And if I omit the delay command (in brackets), then the meter reports the –410,“Query INTERRUPTED” error.

Would it be possible to make the program realize the mode used if I switch the mode manually. Now if I type in the sense:function “volt:ac”, the program doesn’t realize that it should be measuring ac even if I type in sense:function? to query it.

I can see that I may send a empty line to the meter in some circumstances, I will fix that.

The meter uses the #askMode command to check what mode the meter is in. There is some code to trap manual mode changes, but it do not work at the current time (This will, of course, also be fixed).

From v0.15 you can add this to detect range change:

#mayModifyMode sens
#mayModifyMode func

Anything that starts with the above will force a reinitialization of column names. This is done with the #askMode command.

It do not send empty lines anymore.