From 965254544059526679e7ef8ff89f610526be78ec Mon Sep 17 00:00:00 2001 From: Holler Mirko Date: Thu, 11 Jul 2024 16:37:01 +0200 Subject: [PATCH] continue sample transfer --- .../omny/omny_sample_transfer_mixin.py | 209 +++++++----------- 1 file changed, 82 insertions(+), 127 deletions(-) diff --git a/csaxs_bec/bec_ipython_client/plugins/omny/omny_sample_transfer_mixin.py b/csaxs_bec/bec_ipython_client/plugins/omny/omny_sample_transfer_mixin.py index dcf04a6..0b42748 100644 --- a/csaxs_bec/bec_ipython_client/plugins/omny/omny_sample_transfer_mixin.py +++ b/csaxs_bec/bec_ipython_client/plugins/omny/omny_sample_transfer_mixin.py @@ -390,143 +390,98 @@ class OMNYSampleTransferMixin: if self._otransfer_mode_query(): raise OMNYTransferError("System is in transfer mode.") + def otransfer_park_slot(self,slot_number:int): + #todo + #global _otransfer_shuttle_was_aligned + #_otransfer_shuttle_was_aligned=0 + if slot_number < 2 or slot_number > 6: + raise OMNYTransferError(f"Invalid slot number {slot_number} specified. Valid numbers range from 2 to 6.") + if slot_number == 2: + self._oparkz_drive_and_check(-0.9-29*3-42-.05) + elif slot_number == 3: + self._oparkz_drive_and_check(-0.9-29*3) + elif slot_number == 4: + self._oparkz_drive_and_check(-0.9-29*2) + elif slot_number == 5: + self._oparkz_drive_and_check(-0.9-29) + elif slot_number == 6: + self._oparkz_drive_and_check(-0.9) + -def otransfer_park_slot '{ -if ($# != 1 ) { -printf("Wrong number of arguments. otransfer_park_slot \n") -exit -} + def otransfer_park_loadlock_slot(self,slot_number:int): + if slot_number < 2 or slot_number > 6: + raise OMNYTransferError(f"Invalid slot number {slot_number} specified. Valid numbers range from 2 to 6.") + #if the valve of the loadlock is not closed, ask before movement + #todo if(epics_get("XOMNY-ES1-LL1VG1:POSITION")!="CLOSED") { + user_input = input("Please confirm that the leica transfer is in back position [y/n].") + if user_input != "y": + raise OMNYTransferError + else: + self._oparkz_leica_slot(slot_number) -_oparkz_slot($1) -}' + def _oparkz_leica_slot(self, slot_number: int): + if slot_number < 2 or slot_number > 6: + raise OMNYTransferError(f"Invalid slot number {slot_number} specified. Valid numbers range from 2 to 6.") + if slot_number == 2: + self._oparkz_drive_and_check(-6-29*3-42-.05) + elif slot_number == 3: + self._oparkz_drive_and_check(-6-29*3) + elif slot_number == 4: + self._oparkz_drive_and_check(-6-29*2) + elif slot_number == 5: + self._oparkz_drive_and_check(-6-29) + elif slot_number == 6: + self._oparkz_drive_and_check(-6) -def otransfer_park_loadlock_slot '{ -if ($# != 1 ) { -printf("Wrong number of arguments. otransfer_park_loadlock_slot \n") -exit -} -#if the valve of the loadlock is not closed, ask before movement -if(epics_get("XOMNY-ES1-LL1VG1:POSITION")!="CLOSED") { -printf("Please confirm that the leica transfer is in back position.") - if(!yesno(1)) - exit -} + def _oparkz_drive_and_check(self, targetpos): + oparkz_current = dev.oparkz.get().readback + if np.fabs(oparkz_current-targetpos)>=0.05: + self._otransfer_mode_ensurenot() + #make sure shield closed + self._otransfer_ensure_shuttle_closed() + self._otransfer_shuttle_aligner_down() + umv(dev.oparkz, targetpos) -_oparkz_leica_slot($1) -}' + def _oparkz_check(self, targetpos) -> bool: + oparkz_current = dev.oparkz.get().readback + if np.fabs(oparkz_current-targetpos)<0.05: + return True + else: + return False -def _oparkz_drive_and_check(targetpos) '{ -if (fabs(A[oparkz]-targetpos)>=0.05) -{ - _otransfer_mode_ensurenot - #make sure shield closed - if (!_ogalil_low_limit_set(1,6)) - { - _ogalil_drive_to_limit(1,6,0) - } - - if (!_ogalil_low_limit_set(1,6)) - { - exit - } - - _otransfer_shuttle_aligner_down - umv oparkz targetpos -} -}' - -def _oparkz_check(targetpos) '{ -if (fabs(A[oparkz]-targetpos)<0.05) - return(1) -else - return(0) -}' - -def _oparkz_slot_check() '{ -local parkingposition -parkingposition=10 -if(_oparkz_check(-0.9)) - parkingposition=6 -if(_oparkz_check(-0.9-29)) - parkingposition=5 -if(_oparkz_check(-0.9-29*2)) - parkingposition=4 -if(_oparkz_check(-0.9-29*3)) - parkingposition=3 -if(_oparkz_check(-0.9-29*3-42-.05)) - parkingposition=2 + def _oparkz_slot_check(self): + parkingposition=10 + if self._oparkz_check(-0.9): + parkingposition=6 + elif self._oparkz_check(-0.9-29): + parkingposition=5 + elif self._oparkz_check(-0.9-29*2): + parkingposition=4 + elif self._oparkz_check(-0.9-29*3): + parkingposition=3 + elif self._oparkz_check(-0.9-29*3-42-.05): + parkingposition=2 -if (parkingposition == 10) { - printf("Oparkz is not in a parking position.\n") - } -else { - printf("Active parkting position: %d\n", parkingposition) - } -return(parkingposition) -}' - - + if parkingposition == 10: + print("Oparkz is not in a parking position.") + else: + print(f"Active parkting position: {parkingposition}") + + return parkingposition -def _oparkz_slot(slot_number) '{ -global _otransfer_shuttle_was_aligned -_otransfer_shuttle_was_aligned=0 -if(slot_number == 2) - _oparkz_drive_and_check(-0.9-29*3-42-.05) -if(slot_number == 3) - _oparkz_drive_and_check(-0.9-29*3) -if(slot_number == 4) - _oparkz_drive_and_check(-0.9-29*2) -if(slot_number == 5) - _oparkz_drive_and_check(-0.9-29) -if(slot_number == 6) - _oparkz_drive_and_check(-0.9) -if(slot_number < 2 || slot_number >6) { - printf("Invalid slot number.\n") - exit -} -}' + def _oparkz_drive_and_check_leica(self, targetpos): + oparkz_current = dev.oparkz.get().readback + if (oparkz_current-targetpos)>=0.05: + self._otransfer_mode_ensurenot() + #make sure shuttle closed + self._otransfer_ensure_shuttle_closed() + self._otransfer_shuttle_aligner_down() + umv(dev.oparkz, targetpos) -def _oparkz_leica_slot(slot_number) '{ -if(slot_number == 2) - _oparkz_drive_and_check(-6-29*3-42-.05) -if(slot_number == 3) - _oparkz_drive_and_check(-6-29*3) -if(slot_number == 4) - _oparkz_drive_and_check(-6-29*2) -if(slot_number == 5) - _oparkz_drive_and_check(-6-29) -if(slot_number == 6) - _oparkz_drive_and_check(-6) -if(slot_number < 2 || slot_number >6) { - printf("Invalid slot number.\n") - exit -} -}' -def _oparkz_drive_and_check_leica(targetpos) '{ -if (fabs(A[oparkz]-targetpos)>=0.05) -{ - _otransfer_mode_ensurenot - #make sure shuttle closed - if(!_ogalil_low_limit_set(1,6)) - { - _ogalil_drive_to_limit(1,6,0) - } - if (!_ogalil_low_limit_set(1,6)) - { - printf("shuttle did not close. exiting.\n") - exit - } - _otransfer_shuttle_aligner_down - umv oparkz targetpos -# umv oparkz targetpos -} -}' - -#when mounting a sample, this variable is defined at the release position of the sample -def _otransfer_get_release_position() '{ -local rel_pos + #when mounting a sample, this variable is defined at the release position of the sample + def _otransfer_get_release_position(self): _ogalil_put(0,"MGrelpos") rel_pos=_ogalil_get(0) return(rel_pos)