; TestController device configuration file for Keithley 199 DMM/Scanner
; Version 1.10
; Date 04-11-2025
; Written by Gertjan Miedema,  info at miedemageluid dot nl,  Username "Gertjan" at EEVblog.
; Menu structure inspired on HP 34401A menu by WA

; For use with TestController, software to control and log data: https://lygte-info.dk/project/TestControllerIntro%20UK.html
; For use with a Prologix GPIB interface, or clone. (AR488!)
; Tested with AR488 and official Prologix GPIB to USB adapters.



; Some tips:
;
; - Default Keithley 199 GPIB address is 26.
;
; - To check current GPIB address: in local state, press SHIFT -> DMM SETUP. Then press NEXT, you will see: "xx IEEE"
;   (While there, you can change GPIB address using keys 0-9. Save with NEXT -> SAVE YES)
;
; - The readout and logging is best, and fastest with continues Trigger. 
;   With one-shot trigger there can be missed measurements due to range switching, long filtering  etc.
;
; - If you have a start-up problem, and use a AR488 with a slow booting Chinese Nano clone, un-remark this command:
;     ; Start up delay, only needed for AR488 with slow booting Chinese Nano clones
;     #resetDelay 3.5


; Known issues:
;
; - Scanner functions are not implemented.
;
; - There is a bug in the GPIB implementation that HKJ has not fixed yet: It can only handle one device for each GPIB controller.




#idString Keithley,199
#name Keithley 199
#handle K199

#driver Ascii
#port GPIB
#interfaceType DMM



; Start up delay, only needed for AR488 with slow booting Chinese Nano clones
; #resetDelay 3.5

; The author statement is used for the listing in the About window.
#author Gertjan Miedema




#notes  Device configuration file for Keithley 199 DMM/Scanner.


- Default Keithley 199 GPIB address is 26.

- To check current GPIB address: in local state, press SHIFT -> DMM SETUP. Then press NEXT, you will see: "xx IEEE"
  (While there, you can change GPIB address using keys 0-9. Save with NEXT -> SAVE YES)

- For more info, tips and known issues, look in the header of this configuration file (Keithley199.txt)


Configuration file version: 1.10




;---------  GPIB settings  -------------
; Used to change the standard LF end of line to CR or CRLF.
; For eol a string is used, to write control character escapes must be used, use: /r for CR and /r/n for CRLF
; #eol /r/n

; The #gpibReadEol defines how the device terminates its answers, the default uses eoi. 
; Specifying "#gpibReadEol 10" would expect a LF character for terminating a answer.(13 = CR, 10 = LF)
; #gpibReadEol 10

; Add a small delay after each GPIB write, this can slow down the processing for old slow devices. (in ms)
; #gpibWriteDelay 10

; Minimum time before trying to read a answer from a device in ms
; #gpibWriteReadDelay 10

; ++read_tmo_ms is controlled with #readingDelay
; This specifies the timeout value, in SECONDS, that is used by the ++read command to wait for a character
; to be transmitted while reading data from the GPIB bus. The timeout value may be set between 0 and 32 seconds.
; #readingDelay 0.5






; ============== Original Keithley commands to SCPI/TestController commands translations  ==============

; There must be a line for each of the original device commands that will be used, converting it to a similar SCPI command


; -----  Commands to init & exit  -----

; command to init

; B0  Measurement output: readings from A/D converter
; G0  Data format: Readings with prefix
; G1  Data format: Readings without prefix
; R0  Auto ranging
; T0  Continuous trigger on Talk
; T1  One-shot trigger on Talk
; K0  Send EOI with last byte; hold off bus until commands processed on X. (default setting)
; Y0  Terminator of instrument's data string:  carriage return, line feed (CR LF) sequence. (default setting)

#scpiCmd init tx B0R0T0X


; command to reset
; L0  Reset, Set the multimeter to the power-on state
; [CLR]    Do a "Selected Device Clear" function.

#scpiCmd reset tx L0X

#scpiCmd clear tx [CLR]


; Final commands to counter before breaking connection, used to restore local control
; [LOC]    Go to Local, Set device in local control mode, i.e. the user interface on the device is active. 

#scpiCmd goLocal tx [LOC]



; -----  Instrument identification   ------

; Recall the model number
; G0  Data format: Readings with prefix (necessary for "199" prefix in U0 answer)
; U0  Get instrument status. Answer: first 3 digits = model number
#scpiCmd model? txrx? G0U0X
:string:
:readmath: substring(value,0,3);



; ===========  Mode & Measurement  ===========

; -----  Mode selection  ------

; U0 Get instrument status. Answer: 3th digit = function (0...6)
; G1 Data format: Readings without prefix (necessary for guaranteed position in U0 answer)

; F0  DC Volts
; F1  AC Volts
; F2  Ohms
; F3  DC Current
; F4  AC Current
; F5  ACV dB
; F6  ACA dB

; Query Measurement Function
#scpiCmd askMode? txrx? G1U0X
:string:
:readmath: substring(value,2,3);

; Set Measurement function: Volt DC
#scpiCmd voltDC tx F0X

; Set Measurement function: Volt AC
#scpiCmd voltAC tx F1X

; Set Measurement function: Ohm
#scpiCmd ohm tx F2X

; Set Measurement function: DC Current
#scpiCmd currentDC tx F3X

; Set Measurement function: AC Current
#scpiCmd currentAC tx F4X

; Set Measurement function: AC Volt dB
#scpiCmd voltACdB tx F5X

; Set Measurement function: AC Current dB
#scpiCmd currentACdB tx F6X



; -----  Ranging  ------

; U0 Get instrument status. Answer: 19th digit = function (0...7)
; G1 Data format: Readings without prefix (necessary for guaranteed position in U0 answer)

; Set Range commands:
;  R0  Auto range
;  R1  300mV, 30mA, 300R
;  R2  3V, 3A, 3k
;  R3  30V, 3A, 30k
;  R4  300V, 3A, 300k
;  R5  300V, 3A, 3M
;  R6  300V, 3A, 30M
;  R7  300V, 3A, 300M

; Query Range
#scpiCmd range? txrx? G1U0X
:string:
:readmath: substring(value,18,19);

; Set Range
#scpiCmd range tx R(value)X



; -----  Data read out  -----

; command to read current value or values.
; G1  Readings without prefix
; X   eXecute
#scpiCmd read? txrx? G1X




; ==========  Control  ==========


; -----  Resolution / Reading Rate  ------

; U0 Get instrument status. Answer: 20th digit = Rate (0 or 1)
; G1 Data format: Readings without prefix (necessary for guaranteed position in U0 answer)

; Set Resolution / Reading Rate
;  S0  4,5 digit, Integration time: 2,59msec
;  S1  5,5 digit, Integration time: line freq. (20msec @ 50Hz)

; Query Resolution / Reading Rate
#scpiCmd rate? txrx? G1U0X
:string:
:readmath: substring(value,19,20);

; Set Rate / Resolution
#scpiCmd rate tx S(value)X



; -----  Filter commands  ------

; Running average filters in order to reduce reading noise.
; U0 Get instrument status. Answer: 12th digit = Filter (0,1 or 2)
; G1 Data format: Readings without prefix (necessary for guaranteed position in U0 answer)

; Set filter
;  P0  No filtering (both filters disabled)
;  P1  Internal filter enabled (default)
;  P2  Front panel filter enabled

; Query Filter
#scpiCmd filter? txrx? G1U0X
:string:
:readmath: substring(value,11,12);

; Set Filter
#scpiCmd filter tx P(value)X



; -----  Zero commands  ------

; zero modifier (offset)
; U0 Get instrument status. Answer: 29th digit = Zero (0,1 or 2)
; G1 Data format: Readings without prefix (necessary for guaranteed  position in U0 answer)

; Set Zero (offset)
;  ZO  Zero disabled.
;  Z1  Zero enabled.
;  Z2  Zero enabled using a zero value (V).

; Query Zero (offset)
#scpiCmd offset? txrx? G1U0X
:string:
:readmath: substring(value,28,29);

; Set Zero (offset)
#scpiCmd offset tx Z(value)X



; -----  Trigger commands  ------

; U0 Get instrument status. Answer: 21th digit = Trigger (0...7)
; G1 Data format: Readings without prefix (necessary for guaranteed position in U0 answer)

; T0  Continuous trigger on Talk (default)
; T1  One-shot trigger on Talk

; Query Trigger mode
#scpiCmd trigger? txrx? G1U0X
:string:
:readmath: substring(value,20,21);

; Set Trigger mode
#scpiCmd trigger tx T(value)X



; -----  Multiplex, Auto Cal & Null  commands  ------

; U0 Get instrument status. Answer: 1st digit = Auto/Cal Multiplex (0 or 1)
; G1 Data format: Readings without prefix (necessary for guaranteed position in U0 answer)

; A0 = Auto/Cal Multiplex disabled
; A1 = Auto/Cal Multiplex enabled (default)

; Query Trigger mode
#scpiCmd mux? txrx? G1U0X
:string:
:readmath: substring(value,0,1);

; Set Trigger mode
#scpiCmd mux tx A(value)X


; ==============  End command conversion Keithley -> SCPI/TestController  ==============





;----------------------- Data read out  ------------------

; A list of possible column name with unit and formatter (SI, Time, Int, D0..D6)
; code: #value name unit format {selector}

#value Volt_DC VDC SI 0
#value Volt_AC VAC SI 1
#value Ohm Ohm SI 2 
#value Amp_DC ADC SI 3
#value Amp_AC AAC SI 4
#value Volt_AC_dB dB D5 5
#value Amp_AC_dB dB D5 6



; This is a single line command
#askValues read?




; Prepare the meter to response to #askValues
;#prepareSample



#askMode askMode?


#modeChangeDelay 0.5




; ------------------  Initial commands & Final command  -------------

; Initial commands to meter when establishing connection
#initCmd reset;[1000];init;


; Command to get a full id line and prevent connection to other devices
#verifyDevice "199" model?

; Final command to meter before breaking connection
#finalCmd reset;[1000];goLocal;[1000]; 




; ========================== MENU'S  ================================


; ==========  Mode (Function) menu  ==========

#cmdModeLayout 2 4


; code: #cmdMode modeLabel deviceModeString SCPI commands

#cmdMode Volts_DC Volt_DC
voltDC;

#cmdMode Amps_DC Amp_DC
currentDC;

#cmdMode Volts_AC Volt_AC
voltAC;

#cmdMode Amps_AC Amp_AC
currentAC;

#cmdMode Volts_AC_dB Volt_AC_dB
voltACdB;

#cmdMode Amps_AC_dB Amp_AC_dB
currentACdB;

#cmdMode Ohms Ohm_2W
ohm;

#cmdMode 2W_and_4W



; ========== Setup menu  ===========

#cmdSetup info Active_Mode
:read: askMode?
:readmath: getElement("Volts DC;Volts AC;Ohms   (auto 2- or 4-wire);Amps DC;Amps AC;dB Volts AC   (0dB=1V);dB Amps AC   (0dB=1mA)", value)
:updatemodechange:


; ----- DC Volt  -----
#cmdSetup radio Range VDC
:read: range?
:readmath: limit(value,0,4)
:write: range #;[500];
:updatedelayed: 0.5
Auto 0
300mV 1
3V 2
30V 3
300V 4
:updatemodechange:


#cmdSetup separator Range VDC
2 100 Raised


#cmdSetup radio Resolution VDC
:read: rate?
:write: rate #;[500];
:updatedelayed: 0.5
:tip: <html>4,5: Fast, 4,5 digits, 2,6msec integration period<br>5,5: Slow, 5,5 digits, line freq integration period (20ms @ 50Hz)
4,5 0
5,5 1
:updatemodechange:


#cmdSetup radio Filter VDC
:read: filter?
:write: filter #;[500];
:updatedelayed: 0.5
:tip: <html>Running average filters in order to reduce reading noise. Off: no filter (fastest)<br>Int.: Internal filter (default). Front: Front Panel filter (most averaging, but slowest)
Off 0
Int 1
Front 2
:updatemodechange:

#cmdSetup buttonsOn Zero_(Offset) VDC
:read: offset?
:write: offset #;[500];
:updatedelayed: 0.5
:tip: <html>Store a reading as an Offset<br>which is subtracted from subsequent readings
Off 0
On 1
:updatemodechange:


#cmdSetup radio Trigger_mode VDC
:read: trigger?
:write: trigger #;[500];
:updatedelayed: 0.5
:tip: <html>Cont.: continuous trigger mode. Fastest and with least errors. (default)<br>One-shot: one measurement per interval. More prone to missed measurements because of range changing etc.
Cont. 0
One_shot 1
:updatemodechange:


#cmdSetup radio MUX_Auto/Cal VDC
:read: mux?
:write: mux #;[500];
:updatedelayed: 0.5
:tip: <html>MUX On: Multiplex enabled, including auto Cal & Null routines (default)<br>MUX Off: no Auto/Cal, faster, less induced noise with hi-imp sources, but less accurate.
Off 0
On 1
:updatemodechange:




; ----- AC Volt  -----
#cmdSetup radio Range VAC
:read: range?
:readmath: limit(value,0,4)
:write: range #;[500]
:updatedelayed: 0.5
Auto 0
300mV 1
3V 2
30V 3
300V 4
:updatemodechange:


#cmdSetup separator Range VAC
2 100 Raised


#cmdSetup radio Resolution VAC
:read: rate?
:write: rate #;[500];
:updatedelayed: 0.5
:tip: <html>4,5: Fast, 4,5 digits, 2,6msec integration period<br>5,5: Slow, 5,5 digits, line freq integration period (20ms @ 50Hz)
4,5 0
5,5 1
:updatemodechange:


#cmdSetup radio Filter VAC
:read: filter?
:write: filter #;[500];
:updatedelayed: 0.5
:tip: <html>Running average filters in order to reduce reading noise. Off: no filter (fastest)<br>Int.: Internal filter (default). Front: Front Panel filter (most averaging, but slowest)
Off 0
Int 1
Front 2
:updatemodechange:


#cmdSetup buttonsOn Zero_(Offset) VAC
:read: offset?
:write: offset #;[500];
:updatedelayed: 0.5
:tip: <html>Store a reading as an Offset<br>which is subtracted from subsequent readings
Off 0
On 1
:updatemodechange:


#cmdSetup radio Trigger_mode VAC
:read: trigger?
:write: trigger #;[500];
:updatedelayed: 0.5
:tip: <html>Cont.: continuous trigger mode. Fastest and with least errors. (default)<br>One-shot: one measurement per interval. More prone to missed measurements because of range changing etc.
Cont. 0
One_shot 1
:updatemodechange:


#cmdSetup radio MUX_Auto/Cal VAC
:read: mux?
:write: mux #;[500];
:updatedelayed: 0.5
:tip: <html>MUX On: Multiplex enabled, including auto Cal & Null routines (default)<br>MUX Off: no Auto/Cal, faster, less induced noise with hi-imp sources, but less accurate.
Off 0
On 1
:updatemodechange:




; ----- Ohm -----
#cmdSetup radio Range Ohm
:read: range?
:write: range #;[500]
:updatedelayed: 0.5
Auto 0
300R 1
3k 2
30k 3
:updatemodechange:

#cmdSetup radio Range Ohm
:read: range?
:write: range #;[500]
:updatedelayed: 0.5
300k 4
3M 5
30M 6
300M 7
:updatemodechange:


#cmdSetup separator Range Ohm
2 100 Raised


#cmdSetup radio Resolution Ohm
:read: rate?
:write: rate #;[500];
:updatedelayed: 0.5
:tip: <html>4,5: Fast, 4,5 digits, 2,6msec integration period<br>5,5: Slow, 5,5 digits, line freq integration period (20ms @ 50Hz)
4,5 0
5,5 1
:updatemodechange:


#cmdSetup radio Filter Ohm
:read: filter?
:write: filter #;[500];
:updatedelayed: 0.5
:tip: <html>Running average filters in order to reduce reading noise. Off: no filter (fastest)<br>Int.: Internal filter (default). Front: Front Panel filter (most averaging, but slowest)
Off 0
Int 1
Front 2
:updatemodechange:


#cmdSetup buttonsOn Zero_(Offset) Ohm
:read: offset?
:write: offset #;[500];
:updatedelayed: 0.5
:tip: <html>Store a reading as an Offset<br>which is subtracted from subsequent readings
Off 0
On 1
:updatemodechange:


#cmdSetup radio Trigger_mode Ohm
:read: trigger?
:write: trigger #;[500];
:updatedelayed: 0.5
:tip: <html>Cont.: continuous trigger mode. Fastest and with least errors. (default)<br>One-shot: one measurement per interval. More prone to missed measurements because of range changing etc.
Cont. 0
One_shot 1
:updatemodechange:


#cmdSetup radio MUX_Auto/Cal Ohm
:read: mux?
:write: mux #;[500];
:updatedelayed: 0.5
:tip: <html>MUX On: Multiplex enabled, including auto Cal & Null routines (default)<br>MUX Off: no Auto/Cal, faster, less induced noise with hi-imp sources, but less accurate.
Off 0
On 1
:updatemodechange:



; ----- DC Current  -----
#cmdSetup radio Range ADC
:read: range?
:readmath: limit(value,0,2)
:write: range #;[500]
:updatedelayed: 0.5
Auto 0
30mA 1
3A 2
:updatemodechange:


#cmdSetup separator Range ADC
2 100 Raised


#cmdSetup radio Resolution ADC
:read: rate?
:write: rate #;[500];
:updatedelayed: 0.5
:tip: <html>4,5: Fast, 4,5 digits, 2,6msec integration period<br>5,5: Slow, 5,5 digits, line freq integration period (20ms @ 50Hz)
4,5 0
5,5 1
:updatemodechange:


#cmdSetup radio Filter ADC
:read: filter?
:write: filter #;[500];
:updatedelayed: 0.5
:tip: <html>Running average filters in order to reduce reading noise. Off: no filter (fastest)<br>Int.: Internal filter (default). Front: Front Panel filter (most averaging, but slowest)
Off 0
Int 1
Front 2
:updatemodechange:


#cmdSetup buttonsOn Zero_(Offset) ADC
:read: offset?
:write: offset #;[500];
:updatedelayed: 0.5
:tip: <html>Store a reading as an Offset<br>which is subtracted from subsequent readings
Off 0
On 1
:updatemodechange:


#cmdSetup radio Trigger_mode ADC
:read: trigger?
:write: trigger #;[500];
:updatedelayed: 0.5
:tip: <html>Cont.: continuous trigger mode. Fastest and with least errors. (default)<br>One-shot: one measurement per interval. More prone to missed measurements because of range changing etc.
Cont. 0
One_shot 1
:updatemodechange:


#cmdSetup radio MUX_Auto/Cal ADC
:read: mux?
:write: mux #;[500];
:updatedelayed: 0.5
:tip: <html>MUX On: Multiplex enabled, including auto Cal & Null routines (default)<br>MUX Off: no Auto/Cal, faster, less induced noise with hi-imp sources, but less accurate.
Off 0
On 1
:updatemodechange:




; ----- AC Current  -----
#cmdSetup radio Range AAC
:read: range?
:readmath: limit(value,0,2)
:write: range #;[500]
:updatedelayed: 0.5
Auto 0
30mA 1
3A 2
:updatemodechange:


#cmdSetup separator Range AAC
2 100 Raised


#cmdSetup radio Resolution AAC
:read: rate?
:write: rate #;[500];
:updatedelayed: 0.5
:tip: <html>4,5: Fast, 4,5 digits, 2,6msec integration period<br>5,5: Slow, 5,5 digits, line freq integration period (20ms @ 50Hz)
4,5 0
5,5 1
:updatemodechange:


#cmdSetup radio Filter AAC
:read: filter?
:write: filter #;[500];
:updatedelayed: 0.5
:tip: <html>Running average filters in order to reduce reading noise. Off: no filter (fastest)<br>Int.: Internal filter (default). Front: Front Panel filter (most averaging, but slowest)
Off 0
Int 1
Front 2
:updatemodechange:


#cmdSetup buttonsOn Zero_(Offset) AAC
:read: offset?
:write: offset #;[500];
:updatedelayed: 0.5
:tip: <html>Store a reading as an Offset<br>which is subtracted from subsequent readings
Off 0
On 1
:updatemodechange:


#cmdSetup radio Trigger_mode AAC
:read: trigger?
:write: trigger #;[500];
:updatedelayed: 0.5
:tip: <html>Cont.: continuous trigger mode. Fastest and with least errors. (default)<br>One-shot: one measurement per interval. More prone to missed measurements because of range changing etc.
Cont. 0
One_shot 1
:updatemodechange:


#cmdSetup radio MUX_Auto/Cal AAC
:read: mux?
:write: mux #;[500];
:updatedelayed: 0.5
:tip: <html>MUX On: Multiplex enabled, including auto Cal & Null routines (default)<br>MUX Off: no Auto/Cal, faster, less induced noise with hi-imp sources, but less accurate.
Off 0
On 1
:updatemodechange:



; ----- dB Volt AC  -----
#cmdSetup radio Range DBV
:read: range?
:readmath: limit(value,0,0)
:write: range #;[500]
:updatedelayed: 0.5
Auto 0
:updatemodechange:


#cmdSetup separator Range DBV
2 100 Raised


#cmdSetup radio Resolution DBV
:read: rate?
:write: rate #;[500];
:updatedelayed: 0.5
:tip: <html>4,5: Fast, 4,5 digits, 2,6msec integration period<br>5,5: Slow, 5,5 digits, line freq integration period (20ms @ 50Hz)
4,5 0
5,5 1
:updatemodechange:


#cmdSetup radio Filter DBV
:read: filter?
:write: filter #;[500];
:updatedelayed: 0.5
:tip: <html>Running average filters in order to reduce reading noise. Off: no filter (fastest)<br>Int.: Internal filter (default). Front: Front Panel filter (most averaging, but slowest)
Off 0
Int 1
Front 2
:updatemodechange:


#cmdSetup buttonsOn Zero_(Offset) DBV
:read: offset?
:write: offset #;[500];
:updatedelayed: 0.5
:tip: <html>Store a reading as an Offset<br>which is subtracted from subsequent readings
Off 0
On 1
:updatemodechange:


#cmdSetup radio Trigger_mode DBV
:read: trigger?
:write: trigger #;[500];
:updatedelayed: 0.5
:tip: <html>Cont.: continuous trigger mode. Fastest and with least errors. (default)<br>One-shot: one measurement per interval. More prone to missed measurements because of range changing etc.
Cont. 0
One_shot 1
:updatemodechange:


#cmdSetup radio MUX_Auto/Cal DBV
:read: mux?
:write: mux #;[500];
:updatedelayed: 0.5
:tip: <html>MUX On: Multiplex enabled, including auto Cal & Null routines (default)<br>MUX Off: no Auto/Cal, faster, less induced noise with hi-imp sources, but less accurate.
Off 0
On 1
:updatemodechange:




; ----- dB Current AC -----
#cmdSetup radio Range DBA
:read: range?
:readmath: limit(value,0,0)
:write: range #;[500]
:updatedelayed: 0.5
Auto 0
:updatemodechange:


#cmdSetup separator Range DBA
2 100 Raised


#cmdSetup radio Resolution DBA
:read: rate?
:write: rate #;[500];
:updatedelayed: 0.5
:tip: <html>4,5: Fast, 4,5 digits, 2,6msec integration period<br>5,5: Slow, 5,5 digits, line freq integration period (20ms @ 50Hz)
4,5 0
5,5 1
:updatemodechange:


#cmdSetup radio Filter DBA
:read: filter?
:write: filter #;[500];
:updatedelayed: 0.5
:tip: <html>Running average filters in order to reduce reading noise. Off: no filter (fastest)<br>Int.: Internal filter (default). Front: Front Panel filter (most averaging, but slowest)
Off 0
Int 1
Front 2
:updatemodechange:


#cmdSetup buttonsOn Zero_(Offset) DBA
:read: offset?
:write: offset #;[500];
:updatedelayed: 0.5
:tip: <html>Store a reading as an Offset<br>which is subtracted from subsequent readings
Off 0
On 1
:updatemodechange:


#cmdSetup radio Trigger_mode DBA
:read: trigger?
:write: trigger #;[500];
:updatedelayed: 0.5
:tip: <html>Cont.: continuous trigger mode. Fastest and with least errors. (default)<br>One-shot: one measurement per interval. More prone to missed measurements because of range changing etc.
Cont. 0
One_shot 1
:updatemodechange:


#cmdSetup radio MUX_Auto/Cal DBA
:read: mux?
:write: mux #;[500];
:updatedelayed: 0.5
:tip: <html>MUX On: Multiplex enabled, including auto Cal & Null routines (default)<br>MUX Off: no Auto/Cal, faster, less induced noise with hi-imp sources, but less accurate.
Off 0
On 1
:updatemodechange:




;  ------  Mode menu selector  ------
#cmdSetup selector Mode_settings 
:read: askMode?
:updatemodechange:
0 VDC.
1 VAC.
2 Ohm.
3 ADC.
4 AAC.
5 DBV.
6 DBA.

 