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

0 Members and 12 Guests are viewing this topic.

Offline ali_asadzadeh

  • Super Contributor
  • ***
  • Posts: 1928
  • Country: ca
Re: Program that can log from many multimeters.
« Reply #3575 on: July 04, 2024, 10:43:34 am »
Quote
The Hantek HDM3065(B) works fine with TestController using RS232 or LAN. As there's no specific definition for these devices yet, you can just select the Keysight 34461A on the device list in TC and then change the SCPI command set on your DMM to "Agilent".  ([Shift]+Utility -> I/O Config -> SCPI).

I have its SCPI programming guide in English and I'm trying to write the definition file for TC but I didn't have the time to finish it yet.
I have changed the HDM3065(B) SCPI commands to Agilent, But TC would not recognize it either socket or LXI
ASiDesigner, Stands for Application specific intelligent devices
I'm a Digital Expert from 8-bits to 64-bits
 

Offline HKJTopic starter

  • Super Contributor
  • ***
  • Posts: 3003
  • Country: dk
    • Tests
Re: Program that can log from many multimeters.
« Reply #3576 on: July 04, 2024, 10:50:27 am »
Quote
The Hantek HDM3065(B) works fine with TestController using RS232 or LAN. As there's no specific definition for these devices yet, you can just select the Keysight 34461A on the device list in TC and then change the SCPI command set on your DMM to "Agilent".  ([Shift]+Utility -> I/O Config -> SCPI).

I have its SCPI programming guide in English and I'm trying to write the definition file for TC but I didn't have the time to finish it yet.
I have changed the HDM3065(B) SCPI commands to Agilent, But TC would not recognize it either socket or LXI

Sockets uses port numbers and they must match. It would be logical that it uses the Agilent port number when simulating it, but maybe it do not!
 

Offline Microcheap

  • Frequent Contributor
  • **
  • Posts: 257
  • Country: 00
Re: Program that can log from many multimeters.
« Reply #3577 on: July 05, 2024, 05:45:33 am »
I have changed the HDM3065(B) SCPI commands to Agilent, But TC would not recognize it either socket or LXI

In fact, when selected the Agilent SCPI commands, the multimeter is identified as the 34401A. The definition file for the 34401A includes support only for serial and GPIB. To connect the HDM3065 to TC using LAN you need to edit the definition file.

In the file AgilentHP34401A.txt located in the Devices folder, just change the line "#port com gpib" to "#port 5025 socket com"

I was just now making a definition file specifically for the HDM3000. I expect to finish it during the weekend.



 

Offline gby

  • Regular Contributor
  • *
  • Posts: 248
  • Country: us
Re: Program that can log from many multimeters.
« Reply #3578 on: July 18, 2024, 03:16:40 pm »
Hi HKJ,

Does TC scripting support multi-dimensional array variables? 

I see the array with =var MyVar[1] type syntax for a single dimension/single index array.  But can you have two indexes?  For example 10000 by 6?  I tired a few variations of possible syntax but none of them worked.
 

Offline HKJTopic starter

  • Super Contributor
  • ***
  • Posts: 3003
  • Country: dk
    • Tests
Re: Program that can log from many multimeters.
« Reply #3579 on: July 18, 2024, 03:55:05 pm »
Hi HKJ,

Does TC scripting support multi-dimensional array variables? 

I see the array with =var MyVar[1] type syntax for a single dimension/single index array.  But can you have two indexes?  For example 10000 by 6?  I tired a few variations of possible syntax but none of them worked.

A array is a normal variable and each entry in a array is also a normal variable, i.e. you can have any dimension you want.
You use the array() function to create a array variable:
=var a=array(array(1,2,3),array(4,5,6),array(7,8,9))
=a
;; {{=1, =2, =3}, {=4, =5, =6}, {=7, =8, =9}}

 It is not as such a multidimensional array, because each element do not need to be an array, but can be anything:
=var d=array(array(1,2,3),"Hello world",array(7,8,array(10,11,12))  )
=d
;; {{=1, =2, =3}, ="Hello world", {=7, =8, {=10, =11, =12}}}


You can also use this function to show contents of variables:
=displayVar(d)



Also note that a 10000 x 6 will be rather heavy on memory usage. I do also have vector and matrix types that are much more economic on memory, but I have not documented them very much, because I am not finished with them and they are not something I expect people will use in TC.
« Last Edit: July 18, 2024, 04:00:50 pm by HKJ »
 

Offline gby

  • Regular Contributor
  • *
  • Posts: 248
  • Country: us
Re: Program that can log from many multimeters.
« Reply #3580 on: July 18, 2024, 06:14:35 pm »
HKJ,

Thanks for the quick reply.  This 2-d array question is around extracting the locally recorded data in my device.  It records up to 10000 points with up to 6 channels.

Having an element in an array as an array itself does not do what I am trying to do....or my brain is not flexible enough.  Say I do:
   =var Data = array(1,2,3,4,5,6)
   =var RecData = array(0,Data)
This would allow me to record the 6 data points indexed by point number.  But, how do I access a specific value?  RecData[n] would give me the nth set of 6 values.  To get the third data channel at the nth sample point I would need to do it in two steps.  For example:
   = Data = RecData[n]
   = Data[3]
I had hoped that something like RecData[n,3] could get me the data in one step.  Since there are multiple ways to do what I need to do in one or two steps instead of one step, then I am good to go.

Thanks for providing a great tool and good support.
 

Offline HKJTopic starter

  • Super Contributor
  • ***
  • Posts: 3003
  • Country: dk
    • Tests
Re: Program that can log from many multimeters.
« Reply #3581 on: July 18, 2024, 06:36:34 pm »
HKJ,

Thanks for the quick reply.  This 2-d array question is around extracting the locally recorded data in my device.  It records up to 10000 points with up to 6 channels.

Having an element in an array as an array itself does not do what I am trying to do....or my brain is not flexible enough.  Say I do:
   =var Data = array(1,2,3,4,5,6)
   =var RecData = array(0,Data)
This would allow me to record the 6 data points indexed by point number.  But, how do I access a specific value?  RecData[n] would give me the nth set of 6 values.  To get the third data channel at the nth sample point I would need to do it in two steps.  For example:
   = Data = RecData[n]
   = Data[3]
I had hoped that something like RecData[n,3] could get me the data in one step.  Since there are multiple ways to do what I need to do in one or two steps instead of one step, then I am good to go.

You can do: =d[2][2][1]
A little trick: When assigning to an array, it will automatic expand as needed, to avoid expansion each time a element is added assign the last needed element a dummy value first, i.e: =var a[0];a[10000]=0; and you have a 10001 element array. Any non-assigned element will contain a special empty value (same as when declaring a var without assigning a value).

You can also store data directly in the TC table, there are functions to handle that:

You can see the bottom of KeysightU1461A.txt  for examples, documentation: https://lygte-info.dk/project/TestControllerFunctions%20UK.html#tableInitHeader_&&_tableAddRow

You might also be able to do something with this function: https://lygte-info.dk/project/TestControllerFunctions%20UK.html#tableAddCSVText

 

Offline Pukker

  • Regular Contributor
  • *
  • Posts: 153
  • Country: nl
Re: Program that can log from many multimeters.
« Reply #3582 on: July 23, 2024, 08:02:09 am »
Made some changes to my Powersupply-test and Battery-test scripts.
Some small adjustments and made it possible to save the graph, the csv file and
the Commandwindow log in a test file.
So I can start the test and let it run and leave it.
After completing the test all  is saved with the name
of the test given at start.

Note: Measurements attached are made an powersupply with an 0.5 Ohm resister in series.
Battery-test also simulated with powersupply.

Question at HKJ: Can I make an testblock in the graph with the most
important values, so the graph tell everyting over the test,

For example:
;; Test is Completed.
;; Tested Powersupply is: PowerSupply Ri is 05 ohm
;; Voltage deviation 'No-Load Voltage' to 'Specified Voltage' = 1.781 Volt
;; Voltage drop from 'No-Load Voltage' to 'Voltage at Maximum Current' = -1.611 Volt
;; Maximum Current = 3.0 Ampere
;; Maximum Power = 36.49 Watt
;; Internal Resistance = 528mOhm
;; Burn-InTest Succesfull (1.0 Minutes at 1.0 Ampere)
« Last Edit: July 23, 2024, 08:13:44 am by Pukker »
 

Offline HKJTopic starter

  • Super Contributor
  • ***
  • Posts: 3003
  • Country: dk
    • Tests
Re: Program that can log from many multimeters.
« Reply #3583 on: July 23, 2024, 05:25:59 pm »
Question at HKJ: Can I make an testblock in the graph with the most
important values, so the graph tell everyting over the test,

You can use the annotations: http://lygte-info.dk/project/TestControllerPopupChartLayoutUK.html#Annotations
You can make some text with the menu and then use the right click menu in the log screen and generate a script with "Generate Scripts, Chart layout" to generate a example script. You will have to edit the script commands to fir your purpose.
 

Offline flash2b

  • Regular Contributor
  • *
  • Posts: 141
  • Country: nl
Re: Program that can log from many multimeters.
« Reply #3584 on: July 25, 2024, 07:13:44 pm »
I encountered a problem while using the device driver for the Keithley 199 written by "Gertjan".

The problem manifests itself when using the "reconnect device" option in TestController (i have used the latest version). The Keithley 199 (K199) is nicely found after startup of TestController (TC) but can no longer be identified after "reconnect device" I did contact the author of the driver who suggested to run TC in debug mode which showed different behavior towards the K199 from start-up to re-connect.

Start-up:
;; COM6: Tx: <++addr 26.> 2B 2B 61 64 64 72 20 32 36 0A
;; COM6: Tx: <G0U0X.> 47 30 55 30 58 0A
;; COM6: Tx: <++read_tmo_ms 950.> 2B 2B 72 65 61 64 5F 74 6D 6F 5F 6D 73 20 39 35 30 0A
;; COM6: Tx: <++read eoi.> 2B 2B 72 65 61 64 20 65 6F 69 0A
;; COM6: Rx: <1991000000000010000000100000000001> 31 39 39 31 30 30 30 30 30 30 30 30 30 30 31 30 30 30 30 30 30 30 31 30 30 30 30 30 30 30 30 30 30 31

Re-connect:
;; COM6: Tx: <G0U0X.> 47 30 55 30 58 0A
;; COM6: Tx: <++read eoi.> 2B 2B 72 65 61 64 20 65 6F 69 0A
;; COM6: Rx: timeout
;; AR488 A:26: **Device do not match** <nul>
;; AR488 A:26 Device "Keithley,199" do not match answer: "**Device do not match** <nul>"


I am using an ProMicro powered AR488 on COM6. The K199 is on GPIB A:26.

What I also noticed in the log-trace is that the <reset> and <goLocal> are not transmitted to the K199 since TC already closed COM6 before that.

;; K199: Rx <0>
;; COM6: Close
;; K199: Tx <reset>
;; K199: Delay: 1000ms
;; K199: Tx <goLocal>
;; K199: Delay: 1000ms

I have attached the log-file which recorded just starting up, no measurement and then re-connect.

I hope HKJ can help me to solve the problem, its annoying to re-start TC multiple times.
 
 
The following users thanked this post: croma641

Offline Gertjan

  • Regular Contributor
  • *
  • Posts: 140
  • Country: nl
Re: Program that can log from many multimeters.
« Reply #3585 on: July 26, 2024, 12:14:43 pm »
A long time ago I found out that the "reconnect" button on the Load Devices tab was less robust than a fresh start-up of TestController.
So I made it a habit to just restart TC instead. Just two mouse clicks instead of one  :) .

I Think the general problem with the "Reconnect" is, that the meters are not property shut down before they are re-started.
So meters can be left in an unknown state, with some characters in their buffer etc.

The most common problem is when the ID of a meter has to be extracted from a longer string with a readmath. Somewhere a few rogue characters added to the string will make the identification fail....

I just did a quick "Reconnect" test with my current test set-up, with 6 meters connected to TC:
- All meters connected using LAN / LXI are reconnecting fine.
- Meters with native support of the *IDN? command seem to work fine.
- The problems are with meters connected using COM.
-> As in the log of flash2b, the COM ports COM44 (Keithley 199) and COM45 (Racal-Dana 1992) are closed before the final commands are sent to these meters.

But COM4, used for the Agilent 34401A is handled OK
The 34401A is connected using a hardware COM port and RS-232 cable, The Racal-Dana and Keithley 199 are both connected using GPIB / AR488.

As both the Racal-Dana, and the Keithley 199 scripts are written by me, there could be a common problem in these device files...

regards, Gertjan.
« Last Edit: July 26, 2024, 12:38:11 pm by Gertjan »
 

Offline flash2b

  • Regular Contributor
  • *
  • Posts: 141
  • Country: nl
Re: Program that can log from many multimeters.
« Reply #3586 on: July 26, 2024, 12:37:57 pm »
Is your COM4 (Agilent 34401A) a real COM port? I see it is set to a speed of 9600 and using the 16C95x controller, so it seems "Yes".

It looks like that TC closes the ports to devices on the GPIB prematurely, or it could be a AR488 related problem since that is using Virtual COM ports.
« Last Edit: July 28, 2024, 05:37:54 am by flash2b »
 

Offline Gertjan

  • Regular Contributor
  • *
  • Posts: 140
  • Country: nl
Re: Program that can log from many multimeters.
« Reply #3587 on: July 26, 2024, 12:42:05 pm »
Hi flash2b,

I was editing / expanding my post while you typed, so the answer is now already in my post :).

Yes, I was also thinking that this problem might be GPIB / AR488 related....

regards, Gertjan.
 

Offline HKJTopic starter

  • Super Contributor
  • ***
  • Posts: 3003
  • Country: dk
    • Tests
Re: Program that can log from many multimeters.
« Reply #3588 on: July 27, 2024, 02:43:03 pm »
I encountered a problem while using the device driver for the Keithley 199 written by "Gertjan".

The problem manifests itself when using the "reconnect device" option in TestController (i have used the latest version). The Keithley 199 (K199) is nicely found after startup of TestController (TC) but can no longer be identified after "reconnect device" I did contact the author of the driver who suggested to run TC in debug mode which showed different behavior towards the K199 from start-up to re-connect.

Try this version: http://lygte-info.dk/pic/Projects/TestController/TestController.jar

What I also noticed in the log-trace is that the <reset> and <goLocal> are not transmitted to the K199 since TC already closed COM6 before that.

TC has a rather strict timeout when closing down connections and if devices are too slow it will just close the port.
 
The following users thanked this post: flash2b

Offline flash2b

  • Regular Contributor
  • *
  • Posts: 141
  • Country: nl
Re: Program that can log from many multimeters.
« Reply #3589 on: July 27, 2024, 06:05:40 pm »
Thanks HKJ !  :-+

The new version has fixed my reconnect problem, Keithley 199 is found after a reconnect within a second !!

I see in the logtrace that the startup sequence is now the same as the reconnect sequence. So no more two mouse clicks for me.
« Last Edit: July 27, 2024, 06:23:17 pm by flash2b »
 

Offline HKJTopic starter

  • Super Contributor
  • ***
  • Posts: 3003
  • Country: dk
    • Tests
Re: Program that can log from many multimeters.
« Reply #3590 on: July 27, 2024, 06:17:26 pm »
The new version has fixed my reconnect problem, Keithley 199 is found after a reconnect within a second !!

I did not reinitialize the AR488 driver completely or your could say correctly, as your log examples clearly showed.

The fast timeout when closing down it done to avoid TC waiting a long time on lost connection (Device crashed, turned off or disconnected) or devices that somehow are being slow. I want the reload operation to be fairly fast.
 

Offline Gertjan

  • Regular Contributor
  • *
  • Posts: 140
  • Country: nl
Re: Program that can log from many multimeters.
« Reply #3591 on: July 28, 2024, 05:39:25 pm »
I did a re-test, and can also report that now the AR488 driver is initiated correctly on a "reconnect". Thanks HKJ!

(It took some time before I was able to re-test, as TC was busy on a very long logging session :)).

I attached the log of starting TC, and Reconnect with the new Jar.

Regards, Gertjan.

 

Offline JimKnopf

  • Regular Contributor
  • *
  • Posts: 185
  • Country: 00
Re: Program that can log from many multimeters.
« Reply #3592 on: July 29, 2024, 08:19:18 pm »
@HKJ Today i installed the Java app on my Windows 11 Laptop. I was able to add the Keithley DMM6500 and the Korad KEL103.

What is missing on my wishlist is support for:
Rigol DG2050
Siglent SDS2504X HD
Envox Bench Box 3 (EEZ BB3)

What do you need from me to add this devices to the supported device list?
How can i contribute to the expansion of the device list?
 

Offline Messtechniker

  • Frequent Contributor
  • **
  • Posts: 812
  • Country: de
  • Old analog audio hand - No voodoo.
Re: Program that can log from many multimeters.
« Reply #3593 on: July 30, 2024, 06:48:12 am »
First you need to grab the manuals.

Second determine the USB Type. Virtual COM or USBTMC.
Note that you cannot create a USBTMC test controller definition file. You will in this case have to use LAN, if available.

Third determine the communication protocol as stated in the manuals.

Then the community might be able to recommend a similar definition file, you can then adapt to your particular instrument.
Agilent 34465A, Siglent SDG 2042X, Hameg HMO1022, R&S HMC 8043, Peaktech 2025A, Voltcraft VC 940, M-Audio Audiophile 192, R&S Psophometer UPGR, 3 Transistor Testers, DL4JAL Transistor Curve Tracer, UT622E LCR meter, UT216C AC/DC Clamp Meter
 

Offline HKJTopic starter

  • Super Contributor
  • ***
  • Posts: 3003
  • Country: dk
    • Tests
Re: Program that can log from many multimeters.
« Reply #3594 on: July 30, 2024, 07:25:29 am »
What do you need from me to add this devices to the supported device list?
How can i contribute to the expansion of the device list?

Basically you need to write the definition, but I can help with information.

The first step is to get a connection to the device, TC has a tool to help with that on the "Load devices" page. You right click on "Search socket" to open this menu:



If you fill out the page that pops up you will usually establish a (mostly empty) definition file that connect to your device, you can then expand it into a full definition. You use the existing definitions and the documentation for help.

There is also a link to open a couple of documentation pages in your browser.
 

Offline Gertjan

  • Regular Contributor
  • *
  • Posts: 140
  • Country: nl
Re: Program that can log from many multimeters.
« Reply #3595 on: July 30, 2024, 12:17:42 pm »
@ JimKnopf:

Regarding your Rigol DG2050: it is my experience that Rigol uses the same SCPI commands for all of its signal generators.
So adapting an existing Rigol generator  device configuration file will get you probably a long way.
Just modify the #idString, #name and #handle to match the *IDN? answer of your generator is probably enough to get you started.

regards, Gertjan.
 

Offline kocki2

  • Newbie
  • Posts: 5
  • Country: de
Re: Program that can log from many multimeters.
« Reply #3596 on: August 07, 2024, 08:47:59 am »
Hello,
does anybody have a working configuration for the DMM Voltcraft VC870 with the USB interface?
 

Offline Messtechniker

  • Frequent Contributor
  • **
  • Posts: 812
  • Country: de
  • Old analog audio hand - No voodoo.
Re: Program that can log from many multimeters.
« Reply #3597 on: August 07, 2024, 01:22:44 pm »
Since the USB type used by the adapter is HID (Human Interface Device),
you are out of luck. Test Controller does not support HID. Virtual COM USB only.
Note there is an RS 232 Adapter for your DMM. This will work with Test Controller.
Agilent 34465A, Siglent SDG 2042X, Hameg HMO1022, R&S HMC 8043, Peaktech 2025A, Voltcraft VC 940, M-Audio Audiophile 192, R&S Psophometer UPGR, 3 Transistor Testers, DL4JAL Transistor Curve Tracer, UT622E LCR meter, UT216C AC/DC Clamp Meter
 
The following users thanked this post: kocki2

Offline kocki2

  • Newbie
  • Posts: 5
  • Country: de
Re: Program that can log from many multimeters.
« Reply #3598 on: August 07, 2024, 01:49:57 pm »
Since the USB type used by the adapter is HID (Human Interface Device),
you are out of luck. Test Controller does not support HID. Virtual COM USB only.
Note there is an RS 232 Adapter for your DMM. This will work with Test Controller.

Thanks for reply, than I have to use further the official software for the VC870 DMM.
Gerd
 

Offline The Soulman

  • Frequent Contributor
  • **
  • Posts: 992
  • Country: nl
  • The sky is the limit!
Re: Program that can log from many multimeters.
« Reply #3599 on: August 08, 2024, 02:11:41 pm »
Probably a simple question from a testcontroller noob with a simple answer but here goes:

I'd like to connect a Voltcraft VC7200BT ( = Owon XDM3051 ) to testcontroller via LAN.

I tried loading it as a XDM3051 but no luck, searchsocket reported:

Code: [Select]
;; 10.10.0.11 Did not find any match for: Voltcraft,VC7200BT,2303281,V3.7.2,2

So it needs a new definition, I've modified the XDM3051 definition to VC7200BT by changing idstring, name, handle and port number, to make it look like this:

Quote
#author DiplIngenieur
#idString Voltcraft,VC7200BT,
#name Voltcraft VC7200BT
#handle VC7200
#port 3000 COM

Assuming that's all it needs changing, testcontroller now reports:

Code: [Select]
;; Found Voltcraft VC7200BT on 10.10.0.11 sn: 2303281

So that seems happy now, but sadly I don't get any readings (It does not show up under Current_values.)  |O

It does work with DMMEasyControl (simple Owon program) so I really don't think that there is much of a difference between the two, other than name etc.

Any Help is much appreciated.

Attached is my non-working attempt at the VC7200BT definition.

 
 


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf