Updated my Powersupply test.
Once I bought an ADC10F103C and didn't nothing with it.
3.3 volt max. input makes it not always useful for me.
I liked to have an universal voltage logger,
so I made an resistor interface and so it is an usefull voltage logger to max. 60v.
I'm starting out on TestController the hard (?) way: by defining a new device (Fluke 8808A).
I'm not sure if the following is normal or unusual... but in any case it doesn't seem to be documented that I see... nor have I seen it discussed.
Measurements returned by this device may be either of these formats:
Tx <meas?>
; F8808: Rx <+28.399E-3 VDC>
;; F8808: Rx as numbers <0.028399 NaN>
or (if doing two simultaneous measures)
Tx <meas?>
;; F8808: Rx <+1.192E-3 VDC,-0.001E-6 ADC>
;; F8808: Rx as numbers <0.001192 NaN -1.0E-9 NaN>
(I *may* be able to disable the unit info, although that seems valuable for auto-changing the measurement mode???)
1) Units
Clearly this DMM provides measurements using engineering units (ie powers of ten scaled by multiples of 3)
This is not documented in the #value setup. What am I supposed to use for #value here?
2) Measurement type
Are there examples of reading from DMM's that supply the type of measurement?
3) Single / Double measures
I see two types of double-measure documented lightly:
DMM and DMM:2 (for in essence two whole meters)
vs a more complex setup supporting primary/secondary measures (haven't figured that out yet.)
Any recommendations on which path to take?
I have added the update to my webpage: https://lygte-info.dk/project/TestControllerUserScripts1%20UK.html#Power_supply_load_sweep_by_Pukker
This is also added to my webpage: https://lygte-info.dk/project/TestControllerUserProjects1%20UK.html#10_channel_12bit_ADC_module_addition_by_Pukker
It is a nice way to make the module more practical, now it just need a 3D printed box (This would required a USB extension cable).
It is a nice way to make the module more practical, now it just need a 3D printed box (This would required a USB extension cable).
Nice, but the 3D printer is missing here.
but will take an box, drilling, sawing etc.
Noob question: is there a way to reliably reload the definition file for a device from within TC? "Reconnect" doesn't do that.
Sure would be handy while I am working up my device definition!
USB-Serial Driver for Win 10/11
I have a USB-Serial dongle, marked Eminent 1016 but actually is Prolific 2303 GC aka Prolific 2303HXA
Here's the latest best driver. Do NOT use the most recent from Prolific. https://github.com/johnstevenson/pl2303-legacy/releases
Without this driver (or 3.3.2.102 but that version has other issues), I got "Error 433" from any serial/terminal app, and TC didn't think the COM port existed at all.
If you're having serious issues, running a free trial of "Free Device Monitoring Studio" from HHD Software may be very helpful. It traces 100% of all signals on the serial port!
Correction for ID String Definition
The documentation says:
- #idString first two parts of *idn? answer
- The idstring is the brand name and the device name
The correct answer: The idstring must exactly match the first portion of the *idn? answer, including any blanks etc.
Example: if *idn? returns "BRAND, MODEL,..." then this line must be "#idString BRAND, MODEL," (and not "#idstring BRAND,MODEL,")
I have a ET5420 and I'm making progress getting it to talk with Test Controller (under linux) - it can pull the version number - but the model number is where it fails. If I look under system info on the 5420 there are 4 entries:
PRODUCT MODEL
S/N
Software Version
Hardware Version
There is no entry under PRODUCT MODEL - and this is a read only section - no way to enter one. When I run Test Controller it comes back with this:
Device ET5420 do not match: ÿÿÿÿÿÿÿ,V1.02.2127.002,09422132071,V1.03.2136.003
EDIT: I edited the Device file for the 5420 and replaced the idString name with ÿÿÿÿÿÿÿ. Got by the "do not match" error anyway...
1) What causes the expected # of values to change, in #askValues, in the current values list, in the table, regular table, in the chart? It's not clear.
(I see something about "mode based" but stil not clear)
2) Is there a way to modify the number of values returned by #askValues based on a condition?
My example: if I request two but only have one value being measured, the meter returns "!>" as an error string as a result!)
I'm thinking I need to generate some kind of return string with <1st value>, then if value2 is NOT "!>" then append (separator?) and <2nd value>
*The number of expected and shown values is directly controlled by the number of enabled columns (#value statement)
* The #value statement can optionally have one or more mode names listed (DMM's always has this).
* This mode is read from the device (#askMode ...).
* It is possible to have multiple modes active simultaneous.
...
* It is possible to adjust #askValues based on mode
What I did NOT hear is any way to directly tweak the number of values produced from data returned by the DMM.
If the mode on/off commands contain [localmode] the state of the mode is handled by TestController and need not be included in the #askMode. With local mode it may not be necessary to send commands to the device, but only to add more columns and modify the #askValues command with the [mode:xxx] tag.
...
"Changing number of columns, device mode is not used (Note: m2 test is not used, but must be present)."
#cmdModeCheck modeLabel deviceModeString defaultState
mode on commands
mode off commands
modes where this mode is valid, use ! to invert mode. (This line is optional)
* In the example, "deviceModeString" is always "m2" and is present in #cmdMode and #cmdModeCheck#askValues FETC?[mode:Frequency_Voltage,Frequency_Current,DCV_Power,DCI_Power,dB,dBm];FETCH2?[mode:DCV_Power,DCI_Power];CALC:POW?[mode:Limit];STAT:QUES:COND?[mode:Statistics];CALC:AVER:COUN?;CALC:AVER:MAX?;CALC:AVER:AVER?;CALC:AVER:MIN?;CALC:AVER:SDEV?;CALC:AVER:PTP?
; Format of answer: f=float, u=remove trailing letters, x=skip, *=Zero upper case values if this value is 0
#askValuesReadFormat FFFFFFFFFF
Does this mean that if I want to incorporate some calculated values...
* That too is one of these major hiccups requiring reconfiguration?
* And, do I therefore need to invent a mode for that?
My Interpretation of the above
- Each #cmdModeCheck defines an independent additional mode that can potentially be active simultaneously.
- Best to always use [localmode] for multi-mode devices. We have no instructions or examples of non-local (ie where the device returns good multi-mode data on its own)
- The third line ("modes where this is valid"...) defines how this mode interacts with all other modes, in the sense of a filter. (?? By default this mode is available with all other modes. If not, then some combination of positive inclusion and/or negative removal must be used. ?? )
- For multi-mode value reading, #askValues and #askValuesNumberFormat is used to define and limit the number of values to be read. See below.
Here's an example from R&SHMC8012.txt:Code: [Select]#askValues FETC?[mode:Frequency_Voltage,Frequency_Current,DCV_Power,DCI_Power,dB,dBm];FETCH2?[mode:DCV_Power,DCI_Power];CALC:POW?[mode:Limit];STAT:QUES:COND?[mode:Statistics];CALC:AVER:COUN?;CALC:AVER:MAX?;CALC:AVER:AVER?;CALC:AVER:MIN?;CALC:AVER:SDEV?;CALC:AVER:PTP?
; Format of answer: f=float, u=remove trailing letters, x=skip, *=Zero upper case values if this value is 0
#askValuesReadFormat FFFFFFFFFF
- Counting in #askValues, one sees up to ten values returned depending on the combination of active modes. Thus, #askValuesReadFormat specifies ten floating point numbers.
- Sometimes a single mode produces more than one value (eg Statistics); sometimes a single mode is present in more than one list, which is another way to produce multiple values (eg DCV_Power).
- In #askValues, the modes listed in a group [mode:Mode1,Mode2...] are "OR'd" together: the following associated values are expected if any of the listed modes are active.
One more question that's slightly related:
In defining #cmdMode, the docs say:
- All defined modes are shown in a popup window, where they are sorted in alphabetically order.
- It is also possible to add empty positions with #cmdMode (on a line by itself)
Normally, a sorted list puts all empty records at the start or end. QUESTION: By any chance, does adding #cmdMode as a blank, cause a separate alphabetical sort before and after the blank?
The empty definitions are only valid when you take over the design by specifying a
#cmdModeLayout columns row
Then you are using the empty #cmdMode to get the best layout
Depend on the device, if you can read the mode from the device it is a more reliable way to track the modes
@HKJQuoteThe empty definitions are only valid when you take over the design by specifying a
#cmdModeLayout columns row
Then you are using the empty #cmdMode to get the best layout
Ahh! So #cmdModeLayout also turns off the auto-sort!
QuoteDepend on the device, if you can read the mode from the device it is a more reliable way to track the modes
I didn't find any example of using #cmdModeCheck to define a device-readable mode. Is there one I missed?
#interface read... column
#interface read... column column...
The definition of read is very easy, because it uses the same reading as "current values" and logging, i.e. the "#askValues" command and only the actual index of the value must be specified. For multichannel devices multiple indexes must be listed, one for each channel. The first value the device returns is numbered 0.
The read definitions also defines a name... command that can be used to get the column name for the value from the actual device.
;Rigol DM30xx, Fluke8846A
#interfaceType DMM BMM
#interface readValue 0
;Fluke8845A
#interfaceType DMM BMM
#interface readValue 1
;R&SHMC8012
#interfaceType DMM BMM
#interface readValue 0
#interface readValue2 1
#interface readPower 2
;MTX328x
#interfaceType BMM
#interface readValue 0
#interface readValue2 1
#interface readValue3 2
#interface readValue4 3
Documentation says:Quote#interface read... column
#interface read... column column...
The definition of read is very easy, because it uses the same reading as "current values" and logging, i.e. the "#askValues" command and only the actual index of the value must be specified. For multichannel devices multiple indexes must be listed, one for each channel. The first value the device returns is numbered 0.
The read definitions also defines a name... command that can be used to get the column name for the value from the actual device.
QUESTIONS:
1) Given that the parameter to these is a zero-based column number, is it a bug to have only "#interface readValue 1" ?
2) The document suggests using "readValue column column..." but nobody does that. Instead they have separate "readValue 0" "readValue2 1"... WHY?
3) What's the meaning of readValue, readValue2, readValue3...? Not documented.
4) In NO case do I see any of these used anywhere else in the device files, nor the auto-generated nameValue* that's described. Do these definitions set up something inside TC?
5) One device has "BMM" without "DMM". I have not yet found an explanation of what these interfaceTypes actually accomplish. Is there a table somewhere of perhaps variables or controls that are defined or enabled through use of these?
... I have keitley2000 and 2001 TSC scan multiplex card. It works with SPI protocol. Any simple way to use the multiplex channel wit Testcontroller? I would like to use it to monitor 3 different voltage reference signals from some boards I am setting up.
Just a minor UI request: when importing a log file into the table to quickly review the charts, it would be nice to have a "Select All" checkbox for the listed parameters that have been logged, instead of having to check each individual box.