bluesky / ophyd-async

Hardware abstraction for bluesky written using asyncio
https://blueskyproject.io/ophyd-async
BSD 3-Clause "New" or "Revised" License
11 stars 24 forks source link

Make a PMAC flyer that is implemented with a Trajectory scan Device #427

Open coretl opened 3 months ago

coretl commented 3 months ago

Make a TriggerLogic that will do a Trajectory scan with the following restrictions:

Make the matching IO class with the PV interface. Make a epics.pmac.PmacMotor(epics.motor.Motor) that tells it what CS and CS Axis it is in (like Malcolm). There might be a PmacCSMotor and PmacRawMotor, or possibly one that is told at init what sort of thing it is. Either way we want a single method async def get_cs_number_and_axis() attached to the motor so we can use it in prepare.

prepare

Take a List[scanspec.Frames[PmacMotor]], calculate the entire trajectory (this will later be only the first 4000 points), calculate where the start position of the motors is based on first point of the trajectory (as per #376), then move the motors to the start position and send down the trajectory

kickoff

Hit start

complete

Observe points scanned and yield WatcherStatusUpdate to say how far we have got (like in StandardDetector). When it's done check it did the right number of points and didn't get an error