There are two versions of the scanner cards made by Keithley for their range of DMMs which are discussed here, the Model 2000-SCAN and the newer Model 2000-SCAN-20. Additionally there are the Model 2001-SCAN and Model 2001-TCSCAN. Both are 10 channel cards as well. The Model 2001-SCAN has 8 relays and 2 SSRs for high speed multiplexing. The Model 2001-TCSCAN on the other hand has 9 channels and one reference junction for cold-junction compensated temperature measurements. The latter two will not be discussed here.
The schematics of the Model 2000-SCAN and the Model 2000-SCAN-20 cards can both be found online. Do note that the latest version of the Model 2000-SCAN manual found on the Tektronix website does not contain the schematics any more. The last revision to contain them was Revision D from April 1999. Use a search engine to find it.
The Model 2000-SCAN
and the Model 2000-SCAN-20
use two different serial protocols. These were recorded for different multimeters with a R&S RTH1004 using its digital inputs. Additionally, different types of multimeters use different clock timings, which will also be discussed below.
The Model 2000-SCAN
is the older 10 channel version of the scanner card and it works with all types of DMMs. The examples shown below were recorded with a DMM6500 and a Model 2002 as the host machine.
The data communication between the card and the host device requires three data lines. The CLK
line (recorded on channel D0
), the DATA
line (D2
) and a LATCH
/STROBE
line (D1
). For the 10 channel card the DMM transfers 2 blocks of 3 bytes of data. It pulls the LATCH
line high
after each block. The first block sets or unsets all relays as required, the second block turns off the relay coils. In case of the Model 2002 the CLK
and DATA
line idle high
and only the LATCH
line idles low
.
The DMM6500 uses a different scheme where all data lines idle low
as can be seen here.
The protocol itself is a series bits where each bit correspondes to a relay coil either being turned on or off. This is due to the nature of the 2-coil latching relays (Panasonic TQ2E-L2-5V
). Each of those coils is responsible for either closing the relay or opening it. 10 relays plus 1 relay to switch between 4W mode and 2W mode requires 22 bits to control, hence two fewer than the 24 bits sent.
The decoded protocol is shown here and can also verified using the schematic schown in the manual.
---
title: "2000-SCAN protocol"
---
packet-beta
0: "7⮝"
1: "8⮟"
2: "8⮝"
3: "9⮟"
4: "9⮝"
5: "10⮝"
6: "10⮟"
7: "X"
8: "5⮝"
9: "5⮟"
10: "X"
11: "4W⮟"
12: "4W⮝"
13: "6⮟"
14: "6⮝"
15: "7⮟"
16: "1⮟"
17: "1⮝"
18: "2⮟"
19: "2⮝"
20: "3⮟"
21: "3⮝"
22: "4⮟"
23: "4⮝"
⮟
means closing the channel, ⮝
means opening the channel, X
means do-not-care bit. The do-not-care bits have no meaning as those pins of the latches on the PCB are not connected. See pin Q8 of U101 (bit 7) and pin Q3 of U102 (bit 10). The do-not-care bits are typically set, but this is not required by the hardware.
As mentioned above, once the relay configuration is sent, the DMM then sends a series of zeroes to turn off the current to the relay coils. The Model 2002 waits roughly 2.8 ms
between the datablock blocks
while the DMM6500 waits 3.8 ms
for the relay to actuate.
The most striking difference between the DMM6500 and the Model 2002 is the data rate at which the signals are transferred. The clock frequency used by the Model 2002 is 2 MHz
while the DMM6500 uses a clock speed of 100 kHz
The reason for the faster clock of the Model 2002 is simple. The bus of the Model 2002 is used by multiple devices all talking on the same wire, which can be seen here:
In yellow there is a data packet for another device being transferred on the bus (D0
and D2
), but there is no LATCH
line (D1
) activity. Later there more data packets coming in and circled in red the two LATCH
signals (D1
) can be seen. There are are at least two more devices active on that bus. One transfers at 1 MHz
clock speed
The other one is even slower and shows up as seemingly rogue bits on the CLK
/D0
line.
The image above shows both of the two other devices on the bus. There is activity on the CLK
/D0
line with two different clock intervals. The lone pulse on the right side is the slow third device. This third device is the reason why using a standard microcontroller is not possible, like in v1.x of the scanner card that used an STM32 microcontroller. MCUs are aligned to a fixed number of clock cycles when reading a bus using their hardware peripherals. The extra clock pulse of the slow transmitter causes the hardware controller to desync at random intervals. Sampling the bus in software instead of the hardware interface is not feasable as well as the bus too fast at 2 MHz
. Using the latches of the original Keithley design, this is not a problem, as the last 24 bits before a LATCH
signal comes in are stored in the latch. Using an FPGA for this design allows to mimic the latches while allowing to switch between the Model 2000-SCAN protocol and the Model 2000-SCAN-20 protocol without changing the hardware.
The Model 2000-SCAN-20 is a more modern card which is only supported by the latest firmware of the Model 2000 DMM and the DMM6500. The examples shown below were recorded with a DMM6500 as the host machine.
The data communication also requires three data lines like the 10-channel card. The CLK
line (D0
), the DATA
line (D2
) and a LATCH
/STROBE
line (D1
). The protocol is a bit more straight forward, even bits disconnect the relay, odd bits connect the relay. The 20 relays plus 1 relay for the 4W mode require 42 bits. This is being sent as 6 bytes.
---
title: "2000-SCAN-20 protocol"
---
packet-beta
0-1: "11"
2-3: "12"
4-5: "13"
6-7: "14"
8-9: "15"
10-11: "16"
12-13: "17"
14-15: "18"
16-17: "19"
18-19: "20"
20-21: "1"
22-23: "2"
24-25: "3"
26-27: "4"
28-29: "5"
30-31: "6"
32-33: "7"
34-35: "8"
36-37: "9"
38-39: "10"
40-41: "4W"
42-47: "X"
For example closing CH1 is sent as two blocks of 0x00
0x00
0x00
0x20
0x00
0x00
(bit 21 is set) and 0x00
0x00
0x00
0x00
0x00
0x00
. The second block turns all relay coils off as discussed above.
The second block is sent after a delay of 3.8 ms
.
The DMM6500 clocks this bus at 100 kHz
just like the 10-channel version.
Do note, the CLK
line is input channel D1
and STROBE
is D1
in this capture.
This repository not only provides screen captures, but also the raw data obtained using the R&S RTH1004. This data can be found in the plots/ directory as csv files and can be plotted using your own plotter or the example Python Matplotlib script provided. This section shows how to install the script.
These instructions assume a Linux Bash shell and Python already installed on the system. Type or copy the following commands into a shell in the doc/plots/ directory.
python -m venv env/
source env/bin/activate
pip install - r requirements.txt
The plot script can now be executed using the following commands run inside the doc/plots/ directory
source env/bin/activate
./plotter.py <plot_file>
The source env/bin/activate
line can omitted if the virtual environment has already been activated. The <plot_file>
must be any of the Python files provided in the doc/plots/SCAN2000 or doc/plots/SCAN2000-20 subdirectories, for example
./plotter.py SCAN2000/K2002-SCAN2000_commands_and_second_transmitter.py