Title: EPICS Channel Access Enhancements for LANSCE Timed and Flavored Data
1EPICS Channel Access Enhancements for LANSCE
Timed and Flavored Data
2Overview
- Introduction
- LANSCE Requirements
- EPICS Event Queue
- Event Queue Upgrade
- Milestones
3LANSCE Requirements
- LANSCE timing and flavoring of data
- Flavoring
- Logical configuration of beam gates
- Timing
- Time sampling (single element) within a beam
pulse - Many permutations
- Too many to, a priori, install records for all of
them - Channel Access client must somehow specify timing
and flavoring when it subscribes
4EPICS Fundamentals
- Channels and Process Variables
- Channel is virtual communication link to process
variable - We can perform read, write, and subscribe
operations over a channel - Publish and Subscribe
- Clients subscribe for updates
- Servers publish updates to multiple clients
- Records post state change events to servers
5EPICS Event Queue A Pivotal Component
- Tying high priority deterministically scheduled
activities to the low priority load
non-deterministic server component - The event queue guarntees that this value/alarm
status/time stamp tuple are consistent - It is essential that we minimize what impact
client induced load has on record processing
threads
6EPICS Event Queue Theory of Operation
- Records execute at relatively high priority,
server executes at relatively low priority - Record processing never blocks for slow clients
- Record is producer and client is consumer
- Sever production rate might exceed consumption
rate of client or network queuing system needs
to serve dual purposes - Burst
- Attempts to avoid discarding updates
- Sustained
- Keep subscriptions current
- Intentionally discard intermediate updates
- Do not introduce time delays
7Current Event Queue is Quite Inflexible
- The only parameters that can be correlated
together in time with any surety over Channel
Access are - Scalar Value, Time Stamp, Alarm Status
- The exception - after the fact correlation using
the time stamp - This is very inflexible
- It does not allow clients to specify their data
capture constraints - Array value change events are not recorded on the
event queue - It doesnt allow for on the fly application
driven experiments needed at LANSCE
8Event Queue Upgrade
Upgraded Record Specific Event Parameter
Set Scalar or Vector Value Time Stamp Alarm
Status
Upgraded Device Specific Event Parameter
Set LANSCE Beam Gate Specification
Legacy Fixed Event Parameter Set Scalar
Value Time Stamp Alarm Status
CA Server
Record
Event Queue
9Event Queue Memory Management
- Smart Pointers to Data Access Interfaced Objects
- Reference counted
- Increments when smart pointer is copied
- Decrements when smart pointer is destroyed
- Release callback when count decrements to zero
- Memory Management
- Handled by event posting agent
- Can be free list based
10Event Filter Upgrade
Record
Event Filter
Event Queue
Event Filter Expression value lt 10.0 and value
gt log ( currentMonitor0007.current )
and requireFlavor ( beamGateA beamGateB )
and excludeFlavor ( beamGateC )
Discard
11Event Filter Implementation
- Could be based on the same library that the calc
record uses - Would prefer however to base expressions on
property names instead of A, B, C, .. as is
currently the case with the CALC library - Many mainstream open source alternatives
12Event Filter Upgrade
Client Library
Server Library
Event Filter
Moderate Interface Upgrade
Moderate Subscription Protocol Upgrade
13Array Index Metadata
- Magnitude of zero-eth element index
- Floating point
- Magnitude of one index increment
- Floating point
- Units of these magnitudes
- String
14Data Access Interfaces for DBR Types
CA Type Code
DBR_CHAR
DBR_SHORT
DBR_ENUM
DBR_LONG
DBR_FLOAT
DBR_DOUBLE
DBR_STRING
DBR_STS_ltPRIMITIVE TYPEgt
DBR_TIME_ltPRIMITIVE TYPEgt
DBR_GR_ltPRIMITIVE TYPEgt
DBR_CTRL_ltPRIMITIVE TYPEgt
DBR_PUT_ACKT
DBR_PUT_ACKS
DBR_STSACK_STRING
DBR_CLASS_NAME
Data Access Interfacing Adapter
15Segmented Protocol Buffer
- In R3.13
- Fixed 16KB protocol buffer limited array size
- In R3.14
- Two protocol buffer sizes
- Fixed 16KB protocol buffers
- EPICS_CA_MAX_ARRAY_BYTES protocol buffers
- In R3.15
- Segmented protocol buffer
- Based on free list of fixed sized buffers
- Improved memory management
- In R3.14 two large EPICS_CA_MAX_ARRAY_BYTES
protocol buffers dedicated to each client even if
they are not currently using them - Potentially no array size limits
- But, perhaps EPICS_CA_MAX_ARRAY_BYTES
- Defines a quota, but with a large default value
16Server Implementation Consolidation
rsrv
dbAccess snap-in
database
17LANSCE Capable Waveform Record
Legacy db_post_events interface
Legacy device support interface
Ordinary Record
Upgraded Event Queue
Ordinary Device Support
Data Access based event posting interface
Data Access based event posting interface
LANSCE Capable Record
Data Access based device Support interface
Upgraded Event Queue
LANSCE Specific Device Support
18Milestones
Milestones
Internal Design Review
Interface Description
Data Access Close Out
Retrofit Portable Server to New Interface
Retrofit Event Queue to New Interface
Data Access to DBR_XXX
LANSCE Specific Waveform Record
Service Snap in for dbAccess
Subscription Update Filter
19Benefits for LANSCE
- LANSCE style dynamic on-the-fly ad-hoc beam
flavoring and beam timing experiments - But, in homogenous EPICS system
- Tool based approach to LANSCE applications
- Applications have abstract model of hardware
- Incremental upgrades possible
- Multi-element Timed data
- COTS digitizer
- Window in time selected
20Benefits for EPICS Community
- Flexible event snapshots
- Parameters other than alarm status, time stamp,
scalar value correlated on event queue - Arrays correlated on event queue with other
parameters - Subscription update filtering
- Expression (string) based means
- Project and site independent tool based
approach - Minimally invasive for existing client side tools
- Array index meta data
- Expanding intersection of EPICS with data
acquisition systems