70 likes | 193 Views
The Control System Studio (CSS) Data Access Layer (DAL), proposed by DESY and implemented by Cosylab around 2006, aims to support diverse protocols including EPICS and TINE. It features both wide and narrow APIs for basic read/write operations. Key improvements have been made to address issues around property naming, data types, and event handling. The system integrates local, simulated, and EPICS PVs, with a focus on extensibility and usability. Future enhancements will further simplify integration and address existing pain points for users.
E N D
Control System Studio (CSS) Data Access Layer (DAL) Kay Kasemir, Xihui Chen kasemirk@ornl.gov July 2009
Data Access Layer (DAL) • Proposed by DESY, implemented by Cosylab, around 2006 • Idea: Support • EPICS Channel Access, TINE, TANGO, Doocs, new protocols • Wide as well as Narrow API • Magnet.getCurrent() as well as Channel.getProperty(“current”) • Basic read/write as well as remote commands • CSS adds a Simple-DAL layer
(Simple-)DAL PV Names system:/device/property[characteristic], type • Systems: EPICS, Simulated, Local PVs, some TINE • For EPICS: • System: ‘epics’ • Device: empty since EPICS lacks device hierarchy • Property: EPICS Channel name • Characteristic: EPICS Channel Property • Type: String, Double, … • No ‘commands’ Examples epics://some_record[value] epics://some_record[severity] epics://some_record[warningMin] epics://some_record[units] = epics://some_record.EGU[value]
DAL Issues • ConfusingDAL ‘Property’ = EPICS ‘Channel’,DAL ‘Characteristic’ = EPICS ‘Property’ • ‘[…]’ syntax for characteristics unfortunate for future array access support • Time stamp detail was only seconds (fixed, now nanosecs) • [severity] was missing (fixed) • Channel Access was locked to CAJ, no JNI (fixed?)
DAL API • Only basic Java types, locked at time of subscription • For enumerated type, SDS user has to enter PV as epics://….., String • Event API void valueChanged(E value, Timestamp timestamp) • PV data type locked at compile time, or just ‘Object’ • No ‘PV’ parameter that would allow use of same listener for multiple PVs • Clients like strip chart, archiver, alarm handler, … basically need epics://some_pv[value, status, severity]but have to use separate PVs for each characteristic
PV API • Developed in late 2006 because DAL wasn’t usable at that time • Close to EPICS • Listener receives updates with PV, Value • Value is • scalar or array of String, Double, Integer • Time, Severity, Status • Numeric (units, precision, display & alarm limits) or Enumeration Meta Data (states) • Implementations • “ca://…“ Channel Access, JCA or CAJ • “loc://…” Local PVs • “sim://…” Simulated ramp, sine, noise • “sys://…” System PVs (user name, free memory, …)
Summary • CSS has two extensible PV layers • Both implemented for EPICS, simulated, local, system PVs • PV is simpler, maybe too EPICS specific • DAL is meant to support anything • DAL Users (via ‘SimpleDAL’ layer) Synoptic Display, maybe other Cosylab uses outside of CSS (GSI Demo) • PV Users Probe, Data Browser, PACE, PV Table, PV Tree, PV Field Viewer, BEAUTY, BEAST • Future • Add features to PV, so it turns into almost-simple-DAL, then merge? • Fix issues in DAL, then use it everywhere?