Presentation on theme: "JavaIOC Overview and Update EPICS Seminar/Workshop Raja Ramanna Centre For Advanced Technology Indore India January 27-30 2009 Presented by: Marty Kraimer."— Presentation transcript:
JavaIOC Overview and Update EPICS Seminar/Workshop Raja Ramanna Centre For Advanced Technology Indore India January 27-30 2009 Presented by: Marty Kraimer
January 2009EPICS Seminar RRCAT2 Background Development started 01FEB2006 Vision – Develop an IOC similar to EPICS IOC but also Structured Data EPICS records are flat Better Array Data EPICS arrays are fixed length; allocated during initialization Can not address a sub-array Allow any field to optionally have support For EPICS only INP and OUT can have soft/hard support Record type can hard code associated soft support for other fields Must be constant, DB, or CA Why Java Ease of implementation – Structured data is BIG step Was a good choice If (When?) implemented in C++ functionality will be defined
January 2009EPICS Seminar RRCAT3 Some Key JavaIOC Features A PVDatabase contains definitions of the following: Structure A structured set of data fields Provides an easy way to create a structured field in a record Defines well known things Record A record instance Has a top level structure AuxInfo describes auxiliary information about a field Just a structure How support is defined Key features of a record or structure Every field has code that provides access to Introspection interface Data interface JavaIOC optionally adds support to any field XML support for creating structure and record definitions
January 2009EPICS Seminar RRCAT4 JavaIOC data types Latest Version (not released) supports the following data types Type Scalar – All Java primitives except char pvBoolean pvByte,pvShort,pvInt,pvLong,pvFloat,pvDouble pvString – Implemented as a Java String Array – element type can be any scalar type Structure – ordered set of fields. Each field has name and type Major changes from early versions of JavaIOC pvUnknown no longer exist – Unnecessary complication pvEnum – enumerated type like EPICS menu and enum Replaced by structure Array element type can NOT be array or structure Unneeded complication – Just use structure.
January 2009EPICS Seminar RRCAT5 Example: Alarm Structure Definitions enumeratedFactory provides the name of a Java Factory Keeps index and choice in sync AlarmSeverity is enumerated structure defining alarm severities Alarm is a structure for alarms Has support Note message instead of EPICS status Will use in example to follow org.epics.pvData.misc.EnumeratedFactory enumeratedFactory none,minor,major,invalid alarmSupportFactory
January 2009EPICS Seminar RRCAT6 Generic structure Structure generic Has NO fields Has support named genericFactory Support generic Supports a structure Looks at each sub-field. If it has support, the support is called
January 2009EPICS Seminar RRCAT7 Really Simple Record Instance The above record instance Has a single field named value of type double. This is the ONLY data associated with this record. The field value is appended to structure generic which has no fields The record can be processed but not much happens except monitoring
January 2009EPICS Seminar RRCAT8 Not So Simple Record Instance The above record instance has the following fields value – type is double alarm data and support timeStamp display – display properties. input – input is from another record. Could be EPICS V3 record scan – The record is scanned once a second somePV periodic 1.0
January 2009EPICS Seminar RRCAT9 Current Development Phase II SBIR (Small Business Innovative Research) Grant from USA DOE Bob Dalesio applied for and manages the grant. Phase I was just Bob and me. Phase II includes others Goals: Development of JavaIOC itself Channel Access that supports structured data Matej Sekoranja (cosyLab) is responsible Define some Controls Related Structures and Support Changes to October 2008 release of JavaIOC pvData is a separate project - In source forge look for EPICS-pvData The XML syntax completely changed Now possible to define XSD (XML Schema Definition) New data types are supported Array element type must be a scaler, i.e. Can not be array or structure
January 2009EPICS Seminar RRCAT10 JavaIOC – What Is It? IOC - Input/Output Controller Has a smart real time database Record instances can be processed. Records can be accessed via Channel Access. Records can link to hardware, other records, etc. Has functionality like an EPICS IOC but Structured data Better Array data Generic Support Written in Java
January 2009EPICS Seminar RRCAT11 Features PV (Process Variable) Database Structure – Predefined Structures Record Instances XML Parser Record Processing and Monitoring Record Scanning: Periodic and Event Channel Access – BUT remote is only via EPICS Channel Access Generic structure and support definitions and implementation Port Driver is replacement for EPICS asynDriver Currently no hardware support thus not useful Calculation engine – JavaIOC replacement for EPICS calc support.
January 2009EPICS Seminar RRCAT12 PV Database Field – Has a name and type Field types Scalar: all Java primitives except char boolean boolean, byte, short, int, long, float, double string: implemented as a Java String ScalarArray Element type is any scalar type. Structure has fields. Each field has a name and can be any type Complex Structures fully supported Introspection and Data interfaces: Provide access to any field.
January 2009EPICS Seminar RRCAT13 PV Introspection Introspection Interfaces, i.e. no data Field: Methods: getType, getFieldName,... Scalar getScalarType Array: extends Field: Method: getElementType Structure: extends Field Methods: getFields,... FieldFactory Implements introspection interfaces Can be extended but probably not necessary
January 2009EPICS Seminar RRCAT14 PV Data Interfaces PVField: Base for data: Methods: getField,... PVScalar Base for scalar data interfaces PVBoolean,...,PVString : Methods: get,put PVArray: Base for array data interfaces PVBooleanArray,...,PVStringArray : Methods get,put PVStructure provides access to a structure. PVRecord provides access to a record instance. PVDataFactory Default implementation. Any PVField can be replaced. Often useful ConvertFactory: Convert between data types
January 2009EPICS Seminar RRCAT15 org.epics.pvData Java project for PV Data Packages: pv, factory, property, xml, misc Can be used for purposes other than JavaIOC Database Example: Channel Access It is designed to be used for other purposes. Via structures it could support Vector/Matrix Data Image Data Etc. PVRecord Record Locking – A record instance can be locked. Ability to monitor puts to any field of a record instance.
January 2009EPICS Seminar RRCAT16 JavaIOC Support and Record Processing Support Database Register and locate support for record and fields of a record. Record Processing Coordinates processing of a record instance. Both synchronous and asynchronous processing are supported. Each instance can have at most one record processor. A record can be self processed. Simulates multiple processors. Get and Put support Can process after put. Also supported by EPICS. Can process before get. Not supported by EPICS. Can put, then process, then get. Not supported by EPICS.
January 2009EPICS Seminar RRCAT17 Record Processing A record instance is basic process unit It is locked during any processing or I/O RecordProcess is master. It calls support for record instance. Support modules implement semantics ANY field can optionally have support Record instance must have support No lock sets
January 2009EPICS Seminar RRCAT18 Record Scanning Scan Types: passive, periodic, event Priority Uses Java priorities Threads created as required Periodic Arbitrary rate: minPeriod,deltaPeriod Event Based on eventName Replaces EPICS event and I/O Inter
January 2009EPICS Seminar RRCAT19 Support Methods Lifetime: initialize, start, stop, uninitialize process Implements Record Processing Semantics Each record instance has support Each field can optionally have support Support can call other support Support provided with javaIOC is as generic as possible During initialization looks for required fields and support If required fields not found then does not start Example: generic – support for a structure Calls support for each sub field that has support Each support must finish before next is called
January 2009EPICS Seminar RRCAT20 Implemented PV (Process Variable) Database XML Parser Record Processing/Scanning/Monitoring Channel Access Channel Access Local EPICS CA Server EPICS CA Client Generic record/structures and support portDriver – JavaIOC implementation of ASYN Support SWTSHELL: GUI iocshell Expression Calculator – features like EPICS calc.
January 2009EPICS Seminar RRCAT21 Not Implemented Replacement for EPICS sequencer. JavaIOC Channel Access Currently under development Full Introspection and structure support for JavaIOC client JavaIOC server VDCT: Visual Database Configuration Tool Access security Error logging ??? Lots to do!! BUT It is ready for at least soft IOC Support and soon for serial, gpib, and vxi11.