# FlowControllerDriverBase

## class FlowControllerDriverBase[source]

Bases: [`ABC`](https://docs.python.org/3/library/abc.html#abc.ABC "(in Python v3.15)")

Vendor flow-controller driver contract. Concrete drivers own their transport and lifecycle.

Attributes

| [`mass_flow`](https://dev.nominal.io/instro/ref/instruments/instro.unstable.flowcontroller.FlowControllerDriverBase.md#instro.unstable.flowcontroller.FlowControllerDriverBase.mass_flow "instro.unstable.flowcontroller.FlowControllerDriverBase.mass_flow") | Current mass flow reading. |
| --- | --- |
| [`pressure`](https://dev.nominal.io/instro/ref/instruments/instro.unstable.flowcontroller.FlowControllerDriverBase.md#instro.unstable.flowcontroller.FlowControllerDriverBase.pressure "instro.unstable.flowcontroller.FlowControllerDriverBase.pressure") | Current pressure reading. |
| [`process_value`](https://dev.nominal.io/instro/ref/instruments/instro.unstable.flowcontroller.FlowControllerDriverBase.md#instro.unstable.flowcontroller.FlowControllerDriverBase.process_value "instro.unstable.flowcontroller.FlowControllerDriverBase.process_value") | Current process value (primary feedback measurement for control). |
| [`process_value_source`](https://dev.nominal.io/instro/ref/instruments/instro.unstable.flowcontroller.FlowControllerDriverBase.md#instro.unstable.flowcontroller.FlowControllerDriverBase.process_value_source "instro.unstable.flowcontroller.FlowControllerDriverBase.process_value_source") | Key constant (e.g. MASS_FLOW_KEY, VOLUMETRIC_FLOW_KEY, PRESSURE_KEY) indicating which measurement is the process value. |
| [`setpoint`](https://dev.nominal.io/instro/ref/instruments/instro.unstable.flowcontroller.FlowControllerDriverBase.md#instro.unstable.flowcontroller.FlowControllerDriverBase.setpoint "instro.unstable.flowcontroller.FlowControllerDriverBase.setpoint") | Current setpoint in the device's configured engineering units. |
| [`volumetric_flow`](https://dev.nominal.io/instro/ref/instruments/instro.unstable.flowcontroller.FlowControllerDriverBase.md#instro.unstable.flowcontroller.FlowControllerDriverBase.volumetric_flow "instro.unstable.flowcontroller.FlowControllerDriverBase.volumetric_flow") | Current volumetric flow reading. |

Methods

| [`close`](https://dev.nominal.io/instro/ref/instruments/instro.unstable.flowcontroller.FlowControllerDriverBase.md#instro.unstable.flowcontroller.FlowControllerDriverBase.close "instro.unstable.flowcontroller.FlowControllerDriverBase.close") | Close the underlying transport. |
| --- | --- |
| [`get_flow_data`](https://dev.nominal.io/instro/ref/instruments/instro.unstable.flowcontroller.FlowControllerDriverBase.md#instro.unstable.flowcontroller.FlowControllerDriverBase.get_flow_data "instro.unstable.flowcontroller.FlowControllerDriverBase.get_flow_data") | Read a full measurement frame from the device. |
| [`open`](https://dev.nominal.io/instro/ref/instruments/instro.unstable.flowcontroller.FlowControllerDriverBase.md#instro.unstable.flowcontroller.FlowControllerDriverBase.open "instro.unstable.flowcontroller.FlowControllerDriverBase.open") | Open the underlying transport. |
| [`select_working_fluid`](https://dev.nominal.io/instro/ref/instruments/instro.unstable.flowcontroller.FlowControllerDriverBase.md#instro.unstable.flowcontroller.FlowControllerDriverBase.select_working_fluid "instro.unstable.flowcontroller.FlowControllerDriverBase.select_working_fluid") | Select the active working fluid by name; driver resolves the device-internal identifier. |
| [`set_setpoint`](https://dev.nominal.io/instro/ref/instruments/instro.unstable.flowcontroller.FlowControllerDriverBase.md#instro.unstable.flowcontroller.FlowControllerDriverBase.set_setpoint "instro.unstable.flowcontroller.FlowControllerDriverBase.set_setpoint") | Command a new flow setpoint in the device's configured engineering units. |
| [`tare_flow`](https://dev.nominal.io/instro/ref/instruments/instro.unstable.flowcontroller.FlowControllerDriverBase.md#instro.unstable.flowcontroller.FlowControllerDriverBase.tare_flow "instro.unstable.flowcontroller.FlowControllerDriverBase.tare_flow") | Zero the flow reading. |

### abstractmethod open() → None[source]

Open the underlying transport.

### abstractmethod close() → None[source]

Close the underlying transport. Idempotent.

### abstractmethod get_flow_data() → FlowData[source]

Read a full measurement frame from the device.

### abstractmethod set_setpoint(setpt: float) → float[source]

Command a new flow setpoint in the device’s configured engineering units.

### abstractmethod select_working_fluid(fluid_name: str) → str[source]

Select the active working fluid by name; driver resolves the device-internal identifier.

### tare_flow() → FlowData[source]

Zero the flow reading. Device must have zero flow when called. Raises NotImplementedError if controller does not support taring.

### abstract property setpoint: float

Current setpoint in the device’s configured engineering units. Required for all controller types.

### property mass_flow: float

Current mass flow reading. Raises NotImplementedError if controller does not measure mass flow.

### property volumetric_flow: float

Current volumetric flow reading. Raises NotImplementedError if controller does not measure volumetric flow.

### property pressure: float

Current pressure reading. Raises NotImplementedError if controller does not measure pressure.

### abstract property process_value: float

Current process value (primary feedback measurement for control). Each controller variant returns its primary measured value.

### abstract property process_value_source: str

Key constant (e.g. MASS_FLOW_KEY, VOLUMETRIC_FLOW_KEY, PRESSURE_KEY) indicating which measurement is the process value.
