def cleanup(self):
     """orderly cleanup of all channel access server process variables."""
     from CAServer import casdel
     lst = self.get_pv_list()
     for item in lst:
         info('delete PV: %s' % item)
         casdel(item)
    def running(self):
        info("Starting IOC...")
        from CAServer import casget, casput, casdel, casmonitor
        from time import time
        from sleep import sleep

        for name in self.PV_names:
            PV_name = self.PV_name(name)
            casmonitor(PV_name, callback=self.monitor)

        while not self.running_cancelled:
            t = time()
            for name in self.PV_names:
                if time() - self.last_updated(name) > self.update_period(name):
                    PV_name = self.PV_name(name)
                    value = getattr(self.object, name)
                    ##info("%s=%r" % (PV_name,value))
                    casput(PV_name, self.transform(name, value), update=False)
                    self.set_update_time(name)
            if not self.running_cancelled:
                sleep(t + self.min_update_period - time())

        for name in self.names:
            PV_name = self.PV_name(name)
            casdel(PV_name)
Exemplo n.º 3
0
    def running(self):
        info("Starting IOC: Prefix: %s ..." % self.prefix)
        from CAServer import casget, casput, casdel
        from time import time
        from sleep import sleep

        self.monitors_setup()

        while not self.running_cancelled:
            t = time()
            for name in self.property_names:
                if time() - self.last_updated(name) > self.update_period(name):
                    PV_name = self.prefix + name.upper()
                    value = getattr(self, name)
                    ##info("Update: %s=%r" % (PV_name,value))
                    casput(PV_name, value, update=False)
                    self.set_update_time(name)
            if not self.running_cancelled:
                sleep(t + self.min_update_period - time())
        casdel(self.prefix)
Exemplo n.º 4
0
 def run(self):
     """Run EPICS IOC"""
     from CAServer import casput, casmonitor, casdel
     from numpy import isfinite, isnan
     from time import time
     self.running = True
     casput(self.prefix + ".SCAN", self.SCAN)
     casput(self.prefix + ".DESC", "Temp")
     casput(self.prefix + ".EGU", "C")
     # Monitor client-writable PVs.
     casmonitor(self.prefix + ".SCAN", callback=self.monitor)
     casmonitor(self.prefix + ".MFILTER", callback=self.monitor)
     casmonitor(self.prefix + ".IFILTER", callback=self.monitor)
     casmonitor(self.prefix + ".TCTYPE", callback=self.monitor)
     while self.running:
         if self.SCAN > 0 and isfinite(self.SCAN):
             if time() - self.last_valid_reply > 10:
                 if not isnan(thermocouple_driver.VAL):
                     info("Reading configuration")
                     casput(self.prefix + ".COMM", thermocouple_driver.COMM)
                     casput(self.prefix + ".MFILTER",
                            thermocouple_driver.MFILTER)
                     casput(self.prefix + ".IFILTER",
                            thermocouple_driver.IFILTER)
                     casput(self.prefix + ".TCTYPE",
                            thermocouple_driver.TCTYPE)
             t = time()
             VAL = thermocouple_driver.VAL
             if not isnan(VAL): self.last_valid_reply = time()
             casput(self.prefix + ".VAL", VAL)
             sleep(t + 1.00 * self.SCAN - time())
             casput(self.prefix + ".SCANT",
                    time() - t)  # post actual scan time for diagnostics
         else:
             casput(self.prefix + ".SCANT", nan)
             sleep(0.1)
     casdel(self.prefix)
Exemplo n.º 5
0
 def run(self):
     """Run EPICS IOC"""
     from CAServer import casput, casmonitor, casdel
     from numpy import isfinite, nan
     from time import time
     from sleep import sleep
     self.running = True
     casput(self.prefix + ".SCAN", self.SCAN)
     casput(self.prefix + ".DESC", "State")
     casput(self.prefix + ".EGU", "")
     # Monitor client-writable PVs.
     casmonitor(self.prefix + ".SCAN", callback=self.monitor)
     casmonitor(self.prefix + ".VAL", callback=self.monitor)
     was_online = False
     while self.running:
         if self.SCAN > 0 and isfinite(self.SCAN):
             SCAN = self.SCAN
             online = Ramsey_RF_driver.online
             if online:
                 if online and not was_online:
                     info("Reading configuration...")
                     casput(self.prefix + ".COMM", Ramsey_RF_driver.COMM)
                     casput(self.prefix + ".SCANT", nan)
                 t = time()
                 casput(self.prefix + ".VAL", float(Ramsey_RF_driver.VAL))
                 sleep(t + 1.0 * SCAN - time())
                 casput(self.prefix + ".SCANT",
                        time() - t)  # post actual scan time for diagnostics
             else:
                 casput(self.prefix + ".VAL", nan)
                 sleep(SCAN)
             was_online = online
         else:
             casput(self.prefix + ".SCANT", nan)
             sleep(0.1)
     casdel(self.prefix)
Exemplo n.º 6
0
 def run(self):
     """Run EPICS IOC"""
     from CAServer import casput, casmonitor, casdel
     from numpy import isfinite
     from time import time
     self.running = True
     # Initialization
     casput(self.prefix + ".SCAN", self.scan_time)
     casput(self.prefix + ".SPMG", 3)  # 0:Stop,1:Pause,2:Move,3:Go
     for i in range(0, self.N):
         casput(self.prefix + "%d.AOUT" % (i + 1),
                "")  # ASCII output string to device
         casput(self.prefix + "%d.AINP" % (i + 1),
                "")  # ASCII input string from device
     # Static PVs
     for i in range(0, self.N):
         casput(self.prefix + "%d:VOLUME.DESC" % (i + 1),
                "Pump%d" % (i + 1))
         casput(self.prefix + "%d:VOLUME.EGU" % (i + 1), "uL")
         casput(self.prefix + "%d:PORT.DESC" % (i + 1), "Valve%d" % (i + 1))
         casput(self.prefix + "%d:PORT.EGU" % (i + 1), "OIB")
         casput(self.prefix + "%d:VOLUME.CNEN" % (i + 1), 1)
         casput(self.prefix + "%d:PORT.CNEN" % (i + 1), 1)
     # Monitor client-writable PVs
     casmonitor(self.prefix + ".SCAN", callback=self.monitor)
     casmonitor(self.prefix + ".SPMG", callback=self.monitor)
     for i in range(0, self.N):
         casmonitor(self.prefix + "%d.AOUT" % (i + 1),
                    callback=self.monitor)
         casmonitor(self.prefix + "%d.AINP" % (i + 1),
                    callback=self.monitor)
         casmonitor(self.prefix + "%d:VOLUME.VAL" % (i + 1),
                    callback=self.monitor)
         casmonitor(self.prefix + "%d:VOLUME.VELO" % (i + 1),
                    callback=self.monitor)
         casmonitor(self.prefix + "%d:PORT.VAL" % (i + 1),
                    callback=self.monitor)
         casmonitor(self.prefix + "%d:VOLUME.STOP" % (i + 1),
                    callback=self.monitor)
         casmonitor(self.prefix + "%d:PORT.STOP" % (i + 1),
                    callback=self.monitor)
     while self.running:
         if self.scan_time > 0 and isfinite(self.scan_time):
             for i in range(0, self.N):
                 if comm_ports.max_time_between_replies[i] > 10:
                     comm_ports.max_time_between_replies[i] = 0
                     debug("Reading pump %d configuration" % (i + 1))
                     casput(self.prefix + "%d:VOLUME.VAL" % (i + 1),
                            volumes.values([i])[0])
                     casput(self.prefix + "%d:VOLUME.LLM" % (i + 1),
                            volumes.low_limits([i])[0])
                     casput(self.prefix + "%d:VOLUME.HLM" % (i + 1),
                            volumes.high_limits([i])[0])
                     casput(self.prefix + "%d:PORT.VAL" % (i + 1),
                            ports.values([i])[0])
             t = time()
             values = volumes.values(range(0, self.N))
             for i in range(0, self.N):
                 casput(self.prefix + "%d:VOLUME.RBV" % (i + 1), values[i])
             self.process_command_queue()
             values = ports.values(range(0, self.N))
             for i in range(0, self.N):
                 casput(self.prefix + "%d:PORT.RBV" % (i + 1), values[i])
             self.process_command_queue()
             moving = volumes.moving(range(0, self.N))
             for i in range(0, self.N):
                 casput(self.prefix + "%d:VOLUME.DMOV" % (i + 1),
                        not moving[i])
                 casput(self.prefix + "%d:PORT.DMOV" % (i + 1),
                        not moving[i])
             self.process_command_queue()
             speeds = volumes.speeds(range(0, self.N))
             for i in range(0, self.N):
                 casput(self.prefix + "%d:VOLUME.VELO" % (i + 1), speeds[i])
             self.process_command_queue()
             sleep(t + 1 * self.scan_time - time())
             casput(self.prefix + ".SCANT",
                    time() - t)  # post actual scan time for diagnostics
         else:
             casput(self.prefix + ".SCANT", nan)
             sleep(0.1)
     casdel(self.prefix)
Exemplo n.º 7
0
 def CAserver_stop(self):
     from CAServer import casget, casput, casdel
     casdel(self.prefix + '.RUNNING')
     casdel(self.prefix + '.UPDATE_T')
     casdel(self.prefix + '.SOCKET')
 def shutdown(self):
     from CAServer import casdel
     print('SHUTDOWN command received')
     self.running = False
     casdel(self.prefix)
     del self
    def run(self):
        """Start EPICS IOC for temperature controller (does not return)"""
        self.running = True
        casput(self.prefix + ".SCAN", self.scan_time)
        casput(self.prefix + ".DESC", "Temp")
        casput(self.prefix + ".EGU", "C")
        casput(self.prefix + ".BAUD",
               lightwave_temperature_controller.baudrate.value)
        # Complex Actions
        casput(self.prefix + ".ACTION", '')
        # Monitor client-writable PVs.
        casmonitor(self.prefix + ".SCAN", callback=self.monitor)
        casmonitor(self.prefix + ".BAUD", callback=self.monitor)
        casmonitor(self.prefix + ".VAL", callback=self.monitor)
        casmonitor(self.prefix + ".CNEN", callback=self.monitor)
        casmonitor(self.prefix + ".PIDCOF", callback=self.monitor)
        casmonitor(self.prefix + ".PCOF", callback=self.monitor)
        casmonitor(self.prefix + ".ICOF", callback=self.monitor)
        casmonitor(self.prefix + ".DCOF", callback=self.monitor)
        casmonitor(self.prefix + ".RDBD", callback=self.monitor)
        casmonitor(self.prefix + ".NSAM", callback=self.monitor)
        casmonitor(self.prefix + ".IHLM", callback=self.monitor)
        casmonitor(self.prefix + ".ILLM", callback=self.monitor)
        casmonitor(self.prefix + ".TENA", callback=self.monitor)
        casmonitor(self.prefix + ".P1SP", callback=self.monitor)
        casmonitor(self.prefix + ".P1EP", callback=self.monitor)
        casmonitor(self.prefix + ".P1SI", callback=self.monitor)
        while self.running:
            if self.scan_time > 0 and isfinite(self.scan_time):

                if lightwave_temperature_controller.max_time_between_replies > 10:
                    lightwave_temperature_controller.max_time_between_replies = 0
                    info("Reading configuration")
                    casput(self.prefix + ".COMM",
                           lightwave_temperature_controller.port_name,
                           update=False)
                    #casput(self.prefix+".VAL",lightwave_temperature_controller.setT.value)
                    casput(self.prefix + ".CNEN",
                           lightwave_temperature_controller.enabled.value,
                           update=False)
                    casput(self.prefix + ".PIDCOF",
                           lightwave_temperature_controller.feedback_loop.PID,
                           update=False)
                    casput(
                        self.prefix + ".PCOF",
                        lightwave_temperature_controller.feedback_loop.P.value,
                        update=False)
                    casput(
                        self.prefix + ".ICOF",
                        lightwave_temperature_controller.feedback_loop.I.value,
                        update=False)
                    casput(
                        self.prefix + ".DCOF",
                        lightwave_temperature_controller.feedback_loop.D.value,
                        update=False)
                    casput(self.prefix + ".RDBD",
                           lightwave_temperature_controller.
                           stabilization_threshold,
                           update=False)
                    casput(self.prefix + ".NSAM",
                           lightwave_temperature_controller.
                           stabilization_nsamples,
                           update=False)
                    casput(self.prefix + ".IHLM",
                           lightwave_temperature_controller.current_high_limit,
                           update=False)
                    casput(self.prefix + ".ILLM",
                           lightwave_temperature_controller.current_low_limit,
                           update=False)
                    casput(self.prefix + ".TENA",
                           lightwave_temperature_controller.trigger_enabled,
                           update=False)
                    casput(self.prefix + ".ID",
                           lightwave_temperature_controller.id,
                           update=False)
                    casput(self.prefix + ".P1SP",
                           lightwave_temperature_controller.trigger_start,
                           update=False)
                    casput(self.prefix + ".P1EP",
                           lightwave_temperature_controller.trigger_stop,
                           update=False)
                    casput(self.prefix + ".P1SI",
                           lightwave_temperature_controller.trigger_stepsize,
                           update=False)
                    casput(self.prefix + ".processID",
                           value=os.getpid(),
                           update=False)
                    casput(self.prefix + ".computer_name",
                           value=computer_name,
                           update=False)
                t = time()
                casput(
                    self.prefix + ".RBV",
                    lightwave_temperature_controller.actual_temperature.value,
                    update=True)
                casput(self.prefix + ".DMOV",
                       lightwave_temperature_controller.stable,
                       update=False)
                sleep(t + 0.25 * self.scan_time - time())
                casput(self.prefix + ".I",
                       lightwave_temperature_controller.current.value,
                       update=True)
                sleep(t + 0.50 * self.scan_time - time())
                casput(self.prefix + ".P",
                       lightwave_temperature_controller.power.value,
                       update=True)
                sleep(t + 0.75 * self.scan_time - time())
                ##if casget(self.prefix+".TENA"): # Set point may change on trigger.
                casput(self.prefix + ".VAL",
                       lightwave_temperature_controller.setT.value,
                       update=False)
                sleep(t + 1.00 * self.scan_time - time())
                casput(self.prefix + ".SCANT", time() - t,
                       update=False)  # post actual scan time for diagnostics
            else:
                casput(self.prefix + ".SCANT", nan, update=False)
                sleep(0.1)
        casdel(self.prefix)
Exemplo n.º 10
0
 def shutdown(self):
     from CAServer import casdel
     casdel(self.prefix)