Skip to content

Commit

Permalink
Merge pull request #610 from lnls-sirius/improve-bbb
Browse files Browse the repository at this point in the history
Improve BBB device.
  • Loading branch information
fernandohds564 authored Oct 8, 2020
2 parents 257b6df + 368211c commit 80a08c5
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 13 deletions.
36 changes: 25 additions & 11 deletions siriuspy/siriuspy/devices/bbb.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
save_pickle as _save_pickle, load_pickle as _load_pickle

from .device import Device as _Device, Devices as _Devices
from .dcct import DCCT


class BunchbyBunch(_Devices):
Expand All @@ -22,6 +23,7 @@ class BunchbyBunch(_Devices):
def __init__(self, devname):
"""."""
devname = BunchbyBunch.process_device_name(devname)
self.dcct = DCCT(DCCT.DEVICES.SI_13C4)
self.info = SystemInfo(devname)
self.timing = Timing(devname)
self.sram = Acquisition(devname, acqtype='SRAM')
Expand All @@ -33,7 +35,7 @@ def __init__(self, devname):
self.fbe = FrontBackEnd()
devs = [
self.info, self.timing, self.sram, self.bram, self.coeffs,
self.feedback, self.drive, self.bunch_clean, self.fbe, ]
self.feedback, self.drive, self.bunch_clean, self.fbe, self.dcct]

if devname.endswith('-L'):
self.pwr_amp1 = PwrAmpL(devname, num=0)
Expand Down Expand Up @@ -61,9 +63,12 @@ def save_raw_data(self, fname, acqtype='SRAM', overwrite=False):
acq = self.sram if acqtype in 'SRAM' else self.bram

data = dict(
current=self.dcct.current,
acqtype=acqtype, downsample=acq.downsample,
data=acq.data_raw, rf_freq=self.info.rf_freq_nom,
harmonic_number=self.info.harmonic_number
harmonic_number=self.info.harmonic_number,
growth_time=acq.growthtime, acq_time=acq.acqtime,
hold_time=acq.holdtime, post_time=acq.posttime,
)
_save_pickle(data, fname, overwrite=overwrite)

Expand Down Expand Up @@ -110,7 +115,7 @@ def sweep_adc_delay(self, values, wait=2, mon_type='mean'):
self.timing.adc_delay = init_val
return _np.array(mon_values)

def sweep_backend_phase(self, values, wait=2):
def sweep_backend_phase(self, values, wait=2, mon_type='peak'):
"""Sweep Backend Phase for each `value` in `values`."""
mon_values = []
ctrl, mon = 'Backend Phase', 'Peak magnitude'
Expand All @@ -120,13 +125,16 @@ def sweep_backend_phase(self, values, wait=2):
for i, val in enumerate(values):
self.fbe.be_phase = val
_time.sleep(wait)
mon_val = self.sram.spec_marker1_mag
if mon_type.lower() in 'peak':
mon_val = self.sram.spec_marker1_mag
else:
mon_val = self.sram.data_rms
mon_values.append(mon_val)
print(f'{i:03d}: {val:15.6f} {mon_val:15.6f}')
print(f'{i:03d}: {val:15.6f} {_np.mean(mon_val):15.6f}')
self.fbe.be_phase = init_val
return _np.array(mon_values)

def sweep_dac_delay(self, values, wait=2):
def sweep_dac_delay(self, values, wait=2, mon_type='peak'):
"""Sweep DAC Delay for each `value` in `values`."""
mon_values = []
ctrl, mon = 'DAC Delay', 'Peak Magnitude'
Expand All @@ -136,13 +144,16 @@ def sweep_dac_delay(self, values, wait=2):
for i, val in enumerate(values):
self.timing.dac_delay = val
_time.sleep(wait)
mon_val = self.sram.spec_marker1_mag
if mon_type.lower() in 'peak':
mon_val = self.sram.spec_marker1_mag
else:
mon_val = self.sram.data_rms
mon_values.append(mon_val)
print(f'{i:03d}: {val:15.6f} {mon_val:15.6f}')
print(f'{i:03d}: {val:15.6f} {_np.mean(mon_val):15.6f}')
self.timing.dac_delay = init_val
return _np.array(mon_values)

def sweep_feedback_phase(self, values, wait=2):
def sweep_feedback_phase(self, values, wait=2, mon_type='peak'):
"""Sweep Feedback Phase for each `value` in `values`."""
mon_values = []
ctrl, mon = 'Coeff. Phase', 'Peak Magnitude'
Expand All @@ -153,9 +164,12 @@ def sweep_feedback_phase(self, values, wait=2):
self.coeffs.edit_phase = val
self.coeffs.cmd_edit_apply()
_time.sleep(wait)
mon_val = self.sram.spec_marker1_mag
if mon_type.lower() in 'peak':
mon_val = self.sram.spec_marker1_mag
else:
mon_val = self.sram.data_rms
mon_values.append(mon_val)
print(f'{i:03d}: {val:15.6f} {mon_val:15.6f}')
print(f'{i:03d}: {val:15.6f} {_np.mean(mon_val):15.6f}')
self.coeffs.edit_phase = init_val
self.coeffs.cmd_edit_apply()
return _np.array(mon_values)
Expand Down
9 changes: 7 additions & 2 deletions siriuspy/siriuspy/devices/dcct.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ class DEVICES:
ALL = (BO, SI_13C4, SI_14C4)

_properties = (
'RawReadings-Mon',
'RawReadings-Mon', 'Current-Mon',
'FastMeasPeriod-SP', 'FastMeasPeriod-RB',
'FastSampleCnt-SP', 'FastSampleCnt-RB',
'MeasTrg-Sel', 'MeasTrg-Sts',
Expand Down Expand Up @@ -66,10 +66,15 @@ def acq_ctrl(self, value):
self['MeasTrg-Sel'] = DCCT.PWRSTATE.On if value else DCCT.PWRSTATE.Off

@property
def current(self):
def current_fast(self):
"""."""
return self['RawReadings-Mon']

@property
def current(self):
"""."""
return self['Current-Mon']

def wait(self, timeout=10):
"""."""
nrp = int(timeout/0.1)
Expand Down

0 comments on commit 80a08c5

Please sign in to comment.