ACS ALMA Common software G.Chiozzi and the ACS team NRAO/ESO videocon, Feb.12, 2004 Contents ALMA Project • • • • • • ACS Purpose and Scope ACS Packages Main ACS concepts and patterns Overview of some important ACS Services Conclusions Questions & Answers G.Chiozzi Feb, 12 2004 ALMA Common Software 2 Purpose and scope of ACS ALMA Project ACS aims at providing an answer to the following needs: • common application framework and programming model, not just libraries • well tested software that avoids duplication • make upgrades and maintenance reasonable • incremental development via Releases • common development environment and tools G.Chiozzi Feb, 12 2004 ALMA Common Software 3 ACS Packages ALMA Project Applications 4 - Hi-level APIs and tools 3 - Services 2 - Core components UIF libraries ACS Container ACS Component Scripting ACS Application Framework Serializati Archiving on Plugs System Configuration Database ACS Installer Command System Data channel Error System ...more to come... Alarm System Sampling Logging System 5 - Integrated APIs and tools FITS libraries (from Commercial/Shared packages) Time System Astro libraries (from Commercial/Shared packages) Device Drivers 1 - Base tools G.Chiozzi Feb, 12 2004 Developm ent tools CORBA Middleware ACE ALMA Common Software 4 CORBA + Container/Component ALMA Project container service interface: functional interface: lifecycle interface: init() run() restart() G.Chiozzi Feb, 12 2004 Comp observe() Comp getComponent(other) Logger getLogger() container CORBA Manager ORBs Services deployment configurations ALMA Common Software other ACS services 5 Component/Container: buy vs. build ALMA Project • Same idea as .NET, EJB, CCM – .NET binds to Microsoft platform – EJB binds to Java programming language – CCM is still immature and there are no reliable free implementations • Off-the-shelf Component Container implementations are complex and require a wholesale commitment from developers to use the languages and tools supplied. • Focus for these Component/Container implementations are big enterprise business systems • We aim at staying as much a possible compatible with CMM concepts to allow adopting an implementation, when available. G.Chiozzi Feb, 12 2004 ALMA Common Software 6 Component’s client view ALMA Project IDL functional interface: ACS Manager 1 -Ask for reference to component observe() 2a – invoke c.observe() Client (a component) 2b.2 - Dynamic invocation Comp IDL stub 2b.1 - Retrieve interface Interface repository G.Chiozzi Feb, 12 2004 ALMA Common Software 7 Object Explorer ALMA Project G.Chiozzi Feb, 12 2004 ALMA Common Software 8 Component’s Administrator View ALMA Project • An administrator defines deployment by customizing the Configuration Database for the Manager • Manager is responsible for managing and checking the lifecycle of Components • Containers are directly responsible for the Components that are assigned to them Abeans GUI for Control Administrator Client federation Manager Manager (domain A) (domain B) CDB Cont 1 DO 1 DO 2 Cont 2 DO 3 DO 2 Cont 3 DO 4 DO 5 Device G.Chiozzi Feb, 12 2004 ALMA Common Software 9 Administrator Client ALMA Project G.Chiozzi Feb, 12 2004 ALMA Common Software 10 ACS Command Center ALMA Project G.Chiozzi Feb, 12 2004 ALMA Common Software 11 Component-PropertyCharacteristics ALMA Project • (Characteristic) Component: base class for any physical/logical Device (e.g. temperature sensor, motor) ACS::Component CharacteristicModel 0..n Characteristic • Each Component has Properties (e.g. status value, position - control/monitor points) • Characteristics of Components and Properties type CharacteristicComponent 0..n Property 0..n (Static data in Configuration DB, e.g. units, ranges, default values) • ABeans G.Chiozzi Feb, 12 2004 ALMA Common Software 12 Component-Property-Characteristics full model ALMA Project G.Chiozzi Feb, 12 2004 ALMA Common Software 13 Property Servant implementation ALMA Project The DevIO bridge pattern decouples Properties from HW. DevIO implementations available: • • • • • • • • • • Memory location (ACS defaults implementation) CAN bus access (ALMA) Socket generic interface (APEX) RS232 (OAN) PC Joystick (HPT) Webcam (HPT) CCD cameras (FBIG, Finger Lake) (HPT) Heidenan Encoder board IK220 (HPT) Motor Control Board (HPT) CCS Real time database (VLT) G.Chiozzi Feb, 12 2004 ALMA Common Software 14 Configuration Database ALMA Project • Defining accessing and maintaining the configuration of a system • Three-tier database-access architecture: 3 – Database clients Data client 2 – Database Access Layer (DAL) – Database engine – Database Access Layer (DAL). – Database clients DAL/CDB Server 1 – Database engine • CORBA access interface • XML/Schemas for object data definition and access. G.Chiozzi Feb, 12 2004 Readonly Data interface CDB Administrati Read-write on admin. interface ALMA Common Software Database 15 Configuration Database: DO Schemas ALMA Project G.Chiozzi Feb, 12 2004 ALMA Common Software 16 Abeans and visual editing ALMA Project G.Chiozzi Feb, 12 2004 ALMA Common Software 17 ABeans architecture ALMA Project ABeans widgets Abeans Application Power Supply • Current • Readback • Status on(), reset(), … Configuration Antenna • RA • DEC Logging Exception handling Abeans Model (e.g. BACI) … Abeans Engine Abeans Plug (e.g. ACS CORBA) G.Chiozzi Feb, 12 2004 ALMA Common Software 18 ACS sample Mount Control Panel ALMA Project G.Chiozzi Feb, 12 2004 ALMA Common Software 19 Data Channel ALMA Project • Implementation of Observer Design Pattern • Asynchronously pass information between data suppliers and data consumers in a many-to-many relationship • Based on CORBA Notification Channel • An ACS API provides simplified client and server API Data subscriber subscribe push data pull data CORBA Notification Service (from CORBA Middleware) DataChannel federate 0..n push data 0..n Data Publisher G.Chiozzi Feb, 12 2004 ALMA Common Software 20 Logging System ALMA Project Centralized Logging Host HTTP request/reply HTTP Server • To publish any kind of status and diagnostic information for interested clients and archival. • Based on CORBA Telecom Logging Service. Web Client XSLT SELECT Relational Database SELECT UPDATE Database Logger Client query Client push Client C++ API ACE Logging push XML Parser Event Channels Java API -> java.util.logging push ACS Log Service -> IDL Filtering logic Centralized Logging Implements Log interface write_records Out of scope of this document G.Chiozzi Feb, 12 2004 Logs Publisher XML logs follow pre-defined schema ALMA Common Software 21 Monitor Archiving system ALMA Project G.Chiozzi Feb, 12 2004 ALMA Common Software 22 ACS Documentation: http://www.eso.org/projects/alma/develop/acs ALMA Project G.Chiozzi Feb, 12 2004 ALMA Common Software 23 ACS Documentation: http://www.eso.org/projects/alma/develop/acs ALMA Project G.Chiozzi Feb, 12 2004 ALMA Common Software 24 Supported Platforms ALMA Project • Operating system: Linux, SUN OS, (MSWindows) • Real-time: VME,VxWorks, RTAI, CAN bus • Languages: C++, JAVA, Python • CORBA middleware: TAO (& ACE) (C++), JacORB (Java), Omniorb (Python), CORBA services. G.Chiozzi Feb, 12 2004 ALMA Common Software 25 ACS installations and projects ALMA Project G.Chiozzi Feb, 12 2004 ALMA Common Software 26 ACS Development Plan ALMA Project • ACS long term development is specified in the ACS SW Development Plan: http://www.eso.org/~almamgr/AlmaAcs/Plan/ACSDevelopmentPlan_2.0.pdf • 6-months cycle. Driven by ALMA Subsystem’s requirements • ALMA using ACS 3.0 (the 6th release) • Content of each release discussed with user’s community G.Chiozzi Feb, 12 2004 ALMA Common Software 27 ACS 3.1 and after ALMA Project • Objective until ACS 2.1: – support Control SW Development (TICS) • Objective for ACS 3.0: – Support Pipeline, OT and high level software requirements • ACS 3.1 and after: – Bulk data transfer, HTTP and email protocols, Alarm System and other planned packages – Optimization, scalability, performances, security – New trends: IDL generic simulator, code generation from UML – Backward compatibility! G.Chiozzi Feb, 12 2004 ALMA Common Software 28 ALMA Sites Chajnantor ALMA Project www.eso.org/projects/alma www.alma.nrao.edu/development/computing http://www.eso.org/projects/alma/develop/acs http://kgb.ijs.si/KGB/ G.Chiozzi Feb, 12 2004 ALMA Common Software 29 Conclusion ALMA Project • Developed based on the experience of both astronomical and accelerator control projects • Can easily run on many platforms • Open source (LGPL license) • Free development tools and ORBs We think that many other projects can use ACS A wider user’s base can provide valuable feedback G.Chiozzi Feb, 12 2004 ALMA Common Software 30 Questions (& Answers) ALMA Project G.Chiozzi Feb, 12 2004 ALMA Common Software 31 Extra slides ALMA Project • What follow are extra slides, in case of questions G.Chiozzi Feb, 12 2004 ALMA Common Software 32 Entity data: XML value objects ALMA Project Why Value Objects? • Less remote calls -> Better performance • Run-time independence between subsystems increases reliability value object Transport by value remote object obj.getFoo() Logic Subsystem1 G.Chiozzi Feb, 12 2004 Subsystem2 ALMA Common Software 33 Transparent XML Integration ALMA Project Flat-XML API seen from outside XML XML G.Chiozzi Feb, 12 2004 container ALMA Common Software Comp Comp Transparent-XML API implemented by component Comp Mapping code layer container 34 Transparent XML Integration ALMA Project IDL IF typedef xmlstring ObsProject; … ObsProject getObsProject() Flat-XML IF IDL compiler mapping code “IDL-XML” code generator XML-Java binding: “ObsProject” -> alma.data.ObsProject G.Chiozzi Feb, 12 2004 ... getObsProject() return getObsProject.marshal() Transparent-XML IF ... alma.data.ObsProject getObsProject() ALMA Common Software 35