"scaler", "clock", "I0", "scint", "diode", "I0Mon", "ROI1", "ROI2", ] from ophyd.scaler import ScalerCH from ..session_logs import logger logger.info(__file__) scaler = ScalerCH("sky:scaler1", name="scaler", labels=("detectors", )) if len(scaler.channels.chan01.chname.get()) == 0: scaler.channels.chan01.chname.put("clock") scaler.channels.chan02.chname.put("I0") scaler.channels.chan03.chname.put("scint") scaler.channels.chan05.chname.put("diode") scaler.channels.chan08.chname.put("I0Mon") scaler.channels.chan10.chname.put("ROI1") scaler.channels.chan11.chname.put("ROI2") scaler.select_channels(None) # name some channels for convenience clock = scaler.channels.chan01.s I0 = scaler.channels.chan02.s scint = scaler.channels.chan03.s
def scaler_ch(cleanup, scaler_test_ioc): ch = ScalerCH(scaler_test_ioc.pvs['scaler_prefix']) ch.wait_for_connection() cleanup.add(scaler) return ch
""" lesson 2 : create the motor and scaler """ __all__ = [ 'm1', 'scaler', ] from ...session_logs import logger logger.info(__file__) from apstools.devices import use_EPICS_scaler_channels from ophyd import EpicsMotor from ophyd.scaler import ScalerCH m1 = EpicsMotor("sky:m1", name="m1") scaler = ScalerCH("sky:scaler1", name="scaler") m1.wait_for_connection() scaler.wait_for_connection() scaler.match_names() use_EPICS_scaler_channels(scaler)
timebase I0 I00 I000 scint diode """.split() from ..session_logs import logger logger.info(__file__) from .. import iconfig from ophyd.scaler import ScalerCH import time IOC = iconfig.get("GP_IOC_PREFIX", "gp:") # make an instance of the entire scaler, for general control scaler1 = ScalerCH(f"{IOC}scaler1", name="scaler1", labels=["scalers", "detectors"]) scaler1.wait_for_connection() if not len(scaler1.channels.chan01.chname.get()): # CAUTION: define channel names JUST for this simulation. # For a real instrument, the names are assigned when the # detector pulse cables are connected to the scaler channels. logger.info( f"{scaler1.name} has no channel names. Assigning channel names.") scaler1.channels.chan01.chname.put("timebase") scaler1.channels.chan02.chname.put("I0") scaler1.channels.chan03.chname.put("scint") scaler1.channels.chan04.chname.put("diode") scaler1.channels.chan05.chname.put("I000") scaler1.channels.chan06.chname.put("I00")
""" lesson 3 : create the motor and scaler """ __all__ = [ 'm1', 'scaler', ] from ...session_logs import logger logger.info(__file__) from ophyd import EpicsMotor from ophyd.scaler import ScalerCH P = "sky:" m1 = EpicsMotor(f"{P}m1", name="m1") scaler = ScalerCH(f"{P}scaler1", name="scaler") m1.wait_for_connection() scaler.wait_for_connection() scaler.select_channels(None)
# PV parameter loadings pv_names = loadPV() # beam=EpicsSignal(pv_names['Beam_Current'],name='beam') class Accelerator(Device): beam_current = Cpt(EpicsSignal, pv_names['Beam']['Current']) life_time = Cpt(EpicsSignal, pv_names['Beam']['LifeTime']) topup_count = Cpt(EpicsSignal, pv_names['Beam']['TopUpCount']) accelerator = Accelerator('', name='accelerator') # Scaler scaler = ScalerCH(pv_names['Scaler']['scaler'], name='scaler') # only select named channels scaler.select_channels(None) # Stage signal to set counting mode to "single shot" scaler.stage_sigs["count_mode"] = 0 scaler.stage_sigs["count"] = 0 preset_time = scaler.preset_time # Step-Scan Counter I0 = EpicsSignalRO(pv_names['Scaler']['I0_counter_cal'], name='I0_calc') It = EpicsSignalRO(pv_names['Scaler']['It_counter_cal'], name='It_calc') If = EpicsSignalRO(pv_names['Scaler']['If_counter_cal'], name='If_calc') Ir = EpicsSignalRO(pv_names['Scaler']['Ir_counter_cal'], name='Ir_calc')
s2ao = EpicsMotor('29idb:m14', name='s2ao', labels=('motor', )) # Sl2A out s2ab = EpicsMotor('29idb:m15', name='s2ab', labels=('motor', )) # Sl2A bot s2at = EpicsMotor('29idb:m16', name='s2at', labels=('motor', )) # Sl2A top slit3b = EpicsMotor('29idb:m26', name='slit3b', labels=('motor', )) # Sl3D bottom slit3t = EpicsMotor('29idb:m27', name='slit3t', labels=('motor', )) # Sl3D top d4d = EpicsMotor('29idb:m25', name='d4d', labels=('motor', )) # D4-D d5d = EpicsMotor('29idb:m28', name='d5d', labels=('motor', )) # D5-D mmesh = EpicsMotor('29idb:m5', name='mmesh', labels=('motor', )) # mesh vdiag = EpicsMotor('29idb:m4', name='vdiag', labels=('motor', )) # Vdiag samx = EpicsMotor('29idKappa:m2', name='samx', labels=('motor', )) # SampleX samy = EpicsMotor('29idKappa:m3', name='samy', labels=('motor', )) # SampleY samz = EpicsMotor('29idKappa:m4', name='samz', labels=('motor', )) # SampleZ # Macro Motor: SpecMotor(mne='iexmono', config_line='24', name='IEXmono', macro_prefix='Mono') # IEXmono # read_mode=7 scaler1 = ScalerCH('29idMZ0:scaler1', name='scaler1', labels=('detectors', )) # counter: sec = SpecCounter(mne='sec', config_line='0', name='Seconds', unit='0', chan='0', pvname=29idMZ0:scaler1.S1) mon = EpicsSignal('29idMZ0:scaler1.S14', name='mon', labels=('detectors', )) # Monitor srs2 = EpicsSignal('29idMZ0:scaler1.S2', name='srs2', labels=('detectors', )) # SRS2 srs3 = EpicsSignal('29idMZ0:scaler1.S3', name='srs3', labels=('detectors', )) # SRS3 srs4 = EpicsSignal('29idMZ0:scaler1.S4', name='srs4', labels=('detectors', )) # SRS4 mcp = EpicsSignal('29idMZ0:scaler1.S5', name='mcp', labels=('detectors', )) # MCP samT = EpicsSignal('29idd:LS331:TC1:SampleA', name='samT', labels=('detectors', )) # TA cryoT = EpicsSignal('29idd:LS331:TC1:SampleB',
""" our diffractometer """ __all__ = [ 'scalerd', #'scalerb', ] from ..session_logs import logger logger.info(__file__) from ophyd.scaler import ScalerCH scalerd = ScalerCH('xxx:scaler1', name='scalerd', labels=('detectors','counters')) scalerd.select_channels(None) #scalerb = ScalerCH('4idb:scaler1', name='scalerb', labels=('detectors','counters')) #scalerb.select_channels(None) # TODO: name the other channels, watch out for python keywords such as del! # TODO: How should we handle the scalers? What is scaler3?
""" scaler support (area detectors handled separately) """ __all__ = [ 'scaler', ] from ..session_logs import logger logger.info(__file__) from ophyd.scaler import ScalerCH from ..utils import safeOphydName scaler = ScalerCH('3idb:scaler1', name='scaler', labels=[ "detectors", ]) scaler.select_channels()
http://nsls-ii.github.io/bluesky/async.html#flying """ import asyncio from collections import deque P = "xxx:" from ophyd.scaler import ScalerCH from ophyd import EpicsMotor from apstools.synApps_ophyd import userCalcsDevice from apstools.synApps_ophyd import sscanDevice from apstools.synApps_ophyd import SaveData from apstools.synApps_ophyd import swait_setup_lorentzian scaler = ScalerCH(f"{P}scaler1", name="scaler") scaler.select_channels(None) m1 = EpicsMotor(f"{P}m1", name="m1") calcs = userCalcsDevice(P, name="calcs") scans = sscanDevice(P, name="scans") scans.select_channels() save_data = SaveData(f"{P}saveData_", name="save_data") # configure saveData for data collection into MDA files: save_data.file_system.put("/tmp") save_data.subdirectory.put("saveData") save_data.base_name.put("sscan1_") save_data.next_scan_number.put(1) save_data.comment1.put("testing") save_data.comment2.put("configured and run from ophyd")
'scaler', 'clock', 'I0', 'scint', 'diode', 'I0Mon', 'ROI1', 'ROI2' ] from ophyd.scaler import ScalerCH from ..session_logs import logger logger.info(__file__) scaler = ScalerCH('sky:scaler1', name='scaler', labels=("detectors",)) if len(scaler.channels.chan01.chname.get()) == 0: scaler.channels.chan01.chname.put("clock") scaler.channels.chan02.chname.put("I0") scaler.channels.chan03.chname.put("scint") scaler.channels.chan05.chname.put("diode") scaler.channels.chan08.chname.put("I0Mon") scaler.channels.chan10.chname.put("ROI1") scaler.channels.chan11.chname.put("ROI2") scaler.select_channels(None) # name some channels for convenience clock = scaler.channels.chan01.s I0 = scaler.channels.chan02.s scint = scaler.channels.chan03.s