Relevant acronyms are summarized below. For more details, please see the provided references below for an overview of the PCAV system (normal-conducting).
Term | Description |
---|---|
AMC | Advanced Mezzanine Card |
ATCA | Advanced Telecommunications Computing Architecture |
CPU | Central Processing Unit |
EPICS | Experimental Physics and Industrial Control System |
FPGA | Field Programmable Gate Array |
IOC | Input Output Controller |
LLRF | Low Level Radio Frequency |
PCAV | Phase Cavity |
SHM | Shelf Manager |
Two separate configurations exist. One for normal-conducting mode and a second one for the super-conducting mode.
IOC Application | Tag | CPU | ATCA SHM | PCAV BOARD SLOT | PCAV BOARD IP | PCAV Firmware Version (git hash) |
---|---|---|---|---|---|---|
sioc-unds-pt01 | cpu-unds-sp04 | shm-unds-sp04-1 | 2 | 10.0.1.102 | 6690138cb0476e2f9bb57b66440047dfa8b3aaa5 | |
sioc-unds-pt02 | cpu-unds-sp04 | |||||
sioc-undh-pt01 | cpu-undh-sp04 | shm-undh-sp04-1 | 2 | 10.0.1.102 | 6690138cb0476e2f9bb57b66440047dfa8b3aaa5 | |
sioc-undh-pt02 | cpu-undh-sp04 |
IOC Application | Tag | CPU | ATCA SHM | PCAV BOARD SLOT | PCAV BOARD IP | PCAV Firmware Version (git hash) |
---|---|---|---|---|---|---|
sioc-unds-pt11 | pcav R3.0.0 (RHEL6) pcav R3.0.1 (RHEL7) | cpu-unds-sp04 | shm-unds-sp04-1 | 3 | 10.0.1.103 | e6a75c3517029a4ad7cd4a487c8e365e2d0bd809 |
sion-undh-pt11 | pcav R3.0.0 (RHEL6) pcav R3.0.1 (RHEL7) | cpu-undh-sp04 | shm-undh-sp04-1 | e6a75c3517029a4ad7cd4a487c8e365e2d0bd809 |
2021_0322 PCAV Jump - Capturing archiver data for phase jump on HXR PCAV for discussions
2021_0305 rev.5 PCAV Improvement - Phase Zeroing/New BSA/Circular Buffer
2021_0305 PCAV Improvement - Zeroing Phase and New BSA
2021_0301 BSTREAM and Register read out for debugging phase wrap round issue
2021_0226 PCAV diff mmio-Apptop-AppCore
2020_1013 PID Controls for PCAV NCO
2020_0823 PCAV FPGA Algorithm V2
2020_0403 PCAV FPGA Algorithm V1
2020_0402 Discussions for PCAV
2020_0124 PCAV Beckhoff Wiring
2020_1009 Software Design for ATCA Based Phase Cavity System
2019_0111 Rx Frame Rate Drop (SIM communication)
Additionally, the following links may be of value to the reader:
PCAV work memo: https://confluence.slac.stanford.edu/display/~khkim/PCAV+Work+Memo
PCAV commissioning support (Charlie's firmware): https://confluence.slac.stanford.edu/pages/viewpage.action?pageId=284340901
Mapping between PCAV firmware internal and PVs: https://confluence.slac.stanford.edu/display/~khkim/Mapping+between+PCAV+firmware+internal+and+PVs
PCAV firmware register amp and data type (aug 3, 2020): https://confluence.slac.stanford.edu/pages/viewpage.action?pageId=285672859
PVs for PCAV UNDH heater control (sioc-undh-pt02): https://confluence.slac.stanford.edu/pages/viewpage.action?pageId=274825300
The IOC organization can be seen in the figure below. IOCs sioc-unds-pt01 and sioc-undh-pt01 are for the normal-conducting beam, while IOCs sioc-unds-pt11 and sioc-undh-pt11 are for super-conducting beam. Lastly, IOCs sioc-unds-pt02 and sioc-undh-pt02 are the Beckoff IOCs for heater control in the soft and hard line respectively.
In the sections below, one can find excerpts of the IOC startup script that handle a specific task, such as environment setup, database loading, etc. The information is provided in this way, so that the reader more easily understands what each portion of the script does. Although the following content is from the soft-line (SXR) IOC, the same applies for the hard-line (HXR) IOC with an obvious difference in variable names.
8 # ==================================================================== 9 # Setup some additional environment variables 10 # ==================================================================== 11 # Setup environment variables 12 epicsEnvSet("IOC" , "sioc-unds-pt11") 13 epicsEnvSet("LOCA" , "UNDS") 14 epicsEnvSet("UNIT" , "PT11") 15 epicsEnvSet("IOC_NAME" , "SIOC:${LOCA}:${UNIT}") 16 epicsEnvSet("BOARD_IP" , "10.0.1.105") 17 epicsEnvSet("YAML_DIR" , "${IOC_DATA}/${IOC}/yaml") 18 epicsEnvSet("YAML_FILE" , "${YAML_DIR}/000TopLevel.yaml") 19 epicsEnvSet("YAML_DEFAULTS_FILE", "${YAML_DIR}/config/defaults.yaml") 20 epicsEnvSet("YAML_LOCAL_DIR" , "firmware/sc/yaml") 21 22 epicsEnvSet("IOC_PV", "${IOC_NAME}") 23 epicsEnvSet("SYS_PV", "${IOC_NAME}") 24 25 # Tag log messages with IOC name 26 # How to escape the "iocrflab" as the PERL program 27 # will try to replace it. 28 # So, uncomment the following and remove the backslash 29 epicsEnvSet("EPICS\_IOC\_LOG_CLIENT_INET","${IOC}") 30 31 # Setup the CA server port address 32 epicsEnvSet("EPICS_CA_SERVER_PORT","5066") 46 # CPSW Port name 47 epicsEnvSet("CPSW_PORT", "CPSW_PORT") 48 49 # Use Automatic generation of records from the YAML definition 50 # 0 = No, 1 = Yes 51 epicsEnvSet("AUTO_GEN", 0) 52 53 # Automatically generated record prefix 54 epicsEnvSet("PREFIX0", "${IOC_NAME}:0") 55 56 # Dictionary file for manual (empty string if none) 57 epicsEnvSet("DICT_FILE", "") 81 # Uncomment and set appropriate size for your application: 82 epicsEnvSet("EPICS_CA_MAX_ARRAY_BYTES", "21000000")
35 # Set environment variables 36 < envPaths 37 38 # iocAdmin environment variables 39 epicsEnvSet("ENGINEER" , "Michael Skoufis") 40 epicsEnvSet("IOC_RESTORE", "${IOC_DATA}/${IOC}/restore") 41 epicsEnvSet("IOC_BOOT" , "${EPICS_IOC_APP}") 42 epicsEnvSet("STARTUP" , "${EPICS_IOCS}/${IOC}") 43 epicsEnvSet("ST_CMD" , "startup.cmd") 44 45 # Define subsystem, used by iocLogPrefix 46 epicsEnvSet("SUBSYS","b084") 47 48 # ======================================================== 49 # Support Large Arrays/Waveforms; Number in Bytes 50 # Please calculate the size of the largest waveform 51 # that you support in your IOC. Do not just copy numbers 52 # from other apps. This will only lead to an exhaustion 53 # of resources and problems with your IOC. 54 # The default maximum size for a channel access array is 55 # 16K bytes. 56 # ======================================================== 57 # For large BSA waveforms 58 epicsEnvSet("EPICS_CA_MAX_ARRAY_BYTES", "21000000") 59 60 # Location of stream protocol files 61 #epicsEnvSet("STREAM_PROTOCOL_PATH", "${TOP}/db") 62 63 # Point 'YAML_PATH' to the 'yaml_local' directory. 64 # This directory contains patched files which will be 65 # used instead of the ones downloaded from the FPGA. 66 # This is an absolute path. 67 #epicsEnvSet("YAML_PATH", "${TOP}/${YAML_LOCAL_DIR}") 68 69 #============================================================== 70 # Load standard databases 71 #============================================================== 72 cd ${TOP} 73 dbLoadDatabase("dbd/pcav.dbd") 74 pcav_registerRecordDeviceDriver(pdbbase) 75 76 # Load IOC Administration Databse 77 dbLoadRecords("db/iocAdminSoft.db","IOC=${IOC_NAME}") 78 dbLoadRecords("db/iocAdminScanMon.db","IOC=${IOC_NAME}") 79 80 # The following database is a result of a python parser 81 # which looks at RELEASE_SITE and RELEASE to discover 82 # versions of software your IOC is referencing 83 # The python parser is part of iocAdmin 84 dbLoadRecords("db/iocRelease.db" ,"IOC=${IOC_NAME}") 85 86 #============================================================== 87 # Load Channe Access Security 88 #============================================================== 89 < ${ACF_INIT} 90 91 #============================================================== 92 # Start IOC Log Client 93 #============================================================== 94 < ${LOG_INIT}
27 # Change directory to YAML directory 28 cd ${YAML_DIR} 29 pwd() 30 31 # Download the YAML files from the FPGA 32 # DownloadYamlFile ( IP address for carrier board 33 # Output directory for the YAML files) 34 # 35 # 36 DownloadYamlFile("${BOARD_IP}", "${YAML_DIR}") 37 38 # Load FPGA hierarchy from YAML 39 # cpswLoadYamlFile ( YAML hierarchy descrtiption file, 40 # Root Device Name (optional; default = 'root'), 41 # directory where YAML includes can be found (optional), 42 # IP address for carrier board (override the IP address in YAML) ) 43 # 44 # Note: the format of the ip address for the carrier board is auto-generated from the 45 # ATCA Shelf Manager local address: 4-digits hex number. The default address is set to 46 # 0A<crate #>, where the crate number ranges from 01-ff. 47 # The crates referred to are the crates that are connected to the industrial PC (IPC). So if there 48 # are 4 crates connected to one IPC, the crate numbers would be 01-04. If another IPC exists in the same a rea 49 # that is phisically connected to 2 other crates, those crates would be defined as 01-02. 50 # The Shelf Manager local address generates the board locat address, where the bpard adress 51 # has the following format: 10:<2nd field>:<3rd field>:<4th field> 52 # 53 # So the two left most digits of shelf manager address, 0A hex, which is 10 decimal, 54 # defines the 2nd field of the board address. decimal The 2-rightmost digits. 55 # 56 # The two right most digits of the shelf manager address <crate #>, 01, produces the 57 # 3rd field of the boar address.. 58 # board ip address format: 10.<2nd field>.<3rd field>.<4th field> 59 # 60 # ATCA AMC board local address: 10.10.01.<100+slot#>. The MPS module is located in slot #, so the 61 # board adress is: 10:10:01:102 (crate 1), 10.10.02.102 (crate 2), etc.. 62 # Low-level RF only has 1 ATCA crate and shelf manager per station, so the first 3 fields 63 # should be the same, the only difference is the slot number of the IP Carrier for the 64 # AMC boards 65 cpswLoadYamlFile("${YAML_FILE}", "NetIODev", "", "${BOARD_IP}", "MyRoot0") 66 67 # Load FPGA configuration from YAML file 68 # cpswLoadConfigFile ( CONFIG YAML file (NOT hierarchy YAML!), 69 # Path prefix (if config YAML is not based of the root device; optional), 70 # directory where YAML includes can be found (optional) ) 71 #cpswLoadConfigFile("${YAML_DEFAULTS_FILE}", "mmio", "", "MyRoot0") 72 73 # ====================================================== 74 # disable BLD/BSSS/BSAS temporally 75 # until the iocInit process is completed 76 # the services will be restored back by its control PVs 77 # ======================================================= 78 cd ("${IOC_DATA}/${IOC}/yamlConfig") 79 cpswLoadConfigFile("./config_test.yaml", "mmio", "", "MyRoot0") 80 cpswLoadConfigFile("./disable_bld_bsss_bsas.yaml", "mmio/AmcCarrierCore/AmcCarrierBsa")
25 cpswATCACommonAsynDriverConfigure ("atca0" , "mmio" , "MyRoot0") 26 crossbarControlAsynDriverConfigure("crossbar0", "mmio/AmcCarrierCore/AxiSy56040", "MyRoot0") 27 tprTriggerAsynDriverConfigure("trig0" , "mmio/AmcCarrierCore", "MyRoot0") 28 29 # epicsThreadSleep(5.) 30 31 # =============================================== 32 # We can add a maximum of only 31 BSA Channels 33 # =============================================== 34 bsaAdd("REFAMPL", "uint32") 35 bsaAdd("REFPHASE", "int32") 36 bsaAdd("CAV0PRB0PHASE", "int32") 37 bsaAdd("CAV0PRB0AMPL", "int32") 38 bsaAdd("SIGNAL04", "int32") 39 bsaAdd("SIGNAL05", "int32") 40 bsaAdd("CAV0PRB1PHASE", "int32") 41 bsaAdd("CAV0PRB1AMPL", "int32") 42 bsaAdd("SIGNAL08", "int32") 43 bsaAdd("SIGNAL09", "int32") 44 bsaAdd("CAV1PRB0PHASE", "int32") 45 bsaAdd("CAV1PRB0AMPL", "int32") 46 bsaAdd("SIGNAL12", "int32") 47 bsaAdd("SIGNAL13", "int32") 48 bsaAdd("CAV1PRB1PHASE", "int32") 49 bsaAdd("CAV1PRB1AMPL", "int32") 50 bsaAdd("CAV0TIME", "int32") 51 bsaAdd("CAV1TIME", "int32") 52 bsaAdd("CAV0CHARGE", "int32") 53 bsaAdd("CAV1CHARGE", "int32") 54 55 # Initialize the BSA driver 56 # BSA driver for yaml 57 bsaAsynDriverConfigure("bsaPort", "mmio/AmcCarrierCore/AmcCarrierBsa", "strm/AmcCarrierDRAM/dram") 58 59 # check up the BSA PVs 60 bsaList() 61 62 # Initialize BSSS driver 63 # make association with BSA channels: bsssAssociateBsaChannels(<BSA port name>) 64 bsssAssociateBsaChannels("bsaPort") 65 66 # configure BSSS driver: bsssAsynDriverConfigure(<bsss port>, <register path>) 67 bsssAsynDriverConfigure("bsssPort", "mmio/AmcCarrierCore/AmcCarrierBsa/Bsss") 68 69 # configure Bld driver: bldAsynDriverConfigure(<bsss port>, <register path>) 70 bldAssociateBsaChannels("bsaPort") 71 bldAsynDriverConfigure("bldPort", "mmio/AmcCarrierCore/AmcCarrierBsa/Bld", "${SYS_PV}") 72 bldChannelName("REFAMPL", "REFAMPL") 73 bldChannelName("REFPHASE", "REFPHASE") 74 bldChannelName("CAV0PRB0PHASE", "CAV0PRB0PHASE") 75 bldChannelName("CAV0PRB0AMPL", "CAV0PRB0AMPL") 76 bldChannelName("SIGNAL04", "signal04") 77 bldChannelName("SIGNAL05", "signal05") 78 bldChannelName("CAV0PRB1PHASE", "CAV0PRB1PHASE") 79 bldChannelName("CAV0PRB1AMPL", "CAV0PRB1AMPL") 80 bldChannelName("SIGNAL08", "signal08") 81 bldChannelName("SIGNAL09", "signal09") 82 bldChannelName("CAV1PRB0PHASE", "CAV1PRB0PHASE") 83 bldChannelName("CAV1PRB0AMPL", "CAV1PRB0AMPL") 84 bldChannelName("SIGNAL12", "signal12") 85 bldChannelName("SIGNAL13", "signal13") 86 bldChannelName("CAV1PRB1PHASE", "CAV1PRB1PHASE") 87 bldChannelName("CAV1PRB1AMPL", "CAV1PRB1AMPL") 88 bldChannelName("CAV0TIME", "CAV0TIME") 89 bldChannelName("CAV1TIME", "CAV1TIME") 90 bldChannelName("CAV0CHARGE", "CAV0CHARGE") 91 bldChannelName("CAV1CHARGE", "CAV1CHARGE") 92 93 # Initialize BSSS driver 94 # make association with BSA channels: bsssAssociateBsaChannels(<BSA port name>) 95 bsasAssociateBsaChannels("bsaPort") 96 97 # base name assign for the BSAS channels 98 # bsasBaseName(<BSAS data channel, BsaKey>, <base PV name>) 99 bsasBaseName("REFAMPL", "${SYS_PV}:REFAMPL") 100 bsasBaseName("REFPHASE", "${SYS_PV}:REFPHASE") 101 bsasBaseName("CAV0PRB0PHASE", "${SYS_PV}:CAV0PRB0PHASE") 102 bsasBaseName("CAV0PRB0AMPL", "${SYS_PV}:CAV0PRB0AMPL") 103 bsasBaseName("SIGNAL04", "${SYS_PV}:SIGNAL04") 104 bsasBaseName("SIGNAL05", "${SYS_PV}:SIGNAL05") 105 bsasBaseName("CAV0PRB1PHASE", "${SYS_PV}:CAV0PRB1PHASE") 106 bsasBaseName("CAV0PRB1AMPL", "${SYS_PV}:CAV0PRB1AMPL") 107 bsasBaseName("SIGNAL08", "${SYS_PV}:SIGNAL08") 108 bsasBaseName("SIGNAL09", "${SYS_PV}:SIGNAL09") 109 bsasBaseName("CAV1PRB0PHASE", "${SYS_PV}:CAV1PRB0PHASE") 110 bsasBaseName("CAV1PRB0AMPL", "${SYS_PV}:CAV1PRB0AMPL") 111 bsasBaseName("SIGNAL12", "${SYS_PV}:SIGNAL12") 112 bsasBaseName("SIGNAL13", "${SYS_PV}:SIGNAL13") 113 bsasBaseName("CAV1PRB1PHASE", "${SYS_PV}:CAV1PRB1PHASE") 114 bsasBaseName("CAV1PRB1AMPL", "${SYS_PV}:CAV1PRB1AMPL") 115 bsasBaseName("CAV0TIME", "${SYS_PV}:CAV0TIME") 116 bsasBaseName("CAV1TIME", "${SYS_PV}:CAV1TIME") 117 bsasBaseName("CAV0CHARGE", "${SYS_PV}:CAV0CHARGE") 118 bsasBaseName("CAV1CHARGE", "${SYS_PV}:CAV1CHARGE") 119 120 # configure BSAS driver: bsasAsynDriverConfigure(<bsas port>, <register path>, <NTTable PV1>, <NTTable PV2 >, <NTTable PV3>, <NTTable PV4>, [named_root (optional)]) 121 # remarks) ioc shell does NOT allow multiple-line input for a command, thus, we need to list up all of the arguments in a sngle line 122 bsasAsynDriverConfigure("bsasPort", "mmio/AmcCarrierCore/AmcCarrierBsa/Bsas", "${SYS_PV}:SC_HXR", "${SYS_P V}:SC_SXR", "${SYS_PV}:SC_BSYD","${SYS_PV}:SC_DIAG0" )
87 # =========================================== 88 # DBD LOADING 89 # =========================================== 90 # Load crossbarControl PVs 91 dbLoadRecords("db/crossbarCtrl.db", "DEV=${PREFIX0},LOCA=${LOCA},IOC_UNIT=${UNIT},INST=0,PORT=crossbar0") 92 93 # Load tprTrigger PVs 94 dbLoadRecords("db/tprTrig.db", "DEV=${IOC_PV}:0,LOCA=${LOCA},IOC_UNIT=${UNIT},INST=0,PORT=trig0") 95 96 # LCLS2 mode PCAV 97 dbLoadRecords("db/ATCACommon.db", "DEV=${PREFIX0},PORT=atca0") 98 dbLoadRecords("db/StreamType.db", "DEV=${PREFIX0}:STR0,PORT=atca0_str0") 99 dbLoadRecords("db/StreamLong.db", "DEV=${PREFIX0}:STR0,PORT=atca0_str0, NELM=4096, TSE=-2") 100 dbLoadRecords("db/StreamShort.db","DEV=${PREFIX0}:STR0,PORT=atca0_str0, NELM=4096, TSE=-2") 101 dbLoadRecords("db/StreamType.db", "DEV=${PREFIX0}:STR1,PORT=atca0_str1") 102 dbLoadRecords("db/StreamLong.db", "DEV=${PREFIX0}:STR1,PORT=atca0_str1, NELM=4096, TSE=-2") 103 dbLoadRecords("db/StreamShort.db","DEV=${PREFIX0}:STR1,PORT=atca0_str1, NELM=4096, TSE=-2") 104 dbLoadRecords("db/RFCommon.db", "DEV=${PREFIX0},PORT=rfc0") 105 dbLoadRecords("db/StreamLong.db", "DEV=${PREFIX0}:STR0,PORT=atca0_str0, NELM=4096, TSE=-2") 106 dbLoadRecords("db/StreamLong.db", "DEV=${PREFIX0}:STR1,PORT=atca0_str1, NELM=4096, TSE=-2") 107 dbLoadRecords("db/LlrfUpConverter.db", "DEV=${PREFIX0},PORT=upc0") 108 dbLoadRecords("db/LlrfDownConverter.db", "DEV=${PREFIX0},PORT=dnc0") 109 dbLoadRecords("db/pcavAsyn.db", "DEV=${PREFIX0},PORT=pcav0")
Load the databases for the BSA PVs.
124 # ======================================================================================== 125 # SC Timing Mode: BSA driver DB 126 # ======================================================================================== 127 # FPGA Driven: We can add a maximum of only 31 BSA Channels 128 # ======================================================================================== 129 dbLoadRecords("db/bsa.db", "DEV=${SYS_PV},PORT=bsaPort,BSAKEY=REFAMPL,SECN=REFAMPL") 130 dbLoadRecords("db/bsa.db", "DEV=${SYS_PV},PORT=bsaPort,BSAKEY=REFPHASE,SECN=REFPHASE") 131 dbLoadRecords("db/bsa.db", "DEV=${SYS_PV},PORT=bsaPort,BSAKEY=CAV0PRB0PHASE,SECN=CAV0PRB0PHASE") 132 dbLoadRecords("db/bsa.db", "DEV=${SYS_PV},PORT=bsaPort,BSAKEY=CAV0PRB0AMPL,SECN=CAV0PRB0AMPL") 133 dbLoadRecords("db/bsa.db", "DEV=${SYS_PV},PORT=bsaPort,BSAKEY=SIGNAL04,SECN=SIGNAL04") 134 dbLoadRecords("db/bsa.db", "DEV=${SYS_PV},PORT=bsaPort,BSAKEY=SIGNAL05,SECN=SIGNAL05") 135 dbLoadRecords("db/bsa.db", "DEV=${SYS_PV},PORT=bsaPort,BSAKEY=CAV0PRB1PHASE,SECN=CAV0PRB1PHASE") 136 dbLoadRecords("db/bsa.db", "DEV=${SYS_PV},PORT=bsaPort,BSAKEY=CAV0PRB1AMPL,SECN=CAV0PRB1AMPL") 137 dbLoadRecords("db/bsa.db", "DEV=${SYS_PV},PORT=bsaPort,BSAKEY=SIGNAL08,SECN=SIGNAL08") 138 dbLoadRecords("db/bsa.db", "DEV=${SYS_PV},PORT=bsaPort,BSAKEY=SIGNAL09,SECN=SIGNAL09") 139 dbLoadRecords("db/bsa.db", "DEV=${SYS_PV},PORT=bsaPort,BSAKEY=CAV1PRB0PHASE,SECN=CAV1PRB0PHASE") 140 dbLoadRecords("db/bsa.db", "DEV=${SYS_PV},PORT=bsaPort,BSAKEY=CAV1PRB0AMPL,SECN=CAV1PRB0AMPL") 141 dbLoadRecords("db/bsa.db", "DEV=${SYS_PV},PORT=bsaPort,BSAKEY=SIGNAL12,SECN=SIGNAL12") 142 dbLoadRecords("db/bsa.db", "DEV=${SYS_PV},PORT=bsaPort,BSAKEY=SIGNAL13,SECN=SIGNAL13") 143 dbLoadRecords("db/bsa.db", "DEV=${SYS_PV},PORT=bsaPort,BSAKEY=CAV1PRB1PHASE,SECN=CAV1PRB1PHASE") 144 dbLoadRecords("db/bsa.db", "DEV=${SYS_PV},PORT=bsaPort,BSAKEY=CAV1PRB1AMPL,SECN=CAV1PRB1AMPL") 145 dbLoadRecords("db/bsa.db", "DEV=${SYS_PV},PORT=bsaPort,BSAKEY=CAV0TIME,SECN=CAV0TIME") 146 dbLoadRecords("db/bsa.db", "DEV=${SYS_PV},PORT=bsaPort,BSAKEY=CAV1TIME,SECN=CAV1TIME") 147 dbLoadRecords("db/bsa.db", "DEV=${SYS_PV},PORT=bsaPort,BSAKEY=CAV0CHARGE,SECN=CAV0CHARGE") 148 dbLoadRecords("db/bsa.db", "DEV=${SYS_PV},PORT=bsaPort,BSAKEY=CAV1CHARGE,SECN=CAV1CHARGE") 149 150 # BSSS Control/Monintoring PVs 151 dbLoadRecords("db/bsssCtrl.db", "GLOBAL=BSSS:SYS0:2,DEV=${SYS_PV},PORT=bsssPort") 152 153 # BSSS Scalar PVs 154 dbLoadRecords("db/bsss.db", "DEV=${SYS_PV},PORT=bsssPort,BSAKEY=REFAMPL,SECN=REFAMPL") 155 dbLoadRecords("db/bsss.db", "DEV=${SYS_PV},PORT=bsssPort,BSAKEY=REFPHASE,SECN=REFPHASE") 156 dbLoadRecords("db/bsss.db", "DEV=${SYS_PV},PORT=bsssPort,BSAKEY=CAV0PRB0PHASE,SECN=CAV0PRB0PHASE") 157 dbLoadRecords("db/bsss.db", "DEV=${SYS_PV},PORT=bsssPort,BSAKEY=CAV0PRB0AMPL,SECN=CAV0PRB0AMPL") 158 dbLoadRecords("db/bsss.db", "DEV=${SYS_PV},PORT=bsssPort,BSAKEY=SIGNAL04,SECN=SIGNAL04") 159 dbLoadRecords("db/bsss.db", "DEV=${SYS_PV},PORT=bsssPort,BSAKEY=SIGNAL05,SECN=SIGNAL05") 160 dbLoadRecords("db/bsss.db", "DEV=${SYS_PV},PORT=bsssPort,BSAKEY=CAV0PRB1PHASE,SECN=CAV0PRB1PHASE") 161 dbLoadRecords("db/bsss.db", "DEV=${SYS_PV},PORT=bsssPort,BSAKEY=CAV0PRB1AMPL,SECN=CAV0PRB1AMPL") 162 dbLoadRecords("db/bsss.db", "DEV=${SYS_PV},PORT=bsssPort,BSAKEY=SIGNAL08,SECN=SIGNAL08") 163 dbLoadRecords("db/bsss.db", "DEV=${SYS_PV},PORT=bsssPort,BSAKEY=SIGNAL09,SECN=SIGNAL09") 164 dbLoadRecords("db/bsss.db", "DEV=${SYS_PV},PORT=bsssPort,BSAKEY=CAV1PRB0PHASE,SECN=CAV1PRB0PHASE") 165 dbLoadRecords("db/bsss.db", "DEV=${SYS_PV},PORT=bsssPort,BSAKEY=CAV1PRB0AMPL,SECN=CAV1PRB0AMPL") 166 dbLoadRecords("db/bsss.db", "DEV=${SYS_PV},PORT=bsssPort,BSAKEY=SIGNAL12,SECN=SIGNAL12") 167 dbLoadRecords("db/bsss.db", "DEV=${SYS_PV},PORT=bsssPort,BSAKEY=SIGNAL13,SECN=SIGNAL13") 168 dbLoadRecords("db/bsss.db", "DEV=${SYS_PV},PORT=bsssPort,BSAKEY=CAV1PRB1PHASE,SECN=CAV1PRB1PHASE") 169 dbLoadRecords("db/bsss.db", "DEV=${SYS_PV},PORT=bsssPort,BSAKEY=CAV1PRB1AMPL,SECN=CAV1PRB1AMPL") 170 dbLoadRecords("db/bsss.db", "DEV=${SYS_PV},PORT=bsssPort,BSAKEY=CAV0TIME,SECN=CAV0TIME") 171 dbLoadRecords("db/bsss.db", "DEV=${SYS_PV},PORT=bsssPort,BSAKEY=CAV1TIME,SECN=CAV1TIME") 172 dbLoadRecords("db/bsss.db", "DEV=${SYS_PV},PORT=bsssPort,BSAKEY=CAV0CHARGE,SECN=CAV0CHARGE") 173 dbLoadRecords("db/bsss.db", "DEV=${SYS_PV},PORT=bsssPort,BSAKEY=CAV1CHARGE,SECN=CAV1CHARGE") 174 175 #BLD Control/Monintoring PVs 176 dbLoadRecords("db/bldCtrl.db", "GLOBAL=BLD:SYS0:2,DEV=${SYS_PV},SERVICE=BLD,PORT=bldPort") 177 178 # BLD Scalar PVs 179 dbLoadRecords("db/bld.db", "DEV=${SYS_PV},PORT=bldPort,BSAKEY=REFAMPL,SECN=REFAMPL") 180 dbLoadRecords("db/bld.db", "DEV=${SYS_PV},PORT=bldPort,BSAKEY=REFPHASE,SECN=REFPHASE") 181 dbLoadRecords("db/bld.db", "DEV=${SYS_PV},PORT=bldPort,BSAKEY=CAV0PRB0PHASE,SECN=CAV0PRB0PHASE") 182 dbLoadRecords("db/bld.db", "DEV=${SYS_PV},PORT=bldPort,BSAKEY=CAV0PRB0AMPL,SECN=CAV0PRB0AMPL") 183 dbLoadRecords("db/bld.db", "DEV=${SYS_PV},PORT=bldPort,BSAKEY=SIGNAL04,SECN=SIGNAL04") 184 dbLoadRecords("db/bld.db", "DEV=${SYS_PV},PORT=bldPort,BSAKEY=SIGNAL05,SECN=SIGNAL05") 185 dbLoadRecords("db/bld.db", "DEV=${SYS_PV},PORT=bldPort,BSAKEY=CAV0PRB1PHASE,SECN=CAV0PRB1PHASE") 186 dbLoadRecords("db/bld.db", "DEV=${SYS_PV},PORT=bldPort,BSAKEY=CAV0PRB1AMPL,SECN=CAV0PRB1AMPL") 187 dbLoadRecords("db/bld.db", "DEV=${SYS_PV},PORT=bldPort,BSAKEY=SIGNAL08,SECN=SIGNAL08") 188 dbLoadRecords("db/bld.db", "DEV=${SYS_PV},PORT=bldPort,BSAKEY=SIGNAL09,SECN=SIGNAL09") 189 dbLoadRecords("db/bld.db", "DEV=${SYS_PV},PORT=bldPort,BSAKEY=CAV1PRB0PHASE,SECN=CAV1PRB0PHASE") 190 dbLoadRecords("db/bld.db", "DEV=${SYS_PV},PORT=bldPort,BSAKEY=CAV1PRB0AMPL,SECN=CAV1PRB0AMPL") 191 dbLoadRecords("db/bld.db", "DEV=${SYS_PV},PORT=bldPort,BSAKEY=SIGNAL12,SECN=SIGNAL12") 192 dbLoadRecords("db/bld.db", "DEV=${SYS_PV},PORT=bldPort,BSAKEY=SIGNAL13,SECN=SIGNAL13") 193 dbLoadRecords("db/bld.db", "DEV=${SYS_PV},PORT=bldPort,BSAKEY=CAV1PRB1PHASE,SECN=CAV1PRB1PHASE") 194 dbLoadRecords("db/bld.db", "DEV=${SYS_PV},PORT=bldPort,BSAKEY=CAV1PRB1AMPL,SECN=CAV1PRB1AMPL") 195 dbLoadRecords("db/bld.db", "DEV=${SYS_PV},PORT=bldPort,BSAKEY=CAV0TIME,SECN=CAV0TIME") 196 dbLoadRecords("db/bld.db", "DEV=${SYS_PV},PORT=bldPort,BSAKEY=CAV1TIME,SECN=CAV1TIME") 197 dbLoadRecords("db/bld.db", "DEV=${SYS_PV},PORT=bldPort,BSAKEY=CAV0CHARGE,SECN=CAV0CHARGE") 198 dbLoadRecords("db/bld.db", "DEV=${SYS_PV},PORT=bldPort,BSAKEY=CAV1CHARGE,SECN=CAV1CHARGE") 199 200 # BSAS Control/Monintoring PVs 201 dbLoadRecords("db/bsasCtrl.db", "GLOBAL=BSAS:SYS0:2,AREA=${LOCA},IOC_UNIT=${UNIT},IOC_INST=0,DEV=${SYS_PV} ,PORT=bsasPort") 202 203 # BSAS Scalar PVs 204 dbLoadRecords("db/bsas.db", "DEV=${SYS_PV},PORT=bsasPort,BSAKEY=REFAMPL,SECN=REFAMPL") 205 dbLoadRecords("db/bsas.db", "DEV=${SYS_PV},PORT=bsasPort,BSAKEY=REFPHASE,SECN=REFPHASE") 206 dbLoadRecords("db/bsas.db", "DEV=${SYS_PV},PORT=bsasPort,BSAKEY=CAV0PRB0PHASE,SECN=CAV0PRB0PHASE") 207 dbLoadRecords("db/bsas.db", "DEV=${SYS_PV},PORT=bsasPort,BSAKEY=CAV0PRB0AMPL,SECN=CAV0PRB0AMPL") 208 dbLoadRecords("db/bsas.db", "DEV=${SYS_PV},PORT=bsasPort,BSAKEY=SIGNAL04,SECN=SIGNAL04") 209 dbLoadRecords("db/bsas.db", "DEV=${SYS_PV},PORT=bsasPort,BSAKEY=SIGNAL05,SECN=SIGNAL05") 210 dbLoadRecords("db/bsas.db", "DEV=${SYS_PV},PORT=bsasPort,BSAKEY=CAV0PRB1PHASE,SECN=CAV0PRB1PHASE") 211 dbLoadRecords("db/bsas.db", "DEV=${SYS_PV},PORT=bsasPort,BSAKEY=CAV0PRB1AMPL,SECN=CAV0PRB1AMPL") 212 dbLoadRecords("db/bsas.db", "DEV=${SYS_PV},PORT=bsasPort,BSAKEY=SIGNAL08,SECN=SIGNAL08") 213 dbLoadRecords("db/bsas.db", "DEV=${SYS_PV},PORT=bsasPort,BSAKEY=SIGNAL09,SECN=SIGNAL09") 214 dbLoadRecords("db/bsas.db", "DEV=${SYS_PV},PORT=bsasPort,BSAKEY=CAV1PRB0PHASE,SECN=CAV1PRB0PHASE") 215 dbLoadRecords("db/bsas.db", "DEV=${SYS_PV},PORT=bsasPort,BSAKEY=CAV1PRB0AMPL,SECN=CAV1PRB0AMPL") 216 dbLoadRecords("db/bsas.db", "DEV=${SYS_PV},PORT=bsasPort,BSAKEY=SIGNAL12,SECN=SIGNAL12") 217 dbLoadRecords("db/bsas.db", "DEV=${SYS_PV},PORT=bsasPort,BSAKEY=SIGNAL13,SECN=SIGNAL13") 218 dbLoadRecords("db/bsas.db", "DEV=${SYS_PV},PORT=bsasPort,BSAKEY=CAV1PRB1PHASE,SECN=CAV1PRB1PHASE") 219 dbLoadRecords("db/bsas.db", "DEV=${SYS_PV},PORT=bsasPort,BSAKEY=CAV1PRB1AMPL,SECN=CAV1PRB1AMPL") 220 dbLoadRecords("db/bsas.db", "DEV=${SYS_PV},PORT=bsasPort,BSAKEY=CAV0TIME,SECN=CAV0TIME") 221 dbLoadRecords("db/bsas.db", "DEV=${SYS_PV},PORT=bsasPort,BSAKEY=CAV1TIME,SECN=CAV1TIME") 222 dbLoadRecords("db/bsas.db", "DEV=${SYS_PV},PORT=bsasPort,BSAKEY=CAV0CHARGE,SECN=CAV0CHARGE") 223 dbLoadRecords("db/bsas.db", "DEV=${SYS_PV},PORT=bsasPort,BSAKEY=CAV1CHARGE,SECN=CAV1CHARGE")
111 # slot 6, LCLS2 mode PCAV 112 cpswDebugStreamAsynDriverConfigure("atca0_str0", 0x4000, "header_enabled", "Stream0", "Stream1", "Stream2" , "Stream3") 113 cpswDebugStreamAsynDriverConfigure("atca0_str1", 0x4000, "header_enabled", "Stream4", "Stream5", "Stream6" , "Stream7") 114 cpswRFCommonAsynDriverConfigure("rfc0", "mmio/AppTop/AppCore/Sysgen", "MyRoot0") 115 cpswLlrfDownConvAsynDriverConfigure("dnc0", "mmio/AppTop/AppCore/AmcMrLlrfDownConvert") 116 cpswLlrfUpConvAsynDriverConfigure("upc0", "mmio/AppTop/AppCore/AmcMrLlrfUpConvert") 117 pcavAsynDriverConfigure("pcav0", "", "bstream", "${PREFIX0}", "MyRoot0","SC")
In the PCAV Application directory, there is a specific area where the archive files are kept. In particular, see content of srcArchive/ for the archive files produced for each of the IOCs.
The list of the archived PVs for each IOC are shown below.
# # syntax <PVNAME> <POLL_SEC> <MONITOR option> # $(PREFIX):A 1 monitor # $(PREFIX):PCAVVER 30 monitor # ----------------------- # RF reference # ----------------------- $(PREFIX):RFREFSEL 15 monitor $(PREFIX):RFREFPHASE 15 monitor $(PREFIX):RFREFAMPL 15 monitor $(PREFIX):RFREFI 15 monitor $(PREFIX):RFREFQ 15 monitor # ----------------------- # Cavity 0 # ----------------------- $(PREFIX):CAV0NCOPHASEADJ 15 monitor $(PREFIX):CAV0FREQEVALSTART 15 monitor $(PREFIX):CAV0FREQEVALEND 15 monitor $(PREFIX):CAV0REGLATCHPT 15 monitor # Probe 0 $(PREFIX):CAV0PRB0CHSEL 15 monitor $(PREFIX):CAV0PRB0WNDSTART 15 monitor $(PREFIX):CAV0PRB0WNDEND 15 monitor $(PREFIX):CAV0PRB0CALIBCOEFF 15 monitor $(PREFIX):CAV0PRB0POFF 15 monitor # $(PREFIX):CAV0PRB0IFPHASE 5 monitor $(PREFIX):CAV0PRB0IFAMPL 5 monitor $(PREFIX):CAV0PRB0IFI 5 monitor $(PREFIX):CAV0PRB0IFQ 5 monitor $(PREFIX):CAV0PRB0DCREAL 5 monitor $(PREFIX):CAV0PRB0DCIMAGE 5 monitor $(PREFIX):CAV0PRB0DCFREQ 5 monitor $(PREFIX):CAV0PRB0INTEGI 5 monitor $(PREFIX):CAV0PRB0INTEGQ 5 monitor $(PREFIX):CAV0PRB0OUTPHASE 5 monitor $(PREFIX):CAV0PRB0OUTAMPL 5 monitor $(PREFIX):CAV0PRB0COMPPHASE 5 monitor # Probe 1 $(PREFIX):CAV0PRB1CHSEL 15 monitor $(PREFIX):CAV0PRB1WNDSTART 15 monitor $(PREFIX):CAV0PRB1WNDEND 15 monitor $(PREFIX):CAV0PRB1CALIBCOEFF 15 monitor $(PREFIX):CAV0PRB1POFF 15 monitor # $(PREFIX):CAV0PRB1IFPHASE 5 monitor $(PREFIX):CAV0PRB1IFAMPL 5 monitor $(PREFIX):CAV0PRB1IFI 5 monitor $(PREFIX):CAV0PRB1IFQ 5 monitor $(PREFIX):CAV0PRB1DCREAL 5 monitor $(PREFIX):CAV0PRB1DCIMAGE 5 monitor $(PREFIX):CAV0PRB1DCFREQ 5 monitor $(PREFIX):CAV0PRB1INTEGI 5 monitor $(PREFIX):CAV0PRB1INTEGQ 5 monitor $(PREFIX):CAV0PRB1OUTPHASE 5 monitor $(PREFIX):CAV0PRB1OUTAMPL 5 monitor $(PREFIX):CAV0PRB1COMPPHASE 5 monitor # ----------------------- # Cavity 1 # ----------------------- $(PREFIX):CAV1NCOPHASEADJ 15 monitor $(PREFIX):CAV1FREQEVALSTART 15 monitor $(PREFIX):CAV1FREQEVALEND 15 monitor $(PREFIX):CAV1REGLATCHPT 15 monitor # Probe 0 $(PREFIX):CAV1PRB0CHSEL 15 monitor $(PREFIX):CAV1PRB0WNDSTART 15 monitor $(PREFIX):CAV1PRB0WNDEND 15 monitor $(PREFIX):CAV1PRB0CALIBCOEFF 15 monitor $(PREFIX):CAV1PRB0POFF 15 monitor # $(PREFIX):CAV1PRB0IFPHASE 5 monitor $(PREFIX):CAV1PRB0IFAMPL 5 monitor $(PREFIX):CAV1PRB0IFI 5 monitor $(PREFIX):CAV1PRB0IFQ 5 monitor $(PREFIX):CAV1PRB0DCREAL 5 monitor $(PREFIX):CAV1PRB0DCIMAGE 5 monitor $(PREFIX):CAV1PRB0DCFREQ 5 monitor $(PREFIX):CAV1PRB0INTEGI 5 monitor $(PREFIX):CAV1PRB0INTEGQ 5 monitor $(PREFIX):CAV1PRB0OUTPHASE 5 monitor $(PREFIX):CAV1PRB0OUTAMPL 5 monitor $(PREFIX):CAV1PRB0COMPPHASE 5 monitor # Probe 1 $(PREFIX):CAV1PRB1CHSEL 15 monitor $(PREFIX):CAV1PRB1WNDSTART 15 monitor $(PREFIX):CAV1PRB1WNDEND 15 monitor $(PREFIX):CAV1PRB1CALIBCOEFF 15 monitor $(PREFIX):CAV1PRB1POFF 15 monitor # $(PREFIX):CAV1PRB1IFPHASE 5 monitor $(PREFIX):CAV1PRB1IFAMPL 5 monitor $(PREFIX):CAV1PRB1IFI 5 monitor $(PREFIX):CAV1PRB1IFQ 5 monitor $(PREFIX):CAV1PRB1DCREAL 5 monitor $(PREFIX):CAV1PRB1DCIMAGE 5 monitor $(PREFIX):CAV1PRB1DCFREQ 5 monitor $(PREFIX):CAV1PRB1INTEGI 5 monitor $(PREFIX):CAV1PRB1INTEGQ 5 monitor $(PREFIX):CAV1PRB1OUTPHASE 5 monitor $(PREFIX):CAV1PRB1OUTAMPL 5 monitor $(PREFIX):CAV1PRB1COMPPHASE 5 monitor # ---------------------------- # Linear Conversion # ---------------------------- # Cavity 0 $(PREFIX):TIME0 5 monitor $(PREFIX):CHRG0 5 monitor # $(PREFIX):COEFFA_TIME0 15 monitor $(PREFIX):COEFFB_TIME0 15 monitor $(PREFIX):COEFFA_CHRG0 15 monitor $(PREFIX):COEFFB_CHRG0 15 monitor # Cavity 1 $(PREFIX):TIME1 5 monitor $(PREFIX):CHRG1 5 monitor # $(PREFIX):COEFFA_TIME1 15 monitor $(PREFIX):COEFFB_TIME1 15 monitor $(PREFIX):COEFFA_CHRG1 15 monitor $(PREFIX):COEFFB_CHRG1 15 monitor # ---------------------------- # RMS/Average # ---------------------------- # Cavity 0 $(PREFIX):THREDCHRG0 15 monitor $(PREFIX):VARGAIN0 15 monitor $(PREFIX):RMSTIME0 5 monitor $(PREFIX):RAWTIME0 5 monitor $(PREFIX):RMSCHRG0 5 monitor $(PREFIX):RAWCHRG0 5 monitor $(PREFIX):VALIDCNT0 5 monitor $(PREFIX):INVALIDCNT0 5 monitor # Cavity 1 $(PREFIX):THREDCHRG1 15 monitor $(PREFIX):VARGAIN1 15 monitor $(PREFIX):RMSTIME1 5 monitor $(PREFIX):RAWTIME1 5 monitor $(PREFIX):RMSCHRG1 5 monitor $(PREFIX):RAWCHRG1 5 monitor $(PREFIX):VALIDCNT1 5 monitor $(PREFIX):INVALIDCNT1 5 monitor # ---------------------------------------- # Up-Converter/Down-Converter Temperatures # ---------------------------------------- # Up-Converter $(PREFIX):UPC_TEMP0 5 monitor $(PREFIX):UPC_TEMP1 5 monitor $(PREFIX):UPC_TEMP2 5 monitor $(PREFIX):UPC_TEMP3 5 monitor # Down-Converter $(PREFIX):DNC_TEMP0 5 monitor $(PREFIX):DNC_TEMP1 5 monitor $(PREFIX):DNC_TEMP2 5 monitor $(PREFIX):DNC_TEMP3 5 monitor
In the startup script, we ensure that the archive list is copied over to the data directory.
119 # ===================================================================== 120 # Copy Archive List file into the ioc Data Area 121 # ===================================================================== 122 system("cp ${TOP}/archive/${IOC}.archive ${IOC_DATA}/${IOC}/archive")
27 save_restoreSet_Debug(0) 28 29 # Specify where request and save_restore files can be found 30 set_requestfile_path("${IOC_DATA}/${IOC}/autosave-req") 31 set_savefile_path("${IOC_DATA}/${IOC}/autosave") 32 33 # Status-PV prefix, so save_restore can find its status PVs. 34 save_restoreSet_status_prefix("${IOC_NAME}:") 35 36 # Load bumpless reboot status database 37 dbLoadRecords("db/save_restoreStatus.db","P=${IOC_NAME}:") 38 39 # Ok to restore a save set that had missing values (no CA connection to PV)? 40 # Ok to save a file if some CA connections are bad? 41 save_restoreSet_IncompleteSetsOk(1) 42 43 # In the restore operation, a copy of the save file will be written. The 44 # file name can look like "auto_settings.sav.bu", and be overwritten every 45 # reboot, or it can look like "auto_settings.sav_020306-083522" (this is what 46 # is meant by a dated backup file) and every reboot will write a new copy. 47 save_restoreSet_DatedBackupFiles(1) 48 49 # Specify what save files should be restored and when. 50 # Note: up to eight files can be specified for each pass. 51 set_pass0_restoreFile("info_positions.sav") 52 set_pass1_restoreFile("info_positions.sav") 53 set_pass0_restoreFile("info_settings.sav") 54 set_pass1_restoreFile("info_settings.sav") 55 56 # Number of sequenced backup files (e.g., 'info_settings.sav0') to write 57 save_restoreSet_NumSeqFiles(3) 58 59 # Time interval between sequenced backups 60 save_restoreSet_SeqPeriodInSeconds(600) 61 62 # Time between failed .sav-file write and the retry. 63 save_restoreSet_RetrySeconds(60)
225 ################################################################################ 226 # ATCA Carrier Slots downstream of slot 2 RTM, will receive 227 # timing over the backplane 228 ################################################################################ 229 # crossbar control ('output', 'inpput') 230 # output: 'RTM_OUT0' | 'FPGA' | 'BP' | 'RTM_OUT1' 231 # input: 'RTM_IN0' ['LCLS1'] | 'FPGA' | 'BP' | 'RTM_IN1' ['LCLS2'] 232 ################################################################################ 233 crossbarControl("FPGA", "BP")
238 # Increase callback and scanOnce quese sizes 239 # Note: must do after db load but before iocInit 240 callbackSetQueueSize(12000) 241 scanOnceSetQueueSize(12000) 242 243 # Start EPICS 244 iocInit() 245 246 # Initialize caPutLog 247 caPutLogInit("${EPICS_CA_PUT_LOG_ADDR}")
249 # ########################## 250 # Initialize Waveform Engines 251 # ########################## 252 dbpf $(PREFIX0):WFENG0_INIT 1 253 dbpf $(PREFIX0):WFENG0_INIT 0 254 dbpf $(PREFIX0):WFENG1_INIT 1 255 dbpf $(PREFIX0):WFENG1_INIT 0
257 # ############ 258 # Enable DaqMux 259 # ############ 260 dbpf $(PREFIX0):DAQMUX0_AUTOREARM 1 261 dbpf $(PREFIX0):DAQMUX1_AUTOREARM 1
40 # Wait before building autosave files 41 epicsThreadSleep(1) 42 43 # Generate the autosave PV list 44 # Note we need change directory to 45 # where we are saving the restore 46 # request file. 47 cd("${IOC_DATA}/${IOC}/autosave-req") 48 makeAutosaveFiles() 49 50 # Start the save_restore task 51 # save changes on change, but no faster 52 # than every 5 seconds. 53 # Note: the last arg cannot be set to 0 54 create_monitor_set("info_positions.req", 60 ) 55 create_monitor_set("info_settings.req" , 60 ) 56 57 # change directory to TOP of application 58 cd("${TOP}") 59 pwd()
To bring up the screens in either Der or Production, following the instructions below.
To launch the main screen, do the following:
$ cd /afs/slac/g/lcls/epics/iocTop/pcav/pcav-git/edm $ edm -eolc -x main_b084_unds.edl
As in the case of Dev, the steps are similar for Production. Please see below.
$ cd /usr/local/lcls/epics/iocTop/pcav/R3.0.0/edm $ edm -eolc -x main_sc_unds.edl
A script has been set up to monitor the ringing seen in the raw waveform from the cavity and feed that into the firmware calculation. To run the script, see usage below.
[softegr@lcls-srv01 edm]$ cd /u1/lcls/epics/ioc/data/sioc-unds-pt11/ [softegr@lcls-srv01 sioc-unds-pt11]$ ls archive autosave autosave-req iocInfo restart.date restore screenlog.0 screenlog.0-20230921103955 unds_pcav_freq_fbk.py yaml yamlConfig [softegr@lcls-srv01 sioc-unds-pt11]$ python unds_pcav_freq_fbk.py --help usage: unds_pcav_freq_fbk.py [-h] [--base BASE] [--start START] [--stop STOP] [--interval INTERVAL] pcav frequency tracker optional arguments: -h, --help show this help message and exit --base BASE base PV name --start START fit start --stop STOP fit stop --interval INTERVAL nfits per update
The defaults are:
parser.add_argument('--base', help='base PV name', default='SIOC:UNDS:PT01:0') parser.add_argument('--start', help='fit start', type=int, default=620) parser.add_argument('--stop' , help='fit stop', type=int, default=1620) parser.add_argument('--interval' , help='nfits per update', type=int, default=100)
See below for the tagged releases used in production.
Repository | Tag (RHEL6) | Tag (RHEL7) | SXR IOC | HXR IOC |
---|---|---|---|---|
pcav | R3.0.0 | R3.0.1 | sioc-unds-pt11 | sion-undh-pt11 |
Repository | Git Hash |
---|---|
lcls2-pcav | 6690138cb0476e2f9bb57b66440047dfa8b3aaa5 |