pvData,pvAccess,pvIOC,pvService Overview and Status EPICS Meeting

Slides:



Advertisements
Similar presentations
Paul Chu FRIB Controls Group Leader (Acting) Service-Oriented Architecture for High-level Applications.
Advertisements

JavaIOC Overview and Update EPICS Seminar/Workshop Raja Ramanna Centre For Advanced Technology Indore India January Presented by: Marty Kraimer.
1 1999/Ph 514: Channel Access Concepts EPICS Channel Access Concepts Bob Dalesio LANL.
EPICS V4/areaDetector Integration
PvData,pvAccess,pvIOC,pvService Status EPICS Meeting June 2011 NSRRC,Hsinchu, Taiwan Marty Kraimer, Guobao Shen, and Matej Sekoranja.
EPICS Architecture Version 3 Channel Access Client (CAC) Connection Data Transfers WAN/LAN/Local Connection Data Transfers Channel Access Server (CAS)
PvData,pvAccess,javaIOC,pvService Status EPICS Meeting Aix-en-Provence, France Marty Kraimer, Guobao Shen, and Matej Sekoranja.
ORNL is managed by UT-Battelle for the US Department of Energy EPICS V4 for SNS Neutron Data Kay Kasemir Oct
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.
Fundamentals of Python: From First Programs Through Data Structures
CVSQL 2 The Design. System Overview System Components CVSQL Server –Three network interfaces –Modular data source provider framework –Decoupled SQL parsing.
JavaIOC Marty Kraimer EPICS Collaboration Meeting ICALEPCS October
EPICS devSNMP Extensions Euan Troup, CSIRO Australia Telescope National Facility ASKAP Project Paul Wild Observatory.
1 BROOKHAVEN SCIENCE ASSOCIATES NSLSII Physics Applications – Applying V4 The Control Group – presented by Bob Dalesio Taiwan EPICS Meeting, June 2011.
JavaIOC EPICS Meeting SSRF March Presented by: Marty Kraimer.
JavaIOC Status EPICS Meeting Vancouver May Presented by : Marty Kraimer Contributions by: Matej Sekoranja(cosyLab), Shen Guobao(BNL), Sheng Peng.
JavaIOC Status EPICS Meeting ICALEPCS2009 Kobe Japan Marty Kraimer And Matej Sekoranja.
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.
Accelerator Physics SNS EPICS Integration with Web-based Technologies Presentation by Madhan Sundaram.
MASAR Server & Application Guobao Shen Photon Sciences Department Brookhaven National Laboratory Collaboration Working Group Oct 02, 2013.
Wir schaffen Wissen – heute für morgen Paul Scherrer Institut EPICS V4 Archiver Service and Matlab client Timo Korhonen.
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.
Writing a Channel Access Client in EPICS Bob Dalesio, April 5, 2000.
Writing a Channel Access Client in EPICS Bob Dalesio, April 5, 2000.
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.
1 BROOKHAVEN SCIENCE ASSOCIATES EPICS Version 4 – Development Plan V4 Team – presented by Bob Dalesio EPICS Meeting October 12, 2010.
1 1999/Ph 514: Flow of Control EPICS Flow of Control Marty Kraimer APS.
Programming Paradigms By Tyler Smith. Event Driven Event driven paradigm means that the program executes code in reaction to events. The limitation of.
1 BROOKHAVEN SCIENCE ASSOCIATES High Level Applications Infrastructure and Current Status Guobao Shen, Lingyun Yang* Controls Group & Accelerator Physics.
PvaPy: Python API for EPICS PV Access Siniša Veseli Scientific Software Engineering & Data Management Advanced Photon Source EPICS Meeting October 2015.
1 Channel Access Concepts – IHEP EPICS Training – K.F – Aug EPICS Channel Access Concepts Kazuro Furukawa, KEK (Bob Dalesio, LANL)
1 Remote Procedure Calls External Data Representation (Ch 19) RPC Concept (Ch 20)
1 EPICS Flow of Control: EPICS Workshop at IHEP, Beijing, August 2001 EPICS Flow of Control Marty Kraimer APS.
Python PVA Prototype Siniša Veseli Software Engineer AES / Software Services Group EPICS v4 Group Meeting November 19, 2013.
1 BROOKHAVEN SCIENCE ASSOCIATES EPICS Version 4 – Normative V4 Team – presented by Bob Dalesio EPICS Meeting October 7, 2011.
Monitoring Dynamic IOC Installations Using the alive Record Dohn Arms Beamline Controls & Data Acquisition Group Advanced Photon Source.
Managed by UT-Battelle for the Department of Energy LabVIEW Channel Access Implementaion Alexander Zhukov SNS.
Version 4 Charter – Discussion Bob Dalesio Greg White.
Java Web Services Orca Knowledge Center – Web Service key concepts.
Servlets.
JavaIOC Overview and Update
Prof. Leonardo Mostarda University of Camerino
Chapter 3 Internet Applications and Network Programming
EPICS Version 4 Abstract:
Clients and Servers 19-Nov-18.
Chapter 9 Web Services: JAX-RPC, WSDL, XML Schema, and SOAP
OPERATING SYSTEMS PROCESSES
SLAC USA Marty Kraimer and Matej Sekoranja
Process-to-Process Delivery:
Clients and Servers 1-Dec-18.
pvData,pvAccess,pvIOC,pvService Overview and Status EPICS Meeting
pvData,pvAccess,pvIOC,pvService Overview and Status EPICS Meeting
Chapter 40 Remote Method Invocation
Architecture Competency Group
AES The Alliance's name for the proposal is OCA 1.4.
Chapter 46 Remote Method Invocation
Introduction to Data Structure
(Computer fundamental Lab)
Chapter 46 Remote Method Invocation
Channel Access Concepts
Process-to-Process Delivery: UDP, TCP
EPICS 7 Matej Sekoranyja, Marty Karimer, Michael Davidsaver, Ralph Lange, Andrew Johnson, Timo Korhonen, Heinz Junkes, Patrick Marschalik, Murali Shankar,
Clients and Servers 19-Jul-19.
Channel Access Concepts
Clients and Servers 13-Sep-19.
Exceptions and networking
Thread per client and Java NIO
Message Passing Systems
Presentation transcript:

pvData,pvAccess,pvIOC,pvService Overview and Status EPICS Meeting October 2011 PSI Villigen Switzerland Marty Kraimer, Matej Sekoranja and Guobao Shen

Outline of Talk Brief Description of pvData, pvAccess, pvIOC, and pvService Status of Java, C++, and Python implementations Communication between channel access V3 and pvAccess Demo of CAV3 <=> pvAccess communication PSI, Villigen Switzerland Oct 2011 pvData,pvAccess,javaIOC,pvService

Accessing Source Code At this time no official releases Must access via sourceforge project epics-pvdata Mercurial is code management system Documentation available at: http://epics-pvdata.sourceforge.net PSI, Villigen Switzerland Oct 2011 pvData,pvAccess,javaIOC,pvService

pvData, pvAccess, pvIOC, pvService Memory resident structured data Introspection and data interfaces pvAccess Network support for pvData pvIOC – much like a V3 IOC Record + database of records A record has a top level structure Record scanning – periodic and event support – no distinction between record and device support any field can optionally have associated support standard: alarm, timeStamp, scan etc. extensible – can be used wherever appropriate pvService Service layer for High Level Applications Current emphasis PSI, Villigen Switzerland Oct 2011 pvData,pvAccess,javaIOC,pvService

Overview of pvData Memory resident structured data Based on concept of structure of fields Introspection and data Client can discover what data looks like without passing data Once the interface is known a data container can be created A field has: A field name A type PSI, Villigen Switzerland Oct 2011 pvData,pvAccess,javaIOC,pvService

Field Type Type is one of scalar – a scalar has an associated scalar type array – All elements have the same scalar type structure – a structure of fields Each field has unique name within the structure Each field has it's own type structureArray – an array of structures All elements have the same introspection interface PSI, Villigen Switzerland Oct 2011 pvData,pvAccess,javaIOC,pvService

Scalar Type Scalar Type is one of the following: boolean - has the value true or false byte - 8 bit signed integer short - 16 bit signed integer int 32 - bit signed integer long - 64 bit signed integer float - 32 bit IEEE float double - 64 bit IEEE float string - string PSI, Villigen Switzerland Oct 2011 pvData,pvAccess,javaIOC,pvService

Property Structures A Property Structure is: Provides the type of data that V3 provides via the DBR types A “well known” structure, e. g. of special interest Has associated “helper” code Provides data for some of the V4 Standard Data types The following properties are currently supported enum timeStamp alarm display Control PSI, Villigen Switzerland Oct 2011 pvData,pvAccess,javaIOC,pvService

Introspection Example structure // simple structure double value structure timeStamp long secsPastEpoch int nanoSeconds structure // example of array double[] value // ... structure point structure location double x double y structure // example of structure array structure[] fieldName structure point //point is the introspection interface for each element of fieldName PSI, Villigen Switzerland Oct 2011 pvData,pvAccess,javaIOC,pvService

Data Example structure // simple structure; like introspection but now also values double value 2.0 structure timeStamp long secsPastEpoch 0 int nanoSeconds 0 structure // example of array double[] value [1.0,2.0,3.0] structure // example of structure array structure[] fieldName structure point double value .001 structure location double x 0.0 double y 0.0 double value .002 double x 1.0 PSI, Villigen Switzerland Oct 2011 pvData,pvAccess,javaIOC,pvService

Actual Introspection Interfaces enum Type {scalar,scalarArray,structure,structureArray} interface Field { Type getType(); String getFieldName(); ... } Interface Structure extends Field { Field[] getFields(); // other definitions Language Specific enum definitions for Type and ScalarType Interface Definitions: Field, Scalar, ScalarArray, Structure, and StructureArray Factory for creating instances Above provides a flavor of how things are defined. BNL USA, October 2010 pvData,pvAccess,javaIOC,pvService

Actual Data Interfaces interface PVField { Field getField(); PVStructure getParent(); // other other methods } interface PVDouble extends PVScalar{ double get(); void put(double value); // many more definitions Language Specific PVField, PVScalar, PVStructure, PVStructureArray For each scalar type: PVBoolean, ... , PVString PVBooleanArray, ... ,PVStringArray Many interfaces Factory for creating objects of all supported types Conversion Facility provided Above gives a flavor of how things are defined BNL USA, October 2010 pvData,pvAccess,javaIOC,pvService

Overview of pvAccess Supports network access to pvData Protocol is language and platform independent Client/server oriented Multiple providers are supported Each must make data look like pvData Design emphasis is efficient use of network Multiple messages per network packet Big messages automatically span network packets Large Array Support: In addition to array automatically spanning network packets Can copy directly from data source to network buffer Can copy directly from network buffer to data sink But must override default implementation PSI, Villigen Switzerland Oct 2011 pvData,pvAccess,javaIOC,pvService

Connect to a Channel A Channel is a connection from a client to a server To create a channel a client Calls channelAccess to get a provider (must give provider name) Calls the provider to create a channel (must give channel name) A request to connect to a channel results in: A UDP broadcast of the channel name A UDP directed message from server to client A TCP connection between client and server In the server a channel is a connection to a top level structure In a pvIOC the channel is actually a connection to a V4 record A record holds a top level structure PSI, Villigen Switzerland Oct 2011 pvData,pvAccess,javaIOC,pvService

Channel Methods Channel provides the following methods: getField – get the introspection interface for the channel createChannelProcess – request processing createChannelGet – get data from the server createChannelPut – put data to the server createChannelPutGet – put and get with single request createChannelRPC – channel Remote Procedure Call createChannelArray – put/get sub-array createMonitor – monitor the data With the exception of getField Client and server both create a container to hold the data A container is a top level PVStructure Client can request arbitrary set of field in server top level structure The following slide shows channelGet PSI, Villigen Switzerland Oct 2011 pvData,pvAccess,javaIOC,pvService

Channel Get Language Specific interface Channel extends Requester{ ChannelGet createChannelGet( ChannelGetRequester channelGetRequester, PVStructure pvRequest); } interface ChannelGetRequester extends Requester { void channelGetConnect( Status status,ChannelGet channelGet(PVStructure pvStructure,BitSet bitSet); void getDone(Status status); interface ChannelGet extends ChannelRequest { void get(boolean lastRequest); Language Specific pvRequest specifies what client wants to get. Fields desired and other options. See documentation for details. ChannelGetConnect receives The client side data container A bitSet that shows what data has changed since last get Once created multiple gets can be requested. Only changed data transferred ChannelPut, etc have similar facilities. BNL USA, October 2010 pvData,pvAccess,javaIOC,pvService

Overview of pvIOC A pvIOC has the following A database of PVRecords Has a name has a top level PVStructure Record Processing Support optionally attached to any field of record Record scanning: passive, periodic, and event On-line add/delete of records PortDriver – successor to asyn Similar to V3 IOC but supports pvData instead of flat records The record name is the channel name for pvAccess PSI, Villigen Switzerland Oct 2011 pvData,pvAccess,javaIOC,pvService

Overview of pvService The service concept is discussed in other talks during this session A pvService is a service where client and server communicate via pvAccess Server side can be implemented via support connected to a PVRecord Remote Procedure Call semantics can be implemented via one of channelPutGet or channelRPC ChannelPutGet returns data via existing PVStructure channelRPC returns a new PVStructure for each request Example is gather service It allows the client to get/put/monitor a set of V3 channels. Each V3 channel can be either a scalar or an array. PSI, Villigen Switzerland Oct 2011 pvData,pvAccess,javaIOC,pvService

Status of pvData and pvAccess pvDataJava is complete Java implementation pvDataCPP is a complete C++ implementation Work is in progress on a Python implementation (Guobao Shen) PvAccess PvAccessJava is a complete Java implementation PvAccessCPP is a complete C++ implementation Communication between Java and C++ works The C++ implementations use epics base for: Build system Uses libCom for Threads, events, etc. PSI, Villigen Switzerland Oct 2011 pvData,pvAccess,javaIOC,pvService

Status of pvIOC pvIOCJava has lots of features: All features mentioned in pvIOC summary BUT almost no portDriver support for talking to hardware Can not take advantage of all the C/C++ asyn support pvIOCCPP has very few features but does have Is implemented in a regular V3 IOC. V3Channel provides access to V3 records via pvAccess Has base classes that support service development Lots of work remaining PSI, Villigen Switzerland Oct 2011 pvData,pvAccess,javaIOC,pvService

Status of pvService Service layer for High Level Application Client/server model pvData/pvAccess for communication between client and server The following services have been implemented itemFinder Service Given a search string return a list of channel names and properties channelFinder will be used instead of itemFinder createGather Service Given a list of channels create a new gather record gather Service Get/put/monitor a set of channels Examples: BPMs for a bump or golden orbit Correctors for a bump or golden orbit Model server Interface to model server: Elegant, etc. PSI, Villigen Switzerland Oct 2011 pvData,pvAccess,javaIOC,pvService

Status of pvService continued PvServiceJava Both client and server side of everything shown on previous slide PvServiceCPP Client side of createGather and gather C++ implementation Python implementation Uses the C++ implemention Has no knowledge of pvData Provides array data as numPY arrays PSI, Villigen Switzerland Oct 2011 pvData,pvAccess,javaIOC,pvService

Current State PvData and pvAccess (both Java and C++) work PvIOCJava Extensive support Analog I/O, Digital I/O, Successor to calc, etc There are test databases that demonstrate these and more PortDriver Works but only minimal drivers and no Streams VXI11 support, i.e. GPIB devices PvService Gather ready for use Server: Java only Client: Java, C++, Python Prototypes for some others (Java only) PSI, Villigen Switzerland Oct 2011 pvData,pvAccess,javaIOC,pvService

Priorities Immediate: Start generating releases Currently no real users Just Matej, Guobao, and myself Must be ready for users and additional developers Get Java versions working properly Switching from CVS to mercurial Make maven the build environment Until now just used default eclipse build system Intermediate Get end users to use the createGather and gather services Agree on and implement other services. Future Still lots more to do. Next slide gives one vision PSI, Villigen Switzerland Oct 2011 pvData,pvAccess,javaIOC,pvService

Vision For Future Implement all of what is in pvIOCJava in pvIOCCPP pvIOVJava portDriver provides functionality of asynManager but cleaner BUT Almost no portDrivers No synApps No area detector Etc etc Sigh!! When portDriver is implemented in pvIOCCP Can use all existing portDrivers Can use lots of area detector Can use lots of synAPPs Can provide structured data to/from portDriver clients!!!!! PSI, Villigen Switzerland Oct 2011 pvData,pvAccess,javaIOC,pvService

Interoperability CAV3 <=> pvAccess Using a pvIOCJAVA access PVRecord data via V3 caget, caput, camonitor V4 pvget, pvput Using the V4 swtshell Using a pvIOCCPP access V3 records via If time will demonstrate A field in a V4 PVRecord accessing V3 or V4 data channelArray PSI, Villigen Switzerland Oct 2011 pvData,pvAccess,javaIOC,pvService

Demo Rest of talk is demo of CAV3<=>pvAccess interoperability PSI, Villigen Switzerland Oct 2011 pvData,pvAccess,javaIOC,pvService