HACS Components
General description
Most HAC Components provide a software interface to some bit of hardware. The hardware may be a single device or sensor, or it can be complex virtual device comprising several interrelated sub-components that are conveniently operated or treated as a coordinated unit. Development emphasis is focused on implementing natural-language properties and methods for controlling the Component in an intuitive way.
Each HACS Component is a C# class with built-in instance searching and a common sequence of primary instance "lifetime" events: Connect, Initialize, Start, and Stop. Finer lifetime event granularity, when required, is achieved by additional "Pre-" and "Post-" events for each primary event. This structure enables the system to automatically manage component interconnections and dependencies, freeing the programmer from having to manually coordinate these relationships.
Most system developers never need to write or edit their own Component classes. However, exceptions arise with a need to support a new kind of hardware, or the desire for a new, composite virtual Component to simplify process code. When necessary, the existing classes provide a rich set of examples to choose from as a basis.
Not all HACS Components are likely to be used by the typical system developer writing process code. Many, though accessible, are intended primarily for use by other Component classes. Examples of this include the ActuatorController and ThermalControllers. Normally, once the system configuration has been defined in the Settings File, the system developer will simply use the Valve, Heater, and TempSensor objects, and never encounter the controller code running "under the hood".
Existing HACS Components
- Actuator
A device driven by an RC servo or by one of Aeon's serial-communicating servos.
- ActuatorController : Controller
Aeon's multiplexing Actuator Controller. This class manages a bank of "Actuators" and a queue of motion requests, performing the requested operations in sequence.
- AnalogOutput
A LabJack DAQ 0-5 VDC analog output.
- CEGS : ProcessManager
This is a base implementation for a general-purpose Carbon Extraction and Graphitization System (CEGS) capable of processing organic, carbonate, and flame-sealed gas ampoule CO2 samples.
- Chamber
A valve-enclosed volume in a the vacuum plumbing system.
- Controller
A base class for devices that use serial communication (e.g., RS2332 or RS485).
- DigitalOutput
A LabJack DAQ 0-3.3 VDC digital output.
- DynamicQuantity
A value that normally varies over time, usually a representation of a real-world condition. The class provides options for a configurable digital filter and rate-of-change monitoring.
- Eurotherm818Furnace : TubeFurnace
A "TubeFurnace" implementation for furnaces with Eurotherm's (old) 818 series controllers.
- EurothermFurnace : TubeFurnace
A "TubeFurnace" implementation for furnaces with Eurotherm's series 2000 controllers.
- ExtractionLine : ProcessManager
A process manager for an integrated satellite tube-furnace/vacuum subsystem capable of partial sample processing on its own.
- FTColdfinger
"Freeze-Thaw coldfinger" : A temperature-control device for a vacuum line coldfinger, capable of two settings: freezing (using liquid nitrogen) or thawing (to room temperature).
- GasSupply
A complex device class that manages the introduction of pressure-regulated cylinder gas into a destination "section" of the vacuum system.
- GraphiteReactor : Port
A complex device class that autonomously manages the catalytic hydrogen-reduction of CO2 gas into solid carbon over iron powder.
- HacsLog
A log file implementation designed to be managed using the HACS Component framework.
- Heater
A device operated by Aeon's 6-channel heater controller, either a ceramic fiber oven/furnace or a VTC heater element. Both manual power level (0-100%) and temperature setpoint control (managed by a device-tuned PID algorithm) are provided.
- IonGauge : Meter
A high-vacuum pressure sensor with an on-off capability.
- LabJackDaq
Aeon's preferred data acquisition device, the LabJack U6 DAQ. This class manages a multiplexed 16-bit ADC, feeding the data into a bank of HACS "Meters". Also provides a few digital I/O ports and two analog output channels.
- LinePort : Port
A "Port" with state tracking (Loaded, Prepared, InProcess, Complete).
- LnManifold
This device holds a small store of unpressurized liquid nitrogen, delivering it as needed to the VTCs and FTCs.
- MassFlowController
The MKS 1479A Mass Flow Controller.
- Meter : DynamicQuantity
Continuously converts a sensor voltage into a meaningful value, such as pressure or temperature.
- MtiFurnace : TubeFurnace
A "TubeFurnace" implementation for MTI furnaces with Yudian temperature controllers.
- OnOffDevice
A mains-powered device, such as a solenoid valve or a muffin fan, controlled by one of Aeon's Switchbank Controllers.
- Port
A point in the system plumbing where sample material may be inserted or removed.
- ProcessManager
A base class for HACS Components whose primary function is to execute processes and run sample process sequences.
- ProcessSequence
A saved list of predefined process steps that is constructed, edited and executed without altering the system source code, typically to "run a sample".
- Sample
Data storage for sample information.
- SampleSource
A "LinePort" where a sample may be inserted into the system.
- Section
A connected collection of chambers that is treated as a unit.
- SwitchBank : Controller
Aeon's multiplexing Switchbank Controller. This class manages a bank of "OnOffDevices" and a queue of On/Off requests, performing the requested operations in sequence.
- TempSensor
A thermocouple connected to one of Aeon's 6-channel heater controllers.
- ThermalController : Controller
Aeon's 6-channel heater controller. The device manages and monitors up to 6 connected heaters and 16 thermocouples, with the class feeding the data to a bank of "Heaters" and a bank of "TempSensors".
- TubeFurnace
Base class for a tube furnace: temperature monitoring with on/off, ramp rate and setpoint control.
- VacuumSystem
A complex device class that monitors vacuum system pressures and controls high-vacuum, low-vacuum, roughing, and backing valves to safely manage pumping operations to reach and maintain the requested vacuum state.
- Valve : Actuator
A valve connected to one of Aeon's Actuator Controllers. The class implements valve motions (Open, Close, etc) for servo- and serial-based valve "Actuators".
- ValveList
An ordered list of valves to be operated as a unit or as a controlled sequence.
- VolumeCalibration
This class enables the automated volume measurement of a "Chamber". Typically used only when a new system is constructed, or when a physical change is made to the plumbing.
- VSPressure
"Vacuum System Pressure" : A virtual vacuum pressure gauge that unites an "IonGauge" with a higher-pressure gauge to provide a wider range of detectable pressures.
- VTColdfinger
"Variable temperature coldfinger": A complex device for a vacuum line coldfinger, capable of precisely controlling the temperature anywhere between -196 and +50 °C.