VSpin and Access2 events#

Each listed semantic operation emits started followed by either completed or failed. The modern Agilent frontends and resource-aware legacy Centrifuge and Loader frontends share spin and transfer schemas. The setup/stop operations below belong to the modern Agilent frontends; legacy machine lifecycle events retain their separate schema.

VSpin centrifuge#

Operation

Primary fields

centrifuge.setup

device

centrifuge.stop

device

centrifuge.spin

device, loaded resources, bucket_resources, relative_centrifugal_force, duration, acceleration_fraction, deceleration_fraction

VSpin.setup() connects, initializes, homes, and positions the centrifuge. VSpin.stop() closes its transport; it is not stop_spin() or an emergency stop. Both lifecycle operations identify the VSpin with device_reference(self, name=self.name), without a legacy backend field.

resources includes each plate currently loaded in a VSpin bucket when the spin starts. bucket_resources preserves which physical bucket holds each plate. The event reports the requested cycle parameters. relative_centrifugal_force is the dimensionless multiple of standard gravity conventionally written as x g, PLR’s default unit for relative centrifugal force. The event does not infer an actual measured force or completed duration outside the frontend call’s success or failure lifecycle.

Access2 loader#

Operation

Primary fields

centrifuge_loader.setup

device

centrifuge_loader.stop

device

centrifuge_loader.load

device, moved resources, source, destination

centrifuge_loader.unload

device, moved resources, source, destination

centrifuge_loader.load moves a plate from the Access2 staging holder to the VSpin bucket at the load position. centrifuge_loader.unload moves a plate in the reverse direction. source and destination are the actual PLR holders involved in the transfer.

Use await loader.setup() and await loader.stop() on the Access2 frontend. They delegate to Access2Driver.setup() and Access2Driver.stop() with unchanged hardware behavior, and identify the Access2 holder with resource_reference(self). Direct driver methods remain available but emit no semantic setup/stop events, preventing duplicate lifecycles. These frontend events do not use machine.setup/machine.stop or require a backend field.