70 likes | 90 Views
This document discusses the Control System Studio (CSS) Data Access Layer (DAL) and its features, including support for various protocols, wide and narrow APIs, basic read/write functions, and remote commands. It also explores the CSS PV layer and its implementations for EPICS, simulated, local, and system PVs.
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?