Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Core concepts

Bio-C brings together the monitoring and control of a bioreactor. It reads measurements from connected devices and lets operators and automated processes adjust equipment such as pumps and gas flow controllers from one system.

What Bio-C is trying to solve

A reactor setup should be able to grow with the experiment. Some existing biocontrollers restrict you to a fixed set of devices, such as a single pH probe. Bio-C is designed to support an arbitrary number of devices: adding a second probe or another pump should not mean rethinking the whole controller.

There can also be several sources asking those devices to do different things. An operator might set a pump speed at the reactor while a control loop or the BCS sends its own setpoint. Bio-C needs to sort out which request takes effect without compromising the safety of the person standing in front of the reactor. That means giving the local operator a way to take control that remote requests cannot override, while still allowing safety processes to intervene. The authority structure handles these competing requests.

That flexibility creates some technical challenges. A control loop needs to refer to the probe doing a particular job, even if someone replaces the physical probe. This is why Bio-C uses aliases for peripherals. It also needs a common way to describe what each device can measure and control, so the control logic and GUI can work with different devices without needing a separate implementation for every model. The following chapters explain how these ideas fit into the system architecture.

Crate overview

The crate map groups executable modules, supporting utilities, and drivers. Arrows show which groups shared code supports and where drivers are used.

Bio-C crate overview Shared crates: alias, config, database, json-utils, notifications, and common. These support modules, utilities, and drivers. Peripheral Manager uses the driver layer. supports Modules system control gui scada peripheral-manager Utilities sds-autoconfig redis-bioc test-structure uses Drivers peripheral stream-util Device drivers alicat · arc · bronkhorst engel · mettlertoledo · overdigit pumpower · sartorius · thermo peripheralderive Shared crates alias config database json-utils notifications common