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)
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)
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)
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)
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)
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)
def shutdown(self): from CAServer import casdel casdel(self.prefix)