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

0 Members and 11 Guests are viewing this topic.

Offline PushUp

  • Regular Contributor
  • *
  • Posts: 189
  • Country: de
Re: Program that can log from many multimeters.
« Reply #1300 on: November 13, 2020, 06:27:05 pm »
Depending on the OS you are using, there is not only the "Settings" folder but also an empty folder "Devices":

/home/linux/TestController/Devices/

/Windows/Users/Documents/TestController/Devices/


When I want to use my own "device.txt" file, I copy and overwrite it with the ready made files coming with any new update, which is fine.

However, in order to shorten this, I would like to know, whether it is possible, that a "device.txt" file within this empty folder from above, could overrule the ready made one?
It could be compared with "Settings", which are kept despite any new update, which makes the handling of TestController much easier?!

I haven't tested it so far myself, whether it is already possible...  :-/O


ThanX!  :)
 

Offline HKJTopic starter

  • Super Contributor
  • ***
  • Posts: 3038
  • Country: dk
    • Tests
Re: Program that can log from many multimeters.
« Reply #1301 on: November 13, 2020, 06:39:47 pm »
TestController makes a device directory in ../TestController/Devices on windows it is ../Documents/TestController/Devices any device in this folder takes precedence over the included devices (If you do #metadef there are issues, but directly defined devices always take precedence).
Depending on where you unpack TestController, the two directories can be the same, this will prevent the above from working. The solution is to unpack TestController somewhere else, like adding a extra folder.
When TestController have created an empty directory it means it is not the same as the include "Devices" directory and you will not have problems. Using the "Create new SCPI..." function is supposed to create a file in that directory.
« Last Edit: November 13, 2020, 08:02:56 pm by HKJ »
 
The following users thanked this post: PushUp

Offline gby

  • Regular Contributor
  • *
  • Posts: 248
  • Country: us
Re: Program that can log from many multimeters.
« Reply #1302 on: November 14, 2020, 03:27:03 pm »
Hi HJK,

Once again some great new functionality added, thanks.  I am trying to use the #POPUPSHOWQUESTION and having trouble understanding it.  I tried the following short script:
Code: [Select]
=var foo=5
#popupshowquestion "User input" foo "One" "Two" "Three"
="User input was "+foo
When I run the above with V142 I get the pop up with the three buttons.  But, no matter what button I push the last line shows variable foo un-modified at its original value of 5.  In debug mode DOS window I see no errors.

I had assumed that #POPUPSHOWQUESTION second argument varName meant pushing the buttons would assign one of 0, 1, or 2 to varName.  Why doesn't this script's #POPUPSHOWQUESTION change variable foo?
 

Offline HKJTopic starter

  • Super Contributor
  • ***
  • Posts: 3038
  • Country: dk
    • Tests
Re: Program that can log from many multimeters.
« Reply #1303 on: November 14, 2020, 03:45:19 pm »
Once again some great new functionality added, thanks.  I am trying to use the #POPUPSHOWQUESTION and having trouble understanding it.  I tried the following short script:
Code: [Select]
=var foo=5
#popupshowquestion "User input" foo "One" "Two" "Three"
="User input was "+foo
When I run the above with V142 I get the pop up with the three buttons.  But, no matter what button I push the last line shows variable foo un-modified at its original value of 5.  In debug mode DOS window I see no errors.

I had assumed that #POPUPSHOWQUESTION second argument varName meant pushing the buttons would assign one of 0, 1, or 2 to varName.  Why doesn't this script's #POPUPSHOWQUESTION change variable foo?

You will have to use globalvar instead of var, it will probably be fixed in next version.

Another detail: First button is ok, second is cancel and third is something else, the values are 1 0 2

« Last Edit: November 14, 2020, 03:53:45 pm by HKJ »
 

Offline HKJTopic starter

  • Super Contributor
  • ***
  • Posts: 3038
  • Country: dk
    • Tests
Re: Program that can log from many multimeters.
« Reply #1304 on: November 19, 2020, 01:32:46 pm »
V1.43 is up
It adds two new popups
   Added: #ScreenDump command, it is not present in any menus due to the extremely limited device support.
   Added: HMC8043 #interface, #outputoff and a few other details (I just bough one of these)
   Changed: Generate script menu will only include entries that will generate scripts.
   Added: Param sweeper as separate entry in generate script menu
   Added: #SetParamSweeper to configure the params sweeper from script
   Added: Param sweeper popup, it will sweep 1 to 3 parameters for automatic testing a device.
   Added: #AutoHold to configure the auto hold window
   Added: Auto hold window with adjustable trigger parameters.
   Fixed: #popupshowquestion required a global variable, now it works with either global or local

One of the new windows is the params sweeper, it can sweep/step up to 3 parameters while logging






It can automatic generate both csv and png files of the result:


The other new window is a auto hold or touch hold, depending on who you ask:


It works with any connected devices, but is, of course, most useful with DMM's. I was inspired because somebody told about directly entering measurements in a spreadsheet, without touching the computer. This function is supported in this auto hold.

I have also a screendump function, but it is mostly useless, because of the very limited device support. If anybody want to play with it add something like:

#ScreenDump std
HCOPY:DATA?

To the device definition. The "HCOPY:DATA?" works on R&S HMC8043 and "HCOP:SDUM:DATA?" works on Keysight DMM's (That is the only supported devices for now).
« Last Edit: November 19, 2020, 01:40:33 pm by HKJ »
 
The following users thanked this post: PushUp, tubularnut, Marco1971

Offline tubularnut

  • Regular Contributor
  • *
  • Posts: 225
  • Country: gb
Re: Program that can log from many multimeters.
« Reply #1305 on: November 19, 2020, 02:41:07 pm »
V1.43 is up

Not sure what macOS Big Sur has broken, but the graphics on the selected tab have gone a bit odd?

Tried it on 2019 27" iMac and 2020 13" MacBook Pro

1114400-0
 

Offline HKJTopic starter

  • Super Contributor
  • ***
  • Posts: 3038
  • Country: dk
    • Tests
Re: Program that can log from many multimeters.
« Reply #1306 on: November 19, 2020, 02:59:33 pm »
Not sure what macOS Big Sur has broken, but the graphics on the selected tab have gone a bit odd?
Tried it on 2019 27" iMac and 2020 13" MacBook Pro

Did the old version work fine?
I have not done anything with tab handling, that is internal Java and may even be part of the downloaded Java runtime.
The Java version I use is usually way behind, this improves compatibility on PC's that is not update regularly.
 

Offline tubularnut

  • Regular Contributor
  • *
  • Posts: 225
  • Country: gb
Re: Program that can log from many multimeters.
« Reply #1307 on: November 19, 2020, 03:04:09 pm »
Same with v1.42

I didn't think for a moment it was anything you had done, I've only just observed it since updating to Big Sur.

Not a show stopper, just a visual annoyance, but will look to see if Java or Big Sur is causing it.

Cheers.

Edit: It appears to be a Big Sur issue, I've tried the builtin Java, and 2 other versions, all with the same problem.
« Last Edit: November 19, 2020, 03:42:21 pm by tubularnut »
 

Offline PushUp

  • Regular Contributor
  • *
  • Posts: 189
  • Country: de
Re: Program that can log from many multimeters.
« Reply #1308 on: November 19, 2020, 04:21:39 pm »
I only use macOS with VMware Workstation within Ubuntu for testing purposes, thus I have not much experience with it, but as far as Catalina is concerned together with JDK 15.0.1 it looks like this, when TestController is in the background:



As I am able to clone it, I will install some older JDK-Versions, to look for any differences...
 

Offline tubularnut

  • Regular Contributor
  • *
  • Posts: 225
  • Country: gb
Re: Program that can log from many multimeters.
« Reply #1309 on: November 19, 2020, 04:29:19 pm »
Hmm, maybe I've only noticed it since going to Big Sur, as Big Sur is such a visual change in itself.

It may have always been that way and it never bothered me before?  :-//

I'll install a Catalina VM and see what it produces.
 

Offline tubularnut

  • Regular Contributor
  • *
  • Posts: 225
  • Country: gb
Re: Program that can log from many multimeters.
« Reply #1310 on: November 19, 2020, 04:59:56 pm »
It's definitely Big Sur.

On Mojave it is fine (just installing Catalina at mo).

Also the Java control panel is wrong in Big Sur, and I know for sure this was ok on Catalina.

One for Apple to fix me thinks.
« Last Edit: November 19, 2020, 06:15:31 pm by tubularnut »
 

Offline PushUp

  • Regular Contributor
  • *
  • Posts: 189
  • Country: de
Re: Program that can log from many multimeters.
« Reply #1311 on: November 20, 2020, 12:50:35 am »
Without doing any further trouble shooting, I can confirm, that it has something to do with Big Sur...




...as Catalina works fine:




Cheers!  :-\
 
The following users thanked this post: tubularnut

Offline mrprecision

  • Regular Contributor
  • *
  • Posts: 89
  • Country: de
Re: Program that can log from many multimeters.
« Reply #1312 on: November 20, 2020, 08:31:29 pm »
With the program SignalAnalyzer you can easy view measurements in the time and frequency domain (fft). Also a histogram and a post process filter exists. It has the possibility to easy connect it with a small program to realize live measurements. www.signalanalyzer.de




« Last Edit: November 20, 2020, 08:34:16 pm by mrprecision »
 
The following users thanked this post: Marco1971

Offline HKJTopic starter

  • Super Contributor
  • ***
  • Posts: 3038
  • Country: dk
    • Tests
Re: Program that can log from many multimeters.
« Reply #1313 on: November 20, 2020, 09:06:14 pm »
With the program SignalAnalyzer you can easy view measurements in the time and frequency domain (fft). Also a histogram and a post process filter exists. It has the possibility to easy connect it with a small program to realize live measurements. www.signalanalyzer.de

I could easily add FFT to TestController, but I do not believe that it is very useful at the low frequencies that it is designed for. If SignalAnalyzer can read CSV files and do FFT at low frequencies, it can be used on the log files from TestController.
The low frequencies I am talking about is sample rates at maximum 100Hz often around 1Hz.
 

Offline mrprecision

  • Regular Contributor
  • *
  • Posts: 89
  • Country: de
Re: Program that can log from many multimeters.
« Reply #1314 on: November 20, 2020, 10:19:38 pm »
With the program SignalAnalyzer you can easy view measurements in the time and frequency domain (fft). Also a histogram and a post process filter exists. It has the possibility to easy connect it with a small program to realize live measurements. www.signalanalyzer.de

I could easily add FFT to TestController, but I do not believe that it is very useful at the low frequencies that it is designed for. If SignalAnalyzer can read CSV files and do FFT at low frequencies, it can be used on the log files from TestController.
The low frequencies I am talking about is sample rates at maximum 100Hz often around 1Hz.

Can you please share a csv file, I will trie to import in SignalAnalyzer.
 

Offline HKJTopic starter

  • Super Contributor
  • ***
  • Posts: 3038
  • Country: dk
    • Tests
Re: Program that can log from many multimeters.
« Reply #1315 on: November 21, 2020, 06:32:33 am »
Can you please share a csv file, I will trie to import in SignalAnalyzer.

Here are the four CSV/TAB files supported by TestController: http://lygte-info.dk/pic/Projects/TestController/TCFormatDemo.zip
They all contain the same data made with internal generators in TC (Sinus, ramp & square) and I did them at 100 samples/second. The files are fairly small with only about 9000 samples each, TC can handle millions of samples (It can reduce number of samples during a export).
 

Offline mrprecision

  • Regular Contributor
  • *
  • Posts: 89
  • Country: de
Re: Program that can log from many multimeters.
« Reply #1316 on: November 21, 2020, 07:39:33 am »
I tested your values with the SignalAnalyzer Software:

Ramp:


Square:


Sine:


Sine FFT:


Sine FFT (Zoom):


Sine Histrogram:
 

Offline mrprecision

  • Regular Contributor
  • *
  • Posts: 89
  • Country: de
Re: Program that can log from many multimeters.
« Reply #1317 on: November 21, 2020, 07:48:38 am »
With the program SignalAnalyzer you can easy view measurements in the time and frequency domain (fft). Also a histogram and a post process filter exists. It has the possibility to easy connect it with a small program to realize live measurements. www.signalanalyzer.de

I could easily add FFT to TestController, but I do not believe that it is very useful at the low frequencies that it is designed for. If SignalAnalyzer can read CSV files and do FFT at low frequencies, it can be used on the log files from TestController.
The low frequencies I am talking about is sample rates at maximum 100Hz often around 1Hz.

The Dataset you send is not very good. You need many periods of the signal of interest in you dataset. Maybe you record for a longer time, or decrease the sample rate. Your dataset is a lot over sampled. So the frequency range of interest is only a very small band. Record for low frequency over a much longer time.

Can you please share a csv file, I will trie to import in SignalAnalyzer.
 

Offline HKJTopic starter

  • Super Contributor
  • ***
  • Posts: 3038
  • Country: dk
    • Tests
Re: Program that can log from many multimeters.
« Reply #1318 on: November 21, 2020, 08:10:00 am »
The Dataset you send is not very good. You need many periods of the signal of interest in you dataset. Maybe you record for a longer time, or decrease the sample rate. Your dataset is a lot over sampled. So the frequency range of interest is only a very small band. Record for low frequency over a much longer time.

It was an example of the file formats done fairly fast, as you can see in the time column. With the sample rate of TestController the frequencies (if any) will be fairly low, due to the maximum sample rate, but maybe SignalAnalyzer can be used to analyze for hourly or daily variations.

Histogram is already supported in TestController:


And the number of bins can easily be changed:


For interactive use a cursor can be clicked on and will give precise result for the position.
The size of the graphic can be adjusted. It is also possible to change colors and add annotations from a script.

Edit: I have modified the second histogram to look more like SignalAnalyzer with this script:

#chartbackground black black white white
#chartcolors (0,255,0)
#chartscalename Percent "Probablity Density [%]"
#chartscalename VSG.Sine "Amplitude [V]"
#chartTitle "Histogram / Distribution"
#savehistogram hist250 1130 630

Note: The override of the "Percent" scale name will first work from next version.
« Last Edit: November 21, 2020, 12:51:19 pm by HKJ »
 

Offline gby

  • Regular Contributor
  • *
  • Posts: 248
  • Country: us
Re: Program that can log from many multimeters.
« Reply #1319 on: November 25, 2020, 10:11:22 pm »
Hi HJK,

I am trying to make a device file for a device with a very low level serial protocol.  It is pure binary.  It does not use ascii.  The PC always sends two binary bytes and gets one binary byte in return.  No hand shaking and no end of line characters.  When reading the first byte is the address with lsb = 0 for read and the second byte is just a null.  The device replies with a single binary byte with the value.  When writing the first byte is the address with lsb = 1 for write and the second value is the binary data value to store at the requested address.

I read TC webpages about the DMM binary protocols but could not figure out how to use that for this simple protocol.  I then tried
Code: [Select]
#verifyDevice txrx? &
:readmath: "S200"

#idString "S200"
#name Kollmorgen S200 Servo
#handle S200
#port com
#eol \_
#comfixedbaud
; 19200 baud, Odd parity, 8 data bits, 1 stop bit
#baudrate 19200O81
#driver SingleValue
But I don't really know what the "SingleValue" driver means/does.

How would you recommend setting this device up in the TC device file?

How to specify binary values in the writes?  While in debug mode when I try txrx? 0x04 0x00 the DOS debug window implies TC sends 0x04 0x00 as 9 ascii characters and does not convert to two binary bytes.
 

Offline HKJTopic starter

  • Super Contributor
  • ***
  • Posts: 3038
  • Country: dk
    • Tests
Re: Program that can log from many multimeters.
« Reply #1320 on: November 26, 2020, 07:33:01 am »
I am trying to make a device file for a device with a very low level serial protocol.  It is pure binary.  It does not use ascii.  The PC always sends two binary bytes and gets one binary byte in return.  No hand shaking and no end of line characters.  When reading the first byte is the address with lsb = 0 for read and the second byte is just a null.  The device replies with a single binary byte with the value.  When writing the first byte is the address with lsb = 1 for write and the second value is the binary data value to store at the requested address.

The single value is driver is for devices that returns one ascii string with a single number in it.
This device either need a dedicated driver or another type of programable driver. You might be able to do something with the ascii driver and txrx1bin?, but I believe a more specialized driver would be better.
I will have to look into programming that.

How to specify binary values in the writes?  While in debug mode when I try txrx? 0x04 0x00 the DOS debug window implies TC sends 0x04 0x00 as 9 ascii characters and does not convert to two binary bytes.

The command line is designed to be SCPI command alike, but you can get around it in some cases by using escapes, either a string escape \ or a calculator escape () and then a string with string escape, but it will not always work.
For the \ escape you can use \x00 where 00 is a hex character code.
 

Offline HKJTopic starter

  • Super Contributor
  • ***
  • Posts: 3038
  • Country: dk
    • Tests
Re: Program that can log from many multimeters.
« Reply #1321 on: November 26, 2020, 02:14:41 pm »
V1.44 is up
The main feature is the GridPanel, another feature is that scripts can now ask for a color.
   Added: GridPanel, this is a customable interface to all connected devices.
   Added: unit... to access the unit for a device value.
   Added: tabelColumnUnit and tableColumnFormat to access the unit and formatter for a table column
   Added: #PopupColor to the input fields, this makes it possible to input a color in the popup.
   Added: time/dateTime names on chart can now be overwritten like any scale name
   Added: Count/Percent names on histogram can now be overwritten like any scale name
   Added: #ChartReset command, Will undo coloring and scale renames/synchronization and title overrides.

The GridPanel and SinglePanel is a user customizable interface, it is a grid where different panels can be added. Each panel can either be a readout or a control panel and will have a customable options. The idea is to make a panel for a specific task and then save it to a menu entry: Right click on the log window and select "Generate script", "Grid panel"

These panels are not linked to logging, but will work with or without logging active and the statistic on the panels do not track other statistics on TestController, it will be very similar, but not necessary exactly the same, due to difference in sample rate and samples.

The current type of panels are:
3 readouts with more or less statistic, they work for all devices and do not require a advanced bench meter to show statistic.
A single device on/off (This function requires that the "setOn" interface is implemented for the device).
Multi devices on/off, all selected devices will be turned on/off simultaneously
A parameter "setter", select a device setting and add buttons for the required settings.
 
Here is the default size of the panel:



But it can be scaled up/down over a wide range, it is also possible to change number of rows and columns:



A readout broken out into a single panel (Any panel can be broken out into a "Single panel" that is a resizable stand-alone window):




I am working on many more panels with different functions, one is a small chart.
Ideas for panel types are also welcome.
 

Offline HKJTopic starter

  • Super Contributor
  • ***
  • Posts: 3038
  • Country: dk
    • Tests
Re: Program that can log from many multimeters.
« Reply #1322 on: November 26, 2020, 02:26:07 pm »
I am trying to make a device file for a device with a very low level serial protocol.  It is pure binary.  It does not use ascii.

V1.44 contains a new driver called "Block" for this purpose, the driver is NOT finished yet, but can be used.
You are supposed to use #scpiCmd to define commands.
The primitives are:
tx
txrx1
txrx2
txrx1?
txrx2?

tx will only transmit, txrx1 & txrx2 will expect 1 or 2 byte answer, with the ? the answer will be returned as a number.
Depending on how device is implemented you may get away with listing two commands after a txrx2 and get both answer in a single number.

All commands accept a list of ascii character numbers to transmit, i.e. "tx 34 56 0x12" is a possible command.

The driver shares some definitions with the ascii driver, but uses a binary serial driver, instead of a text based one.
 

Offline gby

  • Regular Contributor
  • *
  • Posts: 248
  • Country: us
Re: Program that can log from many multimeters.
« Reply #1323 on: November 26, 2020, 04:16:16 pm »
V1.44 contains a new driver called "Block" for this purpose, the driver is NOT finished yet, but can be used.

Wow!  Thanks for this HKJ.  I will try it out soon but for now it is Thanksgiving in US and I have to eat too much turkey soon.....
 

Offline gby

  • Regular Contributor
  • *
  • Posts: 248
  • Country: us
Re: Program that can log from many multimeters.
« Reply #1324 on: November 26, 2020, 06:40:06 pm »
HKJ,

Got a chance to start working with V144 with #driver Block and ran into Java errors and would not connect.  Below is the stub driver file I started with.
Code: [Select]
#verifyDevice txrx1? \0x26 \0x00
:readmath: "S200"

#idString "S200"
#name Kollmorgen S200 Servo
#handle S200
#port com
#comfixedbaud
; 19200 baud, Odd parity, 8 data bits, 1 stop bit
#baudrate 19200O81
;#eol \_
;#driver ascii
;#driver SingleValue
#driver Block
#author gby

The resulting DOS debug window at startup/attempt device connect is:
Code: [Select]
Starting
;; Start thread for: COM1 - Kollmorgen S200 Servo
;; COM1: Set params: 19200
java.lang.NullPointerException
        at dk.hkj.devices.DeviceBlock$TranslatingCommInterface.cmdIdn(DeviceBlock.java:64)
        at dk.hkj.devices.DeviceBlock$TranslatingCommInterface.write(DeviceBlock.java:201)
        at dk.hkj.comm.CommInterface.writeRead(CommInterface.java:106)
        at dk.hkj.comm.CommInterface.writeRead(CommInterface.java:101)
        at dk.hkj.main.InterfaceThreads$DeviceThread.initDevice(InterfaceThreads.java:1340)
        at dk.hkj.main.InterfaceThreads$DeviceThread.run(InterfaceThreads.java:1413)
java.lang.NullPointerException
        at dk.hkj.devices.DeviceBlock$TranslatingCommInterface.cmdIdn(DeviceBlock.java:64)
        at dk.hkj.devices.DeviceBlock$TranslatingCommInterface.write(DeviceBlock.java:201)
        at dk.hkj.comm.CommInterface.writeRead(CommInterface.java:106)
        at dk.hkj.comm.CommInterface.writeRead(CommInterface.java:101)
        at dk.hkj.main.InterfaceThreads$DeviceThread.initDevice(InterfaceThreads.java:1343)
        at dk.hkj.main.InterfaceThreads$DeviceThread.run(InterfaceThreads.java:1413)
;; Stopping thread for: COM1 - Kollmorgen S200 Servo
;; COM1: Close
The above happens with the device's serial cable plugged in or not plugged in.  So, you should be able to duplicate without any device.

For reference, if I change the device file to use #device ascii I get nearly the same Java errors except it says cmdIdn(DeviceAscii.java:105).  So far, the only way I have been able to connect is to use the #device SingleValue.  That one seems to connect with device plugged in or serial cable not plugged in and with no Java errors.

Thoughts on next steps to get #driver Block started/initially connected to be able to experiment with the new txrx1, txrx2, etc?
 


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf