You are here: CLASSE Wiki>ACC/Bunch Web>CBICManPage (29 Jan 2015, mgs9)Edit Attach

CBIC Man Page for CBPM-II

         CESR Beam Instrumentation Control Application (CBIC)
                       Version 1.10.19

Command Line Options

Flag   Description Usage/further information
-h   This help information. HelpInformation
-v   Version information for this application and its supporting components. VersionInformation
-f <filename> Specify a particular application configuration file to use.
This allows for command-line requesting of different sets of
instruments to bring online in a given session and other startup
options. The file must reside in the current working directory.
If this option is not specified, the default config file
'cbic.conf' will be read from the current working directory
sample files:
-a <allocation-spec>

Specify an instrument allocation scheme / allocation name pair
to use for this application instance.

sample file: Instrument_allocations

-a Standard:West
-a Custom:Blank (to connect to NO BPMs)
-a Literal:BPM_12W3,BPM_8AW (to specify the BPMs in a list)
-b   'BACK-END' mode. Start program, reading configuration as normal, then drop into
a wait state for an incoming network connection from a manager program,
potentially on a remote host.
Once a connection is established, the manager will have full control of this
. not used much anymore .
-s   Go directly into SERVER MODE.
Once all instruments are polled and brought
online, this will place the application into BPM data server mode to allow
3rd party beam position requests. CESRV and orbit are two programs that use
a BPM server to acquire their data.
This is used for the East and West servers.
This gets automatically to where Menu option 17 will take you manually.
Intended for bringing a SINGLE instrument online and activating
it to allow continuous bunch-by-bunch current monitoring
The instrument to use for monitoring currents is specified in
the instrument list file with a 'CURRMON' server ID specification.
places data in the mnemonics:
-e   Older version of Current Monitor. No longer supported.
-i   Use Current Monitor Test Mnemonics instead of the real MPM Database nodes.
used as a test mode, instead of putting data into the usual mnemonics,
they are place in special Test mnemonics
places data in the mnemonics:
-w   Go directly into POSITION MONITOR MODE
Intended for bringing a GROUP of instruments online and activating
it to allow continuous position monitoring
This gets automatically to where Menu option 41 will take you manually.
-d <#> Set debug verbosity level 0 - 5
Determines the level of detail that debugging and trace printouts
show during operation.
0 means no additional debugging output- equivalent to not using '-d'
5 means maximum detail in debugging output
The application defaults to level 0 if no option is specified.
NOTE: Level 5 prints a LOT of information and may in fact clutter useful
information or scroll it off the screen more rapidly than it may be
productively used. It is recommended that the application is run
in a terminal window with a large scrollback buffer so that runtime
details are not lost.
-k   Keyboard input protection override - used for running CBIC with command files.
There is a check to make sure that commands aren't entered to fast,
since sometimes due to an unexplained bug, CBIC will just take off,
like someone is entering commands as fast as possible.
The protection will automatically stop the program if
commands happen too fast 5 times in a row.
This protection override is used if you run CBIC from a command file,
since there the won't BE any time delay between commands being "entered".
-l   Start with long form of the menu.
When CBIC starts up, it is usually in the "User" menu, the shortest form.
With this option, CBIC will start with the Expert menu, the longest form.
-m   Enter 'MAINTENANCE MODE' wherein instruments are brought online with a
customizable set of communication checks and parameter reads.
0 means no maintenance mode will be used- equivalent to not using '-m'
3 Highest supported maintenance mode. Reads in general parameters but
avoids all communication with instruments to allow low level tasks to be
performed. Example: To perform a rapid blanket reset/wakeup of all
instruments after a power cycle of several instruments has taken place,
start up application in maintenance mode 3 and then run the RESET INSTRUMENT
command. Wait about 20 seconds. All instruments should be ready for use.
Exit and start application normally.
Hasn't been used much lately.
-M   Enter 'MANAGER MODE' wherein this application will start (remote) instances of
itself in Back-end mode and then connect to them for centralized control.
. not used much anymore .
-T   TESTING MANAGER MODE. The same as -M above, but DO NOT spawn copies
of each back-end instance requested. The back-ends will need to be started manually.
Used for testing.
. not used much anymore .
-t   Trigger-enable mode. The program will set the trigger (data) enable flag in the
CESR database on its own once all instruments are set up and ready to acquire data.
The program then de-asserts the trigger enable once the measurement is complete.
-g   Graphical User Interface (GUI) mode. Allows for windowed, graphical
control of some program functions.
except it's been discontinued for years: 12682, look at use_gui
-o <#> Set Debug Option mode 1 integer choice if debug verbosity level is 2 or greater , and -o > 0
then Current Monitor will print out array of bunch currents.
The -p switch specifies whether the print out is raw data
or current_array scaled and filtered.
-p <#> Set Debug Option mode 2 to 1 if debug verbosity level is 2 or greater, and -o > 0, then Current Monitor:
DEFAULT: printf( current_array scaled and filtered)
if -p is not 0 : printf( current raw signal sum)
-q <#> Set Debug Option mode 3 to 1 60 Hz synchronize data acquisition trigger for Current Monitor
DEFAULT: trigger = TRIG_MASK_A 60 Hz trigger
if -q flag set: trigger = TRIG_MASK_NONE, no 60 Hz trigger
-r <#> Set Debug Option mode 4 floating point choice exponentional filter time constant for Current Monitor
DEFAULT: a = 4.0
or you can set "a" to a floating point number in the following equation:
newCurrentMeasurement = (1.-1./a)*oldCurrentMeasurement
-u <#> Set Debug Option mode 5 to 1 no longer used
#     Files and SampleOutput
-1 FIND bTMD Determine best block turns marker delay settings FindBTMD
0 Change Menu Change Menu Level( (U)ser, (S)uperuser, (E)xpert)
DEFAULT: U : UserLevelMenu, S : SuperuserLevelMenu, E : ExpertLevelMenu
1 FIND BUNCH Determine which bunch bucket in the machine contains charge
(Single bunch only) FB-046344-124.dat
2 GET STATUS AND DEBUG Read back the status and debug structures from each instrument GetStatusAndDebug
3 TEST DATA BUFFERS Test command to verify buffer filling and other things TestDataBuffers
(do cbpm_tbt_[positrons/electrons])
Collect turn-by-turn data RD-018345.dat GetTurnByTurnData
5 GET PROCESSED DATA Collect data averaged over some number of turns FB-046344-124.dat GetProcessedData
(start DEFAULT Current Monitor)
Collect data averaged over some number of turns,
calculate sum of buttons, publish in current nodes.
7 FIND cTMD Calculate the COMMON turns-marker delay setting. FindCTMD
8 GET BETATRON PHASE (Measure Phase) Collect betatron phase data GetBetatronPhase
9 SAVE TIMING PARAMETERS Save timing values to disk SaveTimingParameters
10 SAVE PEDESTAL PARAMETERS Save pedestal values to disk SavePedestalParameters
(do adjust_cbpm_times [pos/ele])
Perform a global delay scan TimeScanPlots TimeScanDiagnosticsDocumentation TimeScan
12 SET GAINS Set all gain values on board instrument SetGains
13 GET TEMPERATURES Read back all temperature sensors data GetTemperatures
14 REREAD PARAMETER FILES Reload the detector and instrument parameters files. ReReadParameterFiles
(List Instruments)
Toggle the activity state of any online instruments WestInstrumentList, output_WestE.txt
EastInstrumentList, output_EastE.txt
16 IDLE COMMAND Send the 'IDLE COMMAND' to the instruments. IdleCommand
17 ENTER SERVER MODE (Start Server) Accept requests via the MPM interface array, <a name="MenuOption17"></a>
this can be automatically reached by the execution flag "-s"
18 DUMP MPM INTERFACE STRUCTURE Dump the contents of the MPM interface array to the screen DumpMPMInterfaceStruct
19 ACQUIRE PEDESTALS Acquire pedestal values on all cards, channels,
and gain settings for the active timing setup.
20 DUMP RAW DATA Dump to disk the most recent turn-by-turn data without new acquisition. DumpRawData
21 CHECK PULSE Read and verify the DSP heartbeat and timing integrity signals. CheckPulse
22 SET TIMING SETUP Configure the timing setup for each ONLINE instrument. SetTimingSetup
23 INSTALL UPDATED PARAMETERS Copy the latest parameter set with outstanding changes in
this session to the master operational parameters file.
24 RESET COLDFIRE Reset the Coldfire communications board ResetColdFire
25 PROGRAM FLASH Reload an instrument's on-board software ProgramFlash
26 RESET AND INIT Reset and reinitialize instruments ResetAndInit
(Cycle Power)
Cycle power before performing reset and init sequence. PowerCycle
28 TIME-IN Perform a mostly-automated initial timing-in procedure on the instruments. TimeIn
29 INSTALL ELECTRONIC GAIN CORRECTIONS Overwrite all relevant gain tables from scale factor file storing in intermediate config file. InstallElectronicGainCorrecctions
30 APPLY GAIN MAPPING CORRECTIONS Multiply each existing gain scale factor by the provided gain mapping correction values. ApplyGainMappingCorrections
(Create Bunch Pattern)
Compose a new bunch pattern graphically. ComposeBunchPatternPicts
32 Clear Debug Struct Clear Debug index and array ClearDebugStruct
33 SCRUB TIMING PARAMS Scrub all block-dependent timing params to an uninitialized state. ScrubTimingParams
34 COPY TIMING PARAMS A-->B Copies all timing params from timing block A to block B for calibration work. CopyTimingParams
35 Diagnostic Dump Dump full diagnostic information for all active instruments to a file. 20E-ctacf018.dump DiagnosticDump
36 EXIT (Exit) Exit this application  
37 Enable FG Zero-Crossing Sample Point Change all active instrument sample points to 0.4ns later for
FixedGain zero-crossing measurement.
38 Install Turn-By-Turn Bunch Pattern
(Set Bunch Pattern)
Prompt for a bunch pattern and acquire a multibunch turn-by-turn data set. InstallTurnByTurnBunchPattern
39 Test Life Command test running till death or error TestList
40 Calibration 4ns BUNCH CURRENTS Calibrate the Current monitor at different gain settings no longer used
41 Start Realtime Position Monitor Start Realtime Position Monitor, showing x,y, and amplitude,
this can be automatically reached by the execution flag "-w"
(start OLD VERSION Current Monitor)
Collect data averaged over some number of turns,
calculate sum of buttons, publish in current nodes.
No longer supported.
(Start Server for Injection)
Accept requests via the MPM interface array EnterServerInjectionMode
44 COPY TIMING PARAMS A-->B+0.5 nS Copies all timing params from timing block A to block B plus Constant. CopyTimingParamsAToBPlus500pS

Data Acquisition

Name Prep function Parameters Output
Get Turn-By-Turn Data
(From CBIC menu item 4)
cbpm_raw_data_prep user questions: specify bunch pattern, # of turns, automatic timing
hard coded: pedestal subtract:ON, gain scale:ON, auto gain:ON
raw button values, file includes pedestal and gain calibrations
Get Turn-By-Turn Data
(from MPM using
do cbpm_tbt_positrons or
do cbpm_tbt_electrons )
cbpm_raw_data_prep_from_iface info from MPM: # of turns, bunch pattern (set with Install Bunch Pattern (menu item 38)
hard coded: automatic timing:OFF, pedestal subtract:ON, gain scale:ON, auto gain: ON
raw button values, file includes pedestal and gain calibrations
Take Orbit
(from MPM using cesrv)
cbpm_proc_data_prep_from_iface info from MPM: # of turns, which bunch
hard coded: automatic timing:OFF, pedestal subtract:ON, gain scale:ON, auto gain: retrieve from cbic.conf
MPM values in mnemonics:
Get Processed Data
(From CBIC menu item 5)
cbpm_proc_data_prep user questions: species, bunches to enable, # of turns,
automatic timing, pedestal subtract, gain scale, auto gain, jitter suppression
average of turns taken written into PROC file by CBIC,
no MPM data stored

Reference Documents

Q = \\samba\accuser\cesrdaq = /nfs/acc/user/cesrdaq
Name Location Link or Attached File
SVN $ACCR/trunk/src
CBPMII System Power Supply Controls.odt Q:\hardware\BPM\Docs CBPMII_System_Power_Supply_Controls.odt
Additional CBPM Docs from XferDocs
Transfer Line BPM DSP User Manual
Analog Front End board Q:\hardware\BPM\6048-145_BPM_Front_End\docs AFE4_DesignSpec.doc
Digital Processor Board Q:\hardware\BPM\6048-113_DSP_Board\Docs DSP_Board_Programming_V5-13_July2014.docx
Timing Board Q:\hardware\BPM\6048-113_DSP_Board\Docs CBPM_Timing_Board_Address_Space.xls, CBPM_Timing_Board_Address_Space.txt
Matt Rendina presentations



cesr106 - contains cbpm_east_server
cesr107 - contains cbpm_west_server
cesr108 - contains cbpm_curr_mon


cbpm_west_server - contains " gnome-terminal --geometry=140x58+50+2100 --command '/nfs/cesr/online/acc_control/bin/start_WEST' "
cbpm_east_server - contains " gnome-terminal --geometry=140x58+530+2100 --command '/nfs/cesr/online/acc_control/bin/start_EAST' "
cbpm_curr_mon - contains " gnome-terminal --geometry=140x50+200+1100 --command '/nfs/cesr/online/acc_control/services/scripts/CURRMON_start' "


start_WEST = start_EAST -> start_BPM_server
start_EAST = start_WEST -> start_BPM_server

(the bash scripts uses the calling name (start_WEST or start_EAST) to determine whether to start the east or west server)

$CESR_ONLINE/acc_control/bin/start_BPM_server - bash script containing commands to start an instance of cbic to automatically go into server mode for either the east or west
$CESR_ONLINE/acc_control/services/scripts/CURRMON_start - bash script containing commands to current monitor




cbpm_terminate_servers - located: $CESR_ONLINE/acc_control/scripts


[] - runs an executable here:


[]cbpm_tbt_electrons/positrons - run an executable here:


the source code might be somewhere around here: USER$DISK:[CESR.CESRBPM.CODE.NEW.CESRBPM.COMMANDS]


Build CBIC




tv8 ../debug/bin/cbic -a -a Literal:BPM_12W3

Build DSP

Visual Studio - Rebuild
flash <hostname number> ../CBPM-TSHARC/instrument/bin/CBPM_II.ldr







Reset Procedure


TroubleShootingSteps (suggested steps for someone to take)

TroubleShootingFlowChart (internal, implemented in CBIC)





CBIC Versions

DSP code:
DSP 27422 /home/mgs9/mgs9/checkedout_27422_old CBPM_II.ldr.1304261532 $ACCR/CESR/branches/BPM_DSP_27422 32847  
Ring 27943 /home/mgs9/mgs9/checkedout_27943_5 CBIC/cbic-1.10.16FixgainOrbit_27943_5 $ACCR/CESR/branches/BPMRing_27943 32848  
Current Monitor 29313 /home/mgs9/mgs9/checkedout_29313_patch2_newmpm CBIC/cbic-1.10.18_29313_patch2_newmpm $ACCR/CESR/branches/BPMCurrentMonitor_29313 32852 Current Monitor Doc
Position Monitor for ODR 29778     $ACCR/CESR/branches/CBPMPositionMonitorODR_29778 32858 ODR Doc
Currently checked in version   /home/mgs9/mgs9/checkin CBIC/cbic      

-- MatthewStedinger - 25 Jul 2014
Topic revision: r27 - 29 Jan 2015, mgs9
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding CLASSE Wiki? Send feedback