Versions Compared

Key

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

Table of Contents

Overview

Acronyms

TermDescription

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

RF

Radio Frequency

RFoF

RF-over-Fiber

Rx

Receiver

SHM

Shelf Manager

SMF

Single Mode Fibers

Tx

Transmitter

VCO

Voltage Controlled Oscillator

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 IOC provides the controls and a monitoring capability for a low drift and low phase noise continuous-wave optical link system.  The latter is used for the transmission of a 3GHz RF reference signal over long distance. The system consists of a Transmitter (Tx) and a Receiver (Rx) that are connected with two single mode fibers (SMF) (optical links).  To achieve low phase noise performance, the RF signal is propagated through the unidirectional optical link. The low noise link is additionally stabilized against phase drifts with the bidirectional phase-compensated optical link (low drift link).  An ethernet connection between the units is also needed for data exchange and control purposes.  We will refer to this system as an RF-over-Fiber (RFoF) system.

Equipment State Machine

The control system for RFoF consists of a state machine responsible for the initialization, tuning and reliable operation of the system. The state machine consists of 6 states and its functional view is provided below.

...

Also, the Tx unit receives data from Rx via the ethernet connection at all time.  In the case of a broken ethernet connection, the system goes from LOCKED to UNLOCKED. This may eventually cause the system to go to SHUTDOWN, unless the connection is reestablished within 10 minutes.

IOC Deployment

In this section, we address IOC deployment details such as the App hosting the RFoF Telnet IOC, IOC name and the assigned CPUs in both Dev and Production. 

IOC Repository

The IOC is housed in by 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-ms11cpu-sys0-sp02

Deployment In Dev

The configuration used in Dev is seen below.  As of now, there is no designated test stand in Dev.

IOC NameCPU Name (Intended)
sioc-b084-ms11cpu-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.

Code Block
languagebash
# ===========================================
#            ENVIRONMENT VARIABLES
# ===========================================
epicsEnvSet("IOC",                  "sioc-sys0-ms11"            )   
epicsEnvSet("DEVICE",               "MSLK"                      )   
epicsEnvSet("LOCA",                 "SYS0"                      )   
epicsEnvSet("UNIT",                 "MS11"                      )   
epicsEnvSet("IOC_NAME",             "SIOC:$(LOCA):$(UNIT)"      )   
epicsEnvSet("IOC_PV",               "$(DEVICE):$(LOCA):$(UNIT)" )
epicsEnvSet("PREFIX",               "${IOC_PV}"                 )   
epicsEnvSet("INDEX",                "0"                         )   
epicsEnvSet("ENGINEER",             "Michael Skoufis"           )   
epicsEnvSet("TXIP",                 "172.27.136.38"             )   
epicsEnvSet("RXIP",                 "172.27.136.39"             )   
epicsEnvSet("STREAM_PROTOCOL_PATH", "$(TOP)/rfofApp/srcProtocol")

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.

Code Block
languagebash
## 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/")

Autosave initialization

Tell the IOC where to find the list of record names that and where they will be autosaved.  Also, restore previously autosaved values.

Code Block
languagebash
# =====================================================================                                                                            
# Load database for autosave status
# =====================================================================
dbLoadRecords("db/save_restoreStatus.db", "P=${IOC_NAME}:")

# ============================================================
# If all PVs don't connect continue anyway
# ============================================================
save_restoreSet_IncompleteSetsOk(1)

# ============================================================
# created save/restore backup files with date string
# useful for recovery.
# ============================================================
save_restoreSet_DatedBackupFiles(1)

# ============================================================
# Where to find the list of PVs to save
# ============================================================
set_requestfile_path("${IOC_DATA}/${IOC}/autosave-req")

# ============================================================
# Where to write the save files that will be used to restore
# ============================================================
set_savefile_path("${IOC_DATA}/${IOC}/autosave")

# ============================================================
# Prefix that is use to update save/restore status database
# records
# ============================================================
save_restoreSet_status_prefix("${IOC_NAME}:")

## Restore datasets
set_pass0_restoreFile("info_positions.sav")
set_pass1_restoreFile("info_positions.sav")

set_pass0_restoreFile("info_settings.sav")
set_pass1_restoreFile("info_settings.sav")

...

Besides the auto-generated record names for autosave, copy the manually generated list of records to be autosaved and restore their previously autosaved values.

Code Block
languagebash
# Copy over the manual settings request file
system("cp $(TOP)/autosave/${IOC}.req ${IOC_DATA}/${IOC}/autosave-req/")

# Load manual settings from autosave
set_pass0_restoreFile("${IOC}.sav")
set_pass1_restoreFile("${IOC}.sav")

Database loading

Load the phase locker records.

Code Block
languagebash
# ===========================================
#          DB LOADING
# ===========================================

## RFOF Transmitter
dbLoadRecords("db/rfof_status.db", "BASE=${PREFIX}, DEV=tx${INDEX}")
dbLoadRecords("db/rfof_tx.db", "BASE=${PREFIX}, DEV=tx${INDEX}")

## RFOF Raceiver
dbLoadRecords("db/rfof_rx.db", "BASE=${PREFIX}, DEV=rx${INDEX}")

## Load record instances
dbLoadRecords("db/iocSoft.db", "IOC=$(IOC)")
dbLoadRecords("db/save_restoreStatus.db", "P=$(IOC):")

Stream driver configuration

Create an EPICS Stream Driver to interface with the Transmitter and Receiver.

Code Block
languagebash
# ===========================================
#          DRIVER SETUP 
# ===========================================

## RFOF Transmitter
drvAsynIPPortConfigure("tx${INDEX}", "${TXIP}:23", 0, 0, 0)

asynSetTraceMask("tx${INDEX}", 0, 0x1)
asynSetTraceIOMask("tx${INDEX}",0, 0)

## RFOF Raceiver
drvAsynIPPortConfigure("rx${INDEX}", "${RXIP}:23", 0, 0, 0)

asynSetTraceMask("rx${INDEX}", 0, 0x1)
asynSetTraceIOMask("rx${INDEX}",0, 0)

Archiver list

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

Code Block
languagebash
(base) skoufis@aird-b50-srv01  (master) $ cat archive/sioc-sys0-ms11.archive 
# archive_iocAdmin Archive template
# Format:
# <PVNAME> <PERIOD> [ monitor ]

# Archive these values only when they change
SIOC:SYS0:MS11:APP_DIR 30 monitor 
SIOC:SYS0:MS11:APP_DIR1 30 monitor 
SIOC:SYS0:MS11:APP_DIR2 30 monitor 
SIOC:SYS0:MS11:CA_CLNT_CNT 1 monitor 
SIOC:SYS0:MS11:CA_CONN_CNT 1 monitor 
SIOC:SYS0:MS11:EPICS_VERS 30 monitor
SIOC:SYS0:MS11:FD_CNT 1 monitor 
SIOC:SYS0:MS11:FD_FREE 1 monitor 
SIOC:SYS0:MS11:FD_MAX 1 monitor 
SIOC:SYS0:MS11:HOSTNAME 30 monitor
SIOC:SYS0:MS11:KERNEL_VERS 30 monitor
SIOC:SYS0:MS11:RECORD_CNT 10 monitor
SIOC:SYS0:MS11:START_CNT 30 monitor
SIOC:SYS0:MS11:STARTTOD 30 monitor
SIOC:SYS0:MS11:ST_SCRIPT 30 monitor 
SIOC:SYS0:MS11:ST_SCRIPT1 30 monitor 
SIOC:SYS0:MS11:ST_SCRIPT2 30 monitor 
SIOC:SYS0:MS11:SUSP_TASK_CNT 30 monitor 
SIOC:SYS0:MS11:SYSRESET 30 monitor 

# Archive these values at the specified rate
SIOC:SYS0:MS11:SYS_CPU_LOAD 10
SIOC:SYS0:MS11:LOAD 10 
SIOC:SYS0:MS11:MEM_BLK_FREE 10 
SIOC:SYS0:MS11:MEM_FREE 10 
SIOC:SYS0:MS11:MEM_USED 10 
SIOC:SYS0:MS11:UPTIME 3600 
# autosave Save/Restore Archive template
# Format:
# <PVNAME> <PERIOD> [ monitor ]

# Archive each status change
SIOC:SYS0:MS11:SR_rebootStatus 1 monitor
SIOC:SYS0:MS11:SR_status 1 monitor
SIOC:SYS0:MS11:SR_rebootStatusStr 1 monitor
SIOC:SYS0:MS11:SR_statusStr 1 monitor
SIOC:SYS0:MS11:SR_0_Status 1 monitor
SIOC:SYS0:MS11:SR_0_StatusStr 1 monitor
SIOC:SYS0:MS11:SR_1_Status 1 monitor
SIOC:SYS0:MS11:SR_1_StatusStr 1 monitor
SIOC:SYS0:MS11:SR_2_Status 1 monitor
SIOC:SYS0:MS11:SR_2_StatusStr 1 monitor
SIOC:SYS0:MS11:SR_3_Status 1 monitor
SIOC:SYS0:MS11:SR_3_StatusStr 1 monitor
SIOC:SYS0:MS11:SR_4_Status 1 monitor
SIOC:SYS0:MS11:SR_4_StatusStr 1 monitor
SIOC:SYS0:MS11:SR_5_Status 1 monitor
SIOC:SYS0:MS11:SR_5_StatusStr 1 monitor
SIOC:SYS0:MS11:SR_6_Status 1 monitor
SIOC:SYS0:MS11:SR_6_StatusStr 1 monitor
SIOC:SYS0:MS11:SR_7_Status 1 monitor
SIOC:SYS0:MS11:SR_7_StatusStr 1 monitor
SIOC:SYS0:MS11:SR_0_State 1 monitor
SIOC:SYS0:MS11:SR_1_State 1 monitor
SIOC:SYS0:MS11:SR_2_State 1 monitor
SIOC:SYS0:MS11:SR_3_State 1 monitor
SIOC:SYS0:MS11:SR_4_State 1 monitor
SIOC:SYS0:MS11:SR_5_State 1 monitor
SIOC:SYS0:MS11:SR_6_State 1 monitor
SIOC:SYS0:MS11:SR_7_State 1 monitor

# Archive these values only when they change
SIOC:SYS0:MS11:SR_recentlyStr 30 monitor
SIOC:SYS0:MS11:SR_rebootTime 30 monitor
SIOC:SYS0:MS11:SR_0_Name 30 monitor
SIOC:SYS0:MS11:SR_1_Name 30 monitor
SIOC:SYS0:MS11:SR_2_Name 30 monitor
SIOC:SYS0:MS11:SR_3_Name 30 monitor
SIOC:SYS0:MS11:SR_4_Name 30 monitor
SIOC:SYS0:MS11:SR_5_Name 30 monitor
SIOC:SYS0:MS11:SR_6_Name 30 monitor
SIOC:SYS0:MS11:SR_7_Name 30 monitor

# Archive these values at the specified rate
SIOC:SYS0:MS11:SR_heartbeat 30
SIOC:SYS0:MS11:SR_0_Time 30
SIOC:SYS0:MS11:SR_1_Time 30
SIOC:SYS0:MS11:SR_2_Time 30
SIOC:SYS0:MS11:SR_3_Time 30
SIOC:SYS0:MS11:SR_4_Time 30
SIOC:SYS0:MS11:SR_5_Time 30
SIOC:SYS0:MS11:SR_6_Time 30
SIOC:SYS0:MS11:SR_7_Time 30

#
# syntax <PVNAME>  <POLL_SEC>  <MONITOR option>
# MSLK:SYS0:MS11:A  1 monitor
#

MSLK:SYS0:MS11:COMMAND                5        monitor
MSLK:SYS0:MS11:RESPONSE               5        monitor
MSLK:SYS0:MS11:VERSION                5        monitor
MSLK:SYS0:MS11:TIME                   5        monitor
MSLK:SYS0:MS11:TX_FANSPEED1           5        monitor
MSLK:SYS0:MS11:TX_FANSPEED2           5        monitor
MSLK:SYS0:MS11:TX_FANSPEED3           5        monitor
MSLK:SYS0:MS11:RX_FANSPEED1           5        monitor
MSLK:SYS0:MS11:RX_FANSPEED2           5        monitor
MSLK:SYS0:MS11:RX_FANSPEED3           5        monitor
MSLK:SYS0:MS11:FANSPEED_RBV           5        monitor
MSLK:SYS0:MS11:OPT_RBV                5        monitor
MSLK:SYS0:MS11:DELAY_RBV              5        monitor
MSLK:SYS0:MS11:FANSPEED               5        monitor
MSLK:SYS0:MS11:OPT                    5        monitor
MSLK:SYS0:MS11:PWR                    5        monitor
MSLK:SYS0:MS11:DELAY                  5        monitor
MSLK:SYS0:MS11:STATUS                 5        monitor
MSLK:SYS0:MS11:UPTIME                 5        monitor
MSLK:SYS0:MS11:LOCK_STATE             5        monitor
MSLK:SYS0:MS11:STATE                  5        monitor
MSLK:SYS0:MS11:UNLOCKED               5        monitor
MSLK:SYS0:MS11:SEMILOCKED             5        monitor
MSLK:SYS0:MS11:LOCKED                 5        monitor
MSLK:SYS0:MS11:START                  5        monitor
MSLK:SYS0:MS11:SHUTDOWN               5        monitor
MSLK:SYS0:MS11:INIT                   5        monitor
MSLK:SYS0:MS11:WARMING_UP             5        monitor
MSLK:SYS0:MS11:TUNING                 5        monitor
MSLK:SYS0:MS11:READY                  5        monitor
MSLK:SYS0:MS11:HEALTH                 5        monitor
MSLK:SYS0:MS11:HEALTH_SPLIT           5        monitor
MSLK:SYS0:MS11:COMM_ERR               5        monitor
MSLK:SYS0:MS11:PS_VOLT_ERR            5        monitor
MSLK:SYS0:MS11:ENV_COND_ERR           5        monitor
MSLK:SYS0:MS11:INT_MOD_ERR            5        monitor
MSLK:SYS0:MS11:RF_PWR_ERR             5        monitor
MSLK:SYS0:MS11:OPT_PWR_ERR            5        monitor
MSLK:SYS0:MS11:LASR_PWR_ERR           5        monitor
MSLK:SYS0:MS11:PHAS_ERR               5        monitor
MSLK:SYS0:MS11:FANSPEED_ERR           5        monitor
MSLK:SYS0:MS11:PS_CURR_ERR            5        monitor
MSLK:SYS0:MS11:ERROR                  5        monitor
MSLK:SYS0:MS11:TX_ERR_SPLIT           5        monitor
MSLK:SYS0:MS11:RX_ERR_SPLIT           5        monitor
MSLK:SYS0:MS11:TX_COMM_SYNC_ERR       5        monitor
MSLK:SYS0:MS11:TX_RF_IN_ERR           5        monitor
MSLK:SYS0:MS11:TX_TEMP_ERR            5        monitor
MSLK:SYS0:MS11:TX_RF_ID_ERR           5        monitor
MSLK:SYS0:MS11:TX_RF_ERR              5        monitor
MSLK:SYS0:MS11:TX_ARM_ID_ERR          5        monitor
MSLK:SYS0:MS11:TX_ARM_ERR             5        monitor
MSLK:SYS0:MS11:RX_COMM_SYNC_ERR       5        monitor
MSLK:SYS0:MS11:RX_RF_OUT_ERR          5        monitor
MSLK:SYS0:MS11:RX_TEMP_ERR            5        monitor
MSLK:SYS0:MS11:UNLOCK_ERR             5        monitor
MSLK:SYS0:MS11:RX_RF_ID_ERR           5        monitor
MSLK:SYS0:MS11:RX_RF_ERR              5        monitor
MSLK:SYS0:MS11:RX_ARM_ID_ERR          5        monitor
MSLK:SYS0:MS11:RX_ARM_ERR             5        monitor
MSLK:SYS0:MS11:SSTATE_RAW             5        monitor
MSLK:SYS0:MS11:SSTATE_CALC            5        monitor
MSLK:SYS0:MS11:SSTATE_CALC2           5        monitor
MSLK:SYS0:MS11:SSTATE_FANOUT          5        monitor
MSLK:SYS0:MS11:SSTATE1                5        monitor
MSLK:SYS0:MS11:SSTATE2                5        monitor
MSLK:SYS0:MS11:SSTATE3                5        monitor
MSLK:SYS0:MS11:SSTATE_STATUS          5        monitor
MSLK:SYS0:MS11:TX_IP                  5        monitor
MSLK:SYS0:MS11:TX_REMOTE_IP_RBV       5        monitor
MSLK:SYS0:MS11:TX_REMOTE_IP           5        monitor
MSLK:SYS0:MS11:TX_SCAN                5        monitor
MSLK:SYS0:MS11:TX_BAS                 5        monitor
MSLK:SYS0:MS11:TX_ADV                 5        monitor
MSLK:SYS0:MS11:TX_PC1                 5        monitor
MSLK:SYS0:MS11:TX_PC2                 5        monitor
MSLK:SYS0:MS11:TX_PD1_CURR            5        monitor
MSLK:SYS0:MS11:TX_PD2_CURR            5        monitor
MSLK:SYS0:MS11:TX_LD_SETPT            5        monitor
MSLK:SYS0:MS11:TX_LASR_TEMP           5        monitor
MSLK:SYS0:MS11:TX_TEMP_SPOOL          5        monitor
MSLK:SYS0:MS11:TX_TEMP_SPOOL_SETPT    5        monitor
MSLK:SYS0:MS11:TX_RF_PWR_IN           5        monitor
MSLK:SYS0:MS11:TX_RF_PWR_PD1          5        monitor
MSLK:SYS0:MS11:TX_RF_PWR_PD2          5        monitor
MSLK:SYS0:MS11:TX_LASR_OPT_PWR        5        monitor
MSLK:SYS0:MS11:TX_RF_PWR_MZM          5        monitor
MSLK:SYS0:MS11:TX_LASR_CURR           5        monitor
MSLK:SYS0:MS11:TX_PHAS_SHFT_ELEC      5        monitor
MSLK:SYS0:MS11:TX_ATTN_SETPT          5        monitor
MSLK:SYS0:MS11:TX_ATTN                5        monitor
MSLK:SYS0:MS11:TX_PHAS_SHFT_IN        5        monitor
MSLK:SYS0:MS11:TX_MZM_BIAS            5        monitor
MSLK:SYS0:MS11:TX_VOA_SETPT           5        monitor
MSLK:SYS0:MS11:TX_VOA                 5        monitor
MSLK:SYS0:MS11:TX_TEMP_SETPT          5        monitor
MSLK:SYS0:MS11:TX_TEMP                5        monitor
MSLK:SYS0:MS11:TX_TEMP_OPT            5        monitor
MSLK:SYS0:MS11:TX_EXT_RELHMD          5        monitor
MSLK:SYS0:MS11:TX_EXT_TEMP_HS         5        monitor
MSLK:SYS0:MS11:TX_EXT_PRES            5        monitor
MSLK:SYS0:MS11:TX_EXT_TEMP_PS         5        monitor
MSLK:SYS0:MS11:TX_RELHMD              5        monitor
MSLK:SYS0:MS11:TX_TEMP_HS             5        monitor
MSLK:SYS0:MS11:TX_PRES                5        monitor
MSLK:SYS0:MS11:TX_TEMP_PS             5        monitor
MSLK:SYS0:MS11:RX_IP                  5        monitor
MSLK:SYS0:MS11:RX_REMOTE_IP_RBV       5        monitor
MSLK:SYS0:MS11:RX_REMOTE_IP           5        monitor
MSLK:SYS0:MS11:RX_SCAN                5        monitor
MSLK:SYS0:MS11:RX_BAS                 5        monitor
MSLK:SYS0:MS11:RX_ADV                 5        monitor
MSLK:SYS0:MS11:RX_PC1                 5        monitor
MSLK:SYS0:MS11:RX_PD1_CURR            5        monitor
MSLK:SYS0:MS11:RX_PD2_CURR            5        monitor
MSLK:SYS0:MS11:RX_RF_PWR_OUT          5        monitor
MSLK:SYS0:MS11:RX_RF_PWR_PD1          5        monitor
MSLK:SYS0:MS11:RX_RF_PWR_PD2          5        monitor
MSLK:SYS0:MS11:RX_RF_PWR_OUT_SETPT    5        monitor
MSLK:SYS0:MS11:RX_ATTN                5        monitor
MSLK:SYS0:MS11:RX_PHAS_SHFT           5        monitor
MSLK:SYS0:MS11:RX_TEMP_SETPT          5        monitor
MSLK:SYS0:MS11:RX_TEMP                5        monitor
MSLK:SYS0:MS11:RX_TEMP_OPT            5        monitor
MSLK:SYS0:MS11:RX_TEMP_SPOOL          5        monitor
MSLK:SYS0:MS11:RX_EXT_RELHMD          5        monitor
MSLK:SYS0:MS11:RX_EXT_TEMP_HS         5        monitor
MSLK:SYS0:MS11:RX_EXT_PRES            5        monitor
MSLK:SYS0:MS11:RX_EXT_TEMP_PS         5        monitor
MSLK:SYS0:MS11:RX_RELHMD              5        monitor
MSLK:SYS0:MS11:RX_TEMP_HS             5        monitor
MSLK:SYS0:MS11:RX_PRES                5        monitor
MSLK:SYS0:MS11:RX_TEMP_PS             5        monitor

IOC initialization

Initialize the IOC and logging capability.

Code Block
languagebash
# ===========================================
#               IOC INIT
# ===========================================
iocInit()

# ===========================================
#               CAPUTLOG
# ===========================================
# Turn on caPutLogging:
# Log values only on change to the iocLogServer:
caPutLogInit("${EPICS_CA_PUT_LOG_ADDR}")
caPutLogShow(2)

Autosave start

Start the autosave process.

Code Block
languagebash
# ===========================================
#              AUTOSAVE START 
# ===========================================
# Autosave start
< $(TOP)/iocBoot/common/autosave_start.cmd
create_monitor_set("${IOC}.req", 5, "")

EPICS Records

A complete list of the RFoF Telnet IOC Process Variables (PVs) can be found in the page linked below, along with revision dates based on feedback received from the naming team.

Linac Locking - RFoF Telnet IOC (PVs [sioc-sys0-ms11) PVs]

New Displays

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


To launch the linac locking dashboard GUI in Production, log onto the appropriate host (Production ==>  lcls-srv01) and then run the command mslk_dashboard:

[softegr@lcls-srv01 skoufis]$ mslk_dashboard
lcls-srv01
[2024-03-18 15:26:22,275] [INFO    ] - Using PyDM via SSH. Reverting to Software Rendering.
...


Upon running the command successfully, the following display is invoked.  Choose RF over Fiber Expert to monitor the RFoF IOC.

Image Added

Old Displays

Note that the preferred RFoF display is the one shown above.  However, below, we include instructions on how to launch the old display directly if needed.

Production

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

Code Block
languagebash
[softegr@lcls-srv01 skoufis]$ cd $EPICS_IOCS/sioc-sys0-ms11/iocSpecificRelease/masterSourceApp/srcDisplay/
[softegr@lcls-srv01 skoufis]$ cat masterSourceApp/srcDisplay/README.rfof 

To run the the RFOF screens, 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. Invoke the GUI you need, i.e. 
   $ pydm -m "BASE=MSLK:SYS0:MS11" rfof.ui
   $ pydm -m "BASE=MSLK:SYS0:MS11" Errors.ui
   $ pydm -m "BASE=MSLK:SYS0:MS11" StateMachine.ui
   $ pydm -m "BASE=MSLK:SYS0:MS11" TransmitterParameters.ui
   $ pydm -m "BASE=MSLK:SYS0:MS11" ReceiverParameters.ui


The RFoF screens are PyDM-based screens and are seen below.

Image Added

Deliverables

The released software and firmware will be made available for access.  See the remaining content of this section in the main IOC release area post-deployment (Dev: /afs/slac/g/lcls/epics/iocTop/masterSource/, Production:/usr/local/lcls/epics/iocTop/masterSource/).  See below 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.

Version
Repository

References 

View file
nameLiberaSync3_User_Manual_1.23.pdf
height250