You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 37 Next »

Overview

Linac Locking System-Level Description

A high-level description of the linac locking system is captured in the page linked below:

Linac Locking - A System Level Overview

IOC Description

The phase locker IOC provides the controls to interface with the phase locker firmware.  The latter takes at its inputs a VCO-controlled RF signal and an RF-reference signal of the same frequency.  Subsequently, the computed phase error between the two signals is used to estimate a correction voltage, which in turn gets applied to the VCO to tune the VCO-generated signal.  This is repeated until the two signals are locked together in phase within an acceptable margin.


In particular for the linac locking system (see diagram above), the RF reference and 2856MHz VCO signals are read in by the ADC and processed in parallel until their phases are extracted. The phase error between the two signals goes through a proportional-integral (PI) controller and low pass filter to get the phase compensation signal, which is then used to adjust the bias voltage applied to the 476MHz VCO. The VCO tuning range at 476MHz is about ±150Hz with respect to the ATCA baseband DAC, which has a ±5 Volts output range. With the loop bandwidth set to 300Hz, a stable phase locking is achieved with a 10 femtosecond differential timing jitter between the VCO signal and the RF reference signal.

IOC Deployment

In this section, IOC deployment details are provided pertaining to the housing App, as well as the IOC and corresponding CPU names in both Dev and Production. 

IOC Repository

The IOC is housed in the masterSource App.  The intended released tag in Production is R2.2.3.

IOC App NameApp Version
masterSourceR2.2.3

Deployment In Production

The configuration used in Production is seen below.

IOC NameCPU Name
sioc-sys0-ms10cpu-sys0-sp02

Deployment In Dev

The configuration used in Dev is seen below.

IOC NameCPU Name
sioc-b084-ms10cpu-b084-sp12

IOC Packages

List of required packages and associated versions.

Package NamePackage Version

cpsw/framework

R4.4.1

yaml-cpp

yaml-cpp-0.5.3_boost-1.64.0

boost

1.64.0

pcre

8.37

mrllrf/llrfLib

R1.1.0

timing/hpsTpr

R2.3.0

atca/commonATCA

R1.3.1

IOC Modules

List of required modules and associated versions.

Module NameModule Version

ATCACommon

R7.0.3.1-1.0

agilent53220A

R1.0.6

asyn

R4.39-1.0.1

autosave

R5.10-1.1.0

bkhAsyn

R0.4.6

caPutLog

R4.0-1.0.0

iocAdmin

R3.1.16-1.3.2

miscUtils

R2.2.5

modbus

R3.2-1.0.1

seq

R2.2.4-1.2

std

R3.2-1.0.5

streamdevice

R2.8.9-1.2.1

timingApi

R0.9

tprTrigger

R2.5.3-4.0-2

yamlLoader

R2.3.5

ycpswasyn

R3.3.6-1.0

IOC Bootup

In this section, a detailed description of the IOC bootup process is laid out.

Generic variable definition

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

# ===========================================
#            ENVIRONMENT VARIABLES
# ===========================================
epicsEnvSet("IOC",                   "sioc-sys0-ms10"           )
epicsEnvSet("DEVICE",                "PRL"                      )
epicsEnvSet("LOCA",                  "SYS0"                     )
epicsEnvSet("UNIT",                  "1"                        )
epicsEnvSet("IOC_NAME",              "SIOC:$(LOCA):MS10"        )
epicsEnvSet("IOC_PV",                "$(DEVICE):$(LOCA):$(UNIT)")
epicsEnvSet("PREFIX",                "$(IOC_PV)"                )
epicsEnvSet("DATA",                  "$(IOC_DATA)/$(IOC)"       )
epicsEnvSet("YAML_DIR",              "$(DATA)/yaml"             )
epicsEnvSet("FPGA_IP",               "10.0.1.102"               )

epicsEnvSet("EPICS_CA_MAX_ARRAY_BYTES", "1000000")

# Port name
epicsEnvSet("PORT","ATCA2")

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.

## Load dbd
dbLoadDatabase("dbd/masterSource.dbd", 0, 0)
masterSource_registerRecordDeviceDriver(pdbbase)

## Environment variables
epicsEnvSet("ENGINEER", "MICHAEL SKOUFIS")
epicsEnvSet("STREAM_PROTOCOL_PATH", "${TOP}/db")
## Tag log messages with IOC name
epicsEnvSet("EPICS_IOC_LOG_CLIENT_INET", "${IOC}")

## Load records
# **** Load iocAdmin databases to support IOC Health and monitoring ****
dbLoadRecords("db/iocAdminSoft.db", "IOC=${IOC_NAME}")
dbLoadRecords("db/iocAdminScanMon.db", "IOC=${IOC_NAME}")
dbLoadRecords("db/iocRelease.db", "IOC=${IOC_NAME}")

## Autosave initialization
< $(TOP)/iocBoot/common/autosave_init.cmd

## Channel Access Security:
# This is required if you use caPutLog.
# Set access security file
# Load common LCLS Access Configuration File
< ${ACF_INIT}

## Update archive pv list in ${IOC_DATA}
system("cp $(TOP)/archive/${IOC}.archive ${IOC_DATA}/${IOC}/archive/")



Real-time environment & databases

Yaml initialization

Database loading

Asyn driver configuration

Archiver list

PV restoration

Crossbar control

IOC initialization

PV autosave

Algorithms


EPICS Records


Displays

Currently, there is no phase locker test stand in Dev and hence only the Production displays are available.

Production

To access and launch the display in Production, follow the steps outlined below. 

[softegr@lcls-srv01 skoufis]$ cd $EPICS_IOCS/sioc-sys0-ms10/iocSpecificRelease/masterSourceApp/srcDisplay/
[softegr@lcls-srv01 skoufis]$ cat masterSourceApp/srcDisplay/README.phaselocker 

To run the phase locker screen in production, follow these steps from within this directory:

1. $ source /usr/local/lcls/epics/setup/epicsenv-7.0.3.1-1.0.bash
2. $ source /usr/local/lcls/tools/script/ENVS64.bash
3. $ pydm -m "PREFIX=PRL:SYS0:1" plocker.ui

Deliverables

Released software and firmware will be delivered and made available for access.  See the following section for the specific repositories and tags.

Software Release

See software release details below.

RepositoryVersionIOC Name
masterSourceR2.2.3sioc-sys0-ms10

Firmware Release

See firmware release details below.

RepositoryVersion


References 

  • No labels