コード例 #1
0
    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)
コード例 #2
0
    def startup(self):
        from CAServer import casput,casmonitor
        from CA import caput,camonitor
        from numpy import nan
        casput(self.prefix+".ENABLE",self.intervention_enabled)
        casput(self.prefix+'.RUNNING', self.running)

        casput(self.prefix+".KILL",value = 'write password to kill the process')
        casput(self.prefix+".LIST_ALL_PVS",value = self.get_pv_list())

        # Monitor client-writable PVs.
        casmonitor(self.prefix+".KILL",callback=self.monitor)
コード例 #3
0
    def CAserver_init(self):
        from CAServer import casget, casput
        self.running = False
        self.CA_update_t = 0.3
        casput(self.prefix + '.RUNNING', self.running)
        casput(self.prefix + '.UPDATE_T', self.CA_update_t)
        #controls
        casput(self.prefix + ".broadcast_period", self.broadcast_period)

        #indicators
        casput(self.prefix + ".pressure_upstream", nan)
        casput(self.prefix + ".pressure_downstream", nan)
        casput(self.prefix + ".pressure_barometric", nan)
        casput(self.prefix + ".temperature_hutch", nan)

        #monitors
        casmonitor(self.prefix + ".broadcast_period", callback=self.monitor)

        try:
            casput(self.prefix + '.SOCKET', self.socket)
        except:
            error(traceback.format_exc())
コード例 #4
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)
コード例 #5
0
    def startup(self):
        from CAServer import casput,casmonitor
        from CA import caput,camonitor
        from numpy import nan

        casput(self.prefix+".MEAN_TOP",nan)
        casput(self.prefix+".MEAN_BOTTOM",nan)
        casput(self.prefix+".MEAN_MIDDLE",nan)
        casput(self.prefix+".MEAN",nan)
        casput(self.prefix+".RBV",nan)
        casput(self.prefix+".STDEV",nan)
        casput(self.prefix+".VAL",nan)
        casput(self.prefix+".ENABLE",self.intervention_enabled)
        casput(self.prefix+'.RUNNING', self.running)

        casput(self.prefix+".KILL",value = 'write password to kill the process')
        casput(self.prefix+".processID",value = os.getpid())
        casput(self.prefix+".computer_name",value = computer_name)
        casput(self.prefix+".ip_address",value = ip_address)

        casput(self.prefix+".LIST_ALL_PVS",value = self.get_pv_list())

        # Monitor client-writable PVs.
        casmonitor(self.prefix+".KILL",callback=self.monitor)
コード例 #6
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)
コード例 #7
0
 def update(self):
     from CAServer import casput, casmonitor
     from configuration_driver import configuration
     for prop in self.global_properties:
         PV_name = (self.prefix + "." + prop).upper()
         value = self.getattr(configuration, prop, expand=True)
         if value is not None:
             casput(PV_name, value, update=False)
             casmonitor(PV_name, callback=self.monitor)
     for conf in configuration.configurations:
         for prop in self.configuration_properties:
             PV_name = (self.prefix + "." + conf.name + "." + prop).upper()
             value = self.getattr(conf, prop, expand=True)
             if value is not None:
                 casput(PV_name, value, update=False)
                 casmonitor(PV_name, callback=self.monitor)
         for prop in self.motor_properties:
             for motor_num in range(0, conf.n_motors):
                 PV_name = (self.prefix + "." + conf.name + ".MOTOR" +
                            str(motor_num + 1) + "." + prop).upper()
                 value = self.getitem(self.getattr(conf, prop), motor_num)
                 if value is not None:
                     casput(PV_name, value, update=False)
                     casmonitor(PV_name, callback=self.monitor)
コード例 #8
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)
コード例 #9
0
    def init(self):
        """
        define parameters for current operation
        initializes image analyzer
        """
        from optical_image_analyzer import image_analyzer
        image_analyzer.init()

        from CAServer import casput, casmonitor
        from CA import caput, camonitor
        from numpy import nan
        info('initializing the %s server' % self.prefix)
        casput(self.prefix + ".RBV", nan)
        casput(self.prefix + ".VAL", nan)

        casput(self.prefix + ".MEAN_TOP", nan)
        casput(self.prefix + ".MEAN_BOTTOM", nan)
        casput(self.prefix + ".MEAN_MIDDLE", nan)

        casput(self.prefix + ".MEAN", nan)
        casput(self.prefix + ".STDEV", nan)

        casput(self.prefix + '.RUNNING', self.running)

        #changable control parameters
        casput(self.prefix + '.region_offset_x', self.region_offset_x)
        casput(self.prefix + '.region_size_x', self.region_size_x)
        casput(self.prefix + '.region_offset_y', self.region_offset_y)
        casput(self.prefix + '.region_size_y', self.region_size_y)
        casput(self.prefix + '.warning', self.warning)
        casput(self.prefix + '.warning_threshold', self.warning_threshold)

        casput(self.prefix + ".KILL",
               value='write password to kill the process')

        #PV with a list of all process variable registered at the current Channel Access Server
        casput(self.prefix + ".LIST_ALL_PVS", value=self.get_pv_list())

        # Monitor client-writable PVs.
        casmonitor(self.prefix + ".KILL", callback=self.monitor)

        casmonitor(self.prefix + ".region_size_x", callback=self.monitor)
        casmonitor(self.prefix + ".region_offset_x", callback=self.monitor)
        casmonitor(self.prefix + ".region_size_y", callback=self.monitor)
        casmonitor(self.prefix + ".region_offset_y", callback=self.monitor)
        casmonitor(self.prefix + ".warning_threshold", callback=self.monitor)
コード例 #10
0
 def monitors_setup(self):
     """Monitor client-writable PVs."""
     from CAServer import casmonitor, casput
     for name in self.property_names:
         PV_name = self.prefix + name.upper()
         casmonitor(PV_name, callback=self.monitor)
コード例 #11
0
    def startup(self):
        from CAServer import casput,casmonitor
        from CA import caput,camonitor
        from numpy import nan
        #self.P_default , self.I_default , self.D_default = 1.0,0.316,0.562
        #print('startup with prefix = %r' %self.prefix)
        casput(self.prefix+".SCAN",self.SCAN)
        casput(self.prefix+".DESC",value = "Temperature server IOC: a System Layer server that orchestrates setting on Lightwave IOC and Oasis IOC.", update = False)
        casput(self.prefix+".EGU",value = "C")
        # Set defaults
        casput(self.prefix+".VAL",value = nan)
        casput(self.prefix+".VAL_ADV",value = nan)
        casput(self.prefix+".RBV",value = nan)
        casput(self.prefix+".P",value = nan)
        casput(self.prefix+".I",value = nan)
        casput(self.prefix+".TIME_POINTS",self.time_points)
        casput(self.prefix+".TEMP_POINTS",self.temp_points)
        casput(self.prefix+".FAULTS"," ")
        casput(self.prefix+".DMOV",value = nan)
        casput(self.prefix+".KILL",value = 'write password to kill the process')

        casput(self.prefix+".P_default",value = self.P_default)
        casput(self.prefix+".I_default",value = self.I_default)
        casput(self.prefix+".D_default",value = self.D_default)


        casput(self.prefix+".oasis_slave",value = self.oasis_slave)
        casput(self.prefix+".temperature_oasis_switch",value = self.temperature_oasis_switch)
        casput(self.prefix+".idle_temperature_oasis",value = self.idle_temperature_oasis)
        casput(self.prefix+".temperature_oasis_limit_high",value = self.temperature_oasis_limit_high)
        casput(self.prefix+".oasis_headstart_time",value = self.oasis_headstart_time)
        casput(self.prefix+".lightwave_prefix",value = self.lightwave_prefix)
        casput(self.prefix+".oasis_prefix",value = self.oasis_prefix)
        casput(self.prefix+".set_point_update_period",value = self.set_point_update_period)

        casput(self.prefix+".oasis_RBV",value = nan)
        casput(self.prefix+".oasis_VAL",value = nan)

        #PV with a list of all process variable registered at the current Channel Access Server
        casput(self.prefix+".LIST_ALL_PVS",value = self.get_pv_list())

        # Monitor client-writable PVs.
        casmonitor(self.prefix+".VAL",callback=self.monitor)
        casmonitor(self.prefix+".VAL_ADV",callback=self.monitor)
        casmonitor(self.prefix+".TIME_POINTS",callback=self.monitor)
        casmonitor(self.prefix+".TEMP_POINTS",callback=self.monitor)
        casmonitor(self.prefix+".KILL",callback=self.monitor)

        casmonitor(self.prefix+".P_default",callback=self.monitor)
        casmonitor(self.prefix+".I_default",callback=self.monitor)
        casmonitor(self.prefix+".D_default",callback=self.monitor)

        casmonitor(self.prefix+".oasis_slave",callback=self.monitor)
        casmonitor(self.prefix+".temperature_oasis_switch",callback=self.monitor)
        casmonitor(self.prefix+".idle_temperature_oasis",callback=self.monitor)
        casmonitor(self.prefix+".temperature_oasis_limit_high",callback=self.monitor)
        casmonitor(self.prefix+".oasis_headstart_time",callback=self.monitor)
        casmonitor(self.prefix+".lightwave_prefix",callback=self.monitor)
        casmonitor(self.prefix+".oasis_prefix",callback=self.monitor)
        casmonitor(self.prefix+".set_point_update_period",callback=self.monitor)

        #############################################################################
        ## Monitor server-writable PVs that come other servers

        ## Monitor Timing system IOC
        from timing_system import timing_system
        camonitor(timing_system.acquiring.PV_name,callback=self.on_acquire)

        ## Lightwave Temperature controller server
        prefix = self.lightwave_prefix
        camonitor(prefix+".VAL",callback=self.lightwave_monitor)
        camonitor(prefix+".RBV",callback=self.lightwave_monitor)
        camonitor(prefix+".P",callback=self.lightwave_monitor)
        camonitor(prefix+".I",callback=self.lightwave_monitor)
        camonitor(prefix+".DMOV",callback=self.lightwave_monitor)

        ## Oasis chiller server
        prefix = self.oasis_prefix
        camonitor(prefix+".VAL",callback=self.oasis_monitor)
        camonitor(prefix+".RBV",callback=self.oasis_monitor)

        ## Create local circular buffers
        from circular_buffer_LL import Server
        self.buffers = {}
        self.buffers['oasis_RBV'] = Server(size = (2,1*3600*2) , var_type = 'float64')
        self.buffers['oasis_VAL'] = Server(size = (2,1*3600*2) , var_type = 'float64')
        self.buffers['oasis_FAULTS'] = Server(size = (2,1*3600*2) , var_type = 'float64')

        self.buffers['lightwave_RBV'] = Server(size = (2,1*3600*2) , var_type = 'float64')
        self.buffers['lightwave_P'] = Server(size = (2,1*3600*2) , var_type = 'float64')
        self.buffers['lightwave_I'] = Server(size = (2,1*3600*2) , var_type = 'float64')
        self.buffers['lightwave_VAL'] = Server(size = (2,1*3600*2) , var_type = 'float64')
    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)
コード例 #13
0
    def startup(self):
        from CAServer import casput, casmonitor
        from numpy import nan
        casput(self.prefix + ".SCAN", oasis_chiller_driver.wait_time)
        casput(self.prefix + ".DESC", "Temp")
        casput(self.prefix + ".EGU", "C")
        # Set defaults
        casput(self.prefix + ".VAL", nan)
        casput(self.prefix + ".RBV", nan)

        casput(self.prefix + ".LLM", nan)
        casput(self.prefix + ".HLM", nan)
        casput(self.prefix + ".P1", nan)
        casput(self.prefix + ".I1", nan)
        casput(self.prefix + ".D1", nan)
        casput(self.prefix + ".P2", nan)
        casput(self.prefix + ".I2", nan)
        casput(self.prefix + ".D2", nan)
        casput(self.prefix + ".faults", " ")
        casput(self.prefix + ".fault_code", 0)
        casput(self.prefix + ".COMM", " ")
        casput(self.prefix + ".SCANT", nan)
        # Monitor client-writable PVs.
        casmonitor(self.prefix + ".SCAN", callback=self.monitor)
        casmonitor(self.prefix + ".VAL", callback=self.monitor)
        casmonitor(self.prefix + ".LLM", callback=self.monitor)
        casmonitor(self.prefix + ".HLM", callback=self.monitor)

        casmonitor(self.prefix + ".P1", callback=self.monitor)
        casmonitor(self.prefix + ".I1", callback=self.monitor)
        casmonitor(self.prefix + ".D1", callback=self.monitor)
        casmonitor(self.prefix + ".P2", callback=self.monitor)
        casmonitor(self.prefix + ".I2", callback=self.monitor)
        casmonitor(self.prefix + ".D2", callback=self.monitor)