コード例 #1
0
def resetLoop(grabObject='',resetMotorPv=''):
    "Does UED DAE reset routine."
    pvscan.printMsg('Starting reset loop')
    # Open drive laser shutter
    #shutter1.open.put(1)
    if shutter2.enabled:
        pvscan.printMsg('Opening pump shutter')
        shutter2.open.put(1)
    # Enable TTL In for HeNe shutter if enabled from PV. 
    if shutter3.enabled:
        pvscan.printMsg('Enabling TTL In for HeNe shutter')
        shutter3.ttlInEnable.put(1)
    pvscan.printSleep(0.5)
    if grabObject:
        if grabObject.grabFlag:
            grabObject.filenameExtras='_' + resetMotorPv.desc + '-' + '{0:08.4f}'.format(resetMotorPv.get())
            grabObject.grabImages()
    # Disable TTL In for HeNe shutter if enabled from PV. 
    if shutter3.enabled:
        pvscan.printMsg('Disabling TTL In for HeNe shutter')
        shutter3.ttlInDisable.put(0)
    # Close pump and HeNe shutters, but only if enabled from PV.
    if shutter2.enabled:
        pvscan.printMsg('Closing pump shutter')
        shutter2.close.put(0)
    if shutter3.enabled:
        pvscan.printMsg('Closing HeNe shutter')
        shutter3.close.put(0)
    pvscan.printMsg('Reset loop done')
コード例 #2
0
def motorScan(motor1,motor2,motor3,grabObject='',radius=0,resetFlag=0,resetMotorPv=''):
    "Scans motor1 from start to stop in n steps, moving motors 2 and 3 and doing a reset loop at each step."
    initialPos1=motor1.get()
    initialPos2=motor2.get()
    initialPos3=motor3.get()
    pvscan.printMsg('Starting motor scan')
    inc=(motor1.stop-motor1.start)/(motor1.nsteps-1)
    for i in range(motor1.nsteps):
        # Move motor 1
        newPos0=motor1.start + i*inc
        newPos1=newPos0 + motor1.offset
        pvscan.printMsg('Moving %s to %f' % (motor1.pvname,newPos1))
        motor1.move(newPos1,timeout=300)
        # Move motor 2
        newPos2=motor2.offset + radius*math.cos(newPos0*math.pi/180)
        pvscan.printMsg('Moving %s to %f' % (motor2.pvname,newPos2))
        motor2.move(newPos2)
        # Move motor 3
        newPos3=motor3.offset + radius*math.sin(newPos0*math.pi/180)
        pvscan.printMsg('Moving %s to %f' % (motor3.pvname,newPos3))
        motor3.move(newPos3)
        pvscan.printSleep(motor1.settletime,'Settling')
        # Do reset loop if resetFlag==1
        if resetFlag:
            resetLoop(grabObject,resetMotorPv)
    # Move motors back to initial positions
    pvscan.printMsg('Moving %s back to initial position: %f' %(motor1.pvname,initialPos1))
    motor1.move(initialPos1)
    pvscan.printMsg('Moving %s back to initial position: %f' %(motor2.pvname,initialPos2))
    motor2.move(initialPos2)
    pvscan.printMsg('Moving %s back to initial position: %f' %(motor3.pvname,initialPos3))
    motor3.move(initialPos3)
コード例 #3
0
ファイル: pvScan-nlcta-wdm.py プロジェクト: mpdunning/pvScan
def wdmScan(exp, pv1, pv2, pv3, pv4, grabObject=''):
    if 1 <= exp.scanmode <= 2 and pv2.scanpv and not pv1.scanpv:
        pv1 = pv2
        exp.scanmode = 1
    if 1 <= exp.scanmode <= 2 and pv1.scanpv:
        initialPos1 = pv1.scanpv.get()
        inc1 = (pv1.scanpv.stop - pv1.scanpv.start) / (pv1.scanpv.nsteps - 1)
        if zLockFlag:
            initialPos3 = pv3.scanpv.get()
        if yLockFlag:
            initialPos4 = pv4.scanpv.get()
        if exp.scanmode == 2 and pv2.scanpv:
            initialPos2 = pv2.scanpv.get()
            inc2 = (pv2.scanpv.stop - pv2.scanpv.start) / (pv2.scanpv.nsteps -
                                                           1)
        pvscan.printMsg('Scanning %s from %f to %f in %d steps' %
                        (pv1.scanpv.pvname, pv1.scanpv.start, pv1.scanpv.stop,
                         pv1.scanpv.nsteps))
        for i in range(pv1.scanpv.nsteps):
            newPos1 = pv1.scanpv.start + i * inc1
            pvscan.printMsg('Setting %s to %f' % (pv1.scanpv.pvname, newPos1))
            pv1.scanpv.move(newPos1, delta=delta)
            if zLockFlag:
                newPos3 = zSlope * newPos1 + zIntercept
                pvscan.printMsg('Setting %s to %f' %
                                (pv3.scanpv.pvname, newPos3))
                pv3.scanpv.move(newPos3, delta=delta)
            if yLockFlag:
                newPos4 = ySlope * newPos1 + yIntercept
                pvscan.printMsg('Setting %s to %f' %
                                (pv4.scanpv.pvname, newPos4))
                pv4.scanpv.move(newPos4, delta=delta)
            pvscan.printSleep(pv1.scanpv.settletime, 'Settling')
            if exp.scanmode == 2 and pv2.scanpv:
                pvscan.printMsg('Scanning %s from %f to %f in %d steps' %
                                (pv2.scanpv.pvname, pv2.scanpv.start,
                                 pv2.scanpv.stop, pv2.scanpv.nsteps))
                for i in range(pv2.scanpv.nsteps):
                    newPos2 = pv2.scanpv.start + i * inc2
                    pvscan.printMsg('Setting %s to %f' %
                                    (pv2.scanpv.pvname, newPos2))
                    pv2.scanpv.move(newPos2, delta=delta)
                    pvscan.printSleep(pv2.scanpv.settletime, 'Settling')
                    if grabObject:
                        if grabObject.grabFlag:
                            if grabObject.stepFlag:
                                grabObject.filenameExtras = '_' + pv1.scanpv.desc + '-' + '{0:03d}'.format(
                                    i + 1
                                ) + '-' + '{0:08.4f}'.format(
                                    pv1.scanpv.get()
                                ) + '_' + pv2.scanpv.desc + '-' + '{0:03d}'.format(
                                    j + 1) + '-' + '{0:08.4f}'.format(
                                        pv2.scanpv.get())
                            else:
                                grabObject.filenameExtras = '_' + pv1.scanpv.desc + '-' + '{0:08.4f}'.format(
                                    pv1.scanpv.get()
                                ) + '_' + pv2.scanpv.desc + '-' + '{0:08.4f}'.format(
                                    pv2.scanpv.get())
                            if multiStaticFlag:
                                wdmGrabRoutine2(grabObject.filenameExtras)
                            else:
                                wdmGrabRoutine(grabObject.filenameExtras)
            else:
                if grabObject:
                    if grabObject.grabFlag:
                        if grabObject.stepFlag:
                            grabObject.filenameExtras = '_' + pv1.scanpv.desc + '-' + '{0:03d}'.format(
                                i + 1) + '-' + '{0:08.4f}'.format(
                                    pv1.scanpv.get())
                        else:
                            grabObject.filenameExtras = '_' + pv1.scanpv.desc + '-' + '{0:08.4f}'.format(
                                pv1.scanpv.get())
                        if multiStaticFlag:
                            wdmGrabRoutine2(grabObject.filenameExtras)
                        else:
                            wdmGrabRoutine(grabObject.filenameExtras)
        # Move back to initial positions
        pvscan.printMsg('Setting %s back to initial position: %f' %
                        (pv1.scanpv.pvname, initialPos1))
        pv1.scanpv.move(initialPos1, delta=delta)
        if zLockFlag:
            pvscan.printMsg('Setting %s back to initial position: %f' %
                            (pv3.scanpv.pvname, initialPos3))
            pv3.scanpv.move(initialPos3, delta=delta)
        if yLockFlag:
            pvscan.printMsg('Setting %s back to initial position: %f' %
                            (pv4.scanpv.pvname, initialPos4))
            pv4.scanpv.move(initialPos4, delta=delta)
        if exp.scanmode == 2 and pv2.scanpv:
            pvscan.printMsg('Setting %s back to initial position: %f' %
                            (pv2.scanpv.pvname, initialPos2))
            pv2.scanpv.move(initialPos2, delta=delta)
    elif exp.scanmode == 3:  # Grab images only
        if grabObject:
            if grabObject.grabFlag:
                grab1.grabImages()
                grab2.grabImages()
    elif exp.scanmode == 4:  # WDM grab routine only
        if multiStaticFlag:
            wdmGrabRoutine2(grabObject.filenameExtras)
        else:
            wdmGrabRoutine(grabObject.filenameExtras)

    else:
        pvscan.printMsg(
            'Scan mode "None" selected or no PVs entered, continuing...')
        sleep(1)
コード例 #4
0
ファイル: pvScan-nlcta-wdm.py プロジェクト: mpdunning/pvScan
def wdmScan(exp, pv1, pv2, pv3, pv4, grabObject=""):
    if 1 <= exp.scanmode <= 2 and pv2.scanpv and not pv1.scanpv:
        pv1 = pv2
        exp.scanmode = 1
    if 1 <= exp.scanmode <= 2 and pv1.scanpv:
        initialPos1 = pv1.scanpv.get()
        inc1 = (pv1.scanpv.stop - pv1.scanpv.start) / (pv1.scanpv.nsteps - 1)
        if zLockFlag:
            initialPos3 = pv3.scanpv.get()
        if yLockFlag:
            initialPos4 = pv4.scanpv.get()
        if exp.scanmode == 2 and pv2.scanpv:
            initialPos2 = pv2.scanpv.get()
            inc2 = (pv2.scanpv.stop - pv2.scanpv.start) / (pv2.scanpv.nsteps - 1)
        pvscan.printMsg(
            "Scanning %s from %f to %f in %d steps"
            % (pv1.scanpv.pvname, pv1.scanpv.start, pv1.scanpv.stop, pv1.scanpv.nsteps)
        )
        for i in range(pv1.scanpv.nsteps):
            newPos1 = pv1.scanpv.start + i * inc1
            pvscan.printMsg("Setting %s to %f" % (pv1.scanpv.pvname, newPos1))
            pv1.scanpv.move(newPos1, delta=delta)
            if zLockFlag:
                newPos3 = zSlope * newPos1 + zIntercept
                pvscan.printMsg("Setting %s to %f" % (pv3.scanpv.pvname, newPos3))
                pv3.scanpv.move(newPos3, delta=delta)
            if yLockFlag:
                newPos4 = ySlope * newPos1 + yIntercept
                pvscan.printMsg("Setting %s to %f" % (pv4.scanpv.pvname, newPos4))
                pv4.scanpv.move(newPos4, delta=delta)
            pvscan.printSleep(pv1.scanpv.settletime, "Settling")
            if exp.scanmode == 2 and pv2.scanpv:
                pvscan.printMsg(
                    "Scanning %s from %f to %f in %d steps"
                    % (pv2.scanpv.pvname, pv2.scanpv.start, pv2.scanpv.stop, pv2.scanpv.nsteps)
                )
                for i in range(pv2.scanpv.nsteps):
                    newPos2 = pv2.scanpv.start + i * inc2
                    pvscan.printMsg("Setting %s to %f" % (pv2.scanpv.pvname, newPos2))
                    pv2.scanpv.move(newPos2, delta=delta)
                    pvscan.printSleep(pv2.scanpv.settletime, "Settling")
                    if grabObject:
                        if grabObject.grabFlag:
                            if grabObject.stepFlag:
                                grabObject.filenameExtras = (
                                    "_"
                                    + pv1.scanpv.desc
                                    + "-"
                                    + "{0:03d}".format(i + 1)
                                    + "-"
                                    + "{0:08.4f}".format(pv1.scanpv.get())
                                    + "_"
                                    + pv2.scanpv.desc
                                    + "-"
                                    + "{0:03d}".format(j + 1)
                                    + "-"
                                    + "{0:08.4f}".format(pv2.scanpv.get())
                                )
                            else:
                                grabObject.filenameExtras = (
                                    "_"
                                    + pv1.scanpv.desc
                                    + "-"
                                    + "{0:08.4f}".format(pv1.scanpv.get())
                                    + "_"
                                    + pv2.scanpv.desc
                                    + "-"
                                    + "{0:08.4f}".format(pv2.scanpv.get())
                                )
                            if multiStaticFlag:
                                wdmGrabRoutine2(grabObject.filenameExtras)
                            else:
                                wdmGrabRoutine(grabObject.filenameExtras)
            else:
                if grabObject:
                    if grabObject.grabFlag:
                        if grabObject.stepFlag:
                            grabObject.filenameExtras = (
                                "_"
                                + pv1.scanpv.desc
                                + "-"
                                + "{0:03d}".format(i + 1)
                                + "-"
                                + "{0:08.4f}".format(pv1.scanpv.get())
                            )
                        else:
                            grabObject.filenameExtras = (
                                "_" + pv1.scanpv.desc + "-" + "{0:08.4f}".format(pv1.scanpv.get())
                            )
                        if multiStaticFlag:
                            wdmGrabRoutine2(grabObject.filenameExtras)
                        else:
                            wdmGrabRoutine(grabObject.filenameExtras)
        # Move back to initial positions
        pvscan.printMsg("Setting %s back to initial position: %f" % (pv1.scanpv.pvname, initialPos1))
        pv1.scanpv.move(initialPos1, delta=delta)
        if zLockFlag:
            pvscan.printMsg("Setting %s back to initial position: %f" % (pv3.scanpv.pvname, initialPos3))
            pv3.scanpv.move(initialPos3, delta=delta)
        if yLockFlag:
            pvscan.printMsg("Setting %s back to initial position: %f" % (pv4.scanpv.pvname, initialPos4))
            pv4.scanpv.move(initialPos4, delta=delta)
        if exp.scanmode == 2 and pv2.scanpv:
            pvscan.printMsg("Setting %s back to initial position: %f" % (pv2.scanpv.pvname, initialPos2))
            pv2.scanpv.move(initialPos2, delta=delta)
    elif exp.scanmode == 3:  # Grab images only
        if grabObject:
            if grabObject.grabFlag:
                grab1.grabImages()
                grab2.grabImages()
    elif exp.scanmode == 4:  # WDM grab routine only
        if multiStaticFlag:
            wdmGrabRoutine2(grabObject.filenameExtras)
        else:
            wdmGrabRoutine(grabObject.filenameExtras)

    else:
        pvscan.printMsg('Scan mode "None" selected or no PVs entered, continuing...')
        sleep(1)