# BK85XXB

## class BK85XXB(visa_resource: str | VisaConfig)[source]

Bases: [`ELoadDriverBase`](https://dev.nominal.io/instro/ref/instruments/instro.eload.ELoadDriverBase.md#instro.eload.ELoadDriverBase "instro.eload.eload.ELoadDriverBase")

B&K Precision 8500B-series E-Load (8500B/8502B/8510B/8514B/8542B).

Hardware-validated against the 8514B; others share the SCPI surface but have not been bench-tested.

Methods

| [`close`](https://dev.nominal.io/instro/ref/instruments/instro.eload.drivers.bk_85xxb.BK85XXB.md#instro.eload.drivers.bk_85xxb.BK85XXB.close "instro.eload.drivers.bk_85xxb.BK85XXB.close") | Close the underlying transport. |
| --- | --- |
| [`get_current`](https://dev.nominal.io/instro/ref/instruments/instro.eload.drivers.bk_85xxb.BK85XXB.md#instro.eload.drivers.bk_85xxb.BK85XXB.get_current "instro.eload.drivers.bk_85xxb.BK85XXB.get_current") | Measure the current the load is sinking on `channel` (amperes). |
| [`get_voltage`](https://dev.nominal.io/instro/ref/instruments/instro.eload.drivers.bk_85xxb.BK85XXB.md#instro.eload.drivers.bk_85xxb.BK85XXB.get_voltage "instro.eload.drivers.bk_85xxb.BK85XXB.get_voltage") | Measure the voltage at `channel`'s terminals (volts). |
| [`open`](https://dev.nominal.io/instro/ref/instruments/instro.eload.drivers.bk_85xxb.BK85XXB.md#instro.eload.drivers.bk_85xxb.BK85XXB.open "instro.eload.drivers.bk_85xxb.BK85XXB.open") | Open the underlying transport and put the load in remote mode. |
| [`output_enable`](https://dev.nominal.io/instro/ref/instruments/instro.eload.drivers.bk_85xxb.BK85XXB.md#instro.eload.drivers.bk_85xxb.BK85XXB.output_enable "instro.eload.drivers.bk_85xxb.BK85XXB.output_enable") | Enable or disable load draw on `channel`. |
| [`set_level`](https://dev.nominal.io/instro/ref/instruments/instro.eload.drivers.bk_85xxb.BK85XXB.md#instro.eload.drivers.bk_85xxb.BK85XXB.set_level "instro.eload.drivers.bk_85xxb.BK85XXB.set_level") | Set the operating level on `channel` in the units appropriate for `mode`. |
| [`set_mode`](https://dev.nominal.io/instro/ref/instruments/instro.eload.drivers.bk_85xxb.BK85XXB.md#instro.eload.drivers.bk_85xxb.BK85XXB.set_mode "instro.eload.drivers.bk_85xxb.BK85XXB.set_mode") | Set the operating mode on `channel`: CC, CV, CP, or CR. |
| [`set_range`](https://dev.nominal.io/instro/ref/instruments/instro.eload.drivers.bk_85xxb.BK85XXB.md#instro.eload.drivers.bk_85xxb.BK85XXB.set_range "instro.eload.drivers.bk_85xxb.BK85XXB.set_range") | Set the operating range on `channel` from the expected maximum. |
| [`set_slewrate`](https://dev.nominal.io/instro/ref/instruments/instro.eload.drivers.bk_85xxb.BK85XXB.md#instro.eload.drivers.bk_85xxb.BK85XXB.set_slewrate "instro.eload.drivers.bk_85xxb.BK85XXB.set_slewrate") | Set the per-edge current slew rate on `channel`. |
| [`short_output`](https://dev.nominal.io/instro/ref/instruments/instro.eload.drivers.bk_85xxb.BK85XXB.md#instro.eload.drivers.bk_85xxb.BK85XXB.short_output "instro.eload.drivers.bk_85xxb.BK85XXB.short_output") | Apply or release the load's short on `channel`. |

### open() → None[source]

Open the underlying transport and put the load in remote mode.

### close() → None[source]

Close the underlying transport. Idempotent.

### short_output(enable: bool, channel: int) → None[source]

Apply or release the load’s short on `channel`. Takes effect immediately.

### set_mode( mode: LoadMode, channel: int, ) → None[source]

Set the operating mode on `channel`: CC, CV, CP, or CR.

Not every model supports every mode; drivers should raise
`NotImplementedError` for unsupported combinations.

### set_level( mode: LoadMode, value: float, channel: int, curr_limit: float | None, ) → None[source]

Set the operating level on `channel` in the units appropriate for `mode`.

Parameters:
:   - **mode**

      Active load mode — caller passes it explicitly so the driver
      doesn’t need to track state. Units: CC → amperes, CV → volts,
      CP → watts, CR → ohms.
    - **value**

      Operating level in `mode`’s units.
    - **channel**

      Target channel (1-indexed).
    - **curr_limit**

      Optional current limit; only meaningful in CV mode.
      Drivers may ignore it in other modes.

### set_range( mode: LoadMode, value: float, channel: int, ) → None[source]

Set the operating range on `channel` from the expected maximum.

`value` is the maximum operating value in `mode`’s units (see
[`set_level()`](https://dev.nominal.io/instro/ref/instruments/instro.eload.drivers.bk_85xxb.BK85XXB.md#instro.eload.drivers.bk_85xxb.BK85XXB.set_level "instro.eload.drivers.bk_85xxb.BK85XXB.set_level")). Drivers typically snap to the closest hardware
range that covers `value`.

### set_slewrate( direction: SlewRateDirection, rate: float, channel: int, ) → None[source]

Set the per-edge current slew rate on `channel`.

Parameters:
:   - **direction**

      `RISE`, `FALL`, or `BOTH` — which edge(s) the rate applies to.
    - **rate**

      Slew rate in amperes per microsecond (A/μs).
    - **channel**

      Target channel (1-indexed).

### output_enable(enable: bool, channel: int) → None[source]

Enable or disable load draw on `channel`.

### get_current(channel: int) → float[source]

Measure the current the load is sinking on `channel` (amperes).

### get_voltage(channel: int) → float[source]

Measure the voltage at `channel`’s terminals (volts).
