Skip to content
This repository has been archived by the owner on Sep 2, 2024. It is now read-only.

Commit

Permalink
Merge pull request #1158 from DiamondLightSource/1142_wait_on_zebra_s…
Browse files Browse the repository at this point in the history
…etup

all plans wait on zebra setup
  • Loading branch information
DominicOram authored Feb 16, 2024
2 parents 72323ae + 9e011b3 commit e94e8b4
Show file tree
Hide file tree
Showing 4 changed files with 14 additions and 13 deletions.
22 changes: 11 additions & 11 deletions src/hyperion/device_setup_plans/setup_zebra.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@

from hyperion.log import LOGGER

ZEBRA_STATUS_TIMEOUT = 30


def bluesky_retry(func: Callable):
"""Decorator that will retry the decorated plan if it fails.
Expand Down Expand Up @@ -66,7 +68,7 @@ def setup_zebra_for_rotation(
shutter_opening_s: float = 0.04,
direction: RotationDirection = RotationDirection.POSITIVE,
group: str = "setup_zebra_for_rotation",
wait: bool = False,
wait: bool = True,
):
"""Set up the Zebra to collect a rotation dataset. Any plan using this is
responsible for setting the smargon velocity appropriately so that the desired
Expand Down Expand Up @@ -119,41 +121,39 @@ def setup_zebra_for_rotation(
yield from bps.abs_set(zebra.output.pulse_1.input, DISCONNECT, group=group)
LOGGER.info(f"ZEBRA SETUP: END - {'' if wait else 'not'} waiting for completion")
if wait:
yield from bps.wait(group)
yield from bps.wait(group, timeout=ZEBRA_STATUS_TIMEOUT)


@bluesky_retry
def setup_zebra_for_gridscan(
zebra: Zebra, group="setup_zebra_for_gridscan", wait=False
):
def setup_zebra_for_gridscan(zebra: Zebra, group="setup_zebra_for_gridscan", wait=True):
yield from bps.abs_set(zebra.output.out_pvs[TTL_DETECTOR], IN3_TTL, group=group)
yield from bps.abs_set(zebra.output.out_pvs[TTL_SHUTTER], IN4_TTL, group=group)
yield from bps.abs_set(zebra.output.out_pvs[TTL_XSPRESS3], DISCONNECT, group=group)
yield from bps.abs_set(zebra.output.pulse_1.input, DISCONNECT, group=group)

if wait:
yield from bps.wait(group)
yield from bps.wait(group, timeout=ZEBRA_STATUS_TIMEOUT)


@bluesky_retry
def set_zebra_shutter_to_manual(
zebra: Zebra, group="set_zebra_shutter_to_manual", wait=False
zebra: Zebra, group="set_zebra_shutter_to_manual", wait=True
):
yield from bps.abs_set(zebra.output.out_pvs[TTL_DETECTOR], PC_PULSE, group=group)
yield from bps.abs_set(zebra.output.out_pvs[TTL_SHUTTER], OR1, group=group)

if wait:
yield from bps.wait(group)
yield from bps.wait(group, timeout=ZEBRA_STATUS_TIMEOUT)


@bluesky_retry
def make_trigger_safe(zebra: Zebra, group="make_zebra_safe", wait=False):
def make_trigger_safe(zebra: Zebra, group="make_zebra_safe", wait=True):
yield from bps.abs_set(zebra.inputs.soft_in_1, 0, wait=wait, group=group)


@bluesky_retry
def setup_zebra_for_panda_flyscan(
zebra: Zebra, group="setup_zebra_for_panda_flyscan", wait=False
zebra: Zebra, group="setup_zebra_for_panda_flyscan", wait=True
):
# Forwards eiger trigger signal from panda
yield from bps.abs_set(zebra.output.out_pvs[TTL_DETECTOR], IN1_TTL, group=group)
Expand All @@ -168,4 +168,4 @@ def setup_zebra_for_panda_flyscan(
) # Tells panda that motion is beginning/changing direction

if wait:
yield from bps.wait(group)
yield from bps.wait(group, timeout=ZEBRA_STATUS_TIMEOUT)
2 changes: 1 addition & 1 deletion src/hyperion/experiment_plans/flyscan_xray_centre_plan.py
Original file line number Diff line number Diff line change
Expand Up @@ -255,7 +255,7 @@ def run_gridscan_and_move(
]
)

yield from setup_zebra_for_gridscan(fgs_composite.zebra)
yield from setup_zebra_for_gridscan(fgs_composite.zebra, wait=True)

LOGGER.info("Starting grid scan")
yield from bps.stage(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ def tidy_up_plans(fgs_composite: FlyScanXRayCentreComposite):
)
LOGGER.info("Tidying up Zebra")
yield from set_zebra_shutter_to_manual(
fgs_composite.zebra, group="panda_flyscan_tidy"
fgs_composite.zebra, group="panda_flyscan_tidy", wait=True
)

yield from bps.wait(group="panda_flyscan_tidy", timeout=10)
Expand Down
1 change: 1 addition & 0 deletions src/hyperion/experiment_plans/rotation_scan_plan.py
Original file line number Diff line number Diff line change
Expand Up @@ -191,6 +191,7 @@ def rotation_scan_plan(
shutter_opening_deg=shutter_opening_degrees,
shutter_opening_s=expt_params.shutter_opening_time_s,
group="setup_zebra",
wait=True,
)

LOGGER.info("wait for any previous moves...")
Expand Down

0 comments on commit e94e8b4

Please sign in to comment.