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

0 Members and 5 Guests are viewing this topic.

Offline HKJTopic starter

  • Super Contributor
  • ***
  • Posts: 2892
  • Country: dk
    • Tests
Re: Program that can log from many multimeters.
« Reply #1175 on: September 19, 2020, 01:55:04 pm »
Does #commandtime? reset and start over on a regular basis?

Yes, each time you use the command.

Before this test version #commandtime?  seemed to always make sense.  Does multi-line txrxn? somehow confuse #commandtime?

It measured the time from receiving a command until it returns the answer. This also means if you use a fast command it will register it.
The fastest command is the reset timers, i.e. if you use two #commandTime? in a row it will be the only command registered (Maybe I need to excluded that command from timing).
Only commands that are processed in parallel to all devices are passed through this interface, this is basically reading of values, *idn?, initialization and outputOff
 

Offline gby

  • Regular Contributor
  • *
  • Posts: 238
  • Country: us
Re: Program that can log from many multimeters.
« Reply #1176 on: September 19, 2020, 01:59:56 pm »
HKJ,

Still working great, but I do get one Java error set of debug window messages the first time I do "Current values" tab or start logging.  I missed it at first because it only happens the first time.  Exit "Current values" tab and come back or stop and restart the logging and I don't see any more Java error messages.

Attached is the dos debug window from
1. First start TC and connect to the one device.
2. Click into "Current values" tab for a moment.
    Note right away Java errors
3. Click out of Current values tab and do *idn? command manually as a "sign post"
4. Go back into Current values tab briefly
    Note no Java errors

These Java errors don't seem to prevent any functionality but I thought it would be good to point them out.
 

Offline HKJTopic starter

  • Super Contributor
  • ***
  • Posts: 2892
  • Country: dk
    • Tests
Re: Program that can log from many multimeters.
« Reply #1177 on: September 19, 2020, 02:25:20 pm »
These Java errors don't seem to prevent any functionality but I thought it would be good to point them out.

Looking at the error:
 at dk.hkj.main.Mathematics$MathEntry.calcDirect(Mathematics.java:394)

I can see it includes Mathematics, that means it is related to the Math page. The reason you only get it once is because the expression is disabled at first error.
 

Offline gby

  • Regular Contributor
  • *
  • Posts: 238
  • Country: us
Re: Program that can log from many multimeters.
« Reply #1178 on: September 19, 2020, 02:47:16 pm »
Looking at the error:
 at dk.hkj.main.Mathematics$MathEntry.calcDirect(Mathematics.java:394)

I can see it includes Mathematics, that means it is related to the Math page. The reason you only get it once is because the expression is disabled at first error.

That makes sense.  I did have a Math selected that would not work (other device not connected).  With proper math equations there is no Java error reported.  Thanks again for the quick feedback.
 

Offline PushUp

  • Regular Contributor
  • *
  • Posts: 173
  • Country: de
Re: Program that can log from many multimeters.
« Reply #1179 on: September 21, 2020, 04:05:37 am »
I have finally bought my first benchtop DMM - a cute little used "Rohde & Schwarz HMC 8012-G".  :-DMM

It is probably easier for me to stick to my handheld DMMs, but I am tooooo... curious to ask, whether it could be used with TestController, at least via the easiest way "USB VCP" at the beginning?
I tried to do some progress with TestController - actually it is just the detection of the device, because I am neither a programmer, nor a JavaScript expert...  :(

First of all, there are several ways of connection:



USB VCP = virtual COM port
I think, "USB VCP" can be compared with the handheld DMMs "IR-USB-Connections" like Keysight or Fluke.

USB TMC = Test and Measurement Class
As NI-VISA drivers are necessary I would prefer the virtual COM port from above, allthough this one has more possibilities.

Ethernet/LXI
As I mainly use linux and Windows 7 only offline, it is not necessary at the moment...in the manual it says, that it can be compared with the Agilent multimeters 34401A or 34410A as far as the SCPI commands are concerned.

IEEE488
At the moment I have no use of GPIB.


This is, what "lsusb" gives out on my Raspberry Pi, where I mainly want to use it, with "USB VCP" interface set in HMC8012:



; Bus 001 Device 015: ID 0aad:0135 Rohde & Schwarz GmbH & Co. KG

I tried to make the benchtop DMM getting detected by TestController, which has worked so far.







My wretched content of R&SHMC8012.txt:
#idString HAMEG,HMC8012,
#name R&S HMC8012
#handle HMC8012
#port com
#baudrate 115200

settingsLoad from Windows:
Device:R&S HMC8012|PortType:Serial|Address:COM5|Baudrate:115200|Enabled:1

settingsLoad from Linux:
Device:R&S HMC8012|PortType:Serial|Address:ttyACM0|Baudrate:115200|Enabled:1
Device:R&S HMC8012|PortType:Socket|Address:192.168.178.186|Baudrate:115200|Enabled:1

settingsRemap:
Name:R&S HMC8012|SN:XXXXXXXX|Id:32|enabled:1|Handle:HMC8012

I could also get a debug line...when using Windows 7 (COM5). When pressing different buttons there was of course no outcome...



;; Start thread for: COM5 - R&S HMC8012
;; Start thread for: COM4
;; Start thread for: COM3
;; COM5: Set params: 115200
;; COM3: Set params: 9600
;; COM4: Set params: 9600
;; COM5: Tx: <*IDN?.> 2A 49 44 4E 3F 0A
;; COM5: Rx: <HAMEG,HMC8012,XXXXXXX32,01.400> 48 41 4D 45 47 2C 48 4D 43 38 30 31 32 2C 30 33 30 33 39 35 36 33 32 2C 30 31 2E 34 30 30
;; Found R&S HMC8012 on HMC8012 (COM5) sn: XXXXXXX32
;; COM3: Tx: <*IDN?.> 2A 49 44 4E 3F 0A
;; COM4: Tx: <*IDN?.> 2A 49 44 4E 3F 0A
;; COM3: Rx: timeout
;; COM4: Rx: timeout
;; COM3: Tx: <*IDN?.> 2A 49 44 4E 3F 0A
;; COM4: Tx: <*IDN?.> 2A 49 44 4E 3F 0A
;; COM3: Rx: timeout
;; Stopping thread for: COM3
;; COM3: Close
;; COM4: Rx: timeout
;; Stopping thread for: COM4
;; COM4: Close
;; HMC8012: Rx as numbers <>
;; HMC8012: Rx as numbers <>
;; HMC8012: Rx as numbers <>
;; HMC8012: Rx as numbers <>
;; HMC8012: Rx as numbers <>

...and so on...

But first of all, I would like to know, whether it is possible to use it like a handheld DMM via the "USB VCP" interface at all? In order to test it, it would be enough for me, to have just one function at the moment. Maybe to measure current "ACI" for example? As the DMM is able to show "AC + DC" true RMS, but only in the third part of the display, I think, that it is not possible to fetch it via "USB VCP". You can see the display on this photo with "ACV + DCV".




ThanX for any feedback!  :)


Here are some PDF-links:

Product Page:
https://www.rohde-schwarz.com/uk/product/hmc8012-productstartpage_63493-44315.html

Manuals and SCPI:
https://www.rohde-schwarz.com/uk/manual/hmc8012/

Drivers:
https://www.rohde-schwarz.com/uk/driver/hmc8012/

Firmware:
https://www.rohde-schwarz.com/uk/firmware/hmc8012/

Software:
https://www.rohde-schwarz.com/uk/software/hmc8012/
« Last Edit: September 21, 2020, 04:21:24 am by PushUp »
 

Offline HKJTopic starter

  • Super Contributor
  • ***
  • Posts: 2892
  • Country: dk
    • Tests
Re: Program that can log from many multimeters.
« Reply #1180 on: September 21, 2020, 07:06:52 am »
It is probably easier for me to stick to my handheld DMMs, but I am tooooo... curious to ask, whether it could be used with TestController, at least via the easiest way "USB VCP" at the beginning?
I tried to do some progress with TestController - actually it is just the detection of the device, because I am neither a programmer, nor a JavaScript expert...  :(

You do not need to be a programmer or know anything about JavaScript to setup TestController for a device.

It do not really matter if you want to use it via a com port or on network, just write: "#port com 5025" and you definition will support both.

I doubt you can use it "like a DMM", bench meters usually lock the user interface when a remote connection is active, i.e. you need to provide ways to select range from the remote connection.

To get some values to TestController you need to define a measurement:
#value Value - D6

And a way to read it:
#askValues READ?

The above is a very simplified way to read values, it do not care about selected mode. You may also need a #prepareSample to setup some sort of trigger mode

The simplest DMM definition is probably the "AgilentHP34401A.txt", you can look in that file for ideas on the different commands.
You will need a couple of #value lines, basically one for each mode and a #askMode command to read the actual mode and #cmdMode to select each mode.
If you are lucky you can basically copy the contents of the file from below the baudrate specification.
« Last Edit: September 21, 2020, 07:16:32 am by HKJ »
 
The following users thanked this post: PushUp

Offline PushUp

  • Regular Contributor
  • *
  • Posts: 173
  • Country: de
Re: Program that can log from many multimeters.
« Reply #1181 on: September 22, 2020, 07:12:54 pm »
Thank you for you feedback, HKJ!

You are right - my idea, to use the "USB virtual COM port" connection like a handheld DMM was not a good idea. I changed my mind and switched to the LAN interface, where I immediately got a result via "Test interface for currently selected device".

Now, I have to get into it and study your well documented TestController website, till everything works fine!  :-+


ThanX!  :)
 

Offline HKJTopic starter

  • Super Contributor
  • ***
  • Posts: 2892
  • Country: dk
    • Tests
Re: Program that can log from many multimeters.
« Reply #1182 on: September 24, 2020, 03:15:17 pm »
V1.28 is up.
   Changed: Ascii device
   Fixed: hh:mm:ss chart scale was missing from generated script
   Added: Ascii device support for receiving multiple lines, requires :readmath: to decode them.
   Added: Lots of functions (>20) to access, search and calculate on table data.

This release is about functions to access the table data from scripting. Some function can do the same as the function in the chart and will return a index into the table other function will calculate on the table data.
The documentation for the functions are here: http://lygte-info.dk/project/TestControllerFunctions%20UK.html#Table_related_functions

In addition I have made some significant changes to the Ascii device driver, they are not supposed to affect any existing definition (I hope), but will be used in some new definitions.

 
The following users thanked this post: gby, PushUp

Offline PushUp

  • Regular Contributor
  • *
  • Posts: 173
  • Country: de
Re: Program that can log from many multimeters.
« Reply #1183 on: September 27, 2020, 08:53:57 pm »
Questions as far as TestController's interface is concerned, nothing special, just to clarify it...

"Not always seeing the unit in "Popups > Readout":

No matter how many "decimals" and/or "Auto min. range" I choose, for example "6" or "4", I don't see the unit for labeling the values continuously on the "Readout":



...also "Size 2" does not change it:



Is it possible, to force outputting a unit, for example always "A", to get a shorter number/value or giving a little bit more space, as "11" is shorter than "23" for example?

"Is it advisable to always uncheck not used devices, to not get a "NullPointerException"?

I saw this on my Pi, where I always start TestController via Terminal. When all connected devices are "ON", there is no message. When the devices are connected, but "OFF", I get this terminal information:



There is of course no interference with the usability of TestController, I just want to know, how to deal with it?

My little interim report as far as my "Rohde & Schwarz HMC8012-G.txt" is concerned:
It is only a first stage and in the end any user has to tweak the file for his own needs. I mainly want to use ACI measurements with TestController to see the Chart while logging with the HMC8012 without paying attention to batteries. At the moment I am satisfied with the result:



I will post my result and hurdles to solve a bit later, in order not to make this post too messy.  ;)


ThanX.  :)
 

Offline HKJTopic starter

  • Super Contributor
  • ***
  • Posts: 2892
  • Country: dk
    • Tests
Re: Program that can log from many multimeters.
« Reply #1184 on: September 28, 2020, 05:17:26 am »
"Not always seeing the unit in "Popups > Readout":

No matter how many "decimals" and/or "Auto min. range" I choose, for example "6" or "4", I don't see the unit for labeling the values continuously on the "Readout":

The page "Scale for charts" only affect the "Chart" and "Histogram" pages, all other decimals is controlled from the device definition with the D1..D6 or SI specifications in the #value lines.
On the table page you can right click on a column and temporary override the definition. This will affect a Readout that is opened after.

Is it possible, to force outputting a unit, for example always "A", to get a shorter number/value or giving a little bit more space, as "11" is shorter than "23" for example?

Like decimals units is also controlled from the device definition file, only Math channels can change the unit.
I will take a look at the readout and see if I can do anything about the width.

"Is it advisable to always uncheck not used devices, to not get a "NullPointerException"?

I saw this on my Pi, where I always start TestController via Terminal. When all connected devices are "ON", there is no message. When the devices are connected, but "OFF", I get this terminal information:

There is of course no interference with the usability of TestController, I just want to know, how to deal with it?

No, when TestController sees the null-pointer error it will simple close the device driver down and release any resources related to that device.


My little interim report as far as my "Rohde & Schwarz HMC8012-G.txt" is concerned:
It is only a first stage and in the end any user has to tweak the file for his own needs. I mainly want to use ACI measurements with TestController to see the Chart while logging with the HMC8012 without paying attention to batteries. At the moment I am satisfied with the result:

I will post my result and hurdles to solve a bit later, in order not to make this post too messy.  ;)

I look forward to see the final result
You can find some inspiration for DMM definitions in "Keysight344xxA.txt" and "SiglentSDM30xxx.txt".
« Last Edit: September 28, 2020, 05:21:46 am by HKJ »
 
The following users thanked this post: PushUp

Offline gby

  • Regular Contributor
  • *
  • Posts: 238
  • Country: us
Re: Program that can log from many multimeters.
« Reply #1185 on: September 28, 2020, 03:23:24 pm »
HKJ,

I am running into issues creating a setup popup.  One of the elements is a #cmdSetup info that displays some text the device returns.  When I open the popup everything is sized properly but when I exercise another control in this popup, which has an :update: command for this info control, it gets messed up by the changed text length.  See attached:
    No faults active.PNG       which is all properly sized
    Faulted 502.PNG            after clicking Axis Enable on button which causes a fault and updates the Faults: info text

To try and fix this popup window size issue I tried to use a readmath on the info to set a fixed length string but I can't seem to get the string function formatLeft to work.  It keeps giving Java errors.  Here is my "Faults:" info popup code with formatLeft readMath and the "Axis Enable" command with the :update: Faults line:
Code: [Select]
#cmdSetup buttonsOn Axis_Enable
:string:
:read: DRV.ACTIVE?
:readmath: getElement("DRV.DIS DRV.EN",value)
:write: txrx #
:tip: Disable (Off) or Enable (On)
:color: (0,255,0)
:updatedelayed: 0.1
:updatealloff:
:update: Faults
Off DRV.DIS
On DRV.EN

#cmdSetup info Faults
:string:
:read: DRV.FAULTS?
:readmath: formatLeft("value",25)
:tip: You can clear faults with DRV.CLRFAULTS command.

below is the section from the DOS debug window after restrating TC and first opening the popup:
Code: [Select]
;; AKD1G: Tx <DRV.FAULTS?>
;; AKD1G: Tx <txrx? DRV.FAULTS>
;; 192.168.1.173: Tx: <DRV.FAULTS..> 44 52 56 2E 46 41 55 4C 54 53 0D 0A
;; 192.168.1.173: Rx: <502: Bus under voltage.> 35 30 32 3A 20 42 75 73 20 75 6E 64 65 72 20 76 6F 6C 74 61 67 65 2E 0D
;; AKD1G: Rx <502: Bus under voltage.>
Exception in thread "AWT-EventQueue-0" dk.hkj.script.ProgramExceptions$UnknownException:
formatLeft("value",25)____<----____
        at dk.hkj.script.Script.expression(Script.java:1193)
        at dk.hkj.main.SCPICommand.writeReadInternal(SCPICommand.java:228)
        at dk.hkj.main.SCPICommand.writeRead(SCPICommand.java:244)
        at dk.hkj.devices.SetupFormats$InfoField.syncValue(SetupFormats.java:2446)
        at dk.hkj.devices.SetupFormats.syncAll(SetupFormats.java:239)
        at dk.hkj.main.PopupSetupSelection.initialSync(PopupSetupSelection.java:97)
        at dk.hkj.main.PopupSetupSelection.timerUpdate(PopupSetupSelection.java:105)
        at dk.hkj.main.PopupSetupSelection.access$3(PopupSetupSelection.java:103)
        at dk.hkj.main.PopupSetupSelection$2.actionPerformed(PopupSetupSelection.java:72)
        at javax.swing.Timer.fireActionPerformed(Unknown Source)
        at javax.swing.Timer$DoPostEvent.run(Unknown Source)
        at java.awt.event.InvocationEvent.dispatch(Unknown Source)
        at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
        at java.awt.EventQueue.access$500(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
        at java.awt.EventQueue.dispatchEvent(Unknown Source)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.run(Unknown Source)
Caused by: dk.hkj.vars.VarExceptions$ValueException: A struct can not contain a value
        at dk.hkj.vars.VarValueStruct.asString(VarValueStruct.java:75)
        at dk.hkj.vars.VarValue$6.execute(VarValue.java:267)
        at dk.hkj.script.Functions$FuncVarValue.execute(Functions.java:113)
        at dk.hkj.script.Script.parseValue(Script.java:265)
        at dk.hkj.script.Script.parseBitOp(Script.java:312)
        at dk.hkj.script.Script.parseProduct(Script.java:384)
        at dk.hkj.script.Script.parseSum(Script.java:444)
        at dk.hkj.script.Script.parseCompare(Script.java:486)
        at dk.hkj.script.Script.parseLogical(Script.java:522)
        at dk.hkj.script.Script.parseQuestionMark(Script.java:548)
        at dk.hkj.script.Script.parseExpression(Script.java:573)
        at dk.hkj.script.Script.expression(Script.java:1181)
        ... 24 more

I also tried formatRight with similar results.  Then, just to make sure I was doing something right, I tried substring.  substring gave no Java errors, but I don't understand the results.  Input string was "502: Bus under voltage." but substring("value",4) returns just the single character "e".  I thought it would return from the fourth character until end of string.
Code: [Select]
;; AKD1G: Tx <DRV.FAULTS?>
;; AKD1G: Tx <txrx? DRV.FAULTS>
;; 192.168.1.173: Tx: <DRV.FAULTS..> 44 52 56 2E 46 41 55 4C 54 53 0D 0A
;; 192.168.1.173: Rx: <502: Bus under voltage.> 35 30 32 3A 20 42 75 73 20 75 6E 64 65 72 20 76 6F 6C 74 61 67 65 2E 0D
;; AKD1G: Rx <502: Bus under voltage.>
;; AKD1G: Rx after :readmath: substring("value",4) <e>

My questions are:
1.  How best to handle text length changes for a text info control that is updated by another :update: needing the popup to resize?
2.  What am I doing wrong with the formatLeft and formatRight commands that leads to the Java errors?
3.  What am I doing wrong with the substring command that only returns one letter?
 

Offline felixd

  • Regular Contributor
  • *
  • Posts: 101
  • Country: pl
    • FlameIT - Liquid Immersion Cooling
Re: Program that can log from many multimeters.
« Reply #1186 on: September 28, 2020, 03:56:10 pm »
Hello

I have created TestController GitLab group to store Devices files. Currently I am fighting with TestController, SCPI and GPIB support on HP 34401A (learning all those things together ;) ).
I trully believie this is better way to coordinate Devices files :)

https://gitlab.com/testcontroller/devices

I have already PM'ed to HKJ to give him full access to this group.

Cheers, Paweł.

Pawel 'felixd' Wojciechowski
FlameIT - Liquid Immersion Cooling https://flameit.io
OpenPGP: 0x9CC77B3A8866A558 https://openpgp.flameit.io/
 

Offline HKJTopic starter

  • Super Contributor
  • ***
  • Posts: 2892
  • Country: dk
    • Tests
Re: Program that can log from many multimeters.
« Reply #1187 on: September 28, 2020, 03:58:37 pm »
I have a bug in the expressions, it will be fixed in next version (formatLeft/formatRight).

3. parameter in substring is column after last to include, this matches the Java format, except I do not fail when columns are outside actual string.

For the resizing try adding a :layout: tag
 

Offline HKJTopic starter

  • Super Contributor
  • ***
  • Posts: 2892
  • Country: dk
    • Tests
Re: Program that can log from many multimeters.
« Reply #1188 on: September 28, 2020, 04:14:40 pm »
I have created TestController GitLab group to store Devices files.

I will take a look on that tomorrow, I am out of time for today.
 

Offline gby

  • Regular Contributor
  • *
  • Posts: 238
  • Country: us
Re: Program that can log from many multimeters.
« Reply #1189 on: September 28, 2020, 11:04:50 pm »
3. parameter in substring is column after last to include, this matches the Java format, except I do not fail when columns are outside actual string.

For the resizing try adding a :layout: tag

HKJ, thanks for pointing out the :layout: tag.  Completely solved my popup issue.  Now I can share the device file for Kollmorgen AKD first generation servos.  I have used a number of the recent TestController functionality updates (Thanks HKJ!) in this file so that this one is now better/more functional than the AKD second generation servo device file I shared a while ago.  I plan to update the AKD second gen one shortly.

Please include the attached device file in the next TestController release.
 

Offline gby

  • Regular Contributor
  • *
  • Posts: 238
  • Country: us
Re: Program that can log from many multimeters.
« Reply #1190 on: September 29, 2020, 02:49:17 am »
HKJ,

I am working with a pretty fast device and I decided to try pushing the logging speed.  However, it seems like the smallest logging interval TecstController accepts is 0.01.  Any reason not to allow 0.005?  I would imagine that 0.001 and lower won't work because the time units seem to be 1 mSec.  But shouldn't 0.005 sec work?

For reference, I am updating the AKD2G servo to the new better method of getting log values.  After 45 minutes of logging at 0.01 sec interval the result of the #commandtime? command is:
   ;; AKD2GS       last:     4.14 ms       average:     4.08 ms       slowest:    31.89 ms
Looking at a graph of the delta time between samples (Math type "Change" with 2 samples of "time") shows a histogram where
   9 mSec     17.8%
  10 mSec    63.0%
  11 mSec    17.8%
   all other     1.4%

The above numbers certainly suggest it can go faster.

Also, I started trying some of the new table calculation functions in Ver 1.28.

tableCalcMax
seems to work correctly.
tableCalcMin seems to always give the maximum possible negative number.  Is the seed number for this function the wrong sign?
   =tableCalcMin(10);
   ;; -1.7976931348623157E308

tableCalcAvg seems to always give me 0 when working with huge number value data.  Below data range gives:
Name      Unit   First         Last         Minimum      Maximum      Range      Average      Slope
AKD2GS.CH5   -   3.747187E9   3.747187E9   3.74706E9      3.747246E9   186071.000   3.747157E9   -0.306
   =tableCalcMax(8 );
   ;; 3.747246331E9
   =tableCalcAvg(8 );
   ;; 0.0
Correct max value, but incorrect 0 for average.

tableCalcRMS and tableCalcAvg seem to give 0 for data sets where all the points are the same such as 0.504.  Is this RMS taking the dc out like StdDev or should this RMS function return the dc value?  Certainly average should return the dc value and not 0.
Name         Unit   First   Last   Minimum   Maximum   Range   Average   Slope
AKD2GS.CH4   -   0.504   0.504   0.504   0.504   0.000   0.504   -0.000
   =tableCalcMax(7);
   ;; 0.504
   =tableCalcAvg(7);
   ;; 0.0
   =tableCalcRMS(7);
   ;; 0.0

All I have time for tonight.  Thanks again for a great tool.

« Last Edit: September 29, 2020, 02:54:10 am by gby »
 

Offline HKJTopic starter

  • Super Contributor
  • ***
  • Posts: 2892
  • Country: dk
    • Tests
Re: Program that can log from many multimeters.
« Reply #1191 on: September 29, 2020, 08:22:47 am »
I will include the AKD1G in the next release.
All the bugs you have found will also be fixed in next release.

I am not sure if it will work at a faster sample rate, the OS or Java system may have something to do that prevents it from being reliable. Even logging from the internal generators cannot maintain 0.01 second sample rate over longer time.
I have reduced the internal limit to 0.005, but it can only be started from the command line with "#log 0.005", for now I will keep the 0.01 limit in the menus and in formatting.
Please report your experience with it.


If somebody can thing of other useful functions for the table data (or other functions), please post about it.
 

Offline HKJTopic starter

  • Super Contributor
  • ***
  • Posts: 2892
  • Country: dk
    • Tests
Re: Program that can log from many multimeters.
« Reply #1192 on: September 29, 2020, 08:53:57 am »
I have created TestController GitLab group to store Devices files.

I have created an account on Gitlab and send the id to you.
I see one problem with doing devices this way and that is partially made definitions. I cannot just fetch all files from gitlab and include them, some of them may not be finished yet.
I may a great idea for developing a device file where multiple people can contribute to the same file, but I will still look for a posting here or an email with the finished definition before including it. This also applies for update to already existing definitions.
 
The following users thanked this post: felixd

Offline HKJTopic starter

  • Super Contributor
  • ***
  • Posts: 2892
  • Country: dk
    • Tests
Re: Program that can log from many multimeters.
« Reply #1193 on: September 30, 2020, 12:46:11 pm »
V1.29 is up
It is a mixed bag of smaller improvements.
   Fixed: Some bugs in table... functions
   Added: Support for receiving a few binary bytes in ascii device definitions.
   Changed: To better support fast sampling the chart scale can show 0.01 second when full scale is below 2s
   Added: Custom format popup to table
   Added: formatSI function now supports precision specifiers
   Added: More D and X formats, now supports from D0..D9 and X0..X9
   Added: SI3..SI8 formats, this will limit the number of digits (not decimals)
   Added: SI3x..SI8x can include a minimum SI prefix, i.e. SI4m will limit minimum used SI prefix to m
   Added: Generation of #ValueFormat script for all loaded devices with all possible values.
   Added: #ValueFormat, changes format for any value/column (but not chart) until TestController is restarted
   Fixed: Size of Readout, it will now adjust to always fit the measurement.
   Added: #foreach/#endforeach this makes it easy to do automatic testing at a couple of discrete values.

The most significant improvement is more flexible number formats and the possibility to adjust from both from script and from menu on the table page:



A new scripting statement is #foreach, this makes it easy to do a test at a couple of different settings:

#foreach current 0.1 0.3 1 3
handle:setCurrent (current)
...do test
#endforeach


The readout sizing is changed, if needed it will expand the width and the initial width can be smaller now:





« Last Edit: September 30, 2020, 03:58:42 pm by HKJ »
 
The following users thanked this post: felixd, PushUp, tubularnut

Offline gby

  • Regular Contributor
  • *
  • Posts: 238
  • Country: us
Re: Program that can log from many multimeters.
« Reply #1194 on: September 30, 2020, 05:19:43 pm »
I will include the AKD1G in the next release.
All the bugs you have found will also be fixed in next release.

I am not sure if it will work at a faster sample rate, the OS or Java system may have something to do that prevents it from being reliable. Even logging from the internal generators cannot maintain 0.01 second sample rate over longer time.
I have reduced the internal limit to 0.005, but it can only be started from the command line with "#log 0.005", for now I will keep the 0.01 limit in the menus and in formatting.
Please report your experience with it.

HKJ,

Thanks for the update.  Just a little time to play right now.  I tried:
   #log 0.007
and TestController started logging at 0.005 sec intervals which surprised me.  I am guessing you set the min quanta to 5 mSec and it rounded the request  from 7 mSec to 5 mSec???

After 25 minutes of logging at 5 mSec interval with my fast device it seems fine.  Here are some info from this quick test:

Name   Unit   First   Last   Minimum   Maximum   Range   Average   Slope
Math.DeltaTime      0.0000   6.0000   0.0000   53.0000   53.0000   5.0988   -0.0000

#commandtime? returns:
;; AKD2GS       last:     2.79 ms       average:     3.80 ms       slowest:    56.98 ms

I then tried out some of the tableCalc functions on the Math channel Type change with 2 samples (basically delta time on log samples):
=tableCalcMax(10)
;; 57.0
=tableCalcMin(10,1)
;; 1.9999999998835847
=tableCalcAvg(10)
;; 5.073882801777281
=tableCalcRMS(10)
;; 5.293048934219226
=tableCalcStdDev(10)
;; 1.5073280563632954

All the above calculations look correct and show the logging timing seems stable at 5 mSec per sample.  Pretty impressive sampling!
 

Offline HKJTopic starter

  • Super Contributor
  • ***
  • Posts: 2892
  • Country: dk
    • Tests
Re: Program that can log from many multimeters.
« Reply #1195 on: September 30, 2020, 05:40:25 pm »
Thanks for the update.  Just a little time to play right now.  I tried:
   #log 0.007
and TestController started logging at 0.005 sec intervals which surprised me.  I am guessing you set the min quanta to 5 mSec and it rounded the request  from 7 mSec to 5 mSec???

I change my rounding from 10ms to 5ms, there is not a comparison for minium sample time, only that 0 stop sampling.

After 25 minutes of logging at 5 mSec interval with my fast device it seems fine.  Here are some info from this quick test:

Name   Unit   First   Last   Minimum   Maximum   Range   Average   Slope
Math.DeltaTime      0.0000   6.0000   0.0000   53.0000   53.0000   5.0988   -0.0000

#commandtime? returns:
;; AKD2GS       last:     2.79 ms       average:     3.80 ms       slowest:    56.98 ms

I wonder a bit about the 57ms time that it did not kick the sample rate down (I do not remember the exact conditions before I reduce sample rate).

I then tried out some of the tableCalc functions on the Math channel Type change with 2 samples (basically delta time on log samples):
=tableCalcMax(10)
;; 57.0
=tableCalcMin(10,1)
;; 1.9999999998835847
=tableCalcAvg(10)
;; 5.073882801777281
=tableCalcRMS(10)
;; 5.293048934219226
=tableCalcStdDev(10)
;; 1.5073280563632954

All the above calculations look correct and show the logging timing seems stable at 5 mSec per sample.  Pretty impressive sampling!

Good, remember if you have ideas for other table... functions, please say.
 

Offline PushUp

  • Regular Contributor
  • *
  • Posts: 173
  • Country: de
Re: Program that can log from many multimeters.
« Reply #1196 on: October 01, 2020, 07:00:14 am »

I tried to execute your hint of getting a better presentation of the Chart. Did you mean to cut off the unnecessary things to have a better focus on the decisive values, like so...



...or is there even a better way to do so?





PS: While doing so I have finally become aware of the tab with the description "Current values".

Due to the double meaning: "current" vs. voltage and "actual or up-to-date" you may consider taking another word for this tab - not a big deal for me, but if someone is new to TestController, it maybe helps to assign the meaning of the tab by just reading and immediately knowing, what it stands for, perhaps: "Up-to-date values"...I don't know...  :)


 

Offline HKJTopic starter

  • Super Contributor
  • ***
  • Posts: 2892
  • Country: dk
    • Tests
Re: Program that can log from many multimeters.
« Reply #1197 on: October 01, 2020, 07:41:22 am »
I tried to execute your hint of getting a better presentation of the Chart.

It looks like I added a bug with the numeric format changes, it was supposed to look this way with the scale in mA:



This will be fixed in next release.

PS: While doing so I have finally become aware of the tab with the description "Current values".

Due to the double meaning: "current" vs. voltage and "actual or up-to-date" you may consider taking another word for this tab - not a big deal for me, but if someone is new to TestController, it maybe helps to assign the meaning of the tab by just reading and immediately knowing, what it stands for, perhaps: "Up-to-date values"...I don't know...  :)

I like the word "current", there is no reason for a page about electron flow.
What I will do is add a tool tip to the tab.
 
The following users thanked this post: PushUp

Offline PushUp

  • Regular Contributor
  • *
  • Posts: 173
  • Country: de
Re: Program that can log from many multimeters.
« Reply #1198 on: October 01, 2020, 08:21:39 pm »
Cool, now it works!  :-+




ThanX!  :)
 

Offline PushUp

  • Regular Contributor
  • *
  • Posts: 173
  • Country: de
Re: Program that can log from many multimeters.
« Reply #1199 on: October 02, 2020, 03:14:29 pm »
Do I have the possibility, to match the values of both y-axis, when using at least two DMM?



For example, when measuring two different items, to see, which is more economical, it would be nice when the left y-axis is directly in opposition to the other side with its same values.

In my case it would be easier to read and estimate the graphs, as they would not overlap, although showing different values, thus you immediately have a direct comparison?


ThanX.  :)
 


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf