ADSIS8300bcm

Overview

Prerequisites

Functionality

EPICS records

Apart from the the EPICS records inherited from the sis8300.template file, the ADSIS8300bcm driver defines additional EPICS records, specific to the BCM system and its data channels.

Board wide EPICS records

These records are defined in the sis8300bcm.template file. They contain board specific records.

BCM record list
Record name Description Record type Access Asyn driver info
$(P)$(R)AcquisitionTriggerSource, $(P)$(R)AcquisitionTriggerSourceR

Acquisition trigger source selection:

  • Software
  • Internal
  • FrontPanel
  • BackPlane1
  • BackPlane2
  • BackPlane3
  • BackPlane4

This trigger is used to start data acquisition. See also Trigger types.

mbbo, mbbi write, read BCM.ACQUISITION_TRIGGER_SOURCE
$(P)$(R)BeamTriggerSource, $(P)$(R)BeamTriggerSourceR

Beam trigger source selection:

  • Software
  • Internal
  • FrontPanel
  • BackPlane1
  • BackPlane2
  • BackPlane3
  • BackPlane4

This trigger is used to define beam envelope for protection function. See also Trigger types.

mbbo, mbbi write, read BCM.BEAM_TRIGGER_SOURCE
$(P)$(R)BCMFWVersionR Firmware version. longin read BCM.FW_VERSION
$(P)$(R)BCMFWGitHashR Firmware GIT hash string. longin read BCM.FW_GIT_HASH
$(P)$(R)ClockFrequencyMeasR Measured clock frequency. Measurement is done in the firmware. ai read BCM.CLOCK_FREQUENCY_MEAS
$(P)$(R)TriggerPeriodMeasR Measured trigger period. Measurement is done in the firmware. ai read BCM.TRIGGER_PERIOD_MEAS
$(P)$(R)TriggerWidthMeasR Measured trigger width. Measurement is done in the firmware. ai read BCM.TRIGGER_WIDTH_MEAS
$(P)$(R)MinTriggerPeriod, $(P)$(R)MinTriggerPeriodR Desired minimum trigger period. longout, longin write, read BCM.MIN_TRIGGER_PERIOD
$(P)$(R)MaxPulseWidth, $(P)$(R)MaxPulseWidthR Desired maximum trigger width. longout, longin write, read BCM.MAX_PULSE_WIDTH
$(P)$(R)MainClockMissingR Clock missing indicator. Detection is done in firmware. bi read BCM.MAIN_CLOCK_MISSING
$(P)$(R)AuxiliaryClockMissingR Auxiliary clock missing indicator. Detection is done in firmware. bi read BCM.AUXILIARY_CLOCK_MISSING
$(P)$(R)Ready, $(P)$(R)ReadyR System ready for use. bo, bi write, read BCM.READY
$(P)$(R)BeamMode, $(P)$(R)BeamModeR User specified beam mode when not using look-up table. longout, longin write, read BCM.BEAM_MODE
$(P)$(R)BeamDestination, $(P)$(R)BeamDestinationR User specified beam destination when not using look-up table. longout, longin write, read BCM.BEAM_DESTINATION
$(P)$(R)LutControl Look-up table control enable / disable. bo, bi write, read BCM.LUT_CONTROL
$(P)$(R)ReadyFPGAR FPGA ready indicator. bi read BCM.READY_FPGA
$(P)$(R)BeamPermitFPGAR FPGA beam permit indicator. bi read BCM.BEAM_PERMIT_FPGA

The table below lists common alarm records. See also Alarm sets and types for alarm type description.

BCM alarm record list
Record name Description Record type Access Asyn driver info
$(P)$(R)AlarmsClear Clear all hold and first alarms. bo write BCM.ALARMS_CLEAR
$(P)$(R)AlarmsControl, $(P)$(R)AlarmsControlR Alarms enable / disable control. bo, bi write, read BCM.ALARMS_CONTROL
$(P)$(R)AlarmAuxClockControl, $(P)$(R)AlarmAuxClockControlR Auxiliary clock alarm reporting control. bo, bi write, read BCM.ALARM.AUXILIARY_CLOCK_CONTROL
$(P)$(R)AlarmProcClockControl, $(P)$(R)AlarmProcClockControlR Processing clock alarm reporting control. bo, bi write, read BCM.ALARM.PROCESSING_CLOCK_CONTROL
$(P)$(R)AlarmTriggerTooWideControl, $(P)$(R)AlarmTriggerTooWideControlR Trigger too wide alarm reporting control. bo, bi write, read BCM.ALARM.TRIGGER_TOO_WIDE_CONTROL
$(P)$(R)AlarmTriggerTooNarrowControl, $(P)$(R)AlarmTriggerTooNarrowControlR Trigger too narrow alarm reporting control. bo, bi write, read BCM.ALARM.TRIGGER_TOO_NARROW_CONTROL
$(P)$(R)AlarmTriggerPeriodTooShortControl, $(P)$(R)AlarmTriggerPeriodTooShortControlR Trigger period too short alarm reporting control. bo, bi write, read BCM.ALARM.TRIGGER_PERIOD_TOO_SHORT_CONTROL
$(P)$(R)AlarmAuxClockHoldR Latched auxiliary clock alarm status. bi read BCM.ALARM.AUXILIARY_CLOCK_HOLD
$(P)$(R)AlarmProcClockHoldR Latched processing clock alarm status. bi read BCM.ALARM.PROCESSING_CLOCK_HOLD
$(P)$(R)AlarmTriggerTooWideHoldR Latched trigger too wide alarm status. bi read BCM.ALARM.TRIGGER_TOO_WIDE_HOLD
$(P)$(R)AlarmTriggerTooNarrowHoldR Latched trigger too narrow alarm status. bi read BCM.ALARM.TRIGGER_TOO_NARROW_HOLD
$(P)$(R)AlarmTriggerPeriodTooShortHoldR Latched trigger period too short alarm status. bi read BCM.ALARM.TRIGGER_PERIOD_TOO_SHORT_HOLD
$(P)$(R)AlarmAuxClockFirstR First auxiliary clock alarm status. bi read BCM.ALARM.AUXILIARY_CLOCK_FIRST
$(P)$(R)AlarmProcClockFirstR First processing clock alarm status. bi read BCM.ALARM.PROCESSING_CLOCK_FIRST
$(P)$(R)AlarmTriggerTooWideFirstR First trigger too wide alarm status. bi read BCM.ALARM.TRIGGER_TOO_WIDE_FIRST
$(P)$(R)AlarmTriggerTooNarrowFirstR First trigger too narrow alarm status. bi read BCM.ALARM.TRIGGER_TOO_NARROW_FIRST
$(P)$(R)AlarmTriggerPeriodTooShortFirstR First trigger period too short alarm status. bi read BCM.ALARM.TRIGGER_PERIOD_TOO_SHORT_FIRST
$(P)$(R)AlarmAuxClockDirectR Direct auxiliary clock alarm status. bi read BCM.ALARM.AUXILIARY_CLOCK_DIRECT
$(P)$(R)AlarmProcClockDirectR Direct processing clock alarm status. bi read BCM.ALARM.PROCESSING_CLOCK_DIRECT
$(P)$(R)AlarmTriggerTooWideDirectR Direct trigger too wide alarm status. bi read BCM.ALARM.TRIGGER_TOO_WIDE_DIRECT
$(P)$(R)AlarmTriggerTooNarrowDirectR Direct trigger too narrow alarm status. bi read BCM.ALARM.TRIGGER_TOO_NARROW_DIRECT
$(P)$(R)AlarmTriggerPeriodTooShortDirectR Direct trigger period too short alarm status. bi read BCM.ALARM.TRIGGER_PERIOD_TOO_SHORT_DIRECT

Data channel EPICS records

These records are defined in the sis8300-acqcfg.template file. They contain per channel specific records.

Acquisition configuration record list
Record name Description Record type Access Asyn driver info
$(P)$(R)Name Channel name. stringout    
$(P)$(R)MemoryAddress, $(P)$(R)MemoryAddressR AMC DRR memory address. longout, longin write, read BCM.ACQCFG.MEMORY_ADDRESS
$(P)$(R)NumSamples, $(P)$(R)NumSamplesR Number of samples to acquire. longout, longin write, read BCM.ACQCFG.NUM_SAMPLES
$(P)$(R)FractionBits, $(P)$(R)FractionBitsR Fraction bits in the sample value. Applies if the sample value is represented in floating point. longout, longin write, read BCM.ACQCFG.FRACTION_BITS
$(P)$(R)Factor, $(P)$(R)FactorR Conversion factor used when scaling sample value. ao, ai write, read BCM.ACQCFG.FACTOR
$(P)$(R)Offset, $(P)$(R)OffsetR Conversion offset applied when scaling sample value. ao, ai write, read BCM.ACQCFG.OFFSET
$(P)$(R)Decimation, $(P)$(R)DecimationR ??? longout, longin write, read BCM.ACQCFG.DECIMATION
$(P)$(R)Scaling, $(P)$(R)ScalingR Scaling control. bo, bi write, read BCM.ACQCFG.SCALING
$(P)$(R)Converting, $(P)$(R)ConvertingR Converting control. bo, bi write, read BCM.ACQCFG.CONVERTING
$(P)$(R)Recording, $(P)$(R)RecordingR Recording control. bo, bi write, read BCM.ACQCFG.RECORDING
$(P)$(R)TickValueR Sample delta value ai read BCM.ACQCFG.TICK_VALUE

ACCT EPICS records

These records are defined in the sis8300-acct.template file. They contain per channel specific records.

ACCT record list
Record name Description Record type Access Asyn driver info
$(P)$(R)Name ACCT name. stringout    
$(P)$(R)TriggerSource, $(P)$(R)TriggerSourceR Trigger synchronized to the beam. See also Trigger types. mbbo, mbbi write, read BCM.ACCT.TRIGGER_SOURCE
$(P)$(R)PulseChargeR Measured pulse charge. ai read BCM.ACCT.PULSE_CHARGE
$(P)$(R)FlatTopChargeR Measured pulse flat top charge. ai read BCM.ACCT.FLATTOP_CHARGE
$(P)$(R)PulseWidthR Measured pulse width. ai read BCM.ACCT.PULSE_WIDTH
$(P)$(R)AdcScale, $(P)$(R)AdcScaleR ADC scale factor. ao, ai write, read BCM.ACCT.ADC_SCALE
$(P)$(R)AdcOffset, $(P)$(R)AdcOffsetR ADC offset value. longout, longin write, read BCM.ACCT.ADC_OFFSET
$(P)$(R)FlatTopStart, $(P)$(R)FlatTopStartR Start of flat top region. ao, ai write, read BCM.ACCT.FLATTOP_START
$(P)$(R)FlatTopEnd, $(P)$(R)FlatTopEndR End of flat top region. ao, ai write, read BCM.ACCT.FLATTOP_END
$(P)$(R)FlatTopCurrentR Measured pulse flat top current. ai read BCM.ACCT.FLATTOP_CURRENT
$(P)$(R)FineDelay, $(P)$(R)FineDelayR Trigger fine delay to align the pulse edges with the trigger edges for each ADC individually. ao, ai write, read BCM.ACCT.FINE_DELAY
$(P)$(R)DroopRate, $(P)$(R)DroopRateR Droop compensation rate. ao, ai write, read BCM.ACCT.DROOP_RATE
$(P)$(R)DroopCompensating, $(P)$(R)DroopCompensatingR Droop compensation control. bo, bi write, read BCM.ACCT.DROOP_COMPENSATING
$(P)$(R)NoiseFiltering, $(P)$(R)NoiseFilteringR Noise filtering control. bo, bi write, read BCM.ACCT.NOISE_FILTERING
$(P)$(R)BaseliningBefore, $(P)$(R)BaseliningBeforeR Baseline correction before applying droop compensation. bo, bi write, read BCM.ACCT.BASELINING_BEFORE
$(P)$(R)BaseliningAfter, $(P)$(R)BaseliningAfterR Baseline correction after applying droop compensation. bo, bi write, read BCM.ACCT.BASELINING_AFTER
$(P)$(R)DcBlocking, $(P)$(R)DcBlockingR DC blocking filter control. bo, bi write, read BCM.ACCT.DC_BLOCKING
$(P)$(R)UpperThreshold, $(P)$(R)UpperThresholdR Upper current level threshold. ao, ai write, read BCM.ACCT.UPPER_THRESHOLD
$(P)$(R)LowerThreshold, $(P)$(R)LowerThresholdR Lower current level threshold. ao, ai write, read BCM.ACCT.LOWER_THRESHOLD
$(P)$(R)ErrantThreshold, $(P)$(R)ErrantThresholdR Errant current level threshold. ao, ai write, read BCM.ACCT.ERRANT_THRESHOLD
$(P)$(R)MaxPulseLength, $(P)$(R)MaxPulseLengthR Maximum pulse length. longout, longin write, read BCM.ACCT.MAX_PULSE_LENGTH
$(P)$(R)LowerWindowStart, $(P)$(R)LowerWindowStartR The activation window start time for alarm on lower threshold. ao, ai write, read BCM.ACCT.LOWER_WINDOW_START
$(P)$(R)LowerWindowEnd, $(P)$(R)LowerWindowEndR The activation window end time for alarm on lower threshold. ao, ai write, read BCM.ACCT.LOWER_WINDOW_END
$(P)$(R)ErrantWindowStart, $(P)$(R)ErrantWindowStartR The activation window start time for alarm on errant threshold. ao, ai write, read BCM.ACCT.ERRANT_WINDOW_START
$(P)$(R)ErrantWindowEnd, $(P)$(R)ErrantWindowEndR The activation window end time for alarm on errant threshold. ao, ai write, read BCM.ACCT.ERRANT_WINDOW_END

The table below lists ACCT alarm records. See also Alarm sets and types for alarm type description.

ACCT alarm record list
Record name Description Record type Access Asyn driver info
$(P)$(R)AlarmUpperControl, $(P)$(R)AlarmUpperControlR Pulse amplitude too high alarm control. bo, bi write, read BCM.ACCT.ALARM.UPPER_CONTROL
$(P)$(R)AlarmLowerControl, $(P)$(R)AlarmLowerControlR Pulse amplitude too low alarm control. bo, bi write, read BCM.ACCT.ALARM.LOWER_CONTROL
$(P)$(R)AlarmErrantControl, $(P)$(R)AlarmErrantControlR Errant beam alarm control. bo, bi write, read BCM.ACCT.ALARM.ERRANT_CONTROL
$(P)$(R)AlarmTriggerControl, $(P)$(R)AlarmTriggerControlR Beam pulse longer than trigger pulse alarm control. bo, bi write, read BCM.ACCT.ALARM.TRIGGER_CONTROL
$(P)$(R)AlarmLimitControl, $(P)$(R)AlarmLimitControlR Beam pulse longer than limit parameter from timing system alarm control. bo, bi write, read BCM.ACCT.ALARM.LIMIT_CONTROL
$(P)$(R)AlarmAdcOverflowControl, $(P)$(R)AlarmAdcOverflowControlR ADC overflow alarm control. bo, bi write, read BCM.ACCT.ALARM.ADC_OVERFLOW_CONTROL
$(P)$(R)AlarmAdcUnderflowControl, $(P)$(R)AlarmAdcUnderflowControlR ADC underflow alarm control. bo, bi write, read BCM.ACCT.ALARM.ADC_UNDERFLOW_CONTROL
$(P)$(R)AlarmAdcStuckControl, $(P)$(R)AlarmAdcStuckControlR ADC stuck alarm control. bo, bi write, read BCM.ACCT.ALARM.ADC_STUCK_CONTROL
$(P)$(R)AlarmAiuFaultControl, $(P)$(R)AlarmAiuFaultControlR AIU power supply alarm control. bo, bi write, read BCM.ACCT.ALARM.AIU_FAULT_CONTROL
$(P)$(R)AlarmChargeTooHighControl Charge too high alarm control. bo, bi write, read BCM.ACCT.ALARM.CHARGE_TOO_HIGH_CONTROL
$(P)$(R)AlarmUpperHoldR Latched alarm status reporting pulse amplitude is too high. bi read BCM.ACCT.ALARM.UPPER_HOLD
$(P)$(R)AlarmLowerHoldR Latched alarm status reporting for pulse amplitude is too low. bi read BCM.ACCT.ALARM.LOWER_HOLD
$(P)$(R)AlarmErrantHoldR Latched alarm status reporting errant beam condition. bi read BCM.ACCT.ALARM.ERRANT_HOLD
$(P)$(R)AlarmTriggerHoldR Latched alarm status reporting beam pulse is longer than trigger pulse. bi read BCM.ACCT.ALARM.TRIGGER_HOLD
$(P)$(R)AlarmLimitHoldR Latched alarm status reporting beam pulse is longer than limit parameter from timing system. bi read BCM.ACCT.ALARM.LIMIT_HOLD
$(P)$(R)AlarmAdcOverflowHoldR Latched alarm status reporting ADC overflow is detected. bi read BCM.ACCT.ALARM.ADC_OVERFLOW_HOLD
$(P)$(R)AlarmAdcUnderflowHoldR Latched alarm status reporting ADC underflow is detected. bi read BCM.ACCT.ALARM.ADC_UNDERFLOW_HOLD
$(P)$(R)AlarmAdcStuckHoldR Latched alarm status reporting ADC stuck is detected. bi read BCM.ACCT.ALARM.ADC_STUCK_HOLD
$(P)$(R)AlarmAiuFaultHoldR Latched alarm status reporting AIU power supply fault or cable disconnected. bi read BCM.ACCT.ALARM.AIU_FAULT_HOLD
$(P)$(R)AlarmChargeTooHighHoldR Latched alarm status reporting charge is too high. bi read BCM.ACCT.ALARM.CHARGE_TOO_HIGH_HOLD
$(P)$(R)AlarmLUTUpperThresholdHoldR Latched alarm status reporting LUT upper threshold value is not consistent with beam mode ID. bi read BCM.ACCT.ALARM.LUT_UPPER_THRESHOLD_HOLD
$(P)$(R)AlarmLUTLowerThresholdHoldR Latched alarm status reporting LUT lower threshold value is not consistent with beam mode ID. bi read BCM.ACCT.ALARM.LUT_LOWER_THRESHOLD_HOLD
$(P)$(R)AlarmLUTPulseLengthHoldR Latched alarm status reporting LUT max pulse length threshold value is not consistent with beam mode ID. bi read BCM.ACCT.ALARM.LUT_PULSE_LENGTH_HOLD
$(P)$(R)AlarmLUTDestinationModeHoldR Latched alarm status reporting LUT beam destination ID not found. bi read BCM.ACCT.ALARM.LUT_DESTINATION_MODE_HOLD
$(P)$(R)AlarmUpperFirstR First alarm status reporting pulse amplitude is too high. bi read BCM.ACCT.ALARM.UPPER_FIRST
$(P)$(R)AlarmLowerFirstR First alarm status reporting for pulse amplitude is too low. bi read BCM.ACCT.ALARM.LOWER_FIRST
$(P)$(R)AlarmErrantFirstR First alarm status reporting errant beam condition. bi read BCM.ACCT.ALARM.ERRANT_FIRST
$(P)$(R)AlarmTriggerFirstR First alarm status reporting beam pulse is longer than trigger pulse. bi read BCM.ACCT.ALARM.TRIGGER_FIRST
$(P)$(R)AlarmLimitFirstR First alarm status reporting beam pulse is longer than limit parameter from timing system. bi read BCM.ACCT.ALARM.LIMIT_FIRST
$(P)$(R)AlarmAdcOverflowFirstR First alarm status reporting ADC overflow is detected. bi read BCM.ACCT.ALARM.ADC_OVERFLOW_FIRST
$(P)$(R)AlarmAdcUnderflowFirstR First alarm status reporting ADC underflow is detected. bi read BCM.ACCT.ALARM.ADC_UNDERFLOW_FIRST
$(P)$(R)AlarmAdcStuckFirstR First alarm status reporting ADC stuck is detected. bi read BCM.ACCT.ALARM.ADC_STUCK_FIRST
$(P)$(R)AlarmAiuFaultFirstR First alarm status reporting AIU power supply fault or cable disconnected. bi read BCM.ACCT.ALARM.AIU_FAULT_FIRST
$(P)$(R)AlarmChargeTooHighFirstR First alarm status reporting charge is too high. bi read BCM.ACCT.ALARM.CHARGE_TOO_HIGH_FIRST
$(P)$(R)AlarmLUTUpperThresholdFirstR First alarm status reporting LUT upper threshold value is not consistent with beam mode ID. bi read BCM.ACCT.ALARM.LUT_UPPER_THRESHOLD_FIRST
$(P)$(R)AlarmLUTLowerThresholdFirstR First alarm status reporting LUT lower threshold value is not consistent with beam mode ID. bi read BCM.ACCT.ALARM.LUT_LOWER_THRESHOLD_FIRST
$(P)$(R)AlarmLUTPulseLengthFirstR First alarm status reporting LUT max pulse length threshold value is not consistent with beam mode ID. bi read BCM.ACCT.ALARM.LUT_PULSE_LENGTH_FIRST
$(P)$(R)AlarmLUTDestinationModeFirstR First alarm status reporting LUT beam destination ID not found. bi read BCM.ACCT.ALARM.LUT_DESTINATION_MODE_FIRST
$(P)$(R)AlarmUpperDirectR Immediate alarm status reporting pulse amplitude is too high. bi read BCM.ACCT.ALARM.UPPER_DIRECT
$(P)$(R)AlarmLowerDirectR Immediate alarm status reporting for pulse amplitude is too low. bi read BCM.ACCT.ALARM.LOWER_DIRECT
$(P)$(R)AlarmErrantDirectR Immediate alarm status reporting errant beam condition. bi read BCM.ACCT.ALARM.ERRANT_DIRECT
$(P)$(R)AlarmTriggerDirectR Immediate alarm status reporting beam pulse is longer than trigger pulse. bi read BCM.ACCT.ALARM.TRIGGER_DIRECT
$(P)$(R)AlarmLimitDirectR Immediate alarm status reporting beam pulse is longer than limit parameter from timing system. bi read BCM.ACCT.ALARM.LIMIT_DIRECT
$(P)$(R)AlarmAdcOverflowDirectR Immediate alarm status reporting ADC overflow is detected. bi read BCM.ACCT.ALARM.ADC_OVERFLOW_DIRECT
$(P)$(R)AlarmAdcUnderflowDirectR Immediate alarm status reporting ADC underflow is detected. bi read BCM.ACCT.ALARM.ADC_UNDERFLOW_DIRECT
$(P)$(R)AlarmAdcStuckDirectR Immediate alarm status reporting ADC stuck is detected. bi read BCM.ACCT.ALARM.ADC_STUCK_DIRECT
$(P)$(R)AlarmAiuFaultDirectR Immediate alarm status reporting AIU power supply fault or cable disconnected. bi read BCM.ACCT.ALARM.AIU_FAULT_DIRECT
$(P)$(R)AlarmChargeTooHighDirectR Immediate alarm status reporting charge is too high. bi read BCM.ACCT.ALARM.CHARGE_TOO_HIGH_DIRECT
$(P)$(R)AlarmLUTUpperThresholdDirectR Immediate alarm status reporting LUT upper threshold value is not consistent with beam mode ID. bi read BCM.ACCT.ALARM.LUT_UPPER_THRESHOLD_DIRECT
$(P)$(R)AlarmLUTLowerThresholdDirectR Immediate alarm status reporting LUT lower threshold value is not consistent with beam mode ID. bi read BCM.ACCT.ALARM.LUT_LOWER_THRESHOLD_DIRECT
$(P)$(R)AlarmLUTPulseLengthDirectR Immediate alarm status reporting LUT max pulse length threshold value is not consistent with beam mode ID. bi read BCM.ACCT.ALARM.LUT_PULSE_LENGTH_DIRECT
$(P)$(R)AlarmLUTDestinationModeDirectR Immediate alarm status reporting LUT beam destination ID not found. bi read BCM.ACCT.ALARM.LUT_DESTINATION_MODE_DIRECT

Differential channel EPICS records

These records are defined in the sis8300-diff.template file. They contain per differential channel specific records.

Record name Description Record type Access Asyn driver info
$(P)$(R)Name Differential channel name. stringout    
$(P)$(R)SourceA, $(P)$(R)SourceAR

Differential channel A source selection.

  • ACCT 1
  • ACCT 2
  • ACCT 3
  • ACCT 4
  • ACCT 5
  • ACCT 6
  • ACCT 7
  • ACCT 8
  • ACCT 9
  • ACCT 10
  • Fiber 1
  • Fiber 2
mbbo, mbbi write, read BCM.DIFF.SOURCE_A
$(P)$(R)SourceB, $(P)$(R)SourceBR

Differential channel B source selection.

  • ACCT 1
  • ACCT 2
  • ACCT 3
  • ACCT 4
  • ACCT 5
  • ACCT 6
  • ACCT 7
  • ACCT 8
  • ACCT 9
  • ACCT 10
  • Fiber 1
  • Fiber 2
mbbo, mbbi write, read BCM.DIFF.SOURCE_B
$(P)$(R)Delay, $(P)$(R)DelayR Parameter to add a delay in one of the channels of a differential pair to compensate beam arrival time differences and different cable lengths. ao, ai write, read BCM.DIFF.DELAY
$(P)$(R)FastThreshold, $(P)$(R)FastThresholdR Threshold for fast transmission alarm. ao, ai write, read BCM.DIFF.FAST_THRESHOLD
$(P)$(R)FastMinimumR Minimum value of the fast differential detection. ai read BCM.DIFF.FAST_MINIMUM
$(P)$(R)FastMaximumR Maximum value of the differential detection. ai read BCM.DIFF.FAST_MAXIMUM
$(P)$(R)MediumThreshold, $(P)$(R)MediumThresholdR Threshold for medium transmission alarm. ao, ai write, read BCM.DIFF.MEDIUM_THRESHOLD
$(P)$(R)MediumMinimumR Minimum value of the medium differential detection. ai read BCM.DIFF.MEDIUM_MINIMUM
$(P)$(R)MediumMaximumR Maximum value of the medium differential detection. ai read BCM.DIFF.MEDIUM_MAXIMUM
$(P)$(R)SlowThreshold, $(P)$(R)SlowThresholdR Threshold for slow transmission alarm. ao, ai write, read BCM.DIFF.SLOW_THRESHOLD
$(P)$(R)SlowMinimumR Minimum value of the slow differential detection. ai read BCM.DIFF.SLOW_MINIMUM
$(P)$(R)SlowMaximumR Maximum value of the slow differential detection. ai read BCM.DIFF.SLOW_MAXIMUM
$(P)$(R)RisingWindowStart, $(P)$(R)RisingWindowStartR The activation window start time for alarm on signal rise time. ao, ai write, read BCM.DIFF.RISING_WINDOW_START
$(P)$(R)RisingWindowEnd, $(P)$(R)RisingWindowEndR The activation window end time for alarm on signal rise time. ao, ai write, read BCM.DIFF.RISING_WINDOW_END
$(P)$(R)FallingWindowStart, $(P)$(R)FallingWindowStartR The activation window start time for alarm on signal fall time. ao, ai write, read BCM.DIFF.FALLING_WINDOW_START
$(P)$(R)FallingWindowEnd, $(P)$(R)FallingWindowEndR The activation window end time for alarm on signal fall time. ao, ai write, read BCM.DIFF.FALLING_WINDOW_END
$(P)$(R)WsBetween, $(P)$(R)WsBetweenR Wire scan exists between pair. bo, bi write, read BCM.DIFF.WS_BETWEEN
$(P)$(R)EmuBetween, $(P)$(R)EmuBetweenR EMU exists between pair. bo, bi write, read BCM.DIFF.EMU_BETWEEN
$(P)$(R)RfqBetween, $(P)$(R)RfqBetweenR RFQ exists between pair. bo, bi write, read BCM.DIFF.RFQ_BETWEEN
$(P)$(R)FastWindowWidth, $(P)$(R)FastWindowWidthR Length of moving average filter for fast transmission. ao, ai write, read BCM.DIFF.FAST_WINDOW_WIDTH
$(P)$(R)MediumWindowWidth, $(P)$(R)MediumWindowWidthR Length of moving average filter for medium transmission. ao, ai write, read BCM.DIFF.MEDIUM_WINDOW_WIDTH
$(P)$(R)FastWindowWidthInverseR Inverse value of $(P)$(R)FastWindowWidthR. ai read BCM.DIFF.FAST_WINDOW_WIDTH_INVERSE
$(P)$(R)MediumWindowWidthInverseR Inverse value of $(P)$(R)MediumWindowWidthR. ai read BCM.DIFF.MEDIUM_WINDOW_WIDTH_INVERSE

The table below lists differential alarm records. See also Alarm sets and types for alarm type description.

Differential alarm record list
Record name Description Record type Access Asyn driver info
$(P)$(R)AlarmFastControl, $(P)$(R)AlarmFastControlR Fast transmission alarm control. bo, bi write, read BCM.DIFF.ALARM.FAST_CONTROL
$(P)$(R)AlarmFastHoldR Latched alarm status reporting fast transmission alarm. bi read BCM.DIFF.ALARM.FAST_HOLD
$(P)$(R)AlarmFastFirstR First alarm status reporting fast transmission alarm. bi read BCM.DIFF.ALARM.FAST_FIRST
$(P)$(R)AlarmFastDirectR Immediate alarm status reporting fast transmission alarm. bi read BCM.DIFF.ALARM.FAST_DIRECT
$(P)$(R)AlarmMediumControl, $(P)$(R)AlarmMediumControlR Medium transmission alarm control. bo, bi write, read BCM.DIFF.ALARM.MEDIUM_CONTROL
$(P)$(R)AlarmMediumHoldR Latched alarm status reporting medium transmission alarm. bi read BCM.DIFF.ALARM.MEDIUM_HOLD
$(P)$(R)AlarmMediumFirstR First alarm status reporting medium transmission alarm. bi read BCM.DIFF.ALARM.MEDIUM_FIRST
$(P)$(R)AlarmMediumDirectR Immediate alarm status reporting medium transmission alarm. bi read BCM.DIFF.ALARM.MEDIUM_DIRECT
$(P)$(R)AlarmSlowControl, $(P)$(R)AlarmSlowControlR Slow transmission alarm control. bo, bi write, read BCM.DIFF.ALARM.SLOW_CONTROL
$(P)$(R)AlarmSlowHoldR Latched alarm status reporting slow transmission alarm. bi read BCM.DIFF.ALARM.SLOW_HOLD
$(P)$(R)AlarmSlowFirstR First alarm status reporting slow transmission alarm. bi read BCM.DIFF.ALARM.SLOW_FIRST
$(P)$(R)AlarmSlowDirectR Immediate alarm status reporting slow transmission alarm. bi read BCM.DIFF.ALARM.SLOW_DIRECT

LUT EPICS records

Common LUT records define beam mode and beam destination name and ID. Name records are meant for users, and are not used by the firmware. ID record values are used by the firmware as part of the LUT row definition. See also sis8300bcm-lut-acct.rst.

LUT common record list
Record name Description Record type Access Asyn driver info
$(P)$(R)Lut$(N)ModeName Descriptive beam mode name. stringout    
$(P)$(R)Lut$(N)ModeID, $(P)$(R)Lut$(N)ModeIDR Beam mode ID. longout, longin write, read BCM.LUT$(N).MODE_ID
$(P)$(R)Lut$(N)DestinationName Descriptive beam destination name. stringout    
$(P)$(R)Lut$(N)DestinationID, $(P)$(R)Lut$(N)DestinationIDR Beam destination ID. longout, longin write, read BCM.LUT$(N).DEST_ID
LUT common record list
Record name Description Record type Access Asyn driver info
$(P)$(R)Lut$(N)MaxPulseLength, $(P)$(R)Lut$(N)MaxPulseLengthR   longout, longin write, read BCM.LUT$(N).MAX_PULSE_LENGTH
$(P)$(R)Lut$(N)LowerThreshold, $(P)$(R)Lut$(N)LowerThresholdR   ao, ai write, read BCM.LUT$(N).LOWER_THRESHOLD
$(P)$(R)Lut$(N)UpperThreshold, $(P)$(R)Lut$(N)UpperThresholdR   ao, ai write, read BCM.LUT$(N).UPPER_THRESHOLD
$(P)$(R)Lut$(N)BeamExists, $(P)$(R)Lut$(N)BeamExistsR   bo, bi write, read BCM.LUT$(N).BEAM_EXISTS

Alarm sets and types

BCM system has several set of alarms which each set keeps a number of alarms which are related to a specific process. In total we have 23 set of alarm:

  • system alarms (1 set)
  • ACCT alarms (10 sets)
  • differential channel alarms (10 sets)
  • fiber optic channel alarms (2 sets)

For each set of alarms there are three types of alarms defined:

  • direct
  • first
  • hold

Direct (immediate) alarm shows the immediate alarm status updated at the processing clock (~ 88 MHz) rate. Direct alarm status can be also observed with the use of the probe signals. Hold (latched) alarm latches the direct alarm and is cleared using the alarm reset PV. Hold alarms are and-gated and connected to the BCM beam permit signal sent to the FBIS system. First alarm indicated which alarm happened first if several alarms are raised within the set.

For each alarm set all of the alarm types are exposed as EPICS PVs.

Trigger types

Three trigger types are defined:

  • main trigger
  • display trigger
  • ACCT trigger

Main trigger is used for the trigger measurement needs and also for the differential processing. The source of main trigger should be the same as one of ACCT trigger. This trigger is sync with the stable beam and it is the trigger of after LEBT chopper. Main trigger and ACCT trigger are different just for the BCM #1 and for the other BCM should be selected the same source. If we could ignore IScr then we could have one trigger for all ACCTs and used it as the main trigger.

Display trigger is used for capturing stream data to memory for plotting and works independent from the processing and protection functions. It means the user can set it everywhere he wants and see the waveform.

ACCT trigger is used for our processing and protection functions which are related to each ACCT. Since we have different timing and pulse width in term of position of each ACCT specially for the first BCM system so we need to have different trigger which is synchronized with the beam.