Jeffrey O. Hill LANSCE / LANL.  Requirements, a review  Design, a review  Application Programming Interface (API)  Status  Benefits, a review.

Slides:



Advertisements
Similar presentations
Lists and the Collection Interface Chapter 4. Chapter Objectives To become familiar with the List interface To understand how to write an array-based.
Advertisements

1 1999/Ph 514: Channel Access Concepts EPICS Channel Access Concepts Bob Dalesio LANL.
Control System Studio (CSS) Data Access Layer (DAL) Kay Kasemir, Xihui Chen July 2009.
Writing Modern C++ Marc Grégoire Software Architect April 3 rd 2012.
EPICS V4 Protocol Proposal Jeff Hill. Summary Background Motivation Requirements Some Choices Data Types Protocol Next steps.
EPICS V4/areaDetector Integration
Channel Access Enhancements J. Hill. R3.14 Enhancements Large array support in the portable server –nearly complete –a priority for SNS Port syntax for.
EPICS Architecture Version 3 Channel Access Client (CAC) Connection Data Transfers WAN/LAN/Local Connection Data Transfers Channel Access Server (CAS)
Jeffrey Hill.  LANSCE Requirements – a Review  EPICS Paradigm Shift – a Review  Status – What is Implemented  What is an Abstract Data Type?  Benefits.
Jeff Hill. Next Gen CA Server – Overview  LANSCE Requirements a Review  Server Design Fundamentals a Review  Demo  Data Access – a Review and Recent.
Using DSVM to Implement a Distributed File System Ramon Lawrence Dept. of Computer Science
V4 – Executive Summary 1.Provide online add/delete of I/O to support continuous operation. 2.Provide redundant control of remote I/O to support improved.
A Framework for Smart Proxies and Interceptors in RMI Nuno Santos P. Marques, L. Silva CISUC, University of Coimbra, Portugal
CVSQL 2 The Design. System Overview System Components CVSQL Server –Three network interfaces –Modular data source provider framework –Decoupled SQL parsing.
Differences between C# and C++ Dr. Catherine Stringfellow Dr. Stewart Carpenter.
Jeffrey O. Hill LANSCE / LANL. Requirements, a Review Design, a Review Design Changes Status, this project and others Lessons Learned Benefits, a Review.
Programming Languages and Paradigms Object-Oriented Programming.
1 CISC181 Introduction to Computer Science Dr. McCoy Lecture 19 Clicker Questions November 3, 2009.
Inheritance. Recall the plant that we defined earlier… class Plant { public: Plant( double theHeight ) : hasLeaves( true ), height (theHeight) { } Plant(
History Server & API Christopher Larrieu Jefferson Laboratory.
Files and Streams. Java I/O File I/O I/O streams provide data input/output solutions to the programs. A stream can represent many different kinds of sources.
Imperial College Tracker Slow Control & Monitoring.
SOFTWARE DESIGN AND ARCHITECTURE LECTURE 07. Review Architectural Representation – Using UML – Using ADL.
J. Hill. Overview  Introduction  LANSCE Requirements  EPICS Event Queue  Event Queue Upgrade  Milestones.
© Dennis Shasha, Philippe Bonnet – 2013 Communicating with the Outside.
CSE 425: Object-Oriented Programming I Object-Oriented Programming A design method as well as a programming paradigm –For example, CRC cards, noun-verb.
‘ActiveX’ CA Server (… and Client) Oct Kay-Uwe Kasemir, LANL.
10/20/2015J-PARC1 Control Room Accelerator Physics Channel Access – Connection to Hardware Through EPICS Getting Information directly from the Control.
CS212: Object Oriented Analysis and Design Lecture 7: Arrays, Pointers and Dynamic Memory Allocation.
1 Cisco Unified Application Environment Developers Conference 2008© 2008 Cisco Systems, Inc. All rights reserved.Cisco Public Introduction to Etch Scott.
1 Channel Access Concepts – EPICS Training – K.Furukawa – Mar EPICS Channel Access Concepts Kazuro Furukawa, KEK, ( ) (Bob Dalesio, LANL,
New Features in EPICS V4 Release 4.4 EPICS Meeting 2014, CEA, October 2014 Marty Kraimer, Matej Sekoranja.
PI Data Archive Server COM Points Richard Beeson.
Copyright © Curt Hill Generic Classes Template Classes or Container Classes.
Area Detector Drivers Towards A Pattern Jon Thompson.
3.14 Work List IOC Core Channel Access. Changes to IOC Core Online add/delete of record instances Tool to support online add/delete OS independent layer.
Jeff Hill.  LANSCE Requirements – a Review  EPICS Paradigm Shift  Magic Pipes  Data Access, is it Easy CA?  Database CA Service  Server Upgrades.
Chapter 6 Introduction to Defining Classes. Objectives: Design and implement a simple class from user requirements. Organize a program in terms of a view.
EPICS EPICS Limitations Bob Dalesio Marty Kraimer.
EPICS Release 3.15 Bob Dalesio May 19, Features for 3.15 Support for large arrays - done for rsrv in 3.14 Channel access priorities - planned to.
BROOKHAVEN SCIENCE ASSOCIATES Advanced Monitor/Subscription Mechanisms Ralph Lange EPICS Collaboration Meeting October 11, 2009.
Developing Applications with the CSI Framework A General Guide.
1 1999/Ph 514: Flow of Control EPICS Flow of Control Marty Kraimer APS.
© 2001 By Default! A Free sample background from Slide 1 The Equipment Access API WG Report 6 th February 2003 V. Baggiolini,
EPICS Development for the ASKAP Design Enhancements Program ASTRONOMY AND SPACE SCIENCE Craig Haskins 18 th October 2015 EPICS User Meeting – Melbourne.
New IP Drivers using drvIpac Module Driver:CANopen Carrier Driver:GPFC drvIpac ?? CANopen Tip810 CAN Tip810 mv162GPFCatc40vipc310vipc616 Module driver.
EPICS Release 3.15 Bob Dalesio May 19, Features for 3.15 Support for large arrays Channel access priorities Portable server replacement of rsrv.
1 Classes II Chapter 7 2 Introduction Continued study of –classes –data abstraction Prepare for operator overloading in next chapter Work with strings.
1 Channel Access Concepts – IHEP EPICS Training – K.F – Aug EPICS Channel Access Concepts Kazuro Furukawa, KEK (Bob Dalesio, LANL)
1 EPICS Flow of Control: EPICS Workshop at IHEP, Beijing, August 2001 EPICS Flow of Control Marty Kraimer APS.
Control System Overview J. Frederick Bartlett Fermilab June 1,1999.
Monitoring Dynamic IOC Installations Using the alive Record Dohn Arms Beamline Controls & Data Acquisition Group Advanced Photon Source.
Lecture 1 Page 1 CS 111 Summer 2013 Important OS Properties For real operating systems built and used by real people Differs depending on who you are talking.
Using COTS Hardware with EPICS Through LabVIEW – A Status Report EPICS Collaboration Meeting Fall 2011.
Command Pattern. Intent encapsulate a request as an object  can parameterize clients with different requests, queue or log requests, support undoable.
Code improvement: Coverity static analysis Valgrind dynamic analysis GABRIELE COSMO CERN, EP/SFT.
JavaIOC Overview and Update
Delegates and Events 14: Delegates and Events
Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 2 Database System Concepts and Architecture.
SLAC USA Marty Kraimer and Matej Sekoranja
Chapter 40 Remote Method Invocation
Software models - Software Architecture Design Patterns
Server-Side Plugins Andrew Johnson, Ralph Lange
Chapter 46 Remote Method Invocation
CISC/CMPE320 - Prof. McLeod
Chapter 46 Remote Method Invocation
Aida; Accelerator Integrated Data Access
Channel Access Concepts
The Lua Chunk Vault, an enhancement to epics base
Channel Access Concepts
Presentation transcript:

Jeffrey O. Hill LANSCE / LANL

 Requirements, a review  Design, a review  Application Programming Interface (API)  Status  Benefits, a review

 LANSCE timing and flavoring of data  Flavoring  Selection based on - logical combinatorial of beam gates  Timing  Selection based on - time sampling (single element) within a beam pulse  Many permutations  Too many to, a-priori, install records for all of them  Need LANSCE timing and flavoring specific subscription update filtering  From general purpose IOC and client side tools

 LANSCE timed data requires Array Index Metadata  Magnitude of zero-eth element index  Floating point  Magnitude of one index increment  Floating point  Units of these magnitudes  String  This requires presumably an extension to existing DBR_XXX types, and changes to EPICS process control runtime database

 Channel Access client must  specify LANSCE timing, flavoring needed when subscribing  Channel Access service must  tag the data with LANSCE timing, flavoring attributes  Channel Access server must  Appropriately filter subscription updates  but …  This must be done in a generic way to allow parallel capabilities at other EPICS installations  Minimal to no impact on performance if the client does not request a filtered update stream  Within the IOC, record processing must not be disturbed by filtering activities in the server

 Filtering expression specified, as a string, when subscribing  The client side remains general purpose  Filter is specified as a CALC expression  Evaluates true, update sent to the client  Evaluates false, update suppressed for this client  No revolutionary changes in wire protocol  Only minor changes to client side tools  Service specified data types  Parameter name to application specific datum bindings  Parameter hierarchical sets  Service data is introspected using a generic interface  The IOC can remain general purpose

CA Server Record Event Queue Legacy Fixed Event Parameter Set Scalar Value Time Stamp Alarm Status Legacy Fixed Event Parameter Set Scalar Value Time Stamp Alarm Status Upgraded Record Specific Event Parameter Set Scalar or Vector Value Time Stamp Alarm Status … Upgraded Record Specific Event Parameter Set Scalar or Vector Value Time Stamp Alarm Status … Upgraded Device Specific Event Parameter Set LANSCE Beam Gate Specification Upgraded Device Specific Event Parameter Set LANSCE Beam Gate Specification

Record Event Queue Event Filter Discard Event Filter Expression value < 10.0 and value > log ( currentMonitor0007.current ) and requireFlavor ( beamGateA | beamGateB ) and excludeFlavor ( beamGateC ) Event Filter Expression value < 10.0 and value > log ( currentMonitor0007.current ) and requireFlavor ( beamGateA | beamGateB ) and excludeFlavor ( beamGateC ) TCP Circuit

 Catalog – implemented by users  Subordinate class in c++ or an interface in Java  Introspector – called by users class CatalogTelesopeCoordinate : public Catalog { public: CatalogTelesopeCoordinate ( MyData & ); void traverse ( Introspector & introspector ) const { introspector.reveal ( piRA, _refTC._rightAscension ); introspector.reveal ( piDecl, _refTC._declination ); } private: TelesopeCoordinate & _refTC; };

 Clerk – called by users  Library implements get  Throws an exception if source datum is out of range in destination datum’s primitive type TelesopeCoordinate telescopeCoordinate; CatalogTelesopeCoordinate catalogTelescopeCoordinate ( telescopeCoordinate ); Clerk clerk ( catalogTelescopeCoordinate ); Double rightAscension, declination; Clerk.get ( piRA, rightAscension ); Clerk.get ( piRA, declination );

 Guard  Takes Mutex in its constructor, releases it its destructor  Benefits  Exception safe Mutex release  Avoids locking overhead, locked API calls locked API  Mutable Guard can be temporarily released  Negatives  Guard reference argument, every function in the API  Not obvious, which Mutex used, which interface Guard guard ( this->_mutex ); caClient->createChannel ( Guard &, …);

 After, locking smart pointer  Smart pointer  Takes Mutex in its constructor, releases it its destructor  Benefits - essentially same as Guard, but …  One less argument passed to every function  Target tells us which Mutex is needed when it creates Ptr  Ptr has embedded Guard – often built efficiently using preexisting Guard reference (avoids recursive locking)  Negatives  Must carefully limit access to raw pointers, synchronized interfaces Ptr pService = createService (); pService->createChannel (…);

 Reference - used by the event queue to track references to 3 rd party Catalog used by each client’s event queue  Destruction of last reference causes automatic release notification to target Catalog  All accesses to target Catalog are synchronized  Have to create a locking smart pointer to receive access Ref refCatalog; { Ptr pCatalog = createCatalog (); refCatalog = pCatalog; } Ptr pCatalog = ref.release ();

 RefMgr - implemented by the library  Maintains, contains  The reference count  A pointer to Handle interface  One-to-one relation with instance of T  Handle interface  Implemented by author of T  One-to-one relation with instance of T template class Handle { public: virtual Ptr createPtr ( const Guard & ) = 0; virtual void release ( Guard & ) = 0; };

 Client directly invokes Service  Client library and Service implementation interfaces are one and the same  This is a low level interface designed to allow efficient, flexible implementations  All requests are completed via callbacks  Used only by programmers that prefer to have, need to have, more control  legacy, EZ, ultimate CA …  … this is layered value added  With a flexible low level interface we always get what we want  First corollary of API design  Its impossible to satisfy everyone’s needs with a simple, easiest-to-use high level interface

 Service – called by client Ptr createType ( Ptr & ); Ptr createChannel ( Ptr & );

 Channel – called by client Ptr = pChannel->createRequest ( Ident & method, Ptr & reqParmsType, Ptr & resParmsType );

 Request – called by client pRequest->initiate ( Ptr & responder, // callback interface Ptr & reqParms ); // request parameters

 Responder  Callback interface – called by service Ptr pCatalog ( guard, refMgr, myCatalogImpl ); pResponder->successNotify ( pCatalog ); pResponder->failNotify ( pCatalog );

 MagViz distinguishes potential-threat liquids from harmless shampoos and sodas screened at airport baggage checkpoints

 I am working on this project again since the start of the calendar year  The server and event queue changes are very close to completion  The next step, a Service snap-in for iocCore

 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 hopefully easier  Multi-element “Timed” data  COTS digitizer  Window in time selected

 Flexible event snapshots  Parameters other than alarm status, time stamp, scalar value correlated on event queue  Array update bursts buffered on event queue  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