search

 APEX Software Training Introduction

0 comments

file time: 2008-02-16

filetype:ppt

Click Here To Download...

>  
 
 
 
 
 

APEX Software Training 
Introduction 

or 

APECS from 10.000 ft above the ground 
 

Reinhold Schaaf

for the Max-Planck-Institut f眉r Radioastronomie Bonn

 
 
 
 
 
 

Main packages 

Communication in distributed, heterogeneous, multilanguage software systems 

Patterns, services and libraries for control systems 

Basic control of antenna hardware 

CORBA objects for

Antenna control Astronomical coordinate systems Observing patterns  

APEX specific part of control system

 
 
 
 
 
 

CORBA 

Well established middleware technology Facilitates communication among pieces of software in distributed heterogeneous multilanguage environments Specification issued by the OMG - no implementation per se, but Various implementations of (parts of) the standard exist (e.g. TAO, omniORB, Orbacus)  
 
 
 
 
 

Two CORBA Acronyms 
 

Common

Object

Request

Broker

Architecture 
 
 

Object

Management

Group 

An open membership, not-for-profit consortium that produces and maintains computer industry specifications for interoperable enterprise applications.

 
 
 
 
 
 

A basic CORBA concept 

Object:

00n identifiable, encapsulated entity that provides one or more services that can be requested by a client.00/font> 

Example: 

A running instance of the FitsWriter program is an object that provides two methods (services):

- start

- stop 

 
 
 
 
 
 

Another basic CORBA concept 

Interface Definition Language (IDL):

00he language used to describe the interfaces that client objects call and object implementations provide00/font> 
 
 
 

Example:

Interface description of FitsWriter (Python!) in /soft/apex/APEX/idl/apexFW.idl: 

module apexFW {

  interface FitsWriter {

    long start(in long scanNum,

               in long obsNum,

               in string pickledScan);

    long stop(in string status);

  };

};

 
 
 
 
 
 

CORBA Services 

Used in APECS:

Naming Service

Allows location of objects

Notification Service

Distribution of events

Logging Service

Distribution of logging events

Interface Repository

Management of interface definitions 

 
 
 
 
 
 

CORBA Naming Service 

FitsWriter registers itself at Naming Service: 
 
 

...

myFW = onlineFitsWriter()

myFWS = myFW._this() 

ns = acsCORBA.nameService()

name = [(CosNaming.NameComponent(\

        00/font>Online  APEX FitsWriter00/font>, 000)] 

ns.bind(name, myFWS)

... 

ObsEngine uses Naming Service to get FitsWriter: 
 
 

...

ns = acsCORBA.nameService()

name = [(CosNaming.NameComponent(\

        00/font>Online  APEX FitsWriter00/font>, 000)] 

fw = ns.resolve(name) 

fw.start(00

... 

Example for the power of CORBA:

Bring me the FitsWriter, wherever it is!

 
 
 
 
 
 

ORB 
Object Request Broker 

Responsible for the communication of requests across OS and languange borders

 
 
 
 
 
 

ACS Packages 

C++ container 

Notification channels 

Basic Access

Control Interface 

Management and Access

Control Interface

 
 
 
 
 
 

BACI 
Basic Access Control Interface 

Implementation of C++ components according to Distributed Objects (DO) pattern Each DO represents a piece of controlable hardware to CORBA/ACS side of the system DOs are the interface between CORBA side and non-CORBA side of system Synonyms for DO: Component, COB  
 
 
 
 
 

BACI Example 

Example: 

FFTS is represented by 3 DOs:

APEX:FFTS APEX:FFTS:BAND1 APEX:FFTS:BAND2  

Methods of these DOs are defined in IDL files, e.g.

APEX:FFTS:

integrationTime

cmdIntegrationTime

configure

00/font>

APEX:FFTS:BAND1/2:

numSpecChan

cmdNumSpecChan

configure

... 

 
 
 
 
 
 

BACI 00 DO pattern 

Example: 
 

Similar to Composition Design Pattern

 
 
 
 
 
 

COBs in APECS 

Two general types of COBs:

CAN COBs Part of TICS: Translation of CORBA requests to CAN commands CAN used for communication with VERTEX software SCPI COBs Translation of CORBA requests to SCPI commands (UDP) Used for communication with all non-Vertex hardware controllers Automatic code generation from IDL  
 
 
 
 
 

CAN 

CAN - Controller Area Network 

Is a high-integrity serial data communications bus for real-time applications Operates at data rates of up to 1 Megabits per second Has excellent error detection and confinement capabilities Was originally developed by Bosch for use in cars Is now being used in many other industrial automation and control applications Is an international standard: ISO 11898  
 
 
 
 
 

SCPI 

SCPI - Standard Commands for Programmable Instrumentation 

Common interface language between computers and test instruments Syntax is ASCII text Can be used with any computer language, such as Python, C, LabVIEW SCPI strings can be sent over any instrument interface, such as GPIB, RS-232 or LAN networks Is issued by the SCPI consortium  

Example:

Request:

APEX:FFTS:BAND1:CMDNUMSPECCHAN 1024 

Reply:

APEX:FFTS:BAND1:CMDNUMSPECCHAN 1024 2005-11-07T12:17:38.310+000 

In case of error:

APEX:FFTS:BAND1:CMDNUMSPECCHAN ERROR HARDWARE-FAILURE 2005-11-07T12:17:38.310+000

 
 
 
 
 
 

CAN COBs 

Diagnostic tool:

CAN logger 

Diagnostic tool:

Python module apexObsUtils

 
 
 
 
 
 

SCPI COBs 

Diagnostic tool:

udp-telnet 

Diagnostic tool:

Python module apexObsUtils

 
 
 
 
 
 

Activators - Containers 

Components reside in Containers, which

manage various technical aspects (connection to CDB, life cycle) and provide runtime environment for components group together related components  
 
 
 
 
 

SCPI COBs

 
 
 
 
 
 

SCPI COBs with Containers

 
 
 
 
 
 

Containers in APECS 

abm0 / abm1 ABM1:ANTMOUNT ABM0:ANTMOUNT ABM1:POINTMODEL ABM1:WOBBLER 00/font> environ APEX:WEATHERSTAION APEX:RADIOMETER 00/font> aux APEX:CALUNITS APEX:IF 00/font> infra APEX:RACKCHILLER APEX:DOORS 00/font>  
febe APEX:HET345 APEX:CONDOR 00/font> febe2 APEX:LABOCA APEX:MACS 00/font> opt OPT:CLOCK OPT:OPTPOINT opttel APEX:OPTTEL  
 

The abm1 container runs on ABM; all other containers on INSTRUMENTS 

abm0: Simulation mode

abm1: Real antenna

 
 
 
 
 
 

MACI 
Management and Access Control Interface 
 

Implements the Containers (Activators) Knows about all DOs Central service:

    MACI Manager, acquainted with all DOs, CDB, and CORBA services

 
 
 
 
 
 

Notification Channels 

A Notification Channel is an object that allows broadcasting notifications The ACS Notification Channels are based on the CORBA Notification Service Notifications are sent in the form of ACS structured events Notifications are sent in a many-to-many relationship by publishers to subscribers (listeners) Notifications are allways pushed (not pulled)  
 
 
 
 
 

NCs in APECS 

Positional Data

Sampled every 48 ms 

Archiving Data

Sampling rate

defined in CDB

 
 
 
 
 
 

NCs in APECS

 
 
 
 
 
 

APECS 00Top level overview

 
 
 
 
 
 

APECS Deployment 

MonClients 

ObsClients

More to come:

ObsLogger Client Calibrator Client  

Servers

 
 
 
 
 
 

APECS Software Training VMWare Images 

Walk through startAPECSSim, observe log messages and processes created Look into CDB (not covered in this introduction) to retrieve infos about the setup of the system Try out diagnosis of SCPI communication with udp-telnet Try out other things (e.g. behaviour with two apecs Clients)  
 
 
 
 
 

APECS Software Training 
APEX system 

Simulated mode:

Walk through startAPECSServers, startAPECSMonClients, and startAPECSObsClients  to explore deployment and understand processes on each machine Explore aspects not contained in VMWare image (e.g. DB2) Experience real-world problems and solve them  

Full mode:

Try out CAN bus logger

   download APEX Software Training Introduction

Responses to APEX Software Training Introduction

It's no comment...

 

Your Name:
Your Email:
Your Talk: