APEX Softwaretraining
Download
Report
Transcript APEX Softwaretraining
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
TICS
2005/04/23
APECS 0.8
APEX specific part
of control system
Servers
ObsClients
ABM1 Components:
ANTMOUNT
TRAJECTORY
CLOCK
...
TICS Simulator
MonClients
CORBA objects for
•Antenna control
•Astronomical
coordinate systems
•Observing patterns
ACS 2.01
Patterns, services and
libraries for control systems
MACI
Manager
Activator
VERTEX
BACI
Config DB
Notification
Channel
Logging
Syste m
???
CORBA
Communication in
distributed, heterogeneous,
multilanguage software
systems
IDL
Services:
Naming
Logging
Notify
IR
ORBs:
TAO (C++)
ORBAcus (Java)
ominiORB
(Python)
Basic control of antenna
hardware
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-forprofit consortium that produces
and maintains computer
industry specifications for
interoperable enterprise
applications.
A basic CORBA concept
Object:
„An identifiable, encapsulated entity that
provides one or more services that can be
requested by a client.“
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):
„The language used to describe the interfaces that
client objects call and object implementations provide“
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
Example for the power of CORBA:
Bring me the FitsWriter, wherever it is!
FitsWriter registers itself at
Naming Service:
ObsEngine uses Naming Service
to get FitsWriter:
...
myFW = onlineFitsWriter()
myFWS = myFW._this()
...
ns = acsCORBA.nameService()
name = [(CosNaming.NameComponent(\
„Online APEX FitsWriter“, „“)]
ns = acsCORBA.nameService()
name = [(CosNaming.NameComponent(\
„Online APEX FitsWriter“, „“)]
ns.bind(name, myFWS)
...
fw = ns.resolve(name)
fw.start(…)
...
ORB
Object Request Broker
Responsible for the communication of requests across
OS and languange borders
ACS Packages
C++ container
Management and Access
Control Interface
Basic Access
Control Interface
Notification channels
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 – DO pattern
Example:
«ROProperty»
integrationTime
NamedComponent
«DO»
APEX:FFTS
«RWProperty»
cmdIntegrationTime
1
*
*
DO
Property
«ROProperty»
numSpecChan
«DO»
APEX:FFTS:BAND2
0..1
«RWProperty»
cmdNumSpecChan
ROProperty
RWProperty
«ROProperty»
numSpecChan
Similar to Composition Design Pattern
«DO»
APEX:FFTS:BAND1
«RWProperty»
cmdNumSpecChan
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, RS232 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
VERTEX
ABM
CONTROL
CAN
TRAJECTORY::COB
ACU
CAN
apexObsEngine
CAN
CORBA
ANTMOUNT::COB
Diagnostic tool:
Python module apexObsUtils
telescope
hardware
CAN
PTC
Diagnostic tool:
CAN logger
subreflector
hardware
SCPI COBs
INSTRUMENTS
CONTROL
Ethernet /
RS232
SCPI / UDP
WEATHERSTATION::COB
apexWeatherStation
weatherstation
hardware
apexObsEngine
CORBA
FFTS::COB
FFTS:BAND1::COB
SCPI / UDP
FFTS:BAND2::COB
FFTS
FFTS Control
Program
Diagnostic tool:
Python module apexObsUtils
Diagnostic tool:
udp-telnet
GPIB ?
FFTS hardware
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
INSTRUMENTS
CONTROL
Ethernet /
RS232
SCPI / UDP
WEATHERSTATION::COB
apexWeatherStation
weatherstation
hardware
apexObsEngine
CORBA
FFTS::COB
FFTS:BAND1::COB
SCPI / UDP
FFTS:BAND2::COB
FFTS
FFTS Control
Program
GPIB ?
FFTS hardware
SCPI COBs with Containers
INSTRUMENTS
environ
Container
CONTROL
Ethernet /
RS232
SCPI / UDP
WEATHERSTATION::COB
apexWeatherStation
weatherstation
hardware
apexObsEngine
CORBA
febe
Container
FFTS::COB
FFTS:BAND1::COB
SCPI / UDP
FFTS:BAND2::COB
FFTS
FFTS Control
Program
GPIB ?
FFTS hardware
Containers in APECS
abm0: Simulation mode
abm1: Real antenna
abm0 / abm1
–
–
–
–
–
APEX:CALUNITS
APEX:IF
…
APEX:LABOCA
APEX:MACS
…
opt
–
–
APEX:HET345
APEX:CONDOR
…
febe2
–
–
–
aux
–
–
–
APEX:WEATHERSTAION
APEX:RADIOMETER
…
febe
–
–
–
environ
–
–
–
ABM1:ANTMOUNT
ABM0:ANTMOUNT
ABM1:POINTMODEL
ABM1:WOBBLER
…
OPT:CLOCK
OPT:OPTPOINT
opttel
–
APEX:OPTTEL
infra
–
–
–
APEX:RACKCHILLER
APEX:DOORS
…
The abm1 container runs on ABM; all other containers on INSTRUMENTS
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
Archiving Data
Sampling rate
defined in CDB
TACORA
ABM
abm1
Container
TRAJECTORY::COB
apexStatusDisplay
CONTROL
ANTMOUNT::COB
Notification
Service
ACS structured events
APEXDEV
«Notication Channel»
Archive
INSTRUMENTS
timonarchiver
«Notication Channel»
Positions
febe
Container
FFTS::COB
ACS structured events
ACS structured events
FFTS:BAND1::COB
DISPLAY
apexOnlineFitsWriter
Positional Data
Sampled every 48 ms
FFTS:BAND2::COB
NCs in APECS
ABM
abm1
Container
TACORA
TRAJECTORY::COB
apexStatusDisplay
CONTROL
ANTMOUNT::COB
Notification
Service
ACS structured events
APEXDEV
«Notication Channel»
Archive
INSTRUMENTS
timonarchiver
«Notication Channel»
Positions
febe
Container
FFTS::COB
ACS structured events
ACS structured events
FFTS:BAND1::COB
DISPLAY
FFTS:BAND2::COB
apexOnlineFitsWriter
FFTS
TCP data stream
FFTS Control
Program
APECS – Top level overview
MonClients
APECS Deployment
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