APSU PVs
The APS-U has changed many of the process variables(PVs) used for the last 25 years. This includes PVs related to EPS (or FEEPS), PSS, status, insertion devices, etc. Sometimes only the PV name has changed but in some instances the old PV does not have a direct replacement.
This wiki will help to describe what is new, what has been removed, and how to convert to using some of the new PVs available.
Mark Rivers has documented the process he used to find the relevant medm screens and the useful PVs for his beamline:
https://github.com/CARS-UChicago/GSECARS-EPICS/blob/master/docs/EPICS_Beamline_PVs.docx https://github.com/CARS-UChicago/GSECARS-EPICS/blob/master/docs/EPICS_Beamline_PVs.pdf
PV Gateways
In order to access the APS-U PVs, each beamline host needs to know where to find these PVs. This is the function of a PV gateway which IT has configured for each beamline. The PV gateway's network interface is updated to include the new private VLAN for the IOCs which host the APS-U PVs. This PV gateway configuration maintenance is performed by Marty Smith in CTL and Brian Robinson in IT. See the list of PVgateways at the beamlines (as of 2025-01-31).
Important things to note: * There are 44 PV gateways at APS and you will get write access to certain PVs through only 1 * LOM office and perhaps lab networks are usually not the same as the beamline network * LOM offices and perhaps labs will have read only access (if not part of the beamline network) * PV write access is granted ONLY from the beamline network PV gateway
LOM Access to PVs
To get read only access to accelerator PVs you can run the command /APSshare/adlsys/xfd-display which uses a round robin technique to select 1 of 3 PV gateways; as such you don't know which one you are using, nor should you care. Also using this script you do not need to set any EPICS environment variables unless you need to see PVs from an IOC on your local network. If this is the case then use the environment variable EPICS_CA_AUTO_ADDR_LIST as shown below. This will tell your EPICS Channel Access (CA) client to also do PV searches on all network interfaces that the host machine has. There is no need to set the EPICS_CA_ADDR_LIST environment variable for this case.
setenv EPICS_CA_AUTO_ADDR_LIST YES (for cshell) export EPICS_CA_AUTO_ADDR_LIST=YES (for bash)
In order to get write access to accelerator PVs you need to be running your CA client on a beamline host. Then you will be able to access both the beamline hosted PVs as well as the accelerator PVs of interest. Setting the environment variable EPICS_CA_ADDR_LIST is not enough because the other end of the connection does not necessarily know how to send the information back to your CA client. To clarify this statement if you were to set the EPICS_CA_ADDR_LIST environment variable to include the beamline network then the CA search request might get through to the beamline network. However, the CA server (i.e. EPICS IOC) may not know how to get the response back across to the LOM network. Doubtful that this would work without more effort.
Beamline Access to PVs
There is a PV gateway that is located in the APS computer room that has a connection to the beamline network; most often this gateway has a name that looks like sxxpvgate where xx is the beamline sector number and in some instances will also include the beamline (id or bm). All computer hosts on this network have at a minimum read access to all accelerator PVs. Write access may be allowed to some PVs such as insertion device controls and beamline shutters. If not, then this is simply an email request to Marty Smith.
PV Gateway Access Security for Beamlines
Often times a new beamline computer is added to the beamline network and this does not mean you get the same write permission to PVs that you had on another computer. There are many ways to set up the access security in the PV gateway and currently this decision is left up to the resident beamline personnel. However, in order to make an informed decision about this you will need to know your options; this can be as secure as you would like.
Here are the options you have to select from:
1. You must be logged in as a certain user name and logged into a certain computer (This is the most secure method)
You might have multiple computer names and user names. This would mean that you MUST be in the user list AND logged into one of the hosts in the
computer list.
2. You must be logged into a certain computer but any user logged in has access (This is a list of computer host names)
3. You must be a certain user logged in
This means that as long as you are a user in the user name list you can get control from any computer with in the same subnet as the
beamline PV gateway.
It's advisable to verify with Marty Smith that the hosts in his list are still the appropriate ones for a beamline. Beamline computers are replaced often and the PV gateway permissions file may have stale data.
All APS-U PVs
All of the PVs currently served by the APS-U are listed in the files in the directory /APSshare/C2/iocinfo/pvdata/. This is an rsync of the oxygen-based directory /net/helios/C2/iocinfo/pvdata/. The files located in this directory are named after the IOC which hosts those PVs. By grepping through the files, one can determine if a PV exists or if the name has changed.
% grep -s XFD:srCurrent /APSshare/C2/iocinfo/pvdata/* /APSshare/C2/iocinfo/pvdata/siocblops:XFD:srCurrent
A useful tool located in /APSshare/bin called 'pvExist' will also confirm whether a PV is valid and what IOC is hosting it:
% /APSshare/bin/pvExist XFD:srCurrent Using IOC_INFO environment variable /APSshare/C2/iocinfo siocblops:XFD:srCurrent % /APShare/bin/pvExist XFD:srCurrent1 Using IOC_INFO environment variable /APSshare/C2/iocinfo XFD:srCurrent1 not found
EPS (or FEEPS) PVs
Here are the Equipment Protection System PVs for APS-U. Compare to the old PVs as described at https://epics.anl.gov/bcda/aps/frontendpvs.php
Note that there are not 'xx' or 'yy' display subs - only 'Z' and 'a') In other words, display substitution is Z=Sxxyy, a=SxxyyFE where:
xx = 2 digit sector number
yy = BM or ID
Changed
Old PV Name: New PV Name:
EPS:xx:yy:PS1:POSITION Sxxyy-FEEPS:PS1:PositionM
0 Moving
1 Closed
3 Open
4 Position Error
EPS:xx:yy:PS2:POSITION Sxxyy-FEEPS:PS2:PositionM
0 Moving
1 Closed
3 Open
4 Position Error
EPS:xx:yy:SS1:POSITION Sxxyy-FEEPS:SS1:PositionM
0 Moving
1 Closed
3 Open
4 Position Error
EPS:xx:yy:SS2:POSITION Sxxyy-FEEPS:SS2:PositionM
0 Moving
1 Closed
3 Open
4 Position Error
EPS:xx:yy:FEV:POSITION Sxxyy-FEEPS:FEV:PositionM
0 Moving
1 Closed
3 Open
4 Position Error
EPS:xx:yy:BIV:POSITION Sxxyy-FEEPS:BIV:PositionM
0 Moving
1 Closed
3 Open
4 Position Error
New
These PVs are new and were not there before:
Sxxyy-FEEPS:TripsExistM
0 OFF (No Trip)
1 ON (Trip(s) Exist)
Sxxyy-FEEPS:FaultsExistM
0 OFF (No Fault)
1 ON (Fault(s) Exist)
Sxxyy-FEEPS:WarningsExistM
0 OFF (No Warning)
1 ON (Warning(s) Exist)
Sxxyy-FEEPS:ShutterPermitWarnM
0 OFF (No Warning from BLEPS)
1 ON (Warning(s) Exist from BLEPS)
Sxxyy-FEEPS:VacuumPermitWarnM
0 OFF (No Warning from BLEPS)
1 ON (Warning(s) Exist from BLEPS)
Removed
The following PVs have been removed and there is no replacement:
EPS:xx:yy:PS1:STATUS EPS:xx:yy:PS2:STATUS EPS:xx:yy:SS1:STATUS EPS:xx:yy:SS2:STATUS EPS:xx:yy:SV:STATUS EPS:xx:yy:SV:POSITION EPS:xx:yy:FV:STATUS EPS:xx:yy:FV:POSITION EPS:xx:yy:FEV:STATUS EPS:xx:yy:BIV:STATUS EPS:xx:yy:CC1:RDY EPS:xx:yy:CC2:RDY EPS:xx:yy:VAC:CC1:RDY EPS:xx:yy:VAC:CC2:RDY EPS:xx:yy:MM:F
PSS PVs
There have been significant PV changes to the PSS systems. Unfortunately, there is no simple translation tool from the older PV names to the new APS-U PSS PVs.
It has been suggested that each beamline determine its new PVs by using the PSS Input/Output EPICS screens. To do this:
- Start:
/APSshare/adlsys/xfd-display
- Select the light blue PSS button.
- Select Main from the menu.
- Use the blue drop-down menu to choose the beamline (for example,
27-ID). - Select either Inputs or Outputs.
These two EPICS screens display the full set of PSS PVs and can be used to identify the appropriate replacements.
The SI group notes that for Gen3 PSS systems, the shutter control PVs did not change. Only Gen4 systems had PV changes.
Beamline upgrade status
Second run of 2024 (April)
The following Gen4 systems were in place:
- 8-ID
- 9-ID
- 15-ID
- 16-BM
- 19-ID
- 20-ID
- 22-ID
- 25-ID
- 31-ID
- 33-ID
- 34-ID
First run of 2026 (January)
The following beamlines were upgraded:
- 4-ID
- 26-ID
- 27-ID
- 29-ID
- 35-ID
Second run of 2026 (April)
The following upgrades occurred:
- 1-ID and 2-BM: Gen1 to Gen4
- 11-BM and 30-ID: Gen3 to Gen3.4
Third run of 2026 (August)
The following Gen1 systems were upgraded to Gen4:
- 10-BM
- 17-BM
- 19-BM
December 2026, before the first run of 2027
Scheduled upgrades:
- 18-ID and 33-BM: Gen1 to Gen4
- 21-ID: Gen3 to Gen3.4
Latest beamline PSS version list (PNG)
This list was last updated in March 2026 and shows the PSS generation in use at each beamline.
PV naming substitution
In the examples below, use the following substitutions:
Z = Sxxyya = SxxyyFE
For original Gen1 PVs:
xx= two-digit sector numberyy=BMorID
Example old-to-new PV mappings
| Old Gen PV | New Gen4 PV | Notes |
|---|---|---|
PA:$(xx)$(yy):ACIS_FES_PERMIT
|
$(Z)-PSS:FES:ACISPermitM
|
ACIS equivalent |
SR-ACIS:$(Z):FesPermitM
|
ACIS equivalent | |
PA:$(xx)$(yy):ACIS_GLOBAL_ONLINE
|
$(Z)-PSS:FES:GlobalOnlineM
|
ACIS equivalent |
SR-ACIS:$(Z):GolPermitM
|
ACIS equivalent | |
PA:$(xx)$(yy):FEEPS_FES_PERMIT
|
$(Z)-PSS:FES:FEEPSPermitM
|
FEEPS equivalent |
S$(Z)-FEEPS:FES_PermitM
|
FEEPS equivalent | |
PA:$(xx)$(yy):FEEPS_PS1_OPEN
|
$(Z)-PSS:FES:FEEPSPS1OpenM
|
FEEPS equivalent |
S$(Z)-FEEPS:PS1:OpenRequestM
|
FEEPS equivalent | |
PA:$(xx)$(yy):A_STRblinker
|
$(Z)-PSS:A_STRblinkerM
|
|
PA:$(xx)$(yy):B_STRblinker
|
$(Z)-PSS:B_STRblinkerM
|
|
PA:$(xx)$(yy):FES_PS1_CLOSED_LS
|
$(Z)-PSS:FES:PS1Closed:LIM
|
|
PA:$(xx)$(yy):FES_PS1_OPEN_CMD
|
$(Z)-PSS:FES:PS1OpenCmd:LOM
|
|
PB:$(xx)$(yy):STA_B_SBS_CLSD_PL
|
$(Z)-PSS:SBS:BeamBlockingM
|
|
PA:$(xx)$(yy):STA_A_APS_ENBLE_PL
|
$(Z)-PSS:StaA:APSKeyM
|
|
PA:$(xx)$(yy):STA_A_CB1
|
$(Z)-PSS:StaA:CB1:LIM
|
|
PA:$(xx)$(yy):STA_A_CB2
|
$(Z)-PSS:StaA:CB2:LIM
|
|
PA:$(xx)$(yy):STA_A_DR1_CLOSE_LS
|
$(Z)-PSS:StaA:Door1:LIM
|
|
PA:$(xx)$(yy):STA_A_DR2_CLOSE_LS
|
$(Z)-PSS:StaA:Door2:LIM
|
|
PA:$(xx)$(yy):STA_A_SB1_PL
|
$(Z)-PSS:StaA:SearchBox1LEDM
|
|
PA:$(xx)$(yy):STA_A_SEARCHED_PL
|
$(Z)-PSS:StaA:SecureM
|
|
PA:$(xx)$(yy):STA_A_STROBE
|
$(Z)-PSS:StaA:StrobeZone1M
|
|
PA:$(xx)$(yy):STA_A_USER_KEY_SW
|
$(Z)-PSS:StaA:UserKeyM
|
|
PB:$(xx)$(yy):STA_A_FES_CLSD_PL
|
$(Z)-PSS:FES:BeamBlockingM
|
|
PA:$(xx)$(yy):STA_B_APS_ENBLE_PL
|
$(Z)-PSS:StaB:APSKeyM
|
|
PA:$(xx)$(yy):STA_B_CB1
|
$(Z)-PSS:StaB:CB1:LIM
|
|
PA:$(xx)$(yy):STA_B_DR1_CLOSE_LS
|
$(Z)-PSS:StaB:Door1:LIM
|
|
PA:$(xx)$(yy):STA_B_SB1_PL
|
$(Z)-PSS:StaB:SearchBox1LEDM
|
|
PA:$(xx)$(yy):STA_B_SEARCHED_PL
|
$(Z)-PSS:StaB:SecureM
|
|
PA:$(xx)$(yy):STA_B_STROBE
|
$(Z)-PSS:StaB:StrobeZone1M
|
|
PA:$(xx)$(yy):STA_B_USER_KEY_SW
|
$(Z)-PSS:StaB:UserKeyM
|
|
PA:$(xx)$(yy):dcm.STAT
|
$(Z)-PSS:DeviceFPExistsM
|
|
PB:$(xx)$(yy):ACIS_GLOBAL_ONLINE
|
$(Z)-PSS:FES:GlobalOnlineM
|
|
PB:$(xx)$(yy):PLCLinkStatus
|
$(Z)-PSS:PLCLinkStatusM
|
|
PA:$(xx)$(yy):STA_A_FAULT_PL
|
$(Z)-PSS:FaultExistsM
|
|
PA:$(xx)$(yy):STA_A_TRIP_PL
|
$(Z)-PSS:TripExistsM
|
|
PA:$(xx)$(yy):STA_A_WARNING_PL
|
$(Z)-PSS:WarningExistsM
|
Additional Gen4 PVs with no old PV listed here
The following Gen4 PVs were included in the source list but were not paired with a corresponding older PV:
$(Z)-PSS:StaA:BeamPresentM$(Z)-PSS:StaB:BeamPresentM$(Z)-PSS:FES:CloseEPICSC$(Z)-PSS:FES:OpenEPICSC$(Z)-PSS:SBS:CloseEPICSC$(Z)-PSS:SBS:OpenEPICSC$(Z)-PSS:FES:PS1PermitM
Older PVs from the source list that still need mapping verification
The following older PVs appeared in the original notes but were not matched to new Gen4 PVs in the list above:
PB:$(xx)$(yy):STA_A_WARNING_PLPB:$(xx)$(yy):STA_A_TRIP_PLPA:$(xx)$(yy):STA_A_FES_OPEN_PLPB:$(xx)$(yy):STA_A_FAULT_PLPA:$(xx)$(yy):STA_B_BEAMREADY_PLPA:$(xx)$(yy):STA_A_BEAMREADY_PLPA:$(xx)$(yy):STA_B_SBS_OPEN_PLPB:$(xx)$(yy):FES_PS1_PERMITPB:$(xx)$(yy):STA_A_APSDISBLE_PLPB:$(xx)$(yy):STA_A_SEARCHED_PLPB:$(xx)$(yy):STA_B_APSDISBLE_PLPB:$(xx)$(yy):STA_B_SEARCHED_PL
Notes
Because there is no official one-to-one translation tool, the most reliable method is still to check the PSS Input/Output EPICS screens for the beamline of interest.
APS Status PVs
The following describes the status PVs. These can be compared to the previous PVs which are explained at https://epics.anl.gov/bcda/aps/statuspvs.php
Changed
S:DesiredMode
0 State Unknown
1 USER OPERATIONS
2 SUPLEMENTAL TIME
3 Not Used
4 ASD Studies
5 NO BEAM
6 MAINTENANCE
S:ActualMode
0 State Unknown
1 NO BEAM
2 Injecting
3 Stored Beam
4 Delivered Beam
5 MAINTENANCE
OLD PV NEW PV
ACIS:ShutterPermit RF-ACIS:FePermit:Sect1To35IdM (1-35 Beamlines)
RF-ACIS:FePermit:35Bm38AmM (35BM and 38AM Beamlines)
ACIS:ShutterPermit XFD:ShutterPermit (alias to RF-ACIS:FePermit:Sect1To35IdM)
S:SRcurrentAI XFD:srCurrent
Unchanged
S:OrbitCorrection:CC S:OrbitControlLawXFineBO S:OrbitControlLawYFineBO S:FillNumber XFD:srCurrent S:SRtimeCP & S:SRcurrentCP S:SRdateCP XFD:LifeTimeHrs XFD:message1 XFD:message2 XFD:message3 XFD:message4 XFD:message5 XFD:message6 XFD:message14 XFD:message15 XFD:message17 XFD:message18 OPS:TimeOfDaySI Liquid Nitrogen Distribution System Information PVs
Removed
SRFB:GBL:LoopStatusBI SRFB:GBL:VLoopStatusBI SRFB:GBL:HLoopStatusBI SRFB:dsp2:xRMSmotion30HzPkM SRFB:dsp2:yRMSmotion30HzPkM S:VID1:filteredXemittance S:VID1:filteredYemittance S:VID1:filteredCoupling ALL TopUp related information PVs
Insertion Device (Undulator) PVs
Here is a list of old and new PV names for insertion devices. The names have changed but there is no change to their meanings.
Note that there is no sector 4 CPU and the messages for the message PVs are still the same as well.
Compare this to the previous page at https://epics.anl.gov/bcda/aps/idpvs.php
$(xx) = 2 digit sector number $(yy) = us or ds $(YY) = US or DS (Position of ID in storage ring straight) (Note: there are not any xx or yy display subs, display substitution is P=SxxID:yyID)
Changed
Control Process Variables
Old PV Name: New PV Name: ID$(xx)$(yy):GapSet S$(xx)ID:$(YY)ID:GapSetC ID$(xx)$(yy):TaperGapSet S$(xx)ID:$(YY)ID:TaperGapSetC ID$(xx)$(yy):ScanGap S$(xx)ID:$(YY)ID:ScanGapC ID$(xx)$(yy):ScanEnergy S$(xx)ID:$(YY)ID:ScanEnergyC ID$(xx)$(yy):EnergySet S$(xx)ID:$(YY)ID:EnergySetC ID$(xx)$(yy):TaperEnergySet S$(xx)ID:$(YY)ID:TaperEnergySetC ID$(xx)$(yy):DeadbandGap S$(xx)ID:$(YY)ID:DeadbandGapC ID$(xx)$(yy):HarmonicValue S$(xx)ID:$(YY)ID:HarmonicValueC ID$(xx)$(yy):Start S$(xx)ID:$(YY)ID:StartC ID$(xx)$(yy):Stop S$(xx)ID:$(YY)ID:StopC ID$(xx)$(yy):AccessSecurity S$(xx)ID:$(YY)ID:AccessSecurityC ID$(xx)$(yy):MotorSpeed S$(xx)ID:$(YY)ID:MotorSpeedC
Monitor Process Variables
Old PV Name: New PV Name:
ID$(xx)$(yy):Gap S$(xx)ID:$(YY)ID:GapM
ID$(xx)$(yy):TaperGap S$(xx)ID:$(YY)ID:TaperGapM
ID$(xx)$(yy):Energy S$(xx)ID:$(YY)ID:EnergyM
ID$(xx)$(yy):TaperEnergy S$(xx)ID:$(YY)ID:TaperEnergyM
ID$(xx)$(yy):Busy S$(xx)ID:$(YY)ID:BusyM
ID$(xx)$(yy):Message1 S$(xx)ID:$(YY)ID:Message1M
ID$(xx)$(yy):Message2 S$(xx)ID:$(YY)ID:Message2M
ID$(xx)$(yy):Message3 S$(xx)ID:$(YY)ID:Message3M
ID$(xx)$(yy):OldGapSet S$(xx)ID:$(YY)ID:OldGapSetM
ID$(xx)$(yy):Taper S$(xx)ID:$(YY)ID:TaperM
ID$(xx)$(yy):EncoderSelect S$(xx)ID:$(YY)ID:LinearEncoderUsedM
ID$(xx)$(yy):PositionAccuracy S$(xx)ID:$(YY)ID:PositionAccuracyM
ID$(xx)$(yy):Location S$(xx)ID:$(YY)ID:LocationM
ID$(xx)$(yy):Device S$(xx)ID:$(YY)ID:DeviceM
ID$(xx)$(yy):DeviceLimit S$(xx)ID:$(YY)ID:DeviceLimitM
ID$(xx)$(yy):Version S$(xx)ID:$(YY)ID:$(dd)VersionM
Where dd = HPMU, Rev (Revolver), STI (2-Motor ID)
ID$(xx):TaperGapReturn S$(xx)ID:$(YY)ID:TaperGapReturnM
ID$(xx):TotalPower S$(xx)ID:$(YY)ID:TotalPowerM
ID$(xx):ExpectedPower S$(xx)ID:$(YY)ID:ExpectedPowerM
ID$(xx):DeviceLimit S$(xx)ID:$(YY)ID:DeviceLimitM
ID$(xx):Position1 S$(xx)ID:$(YY)ID:Position1M
ID$(xx):Position2 S$(xx)ID:$(YY)ID:Position2M
Removed
The synchronous scanning PVs (those beginning with SS) have been removed. It is unlikely that any beamline was using these PVs.