Instrument profiles - B&K 2831E and DAQ3120
INSTRUMENT PROFILES - B&K 2831E (x2) and B&K DAQ3120
Extract of the project's instrument_profiles.yaml (YAML text; comments preserved).
Every number is a MANUFACTURER CAPABILITY, not an approved operating limit.
'TBD' means not yet known - the discovery tool exists to find many of these values.
==============================================================================
instruments:
dmm_a:
equipment_id: EQ-003
role: Harness electrical measurement A
model_expected: BK_2831E
manufacturer: B&K Precision
identity_verified_from_nameplate: false
serial_number: TBD
firmware_version: TBD
calibration_due: TBD
required: TBD
transport:
planned: USB_VIRTUAL_COM # NOT USBTMC - confirmed SRC-02 p.40, p.71
class: SERIAL
resource: TBD # e.g. COM port, assign after discovery, map by serial number
# USB bridge identified from B&K's own driver package (slabvcp.inf).
# Enumerate by vid+pid+serial_number via pyserial comports(); NEVER hard-code a COM number.
usb_bridge: SILICON_LABS_CP210x
usb_vid: 0x10C4
usb_pid: 0xEA60 # dual-port variants are 0xEA70 with Mi_00 / Mi_01
driver: CP210x_VCP
bundled_driver_version: 6.6.0.0 # dated 2012-10-05, predates Win10/11 - obtain current SiLabs driver
# R-DMM-02: CP210x units often share a factory serial string. Test with BOTH meters
# connected before relying on serial-based mapping; if they collide, fall back to a
# documented physical-port binding and make it a commissioning checklist item.
serial_uniqueness_verified: false
baud_rate: 9600 # factory default, SRC-02 p.41
data_bits: 8
stop_bits: 1
parity: none
terminator: LF # LF or CR, set on the instrument, SRC-02 p.40
# Documented protocol quirks the driver MUST implement - SRC-02 p.41 5.2.4
per_character_echo_handshake: true
one_query_per_command_line: true
slow_commands_require_wait: ["*RST"]
response_format: "SD.DDDDDDESDDD<NL>"
capability:
identify_command_id: CR-2831E-001
functions: [VOLT_DC, VOLT_AC, CURR_DC, CURR_AC, RESISTANCE_2W, FREQUENCY, PERIOD, DIODE, CONTINUITY]
resistance_wire_mode: 2_WIRE_ONLY
max_input_voltage_dc_v: 1000
max_input_voltage_ac_vrms: 750
max_input_current_a: 20
max_input_current_20a_range_duration_s: 20 # >10-20 A readable for 20 s max, SRC-02 p.66
current_input_fuse: "1 A / 250 V"
resistance_open_circuit_voltage_v: 5.5
continuity_range_ohm: 200
continuity_threshold_pct_of_range: 5 # ~10 ohm
continuity_test_current_a: 0.0005
warmup_minutes: 30
resistance_ranges_ohm: [200, 2.0e3, 20.0e3, 200.0e3, 2.0e6, 20.0e6]
# Ranges <= 20 kohm are specified ONLY under REL (null). See P0-DOC-02 2.5.
resistance_low_ranges_require_rel: [200, 2.0e3, 20.0e3]
reading_rates_per_second:
dcv: {slow: 5, med: 10, fast: 25}
dci: {slow: 5, med: 10, fast: 25}
acv: {slow: 5, med: 10, fast: 25}
aci: {slow: 5, med: 10, fast: 25}
ohm_below_2M: {slow: 5, med: 10, fast: 25}
ohm_20M_above: {slow: 1.3, med: 2.6, fast: 5.6}
dual_display: {slow: 0.9, med: 0.9, fast: 0.8}
approved_limits:
approved_max_voltage_v: TBD
approved_max_current_a: TBD
known_gaps:
- "No error/status queue query documented - instrument error state is not machine-readable (CR-2831E-BLOCKED-04)"
- "No SCPI limit/compare subsystem - pass/fail must be evaluated in the application (CR-2831E-BLOCKED-03)"
- "HOLD subsystem listed but not documented (CR-2831E-BLOCKED-02)"
- ":READ? and :MEASure? referenced but never defined (CR-2831E-BLOCKED-01)"
dmm_b:
equipment_id: EQ-004
role: Harness electrical measurement B
same_profile_as: dmm_a
identity_verified_from_nameplate: false
serial_number: TBD
firmware_version: TBD
transport:
planned: USB_VIRTUAL_COM
resource: TBD # MUST be mapped by serial number, not by port order
approved_limits:
approved_max_voltage_v: TBD
approved_max_current_a: TBD
daq:
equipment_id: EQ-005
role: Multi-channel harness measurement and switching
model_expected: BK_DAQ3120
manufacturer: B&K Precision
identity_verified_from_nameplate: false
serial_number: TBD
firmware_version: TBD
calibration_due: TBD
required: TBD
transport:
planned: LAN # per concept drawing S2 / COM-004
available: [LAN, USB_TMC, USB_VCP, MICRO_GPIB_OPTION]
resource: TBD
ip_address: TBD
production_transport_declared: false
ethernet_speed: 10BaseT_100BaseTx
usb_device_port_protocol: SELECTABLE_TMC_OR_CDC # front panel INTERFACE CONFIGURATION menu
usb_speed: USB_2_0_FULL_SPEED
gpib_address_default: 15 # range 0-30, -GPIB models only
raw_socket_port: TBD # manual example uses 5025; confirm by query on the unit
telnet_port_default: 5024
# Disable on a production station unless IT approves; both are SCPI-settable.
telnet_enabled: DISABLE_UNLESS_IT_APPROVED
web_interface_enabled: DISABLE_UNLESS_IT_APPROVED
command_register_status: TRANSCRIBED
programming_manual: "manuals/DAQ3120_programming_manual.pdf (139 pp, version 2026-01-07)"
# Machine-readable identity and health - unlike the 2831E.
identity_query_available: true # *IDN? -> "B&K Precision, DAQ3120, <Serial>, <Firmware>"
error_queue_query_available: true # SYSTem:ERRor?
module_query_available: true # SYSTem:CTYPe? <slot 1-3> - verify modules at connect time
line_frequency_query_available: true # SYSTem:LFRequency? - read it, do not assume
capability:
slots: 3
max_channels_per_system: 120
builtin_dmm_digits: 6.5
internal_memory_samples: 100000
max_reading_rate_per_second: 38400
stabilization_minutes: 60
ac_input: "100-240 VAC +/-10%, 50/60 Hz, 50 VA max"
rack_height_mm: 88 # ~2U - P0-DOC-01 S1 shows 3U, discrepancy to resolve
rackmount_kit: RKDAQ
digital_io:
alarm_outputs: 4
eom_output: 1
external_trigger_input: 1
dc_voltage_ranges_v: [0.1, 1, 10, 100, 600]
dc_voltage_input_protection_v: 600
resistance_ranges_ohm: [100, 1.0e3, 10.0e3, 100.0e3, 1.0e6, 10.0e6, 100.0e6, 1.0e9]
# 2-wire without math null adds 2 ohm error - decisive for harness continuity
resistance_2wire_without_null_extra_error_ohm: 2
resistance_100M_and_1G_are_2wire_only: true
dc_current_ranges_a: [1.0e-6, 10.0e-6, 100.0e-6, 1.0e-3, 10.0e-3, 100.0e-3, 2]
dc_current_input_fuse: "internal 250 V fuse for 2 A"
# Channel addressing is <slot><channel>: slot 1 -> 1xx, slot 2 -> 2xx, slot 3 -> 3xx.
# Computed "Computer Channels" are 401-420.
channel_addressing: "(@<slot><ch>)"
computer_channels: [401, 420]
installed_modules: TBD # MUST be physically recorded - see finding F-DAQ-01.
# SYSTem:CTYPe? <slot> can verify this at connect time.
# Reference data for whichever modules turn out to be installed.
# NOTE: the datasheet lists 5 modules; the USER MANUAL lists 7. DM307 and DM308 below
# come from the user manual (P0-DOC-03 3.4) and were previously unknown to this project.
module_catalog:
DM300: {channels: 20, current_channels: 0, switching: SOLID_STATE_2W, scan_ch_per_s: 450, max_voltage_v: 120, max_current_a: null, four_wire: true, internal_dmm: true, notes: "two 10-ch banks, fully isolated, CJC built in. NO current, RTD, thermistor or capacitance"}
DM301: {channels: 20, current_channels: 2, switching: ARMATURE_2W, scan_ch_per_s: 80, max_voltage_v: 300, max_current_a: 1, four_wire: true, internal_dmm: true, notes: "2W and 4W mixable on same module, CJC built in. Current is on channels 21 and 22 only - CONFIRM addressing on the bench (CR-DAQ-OPEN-03)"}
DM303: {channels: 40, current_channels: 0, switching: ARMATURE_1W, scan_ch_per_s: 80, max_voltage_v: 300, max_current_a: null, four_wire: false, internal_dmm: true, notes: "common signal ground, floatable to 300 V, no current, no 4-wire"}
DM304: {channels: 32, current_channels: 0, switching: MATRIX_4x8_2W, scan_ch_per_s: null, max_voltage_v: 300, max_current_a: null, four_wire: null, internal_dmm: false, notes: "3 ms switching, expandable to 96 cross-points, DOES NOT connect to built-in DMM"}
DM307: {channels: 16, current_channels: 0, switching: MULTIFUNCTION, scan_ch_per_s: null, max_voltage_v: 42, max_current_a: null, four_wire: null, internal_dmm: false, notes: "16-bit digital I/O (two 8-bit registers), 1x 100 kHz totalizer input (42 V), 2x 18-bit DAC output +/-12 V @ +/-24 mA. Stimulus source candidate"}
DM308: {channels: 20, current_channels: 0, switching: FORM_C_SPDT_RELAY, scan_ch_per_s: null, max_voltage_v: 300, max_current_a: null, four_wire: null, internal_dmm: false, notes: "Actuator / general-purpose switch. Thermal offset <4 uV. Fixture ACTUATION candidate - not considered in P0-DOC-01"}
DM309: {channels: 8, current_channels: 2, switching: ARMATURE_2W, scan_ch_per_s: 60, max_voltage_v: 600, max_current_a: 2, four_wire: true, internal_dmm: true, notes: "600 VDC / 400 Vrms, per-channel fuse in module, TC needs EXTERNAL cold junction and manual reference"}
# DB-9 female, rear panel. TTL SIGNALLING ONLY - not a safety-rated interface.
# Must never be presented as proof that hazardous energy is removed.
digital_io:
connector: DB9_FEMALE
safety_rated: false
pins:
1: {name: Alarm_OUT1, dir: out, type: TTL, note: "selectable TTL logic Hi or Lo"}
2: {name: Alarm_OUT2, dir: out, type: TTL, note: "selectable TTL logic Hi or Lo"}
3: {name: Alarm_OUT3, dir: out, type: TTL, note: "selectable TTL logic Hi or Lo"}
4: {name: Alarm_OUT4, dir: out, type: TTL, note: "selectable TTL logic Hi or Lo"}
5: {name: EOM_Out, dir: out, type: TTL, note: "End of Measurement - activates when a compare measurement completes"}
6: {name: Ext_Trig_In, dir: in, type: TTL, note: "external trigger input, pulse >= 10 us"}
7: {name: Digital_Ground, dir: null, type: GND, note: "chassis ground for digital circuits"}
8: {name: NC, dir: null, type: null, note: "not connected"}
9: {name: NC, dir: null, type: null, note: "not connected"}
# Switching safety rules - see command_register.md 3.6
routing_rules:
default_close_command: ROUTe_CLOSe_EXCLusive # break-before-make
plain_close_requires_reviewed_intent: true # ROUTe:CLOSe leaves other channels closed
synchronize_on: ROUTe_DONE # never a fixed sleep
open_all_on_exit: true # incl. abort, timeout, exception, app close
routes_blocked_until_fixture_map_exists: true
# INSTrument:DMM OFF turns the DAQ into a pure switch so the external 2831E DMMs
# can measure routed harness pins. TOGGLING IT FORCES A FACTORY RESET (*RST),
# discarding the scan list and all channel configuration - connect-time decision only.
internal_dmm_mode: TBD # ON = internal DMM measures, OFF = pure switch
internal_dmm_toggle_forces_factory_reset: true
channel_map: TBD # requires fixture schematic - P0-DOC-01 OBS-009
forbidden_route_combinations: TBD
approved_limits:
approved_max_voltage_v: TBD
approved_max_current_a: TBD
known_gaps:
- "F-DAQ-01: '60 channel with DM301' implies 3 x DM301; module list must be physically confirmed"
- "F-DAQ-02: DAQ cannot measure DUT current (1 A / 2 A max vs 240 A DUT)"
- "F-DAQ-03: 4-wire pairs bank-1 with bank-2 channels, halving usable 4-wire points"
- "Rack height 2U per datasheet vs 3U in P0-DOC-01 drawing S1"
- "R-DAQ-06: module lineup is 7 not 5; DM308 (Form C actuator) and DM307 (DAC + DIO) newly identified"
- "CR-DAQ-OPEN-01: SYSTem:CTYPe? response string format not documented - capture on bench"
- "CR-DAQ-OPEN-02: SYSTem:ERRor? error-code table not in the programming manual"
- "CR-DAQ-OPEN-03: DM301 current channel addressing (21/22 -> @121/@122?) needs bench confirmation"
- "CR-DAQ-OPEN-05: R? block-data format (#279...) parsing rules need bench confirmation"