Closedown

This commit is contained in:
x03daop
2017-06-26 13:44:42 +02:00
parent bb287d69e4
commit 893c0bf67e

View File

@@ -684,6 +684,8 @@ class GlobalFlag(ControlledDevice):
class GlobalFlag(ControlledDevice):
def __init__(self):
ControlledDevice.__init__(self,"Global Flag")
global beam_ok
beam_ok = True
def pause(self):
@@ -862,6 +864,7 @@ class ScanGuard(object):
self.resume()
else:
logging.warning("beam down")
self.pause()
time.sleep(1.0)
def check_beam(self):
@@ -898,28 +901,25 @@ class ScanGuard(object):
if self.controls_active:
for device in reversed(self.devices):
device.resume()
##### main frame #####
##### main #####
def main():
nll = logging.INFO
logging.basicConfig(format="%(asctime)s %(levelname)s: %(message)s", level=nll)
logging.basicConfig(format="%(asctime)s %(levelname)s: %(message)s", level=nll)
logging.info("PEARL Scan Guard")
logging.info("version 1.1.2")
guard = ScanGuard()
guard.ringcurrent_trip_lo = args.riculo
logging.debug(guard.ringcurrent_trip_lo)
if args.ricuhi >= args.riculo:
guard.ringcurrent_dead_band = 1 #args.ricuhi - guard.ringcurrent_trip_lo
else:
raise ValueError("invalid ring current trip arguments")
logging.debug(guard.ringcurrent_trip_hi)
guard.controls_active = args.controls_active
logging.debug(guard.controls_active)
guard.unattended_only = not args.attended
logging.debug(guard.unattended_only)
guard = ScanGuard()
guard.ringcurrent_trip_lo = 390.0
guard.ringcurrent_trip_hi = 410.0
guard.ringcurrent_dead_band = 1.0
# True = offline mode is interpreted as beam down
guard.unattended_only = True
# True = block acquisition while beam is down, False = do not block (e.g. for He lamp measurements)
guard.controls_active = True
# True = simulate beam down after a few seconds, False = normal operation
guard.test = False
guard.connect()
@@ -929,58 +929,8 @@ def main(args):
except KeyboardInterrupt:
logging.info("scan guard aborted by user")
except:
print sys.exc_info()[1]
def test():
"""
ad-hoc test function
"""
logging.basicConfig(format="%(asctime)s %(levelname)s: %(message)s", level=logging.DEBUG)
sh = StationShutter("X03DA-OP-ST1:")
sh.connect()
sh.ShutterRbv.pend_io()
sh.set_monitors()
return sh
def operate():
"""
execute the scan guard in normal operation
this is the normal entry point of a stable version in normal operation.
the function parameters should be stable.
do not modify the parameters for tests, use the test() function instead.
"""
args.controls_active = True
args.loglevel = logging.INFO
main(args)
##### command line #####
print sys.exc_info()[1]
#This is to dispose created channels - otherwise, if channel is off, old channels remain and CPU consumption goes 100%.
import _ca
_ca.initialize()
if True: #__name__ == '__main__':
parser = argparse.ArgumentParser(
description="Pause the measurements (scan records, Scienta detector) for beam loss")
parser.add_argument("-o", "--ring-current-lo", type=float, default=390, dest="riculo",
help="beam loss is triggered if ring current (mA) falls below this level")
parser.add_argument("-i", "--ring-current-hi", type=float, default=400, dest="ricuhi",
help="beam is restored if ring current (mA) rises above this level")
parser.add_argument("-a", "--attended", action="store_true", dest="attended",
help="guard beam during attended operation (default: unattended only)")
parser.add_argument("-p", "--passive", action="store_false", dest="controls_active",
help="check beam conditions but do not send out commands")
parser.add_argument("-t", "--test", action="store_true", dest="test",
help="test controls (simulate beam loss after 15 seconds)")
parser.add_argument("-l", "--loglevel", dest="loglevel", default="INFO",
choices=["DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL"])
args = parser.parse_args()
#args.loglevel = "DEBUG"
args.attended = False
main(args)
_ca.initialize()