Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
shutters.py 3.15 KiB
"""
main shutter and branch shutter functions
"""
from time import sleep
from epics import caget, caput

from .utilities import dateandtime, print_warning_message


##############################################################################################################
################################             main shutter             ##############################
##############################################################################################################

def main_shutter_open():
    """
    opens the main shutter

    Previously: Open_MainShutter 
    """
    caput("PC:29ID:FES_OPEN_REQUEST.VAL",1, wait=True,timeout=180000)
    print("Opening Main Shutter...")

def main_shutter_close():
    """
    closes the main shutter

    Previously: Close_MainShutter
    """
    caput("PC:29ID:FES_CLOSE_REQUEST.VAL",1,wait=True,timeout=18000)
    print("Closing Main Shutter...")

def main_shutter_status():
    """
    checks on the status of the main shutter
    and returns shutter_open = True / False

    """
    SS1=caget("EPS:29:ID:SS1:POSITION")
    SS2=caget("EPS:29:ID:SS2:POSITION")
    PS2=caget("EPS:29:ID:PS2:POSITION")
    check=SS1*SS2*PS2

    if check == 8:
        shutter_open = True
    else:
        shutter_open = False
    
    return shutter_open


def main_shutter_check_open():
    """
    Checks main shutter is open, if not opens it"
    
    Previously: Check_MainShutter
    """
    while True:
        shutter_open = main_shutter_status()
        if shutter_open == False:
            print("MAIN SHUTTER CLOSED !!!" , dateandtime())
            main_shutter_open()
            sleep(10)
        else:
            print("Shutter is now open" , dateandtime())
            break
##############################################################################################################
################################             branch shutters            ##############################
##############################################################################################################

def branch_shutter_status(branch,verbose=False):
    """
    checks on the status of the main shutter
    and returns shutter_open = True / False
    """
    pvA="PA:29ID:S"+branch+"S_BLOCKING_BEAM.VAL"
    pvB="PB:29ID:S"+branch+"S_BLOCKING_BEAM.VAL"
    #"ON" = 1 => shutter open
    status=caget(pvA)+caget(pvA)
    if status == 2:
        shutter_open=True
    else:
        shutter_open=False

    if verbose:
        status = 'Open' if shutter_open else 'Closed'
        print(branch+"-shutter is "+status)
    return shutter_open

def branch_shutter_close(branch):
    """
    closes current branch shutter

    Previously: Close_BranchShutter
    """
    caput("PC:29ID:S"+branch+"S_CLOSE_REQUEST.VAL",1,wait=True,timeout=18000)
    print("Closing "+branch+"-Shutter...")


def branch_shutter_open(branch):
    """
    Opens current branch shutter 

    Previoulsy: Open_BranchShutter

    """
    shutter_status = branch_shutter_status
    if shutter_status:
        print(branch+"-Shutter already open...")
    else:
        caput("PC:29ID:S"+branch+"S_OPEN_REQUEST.VAL",1,wait=True,timeout=18000)
        print("Opening "+branch+"-Shutter...")