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.
Record name | Description | Record type | Access | Asyn driver info |
---|---|---|---|---|
$(P)$(R)AcquisitionTriggerSource, $(P)$(R)AcquisitionTriggerSourceR | Acquisition trigger source selection:
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:
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.
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.
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.
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.
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.
|
mbbo, mbbi | write, read | BCM.DIFF.SOURCE_A |
$(P)$(R)SourceB, $(P)$(R)SourceBR | Differential channel B source selection.
|
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.
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.
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 |
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.