Author Topic: Program that can log from many multimeters.  (Read 482421 times)

0 Members and 3 Guests are viewing this topic.

Offline HKJTopic starter

  • Super Contributor
  • ***
  • Posts: 2904
  • Country: dk
    • Tests
Re: Program that can log from many multimeters.
« Reply #825 on: June 20, 2020, 08:47:30 am »
Sounds good, thank you.

I was convinced I had checked the BM829 multiple times, but the segment definitions was wrong, it works now.
 
The following users thanked this post: SharpDome

Offline HKJTopic starter

  • Super Contributor
  • ***
  • Posts: 2904
  • Country: dk
    • Tests
Re: Program that can log from many multimeters.
« Reply #826 on: June 20, 2020, 08:49:01 am »
V0.92 is up

There is nothing really new in it:
   Support for National Instruments GPIB-232CT is added.
   Fixed bug in Brymen BM829s, BM827s, BM822s, BM821s
   Added Siglent scopes as voltmeters (Thanks to MikeLud).
   Charts could have a scale problem if maximum was equal or lower than minimum, this is fixed.
 
The following users thanked this post: masterx81, tubularnut, Marco1971, MikeLud, SharpDome

Offline masterx81

  • Frequent Contributor
  • **
  • Posts: 480
  • Country: it
Re: Program that can log from many multimeters.
« Reply #827 on: June 20, 2020, 11:34:44 am »
Managed to get it work, but had to remove the reset at connect. And i'm not able to read the model number (that is presented after a reset).
Tried also with
Code: [Select]
#verifyDevice 7150+_VAC.AC Reset;Model?
#scpiCmd Reset tx A
#scpiCmd Model? txrx?

but nothing. In any case it's a non blocking thing.

Some question:
Seem that i can't switch from remote to local. In remote it goes as soon as the meter receive a GPIB command, but at disconnect i can only do a reset (or manually press the local button on the front panel. Seem that there is a GTL command to do that, but doing a "tx GTL" does nothing. I think that is a command at GPIB level.

Another one:
Somethimes the meter does strange things:
Code: [Select]
Starting
;; COM9: Set params: 19200
;; Start thread for: National Instruments GPIB-232CT A:1 - Solartron 7150Plus
;; COM9: Tx: <EOS R,10.> 45 4F 53 20 52 2C 31 30 0A
;; COM9: Tx: <.> 0A
;; National Instruments GPIB-232CT A:1: Tx <SingleValue>
;; National Instruments GPIB-232CT A:1: Tx <tx T0>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <T0.> 54 30 0A
;; Found Solartron 7150Plus on National Instruments GPIB-232CT A:1
;; SOL7150PLUS: Tx <txrx? M?>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <M?.> 4D 3F 0A
;; COM9: Tx: <TMO 0.95.> 54 4D 4F 20 30 2E 39 35 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <+.M1> 2B 2E 4D 31
;; SOL7150PLUS: Rx <+.M1>
Unknown mode: +.M1
Known modes: M0, M1,

The "+." seem a residue of a previous buffer.

Then, while in VDC i can always get a coorect value, every sample taken,in VAC sometimes the meter return nothing.
Code: [Select]
Starting
;; COM9: Set params: 19200
;; Start thread for: National Instruments GPIB-232CT A:1 - Solartron 7150Plus
;; COM9: Tx: <EOS R,10.> 45 4F 53 20 52 2C 31 30 0A
;; COM9: Tx: <.> 0A
;; National Instruments GPIB-232CT A:1: Tx <SingleValue>
;; National Instruments GPIB-232CT A:1: Tx <tx T0>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <T0.> 54 30 0A
;; Found Solartron 7150Plus on National Instruments GPIB-232CT A:1
;; SOL7150PLUS: Tx <txrx? M?>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <M?.> 4D 3F 0A
;; COM9: Tx: <TMO 0.95.> 54 4D 4F 20 30 2E 39 35 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <M0> 4D 30
;; SOL7150PLUS: Rx <M0>
;; SOL7150PLUS: Tx <tx M1>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <M1.> 4D 31 0A
;; SOL7150PLUS: Tx <txrx? M?>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <M?.> 4D 3F 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <M1> 4D 31
;; SOL7150PLUS: Rx <M1>
;; SOL7150PLUS: Tx <txrx? G>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <G.> 47 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <0> 30
;; SOL7150PLUS: Rx <0>
;; SOL7150PLUS: Rx after :readmath: replace(replace(value,"+.","0."),"-.","-0."); <0>
;; SOL7150PLUS: Rx as numbers <0.0>
;; SOL7150PLUS: Tx <txrx? G>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <G.> 47 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <0> 30
;; SOL7150PLUS: Rx <0>
;; SOL7150PLUS: Rx after :readmath: replace(replace(value,"+.","0."),"-.","-0."); <0>
;; SOL7150PLUS: Rx as numbers <0.0>
;; SOL7150PLUS: Tx <txrx? G>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <G.> 47 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <0> 30
;; SOL7150PLUS: Rx <0>
;; SOL7150PLUS: Rx after :readmath: replace(replace(value,"+.","0."),"-.","-0."); <0>
;; SOL7150PLUS: Rx as numbers <0.0>
;; SOL7150PLUS: Tx <txrx? G>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <G.> 47 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <+.+.0002990  V AC> 2B 2E 2B 2E 30 30 30 32 39 39 30 20 20 56 20 41 43
;; SOL7150PLUS: Rx <+.+.0002990  V AC>
;; SOL7150PLUS: Rx after :readmath: replace(replace(value,"+.","0."),"-.","-0."); <0.0.0002990  V AC>
;; SOL7150PLUS: Rx as numbers <0.0>
;; SOL7150PLUS: Tx <txrx? G>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <G.> 47 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <+.0002990  V AC> 2B 2E 30 30 30 32 39 39 30 20 20 56 20 41 43
;; SOL7150PLUS: Rx <+.0002990  V AC>
;; SOL7150PLUS: Rx after :readmath: replace(replace(value,"+.","0."),"-.","-0."); <0.0002990  V AC>
;; SOL7150PLUS: Rx as numbers <2.99E-4>
;; SOL7150PLUS: Tx <txrx? G>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <G.> 47 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <+.0003000  V AC> 2B 2E 30 30 30 33 30 30 30 20 20 56 20 41 43
;; SOL7150PLUS: Rx <+.0003000  V AC>
;; SOL7150PLUS: Rx after :readmath: replace(replace(value,"+.","0."),"-.","-0."); <0.0003000  V AC>
;; SOL7150PLUS: Rx as numbers <3.0E-4>
;; SOL7150PLUS: Tx <txrx? G>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <G.> 47 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <+.0003010  V AC> 2B 2E 30 30 30 33 30 31 30 20 20 56 20 41 43
;; SOL7150PLUS: Rx <+.0003010  V AC>
;; SOL7150PLUS: Rx after :readmath: replace(replace(value,"+.","0."),"-.","-0."); <0.0003010  V AC>
;; SOL7150PLUS: Rx as numbers <3.01E-4>
;; SOL7150PLUS: Tx <txrx? G>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <G.> 47 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <+.0003010  V AC> 2B 2E 30 30 30 33 30 31 30 20 20 56 20 41 43
;; SOL7150PLUS: Rx <+.0003010  V AC>
;; SOL7150PLUS: Rx after :readmath: replace(replace(value,"+.","0."),"-.","-0."); <0.0003010  V AC>
;; SOL7150PLUS: Rx as numbers <3.01E-4>
;; SOL7150PLUS: Tx <txrx? G>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <G.> 47 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <0> 30
;; SOL7150PLUS: Rx <0>
;; SOL7150PLUS: Rx after :readmath: replace(replace(value,"+.","0."),"-.","-0."); <0>
;; SOL7150PLUS: Rx as numbers <0.0>
;; SOL7150PLUS: Tx <txrx? G>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <G.> 47 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <0> 30
;; SOL7150PLUS: Rx <0>
;; SOL7150PLUS: Rx after :readmath: replace(replace(value,"+.","0."),"-.","-0."); <0>
;; SOL7150PLUS: Rx as numbers <0.0>
;; SOL7150PLUS: Tx <txrx? G>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <G.> 47 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <+.0003010  V AC> 2B 2E 30 30 30 33 30 31 30 20 20 56 20 41 43
;; SOL7150PLUS: Rx <+.0003010  V AC>
;; SOL7150PLUS: Rx after :readmath: replace(replace(value,"+.","0."),"-.","-0."); <0.0003010  V AC>
;; SOL7150PLUS: Rx as numbers <3.01E-4>
;; SOL7150PLUS: Tx <txrx? G>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <G.> 47 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <+.0003000  V AC> 2B 2E 30 30 30 33 30 30 30 20 20 56 20 41 43
;; SOL7150PLUS: Rx <+.0003000  V AC>
;; SOL7150PLUS: Rx after :readmath: replace(replace(value,"+.","0."),"-.","-0."); <0.0003000  V AC>
;; SOL7150PLUS: Rx as numbers <3.0E-4>
;; SOL7150PLUS: Tx <txrx? G>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <G.> 47 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <+.0003000  V AC> 2B 2E 30 30 30 33 30 30 30 20 20 56 20 41 43
;; SOL7150PLUS: Rx <+.0003000  V AC>
;; SOL7150PLUS: Rx after :readmath: replace(replace(value,"+.","0."),"-.","-0."); <0.0003000  V AC>
;; SOL7150PLUS: Rx as numbers <3.0E-4>
;; SOL7150PLUS: Tx <txrx? G>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <G.> 47 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <+.0003010  V AC> 2B 2E 30 30 30 33 30 31 30 20 20 56 20 41 43
;; SOL7150PLUS: Rx <+.0003010  V AC>
;; SOL7150PLUS: Rx after :readmath: replace(replace(value,"+.","0."),"-.","-0."); <0.0003010  V AC>
;; SOL7150PLUS: Rx as numbers <3.01E-4>
;; SOL7150PLUS: Tx <txrx? G>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <G.> 47 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <+.0002980  V AC> 2B 2E 30 30 30 32 39 38 30 20 20 56 20 41 43
;; SOL7150PLUS: Rx <+.0002980  V AC>
;; SOL7150PLUS: Rx after :readmath: replace(replace(value,"+.","0."),"-.","-0."); <0.0002980  V AC>
;; SOL7150PLUS: Rx as numbers <2.98E-4>
;; SOL7150PLUS: Tx <txrx? G>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <G.> 47 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <+.0002990  V AC> 2B 2E 30 30 30 32 39 39 30 20 20 56 20 41 43
;; SOL7150PLUS: Rx <+.0002990  V AC>
;; SOL7150PLUS: Rx after :readmath: replace(replace(value,"+.","0."),"-.","-0."); <0.0002990  V AC>
;; SOL7150PLUS: Rx as numbers <2.99E-4>

How i can filter those null readings?
For decoding the value i'm using
Code: [Select]
#askValues txrx? G
#askValuesReadFormat u
#askValuesMathFormat replace(replace(value,"+.","0."),"-.","-0.");


Thanks, and sorry to bother you so much :(
« Last Edit: June 20, 2020, 11:37:16 am by masterx81 »
 

Offline HKJTopic starter

  • Super Contributor
  • ***
  • Posts: 2904
  • Country: dk
    • Tests
Re: Program that can log from many multimeters.
« Reply #828 on: June 20, 2020, 02:28:12 pm »
Seem that i can't switch from remote to local. In remote it goes as soon as the meter receive a GPIB command, but at disconnect i can only do a reset (or manually press the local button on the front panel. Seem that there is a GTL command to do that, but doing a "tx GTL" does nothing. I think that is a command at GPIB level.

You cannot do commands to the GPIB interface, the idea is the different GPIB interfaces all works with the same device definition (There will probably be a few exceptions) and also that the same device definitions can handle multiple interfaces on the same device.

Then, while in VDC i can always get a coorect value, every sample taken,in VAC sometimes the meter return nothing.

You may need a longer timeout value (It is called #readingDelay).


You may also want to play with #cmdSetup, that way you can change range and mode of the meter.

 
The following users thanked this post: masterx81

Offline masterx81

  • Frequent Contributor
  • **
  • Posts: 480
  • Country: it
Re: Program that can log from many multimeters.
« Reply #829 on: June 20, 2020, 02:41:04 pm »
You cannot do commands to the GPIB interface, the idea is the different GPIB interfaces all works with the same device definition (There will probably be a few exceptions) and also that the same device definitions can handle multiple interfaces on the same device.
And adding an option on the gpib setup window to send the commands REN and GTL to the gpib address so that can be done separately for every device?

You may need a longer timeout value (It is called #readingDelay).
I'll try it, thanks!
You may also want to play with #cmdSetup, that way you can change range and mode of the meter.
Ok, i'll do it
 

Offline SharpDome

  • Newbie
  • Posts: 4
  • Country: us
Re: Program that can log from many multimeters.
« Reply #830 on: June 20, 2020, 02:43:38 pm »
I was convinced I had checked the BM829 multiple times, but the segment definitions was wrong, it works now.

I just tested the updated version and everything is now working as expected with my BM829s. Thank you!
 

Offline masterx81

  • Frequent Contributor
  • **
  • Posts: 480
  • Country: it
Re: Program that can log from many multimeters.
« Reply #831 on: June 20, 2020, 04:32:38 pm »
The "#readingDelay" seem to not do nothing, i've tried values from 1 to 10000, and nothing change.
 

Offline HKJTopic starter

  • Super Contributor
  • ***
  • Posts: 2904
  • Country: dk
    • Tests
Re: Program that can log from many multimeters.
« Reply #832 on: June 20, 2020, 04:47:43 pm »
The "#readingDelay" seem to not do nothing, i've tried values from 1 to 10000, and nothing change.

It looks like I am only using it for SCPI devices, I will fix that tomorrow.
You can use #gpibWriteReadDelay to give the meter more time for doing the conversion. The time is in milliseconds, i.e. a value around 500 is probably fine.
 
The following users thanked this post: masterx81

Offline masterx81

  • Frequent Contributor
  • **
  • Posts: 480
  • Country: it
Re: Program that can log from many multimeters.
« Reply #833 on: June 20, 2020, 05:35:19 pm »
It works! 500ms do the job.
I was playing with cmdsetup, using as template one made by Mikelud...  :scared: :scared: Really complex! First it's better that i get all modes working.
I was searching on the other definitions but i've not found, how to apply a math only to one mode (the meters return kohm, and i want to multiply by 1000 for have ohm).
 

Offline HKJTopic starter

  • Super Contributor
  • ***
  • Posts: 2904
  • Country: dk
    • Tests
Re: Program that can log from many multimeters.
« Reply #834 on: June 20, 2020, 05:56:53 pm »
I was playing with cmdsetup, using as template one made by Mikelud...  :scared: :scared: Really complex! First it's better that i get all modes working.

MikeLud is very good at using the #cmdSetup definitions and has made some great device definitions with it, but it is not required to make them as complete as he do.
Check the documentation: https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html#Configuration_menu

I was searching on the other definitions but i've not found, how to apply a math only to one mode (the meters return kohm, and i want to multiply by 1000 for have ohm).

I will have to think a bit about this, the software do not have an easy to way to apply scale factors to some modes. Depending on parser used for the value it may handle a trailing k as a factor 1000.

 

Offline masterx81

  • Frequent Contributor
  • **
  • Posts: 480
  • Country: it
Re: Program that can log from many multimeters.
« Reply #835 on: June 20, 2020, 08:50:42 pm »

I will have to think a bit about this, the software do not have an easy to way to apply scale factors to some modes. Depending on parser used for the value it may handle a trailing k as a factor 1000.
On the other driver i used the SI decoding (in the protek) and the testcontroller was handling it ok.
 

Offline masterx81

  • Frequent Contributor
  • **
  • Posts: 480
  • Country: it
Re: Program that can log from many multimeters.
« Reply #836 on: June 20, 2020, 11:44:57 pm »
I was playing with the cmdsetup...
My meter is quite strange (and is also different from the manual!)
If i send a range request R? while in manual range mode, it answer for example R01 if in manual (0), range 200mV (1).
If i send a range request R? while in auto range mode, it answer for example R11 if in auto (1), range 200mV (1).
If i send an R0 it goes in auto mode.
If i send an R01 it goes in manual mode, range 1(200mv)
So, i've put a button for auto range, and a combo for the various ranges
Code: [Select]
#cmdSetup button Range_AUTO VDC
:write: R0

#cmdSetup comboboxHot Range VDC
:write: #
:read: Range?
200mV R01
2V R02
20V R03
200V R04
2000V R05
:updatemodechange:
As i can't find another way to do it.
In any case, if i let the combo to sent the command, it not works, but if i send it manually, it works:

Code: [Select]
Sent from the combobox change:
;; SOL7150PLUS: Tx <R02>
;; SOL7150PLUS: Tx <Range?>
;; SOL7150PLUS: Tx <txrx? R?>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <R?.> 52 3F 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <R01> 52 30 31
;; SOL7150PLUS: Rx <R01>

Sent manually:
tx R02
;; SOL7150PLUS: Tx <tx R02>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <R02.> 52 30 32 0A
txrx? R?
;; SOL7150PLUS: Tx <txrx? R?>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <R?.> 52 3F 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <R02> 52 30 32
;; SOL7150PLUS: Rx <R02>
;; R02
Why it has not sent the R02 code?

Would be nice also to leave the combobox without nothing selected if i press the auto button. Or would be great to have nothing selected of the read value isn't in the list.
I can't put the "auto" in the combobox as if i set to write the R0 command, it not select the auto item if (for example) "R11" is read from the meter.

Thanks!

---EDIT---

Got what i was doing wrong, the command needed to be:
:write: tx #
« Last Edit: June 21, 2020, 12:06:30 am by masterx81 »
 
The following users thanked this post: Marco1971

Offline HKJTopic starter

  • Super Contributor
  • ***
  • Posts: 2904
  • Country: dk
    • Tests
Re: Program that can log from many multimeters.
« Reply #837 on: June 21, 2020, 07:20:07 am »
A new .jar file (V0.93)
It will use the "#readingDelay" for gpib interfaces.
I have also added a SI decoder to the #askValuesReadFormat, use the letter s.

The letter must be next to the number, this means it may be necessary to extend the #askValuesMathFormat with something like:
#askValuesMathFormat replace(replace(replace(value,"+.","0."),"-.","-0.")," kohm","k ohm");

For your range selection you could add something like:
:readmath: replace(value,"R1","R0")
To make it show the actual range in auto ranging mode. It will not update when the range changes, you have to press "Setup" again to get it updated.
 

Offline masterx81

  • Frequent Contributor
  • **
  • Posts: 480
  • Country: it
Re: Program that can log from many multimeters.
« Reply #838 on: June 21, 2020, 09:18:40 am »
I'll try it, thanks!
Sorry but in #value command, the "data type" isn't related to the format of the input string?
And, i've seen that the d type have only 6 decimal digits, but my meter can output also 7 digits...
 

Offline HKJTopic starter

  • Super Contributor
  • ***
  • Posts: 2904
  • Country: dk
    • Tests
Re: Program that can log from many multimeters.
« Reply #839 on: June 21, 2020, 09:45:33 am »
Sorry but in #value command, the "data type" isn't related to the format of the input string?
And, i've seen that the d type have only 6 decimal digits, but my meter can output also 7 digits...

No. Input is parsed into a double, this is a very high precision value and is also used for all calculations.
The Dx & SI formats are used to format the double when showing the values.
The D6 is 6 digits after the decimal point, there may be 1 or more before the point.
When saving a CSV file it will have higher resolution than the table.
 

Offline masterx81

  • Frequent Contributor
  • **
  • Posts: 480
  • Country: it
Re: Program that can log from many multimeters.
« Reply #840 on: June 21, 2020, 10:07:46 am »
Aaahhh ok i tought that the si was for the input parsing!

In any case,  now, when the meter output the 7 number after decimal point, isn't recognized as a valid number anymore.
 

Offline HKJTopic starter

  • Super Contributor
  • ***
  • Posts: 2904
  • Country: dk
    • Tests
Re: Program that can log from many multimeters.
« Reply #841 on: June 21, 2020, 10:20:42 am »
In any case,  now, when the meter output the 7 number after decimal point, isn't recognized as a valid number anymore.

Show a log of what is going on and you definition.
 

Offline masterx81

  • Frequent Contributor
  • **
  • Posts: 480
  • Country: it
Re: Program that can log from many multimeters.
« Reply #842 on: June 21, 2020, 12:31:03 pm »
The "#askValuesReadFormat s" seem to not work as it should:
Code: [Select]
#askValues txrx? G
#askValuesReadFormat s
#askValuesMathFormat replace(replace(replace(value,"+.","0."),"-.","-0.")," ","");

Code: [Select]
;; SOL7150PLUS: Tx <txrx? G>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <G.> 47 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <+0.000340  KOHM> 2B 30 2E 30 30 30 33 34 30 20 20 4B 4F 48 4D
;; SOL7150PLUS: Rx <+0.000340  KOHM>
;; SOL7150PLUS: Rx after :readmath: replace(replace(replace(value,"+.","0."),"-.","-0.")," ",""); <+0.000340KOHM>
;; SOL7150PLUS: Rx as numbers <NaN>


;; SOL7150PLUS: Tx <txrx? G>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <G.> 47 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <+.0000290  V DC> 2B 2E 30 30 30 30 32 39 30 20 20 56 20 44 43
;; SOL7150PLUS: Rx <+.0000290  V DC>
;; SOL7150PLUS: Rx after :readmath: replace(replace(replace(value,"+.","0."),"-.","-0.")," ",""); <0.0000290VDC>
;; SOL7150PLUS: Rx as numbers <NaN>

The strings "+0.000340KOHM" and  "0.0000290VDC" seem correct. Tried also to remove the DC and OHM part without success


For the problem in 6.5 digit mode, it goes in rx timeout:
Code: [Select]
;; SOL7150PLUS: Tx <txrx? G>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <G.> 47 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <0> 30
;; SOL7150PLUS: Rx <0>
;; SOL7150PLUS: Rx after :readmath: replace(replace(replace(value,"+.","0."),"-.","-0.")," ",""); <0>
;; SOL7150PLUS: Rx as numbers <0.0>
Tried to increase the #gpibWriteReadDelay up to 1000 without success.
If i exit the program, and do the request manually via realterm, it works:
Code: [Select]
w77 r72 t74  20 131  0D
g67 0D
r72 d64  20 #23 232 030 ,2C 131  0D
+2B .2E 030 030 030 030 333 030 838  20  20 V56  20 D44 C43  0D  0A
00  00  00 131 737  0D 0A
       

One more question, how i can enable (or made visible) a control only based on the selected mode?
With:
Code: [Select]
;Mode-------------------------------------------------------------------------------------------
#cmdSetup info ActiveMode
:read: Mode?
:readmath: getElement("VDC;VAC;OHM",listIndex(unQuote(value),"M0 M1 M2"," "),";")
:updatemodechange:

;VDC-------------------------------------------------------------------------------------
#cmdSetup comboboxHot Range VDC
:write: tx #
:read: Range?
:enable: ActiveMode=="VDC"
AUTO R0
200mV R01
2V R02
20V R03
200V R04
2000V R05
:updatemodechange:

It give me
Code: [Select]
Exception in thread "AWT-EventQueue-0" dk.hkj.script.ProgramExceptions$UnknownException: Variable not found ActiveMode
ActiveMode==____<----____"VDC"

This is the current definition
Code: [Select]

#idString SOLARTRON,7150PLUS,
#name Solartron 7150Plus
#handle SOL7150PLUS
#driver Ascii
#port GPIB
#gpibReadCount 20
#gpibReadEol 10
;#gpibReadEol eoi

#gpibWriteReadDelay 500

;#verifyDevice 7150+_VAC.AC Reset;Model?
;#scpiCmd Reset tx A
;#scpiCmd Model? txrx?

; A list of possible column name with unit and formatter (SI, Time, Int, D0..D6)
#value VoltageDC V si VDC
#value VoltageAC V si VAC
#value Resistance ohm si OHM

#initCmd SingleValue
;#scpiCmd RemoteEnable tx REN
#scpiCmd SingleValue tx T0

#finalCmd tx T1

#interfaceType DMM BMM
#interface readValue 0

#cmdModeLayout 3 5

#cmdMode VDC M0
tx M0

#cmdMode VAC M1
tx M1

#cmdMode OHM M2
tx M2



;Mode-------------------------------------------------------------------------------------------
#cmdSetup info ActiveMode
:read: Mode?
:readmath: getElement("VDC;VAC;OHM",listIndex(unQuote(value),"M0 M1 M2"," "),";")
:updatemodechange:

;VDC-------------------------------------------------------------------------------------
#cmdSetup comboboxHot Range VDC
:write: tx #
:read: Range?
;:enable: inList(ActiveMode,"VDC");
AUTO R0
200mV R01
2V R02
20V R03
200V R04
2000V R05
:updatemodechange:

#cmdSetup comboboxHot Integration_Time VDC
:write: tx #
:read: txrx? I?
6.66ms(3x9's) I0
40.0ms(4x9's,50Hz) I1
50.0ms(4x9's,60Hz) I2
100ms(4x9's) I6
400ms(5x9's) I3
10x400ms(6x9's) I4
:updatemodechange:

;VAC-------------------------------------------------------------------------------------
#cmdSetup comboboxHot Range VAC
:write: tx #
:read: Range?
AUTO R0
200mV R01
2V R02
20V R03
200V R04
2000V R05
:updatemodechange:

#cmdSetup comboboxHot Integration_Time VAC
:write: tx #
:read: txrx? I?
6.66ms(3x9's) I0
40.0ms(4x9's,50Hz) I1
50.0ms(4x9's,60Hz) I2
100ms(4x9's) I6
400ms(5x9's) I3
:updatemodechange:

;OHM-------------------------------------------------------------------------------------
#cmdSetup comboboxHot Range OHM
:write: tx #
:read: Range?
AUTO R0
20KOhm R03
200KOhm R04
2Mohm R05
20Mohm R06
:updatemodechange:

#cmdSetup comboboxHot Integration_Time OHM
:write: tx #
:read: txrx? I?
6.66ms(3x9's) I0
40.0ms(4x9's,50Hz) I1
50.0ms(4x9's,60Hz) I2
100ms(4x9's) I6
400ms(5x9's) I3
10x400ms(6x9's) I4
:updatemodechange:

#askMode Mode?
#scpiCmd Mode? txrx? M?

#scpiCmd Range? txrx? R?

#askValues txrx? G
#askValuesReadFormat s
#askValuesMathFormat replace(replace(replace(value,"+.","0."),"-.","-0.")," ","");
 

Offline HKJTopic starter

  • Super Contributor
  • ***
  • Posts: 2904
  • Country: dk
    • Tests
Re: Program that can log from many multimeters.
« Reply #843 on: June 21, 2020, 01:46:05 pm »
The strings "+0.000340KOHM" and  "0.0000290VDC" seem correct. Tried also to remove the DC and OHM part without success

The parser duo not know what ohm or vdc is, it only knows "k" and it must be a lower case k
That was the reason for the way I wrote this:
#askValuesMathFormat replace(replace(replace(value,"+.","0."),"-.","-0.")," KOHM","k ohm");

One more question, how i can enable (or made visible) a control only based on the selected mode?

You use the selector control: #cmdSetup selector Mode_settings
It is used at the bottom of the Keysight344xxA and SiglentSDM30xxx definitions.



 
The following users thanked this post: masterx81

Offline MikeLud

  • Regular Contributor
  • *
  • Posts: 218
  • Country: us
Re: Program that can log from many multimeters.
« Reply #844 on: June 21, 2020, 01:50:01 pm »
One more question, how i can enable (or made visible) a control only based on the selected mode?

masterx81

You can try the below

Code: [Select]
#cmdSetup selector Mode_settings
:read: Mode?
:updatemodechange:
M0 VDC.
M1 VAC.
M2 OHM.

 
The following users thanked this post: masterx81

Offline masterx81

  • Frequent Contributor
  • **
  • Posts: 480
  • Country: it
Re: Program that can log from many multimeters.
« Reply #845 on: June 21, 2020, 02:09:35 pm »
masterx81

You can try the below

Code: [Select]
#cmdSetup selector Mode_settings
:read: Mode?
:updatemodechange:
M0 VDC.
M1 VAC.
M2 OHM.


It did exactly what i was trying to do  :-+ :-+ Thanks!
 

Offline masterx81

  • Frequent Contributor
  • **
  • Posts: 480
  • Country: it
Re: Program that can log from many multimeters.
« Reply #846 on: June 21, 2020, 02:20:42 pm »
The parser duo not know what ohm or vdc is, it only knows "k" and it must be a lower case k
That was the reason for the way I wrote this:
#askValuesMathFormat replace(replace(replace(value,"+.","0."),"-.","-0.")," KOHM","k ohm");
Missed that was case sensitive  |O
It works, also on voltage ranges.

You use the selector control: #cmdSetup selector Mode_settings
It is used at the bottom of the Keysight344xxA and SiglentSDM30xxx definitions.
Yes, done!

Remain only the strange RX timeout on 6.5 mode, that i not really know what can be....
 

Offline masterx81

  • Frequent Contributor
  • **
  • Posts: 480
  • Country: it
Re: Program that can log from many multimeters.
« Reply #847 on: June 21, 2020, 09:55:48 pm »
I was playing for try to figure out what cause the timeout in 6.5digit mode, and i've noticed that the #readingDelay with gpib NI pause the read after the RD command. Would'nt be more correct to do the pause before sending the rd command?

Another one:
I'm playing with the null command (for zeroing any offset), the Z command.
I've set a ButtonsOn

Code: [Select]
#cmdSetup buttonsOn Null
:read: txrx? Z?
:write: tx #
:tip: Set or Cancel Null
:string:
Cancel Z0
Set Z1


If i do a Cancel (Z0) it work alzays.. But when i send a Z1, it goes in timeout, and after that, any command return timeout. If i send manually the txrx? z? for asking if we are in null, it return both the previous request, and the current one. Sometimes it start responding simply retrying several times
Here is a log:
Code: [Select]
;; COM9: Set params: 19200
;; Start thread for: National Instruments GPIB-232CT A:1 - Solartron 7150Plus
;; COM9: Tx: <EOS R,10.> 45 4F 53 20 52 2C 31 30 0A
;; COM9: Tx: <.> 0A
;; National Instruments GPIB-232CT A:1: Tx <SingleValue>
;; National Instruments GPIB-232CT A:1: Tx <tx T0>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <T0.> 54 30 0A
;; Found Solartron 7150Plus on National Instruments GPIB-232CT A:1
;; SOL7150PLUS: Tx <Mode?>
;; SOL7150PLUS: Tx <txrx? M?>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <M?.> 4D 3F 0A
;; COM9: Tx: <TMO 0.95.> 54 4D 4F 20 30 2E 39 35 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <M0> 4D 30
;; SOL7150PLUS: Rx <M0>
;; SOL7150PLUS: Tx <Mode?>
;; SOL7150PLUS: Tx <txrx? M?>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <M?.> 4D 3F 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <M0> 4D 30
;; SOL7150PLUS: Rx <M0>
;; SOL7150PLUS: Rx after :readmath: getElement("VDC;VAC;OHM",listIndex(unQuote(value),"M0 M1 M2"," "),";") <VDC>
;; SOL7150PLUS: Cache Tx: <Mode?> Rx: <M0>
;; SOL7150PLUS: Tx <Range?>
;; SOL7150PLUS: Tx <txrx? R?>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <R?.> 52 3F 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <R11> 52 31 31
;; SOL7150PLUS: Rx <R11>
;; SOL7150PLUS: Tx <txrx? I?>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <I?.> 49 3F 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <I3> 49 33
;; SOL7150PLUS: Rx <I3>
;; SOL7150PLUS: Tx <txrx? Z?>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <Z?.> 5A 3F 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <Z0> 5A 30
;; SOL7150PLUS: Rx <Z0>
;; SOL7150PLUS: Tx <tx M1>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <M1.> 4D 31 0A
;; SOL7150PLUS: Tx <Mode?>
;; SOL7150PLUS: Tx <txrx? M?>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <M?.> 4D 3F 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <M1> 4D 31
;; SOL7150PLUS: Rx <M1>
;; SOL7150PLUS: Rx after :readmath: getElement("VDC;VAC;OHM",listIndex(unQuote(value),"M0 M1 M2"," "),";") <VAC>
;; SOL7150PLUS: Cache Tx: <Mode?> Rx: <M1>
;; SOL7150PLUS: Tx <Range?>
;; SOL7150PLUS: Tx <txrx? R?>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <R?.> 52 3F 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <R11> 52 31 31
;; SOL7150PLUS: Rx <R11>
;; SOL7150PLUS: Tx <txrx? I?>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <I?.> 49 3F 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <I3> 49 33
;; SOL7150PLUS: Rx <I3>
;; SOL7150PLUS: Cache Tx: <Mode?> Rx: <M1>
;; SOL7150PLUS: Tx <tx M0>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <M0.> 4D 30 0A
;; SOL7150PLUS: Tx <Mode?>
;; SOL7150PLUS: Tx <txrx? M?>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <M?.> 4D 3F 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <M0> 4D 30
;; SOL7150PLUS: Rx <M0>
;; SOL7150PLUS: Rx after :readmath: getElement("VDC;VAC;OHM",listIndex(unQuote(value),"M0 M1 M2"," "),";") <VDC>
;; SOL7150PLUS: Cache Tx: <Mode?> Rx: <M0>
;; SOL7150PLUS: Tx <Range?>
;; SOL7150PLUS: Tx <txrx? R?>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <R?.> 52 3F 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <R11> 52 31 31
;; SOL7150PLUS: Rx <R11>
;; SOL7150PLUS: Tx <txrx? I?>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <I?.> 49 3F 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <I3> 49 33
;; SOL7150PLUS: Rx <I3>
;; SOL7150PLUS: Cache Tx: <Mode?> Rx: <M0>
;; SOL7150PLUS: Tx <tx Z0>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <Z0.> 5A 30 0A
;; SOL7150PLUS: Tx <txrx? Z?>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <Z?.> 5A 3F 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <Z0> 5A 30
;; SOL7150PLUS: Rx <Z0>
;; SOL7150PLUS: Tx <tx Z1>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <Z1.> 5A 31 0A
;; SOL7150PLUS: Tx <txrx? Z?>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <Z?.> 5A 3F 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <0> 30
;; SOL7150PLUS: Rx <0>
---First Timeout, sending Z1
;; SOL7150PLUS: Tx <tx Z1>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <Z1.> 5A 31 0A
;; SOL7150PLUS: Tx <txrx? Z?>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <Z?.> 5A 3F 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: timeout
;; SOL7150PLUS: Rx <null>
;; SOL7150PLUS: Tx <tx Z1>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <Z1.> 5A 31 0A
;; SOL7150PLUS: Tx <txrx? Z?>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <Z?.> 5A 3F 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <0> 30
;; SOL7150PLUS: Rx <0>
;; SOL7150PLUS: Tx <tx Z0>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <Z0.> 5A 30 0A
;; SOL7150PLUS: Tx <txrx? Z?>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <Z?.> 5A 3F 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <0> 30
;; SOL7150PLUS: Rx <0>
;; SOL7150PLUS: Tx <tx Z0>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <Z0.> 5A 30 0A
;; SOL7150PLUS: Tx <txrx? Z?>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <Z?.> 5A 3F 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <0> 30
;; SOL7150PLUS: Rx <0>
;; SOL7150PLUS: Tx <tx Z0>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <Z0.> 5A 30 0A
;; SOL7150PLUS: Tx <txrx? Z?>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <Z?.> 5A 3F 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
----Unblocked itself, return previous buffer + new one.
;; COM9: Rx: <Z1Z0> 5A 31 5A 30
;; SOL7150PLUS: Rx <Z1Z0>
;; SOL7150PLUS: Tx <tx Z0>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <Z0.> 5A 30 0A
;; SOL7150PLUS: Tx <txrx? Z?>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <Z?.> 5A 3F 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <Z0> 5A 30
;; SOL7150PLUS: Rx <Z0>
;; SOL7150PLUS: Tx <Mode?>
;; SOL7150PLUS: Tx <txrx? M?>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <M?.> 4D 3F 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <M0> 4D 30
;; SOL7150PLUS: Rx <M0>
;; SOL7150PLUS: Rx after :readmath: getElement("VDC;VAC;OHM",listIndex(unQuote(value),"M0 M1 M2"," "),";") <VDC>
;; SOL7150PLUS: Cache Tx: <Mode?> Rx: <M0>
;; SOL7150PLUS: Tx <Range?>
;; SOL7150PLUS: Tx <txrx? R?>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <R?.> 52 3F 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <R15> 52 31 35
;; SOL7150PLUS: Rx <R15>
;; SOL7150PLUS: Tx <txrx? I?>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <I?.> 49 3F 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <I3> 49 33
;; SOL7150PLUS: Rx <I3>
;; SOL7150PLUS: Tx <txrx? Z?>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <Z?.> 5A 3F 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <Z0> 5A 30
;; SOL7150PLUS: Rx <Z0>
;; SOL7150PLUS: Tx <tx Z0>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <Z0.> 5A 30 0A
;; SOL7150PLUS: Tx <txrx? Z?>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <Z?.> 5A 3F 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <Z0> 5A 30
;; SOL7150PLUS: Rx <Z0>
----I force a Z1:
;; SOL7150PLUS: Tx <tx Z1>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <Z1.> 5A 31 0A
;; SOL7150PLUS: Tx <txrx? Z?>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <Z?.> 5A 3F 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
---And also this time problem with the answer
;; COM9: Rx: <0> 30
;; SOL7150PLUS: Rx <0>
;; SOL7150PLUS: Tx <tx Z0>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <Z0.> 5A 30 0A
;; SOL7150PLUS: Tx <txrx? Z?>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <Z?.> 5A 3F 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: timeout
;; SOL7150PLUS: Rx <null>
;; SOL7150PLUS: Tx <tx Z0>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <Z0.> 5A 30 0A
;; SOL7150PLUS: Tx <txrx? Z?>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <Z?.> 5A 3F 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <0> 30
;; SOL7150PLUS: Rx <0>
;; SOL7150PLUS: Tx <tx Z0>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <Z0.> 5A 30 0A
;; SOL7150PLUS: Tx <txrx? Z?>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <Z?.> 5A 3F 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <0> 30
;; SOL7150PLUS: Rx <0>
---I send manually the txrx? z?, and it work and "unblock"
txrx? z?
;; SOL7150PLUS: Tx <txrx? z?>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <z?.> 7A 3F 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <Z1Z1> 5A 31 5A 31
;; SOL7150PLUS: Rx <Z1Z1>
;; Z1Z1


I've tried with:
#gpibWriteReadDelay 1000
#readingDelay 1
But it's always the same.
« Last Edit: June 21, 2020, 11:11:59 pm by masterx81 »
 

Offline HKJTopic starter

  • Super Contributor
  • ***
  • Posts: 2904
  • Country: dk
    • Tests
Re: Program that can log from many multimeters.
« Reply #848 on: June 22, 2020, 04:42:38 am »
I was playing for try to figure out what cause the timeout in 6.5digit mode, and i've noticed that the #readingDelay with gpib NI pause the read after the RD command. Would'nt be more correct to do the pause before sending the rd command?

The #readingDelay is a maximum time, this means if the answer arrives before the specified time, the processing will continue. To do that is must be where the software waits for the answer.
#gpibWriteReadDelay is always added, i.e. even if the device answers faster it will wait the specified delay.


Another one:
I'm playing with the null command (for zeroing any offset), the Z command.
I've tried with:
#gpibWriteReadDelay 1000
#readingDelay 1
But it's always the same.

I would expect it is a timeout because the meter needs some time to do the zeroing, try adding a wait after the command:
:write: tx #;[3000]

 

Offline masterx81

  • Frequent Contributor
  • **
  • Posts: 480
  • Country: it
Re: Program that can log from many multimeters.
« Reply #849 on: June 22, 2020, 07:33:01 am »
The #readingDelay is a maximum time, this means if the answer arrives before the specified time, the processing will continue. To do that is must be where the software waits for the answer.
#gpibWriteReadDelay is always added, i.e. even if the device answers faster it will wait the specified delay.
Ok, so in case of the NI gpib interface isn't much useful, as i need some time between the wrt and the rd.

I would expect it is a timeout because the meter needs some time to do the zeroing, try adding a wait after the command:
:write: tx #;[3000]
Nice! In this way i can set a pause only for specific commands, and leave the other commands that answer fast untouched!
This evening i'll try it, thanks!
 


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf