Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Linac Locking - A System Level Overview

IOC Description


DHCP Configuration


IOC Deployment

In this section, we provide IOC deployment details such as the App hosting the PLL IOCs, as well as the IOC names and the assigned CPUs in both Dev and Production. 

...

First, define the usual environment variables in the startup script.


11.5MHZ PLL:


Code Block
languagebash
# ===========================================
#            ENVIRONMENT VARIABLES
# ===========================================
epicsEnvSet("AREA",     "SYS0"             )   
epicsEnvSet("IOC_NAME", "SIOC:$(AREA):MS07")
epicsEnvSet("LOCATION", "$(AREA)"          )   
epicsEnvSet("P",        "PRL:$(AREA):07"   )   


476MHz PLL:


Code Block
languagebash
# ===========================================
#            ENVIRONMENT VARIABLES
# ===========================================
epicsEnvSet("AREA",     "SYS0"             )   
epicsEnvSet("IOC_NAME", "SIOC:$(AREA):MS08")
epicsEnvSet("LOCATION", "$(AREA)"          )   
epicsEnvSet("P",        "PRL:$(AREA):08"   )   

Common setup

Load dbd and IOC health/monitoring records.  Also, set up autosave and load the LCLS access configuration file.  Finally, copy the archive file in $IOC_DATA to enable record archiving.


Yaml initialization

Load Point to the YAML hierarchy and register configuration.file.


Code Block
languagebash
# Yaml File
epicsEnvSet("YAML_FILE", "yaml/Gen1Lcls2PrlMaster_project.yaml/000TopLevel.yaml")

Autosave initialization

Tell the IOC where to find the list of record names that will be autosaved.

...

Asyn driver configuration

...

Load the YAML hierarchy and register configuration.


11.5MHz PLL:


Code Block
languagebash
# **** Environment variables for YCPSWASYN ****
# CPSW Port name
epicsEnvSet("CPSW_PORT", "SIM1")
# Yaml File
epicsEnvSet("YAML_FILE", "yaml/Gen1Lcls2PrlMaster_project.yaml/000TopLevel.yaml")
# FPGA IP address
# SIM module for 11.5MHz PLL
epicsEnvSet("FPGA_IP", "192.168.1.17")
# Use Automatic generation of records from the YAML definition
# 0 = No, 1 = Yes
epicsEnvSet("AUTO_GEN", 1)
# Automatically generated record prefix
epicsEnvSet("SIM_PREFIX", "SIM07")
# Dictionary file for manual (empty string if none)
epicsEnvSet("DICT_FILE", "")

# ===========================================
#              DRIVER SETUP
# ===========================================
cpswLoadYamlFile("${YAML_FILE}", "NetIODev", "yaml/Gen1Lcls2PrlMaster_project.yaml", "${FPGA_IP}")
cpswLoadConfigFile("yaml/config/sioc-sys0-ms07.yaml", "mmio", "yaml/config")

# ************************************
# **** Driver setup for YCPSWAsyn ****
# YCPSWASYNConfig(
#    PORT_NAME,             # the name given to this port driver
#    ROOT_PATH,             # root path to start the generation, if empty, the root will be used
#    PREFIX,                # record name prefix
#    AUTO_GEN_MODE,         # 0: disable auto-generation, 1: enable autogeneration using mapped names
#                           # 2: enable autogeneration using hashed names
#    DICIT_FILE             # dictionary file path with registers to load, an empty string will disable this function
# )
YCPSWASYNConfig("${CPSW_PORT}","", "${SIM_PREFIX}", "${AUTO_GEN}", "${DICT_FILE}")


476MHz PLL:

Code Block
languagebash
# **** Environment variables for YCPSWASYN ****
# CPSW Port name
epicsEnvSet("CPSW_PORT", "SIM1")
# FPGA IP address
# SIM module for 476MHz PLL 
epicsEnvSet("FPGA_IP", "192.168.1.18")
# Use Automatic generation of records from the YAML definition
# 0 = No, 1 = Yes
epicsEnvSet("AUTO_GEN", 1)
# Automatically generated record prefix
epicsEnvSet("SIM_PREFIX", "SIM08")
# Dictionary file for manual (empty string if none)
epicsEnvSet("DICT_FILE", "")

# ===========================================
#              DRIVER SETUP
# ===========================================
cpswLoadYamlFile("${YAML_FILE}", "NetIODev", "yaml/Gen1Lcls2PrlMaster_project.yaml", "${FPGA_IP}")
cpswLoadConfigFile("yaml/config/sioc-sys0-ms08.yaml", "mmio", "yaml/config")

# ************************************
# **** Driver setup for YCPSWAsyn ****
# YCPSWASYNConfig(
#    PORT_NAME,             # the name given to this port driver
#    ROOT_PATH,             # root path to start the generation, if empty, the root will be used
#    PREFIX,                # record name prefix
#    AUTO_GEN_MODE,         # 0: disable auto-generation, 1: enable autogeneration using mapped names
#                           # 2: enable autogeneration using hashed names
#    DICIT_FILE             # dictionary file path with registers to load, an empty string will disable this function
# )
YCPSWASYNConfig("${CPSW_PORT}","", "${SIM_PREFIX}", "${AUTO_GEN}", "${DICT_FILE}") 

Archiver list

A complete list of the records to archive is provided below.

...