%APN3_PROCEEDINGS_FORM%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% TEMPLATE.TEX -- APN3 (2003) ASP Conference Proceedings template.
%
% Derived from ADASS VIII (98) ASP Conference Proceedings template
% Updated by N. Manset for ADASS IX (99), F. Primini for ADASS 2000,
% D.Bohlender for ADASS 2001, and H. Payne for ADASS XII and LaTeX2e.
%
% Use this template to create your proceedings paper in LaTeX format
% by following the instructions given below.  Much of the input will
% be enclosed by braces (i.e., { }).  The percent sign, "%", denotes
% the start of a comment; text after it will be ignored by LaTeX.  
% You might also notice in some of the examples below the use of "\ "
% after a period; this prevents LaTeX from interpreting the period as
% the end of a sentence and putting extra space after it.  
% 
% You should check your paper by processing it with LaTeX.  For
% details about how to run LaTeX as well as how to print out the User
% Guide, consult the README file.  You should also consult the sample
% LaTeX papers, sample1.tex and sample2.tex, for examples of including
% figures, html links, special symbols, and other advanced features.
%
% If you do not have access to the LaTeX software or a laser printer
% at your site, you can still prepare your paper following the
% instructions in the User Guide.  In such cases, the editors will
% process the file and make any necessary editorial adjustments.
% 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 
\documentclass[11pt,twoside]{article}  % Leave intact
\usepackage{adassconf}

% If you have the old LaTeX 2.09, and not the current LaTeX2e, comment
% out the \documentclass and \usepackage lines above and uncomment
% the following:

%\documentstyle[11pt,twoside,adassconf]{article}

\begin{document}   % Leave intact

%-----------------------------------------------------------------------
%                           Paper ID Code
%-----------------------------------------------------------------------
% Enter the proper paper identification code.  The ID code for your
% paper is the session number associated with your presentation as
% published in the official conference proceedings.  You can           
% find this number locating your abstract in the printed proceedings
% that you received at the meeting or on-line at the conference web
% site; the ID code is the letter/number sequence proceeding the title 
% of your presentation. 
%
% This will not appear in your paper; however, it allows different
% papers in the proceedings to cross-reference each other.  Note that
% you should only have one \paperID, and it should not include a
% trailing period.
%
% EXAMPLE: \paperID{O4-1}
% EXAMPLE: \paperID{P7-7}
%

\paperID{P9-6}
%%%% ID=P9-6

%-----------------------------------------------------------------------
%                           Paper Title 
%-----------------------------------------------------------------------
% Enter the title of the paper.
%
% EXAMPLE: \title{A Breakthrough in Astronomical Software Development}
% 
% If your title is so long as to fill the page header when you print it,
% then please supply a short form as a \titlemark.
%
% EXAMPLE: 
%  \title{Rapid Development for Distributed Computing, with Implications
%         for the Virtual Observatory}
%  \titlemark{Rapid Development for Distributed Computing}
%

\title{The Development Process of the LUCIFER Control Software}
%\titlemark{ }

%-----------------------------------------------------------------------
%                         Authors of Paper
%-----------------------------------------------------------------------
% Enter the authors followed by their affiliations.  The \author and
% \affil commands may appear multiple times as necessary (see example
% below).  List each author by giving the first name or initials first
% followed by the last name.  Authors with the same affiliations
% should grouped together. 
%
% EXAMPLE: \author{Raymond Plante, Doug Roberts, 
%                  R.\ M.\ Crutcher\altaffilmark{1}}
%          \affil{National Center for Supercomputing Applications, 
%                 University of Illinois Urbana-Champaign, Urbana, IL
%                 61801}
%          \author{Tom Troland}
%          \affil{University of Kentucky}
%
%          \altaffiltext{1}{Astronomy Department, UIUC}
%
% In this example, the first three authors, "Plante", "Roberts", and
% "Crutcher" are affiliated with "NCSA".  "Crutcher" has an alternate 
% affiliation with the "Astronomy Department".  The fourth author,
% "Troland", is affiliated with "University of Kentucky"

\author{Marcus J\"utte}
\affil{Astronomisches Institut, Ruhr-Universit{\"a}t Bochum, Germany}

\author{Kai Polsterer}
\affil{Astronomisches Institut, Ruhr-Universit{\"a}t Bochum, Germany}

\author{Michael Lehmitz}
\affil{Landessternwarte Heidelberg, Germany}


%-----------------------------------------------------------------------
%                        Contact Information
%-----------------------------------------------------------------------
% This information will not appear in the paper but will be used by
% the editors in case you need to be contacted concerning your
% submission.  Enter your name as the contact along with your email
% address.
% 
% EXAMPLE:  \contact{Dennis Crabtree}
%           \email{crabtree@cfht.hawaii.edu}
%

\contact{Marcus J\"utte}
\email{juette@astro.ruhr-uni-bochum.de}

%-----------------------------------------------------------------------
%                     Author Index Specification
%-----------------------------------------------------------------------
% Specify how each author name should appear in the author index.  The 
% \paindex{ } should be used to indicate the primary author, and the
% \aindex for all other co-authors.  You MUST use the following
% syntax: 
%
% SYNTAX:  \aindex{Lastname, F. M.}
% 
% where F is the first initial and M is the second initial (if
% used).  This guarantees that authors that appear in multiple papers
% will appear only once in the author index.  
%
% EXAMPLE: \paindex{Crabtree, D.}
%          \aindex{Manset, N.}        
%          \aindex{Veillet, C.}        
%
% NOTE: this information is also used to build the author list that
% appears in the table of contents.  Authors will be listed in the order
% of the \paindex and \aindex commmands.
%

\paindex{Jutte@J\"utte, M.}
\aindex{Polsterer, K.}     % Remove this line if there is only one author
\aindex{Lehmitz, M.}

%-----------------------------------------------------------------------
%                     Author list for page header       
%-----------------------------------------------------------------------
% Please supply a list of author last names for the page header. in
% one of these formats:
%
% EXAMPLES:
% \authormark{Lastname}
% \authormark{Lastname1 \& Lastname2}
% \authormark{Lastname1, Lastname2, ... \& LastnameN}
% \authormark{Lastname et al.}
%
% Use the "et al." form in the case of seven or more authors, or if
% the preferred form is too long to fit in the header.

\authormark{J{\"u}tte, Polsterer, Lehmitz}

%-----------------------------------------------------------------------
%                       Subject Index keywords
%-----------------------------------------------------------------------
% Enter a comma separated list of up to 6 keywords describing your
% paper.  These will NOT be printed as part of your paper; however,
% they will be used to generate the subject index for the proceedings.
% There is no standard list; however, you can consult the indices
% for past proceedings (http://adass.org/adass/proceedings/).
%
% EXAMPLE:  \keywords{visualization, astronomy: radio, parallel
%                     computing, AIPS++, Galactic Center}
%
% In this example, the author noticed that "radio astronomy" appeared
% in the ADASS VII Index as "astronomy" being the major keyword and
% "radio" as the minor keyword.  The colon is used to introduce another
% level into the index.

\keywords{LUCIFER}

%-----------------------------------------------------------------------
%                              Abstract
%-----------------------------------------------------------------------
% Type abstract in the space below.  Consult the User Guide and Latex
% Information file for a list of supported macros (e.g. for typesetting 
% special symbols). Do not leave a blank line between \begin{abstract} 
% and the start of your text.

\begin{abstract}          % Leave intact
We present the design and development process of the control software for the {\bf L}BT NIR spectroscopic
{\bf U}tility with {\bf C}amera and {\bf I}ntegral-{\bf F}ield Unit for {\bf E}xtragalactic {\bf R}esearch
(LUCIFER) which is one of the first-light instruments for the LBT on Mt. Graham, Arizona. The LBT will be equipped with two identical
LUCIFER instruments for both mirrors. We give an overview of the software architecture and the current state of the software package and describe the development process by using a virtual LUCIFER instrument.

\end{abstract}

%-----------------------------------------------------------------------
%                             Main Body
%-----------------------------------------------------------------------
% Place the text for the main body of the paper here.  You should use
% the \section command to label the various sections; use of
% \subsection is optional.  Significant words in section titles should
% be capitalized.  Sections and subsections will be numbered
% automatically. 
%
% EXAMPLE:  \section{Introduction}
%           ...
%           \subsection{Our View of the World}
%           ...
%           \section{A New Approach}
%
% It is recommended that you look at the sample papers, sample1.tex
% and sample2.tex, for examples for formatting references, footnotes,
% figures, equations, html links, lists, and other special features.  

\section{Introduction}

The LUCIFER instrument is built by a consortium of five German institutes, Landessternwarte Heidelberg (LSW), Max Planck Institut f{\"u}r Astronomie in Heidelberg (MPIA), Max Planck Institut f{\"u}r Extraterrestrische Physik in Garching (MPE), Fachhochschule f{\"u}r Technik und Gestaltung in Mannheim (FHTG) and Astronomisches Institut der Ruhr-Universit{\"a}t Bochum. It is a full cryogenic near-infrared (NIR) spectrograph and imager (0.9 - 2.5 m, zJHK-band). It is equipped with three exchangeable cameras for imaging and spectroscopy, two optimized for seeing limited conditions and the third camera for the diffraction limited case with the LBT adaptive secondary mirror working.
This leads to six observing modes: seeing and diffraction limited imaging, seeing and diffraction limited long slit spectroscopy and seeing and diffraction limited multi-object spectroscopy. For the seeing limited case there will be a field of view (FOV) of 4 x 4 $arcmin^2$ and for the diffraction limited case a FOV of 0.5 x 0.5 $arcmin^2$. For the long slit and multi object spectroscopy (MOS) up to 33 exchangeable masks over the full field of view will be available. The instrument will be equipped with a Rockwell HAWAII-2 HgCdTe-array with a pixel size of 18 microns. It is planned to build two identical instruments for both LBT mirrors having first light with LUCIFER 1 estimated in summer 2005. For more details see Seifert et al. (2002) and Hoffmann et al. (2002).
%\begin{figure}
%\epsscale{.40}
%\plotone{PO9-6_3.eps}
%\caption{The LUCIFER instrument.} \label{P9.6-fig-1}
%\end{figure}  


\section {Soft- and hardware architecture}

For each LUCIFER instrument the soft- and hardware can be distinguished into two major parts: an instrument control and a read-out one. The instrument control software package includes individual modules
for each mechanical unit like the grating, filter wheel or MOS unit. The read-out software package will work as a server and will supply the resulting image data to the overall inspector, which works as the master in this hierarchy and combines it with the instrument data to a FITS image. The read-out process is hardware independent and it is planned to adopt the C++ software for this process from the existing code of the OMEGA 2000 camera (provided by the MPIA, Heidelberg).
Since the NIR detector read-out electronics, which will be built at the MPIA, requires special computer hardware, the read-out has to be controlled by at least a SUN Ultra Sparc 80 workstation with a minimum of  4 GB RAM. This machine will be faced with a data stream of approximately 40 MB/s on two PCI buses respectively. Currently two solutions are discussed: One with a powerful SUN V480 workstation with 4 SparcIII  processors, 8GB RAM and 72 GB FC hard disk or the other  one with two weaker SUN V 270 workstations for each LUCIFER.
\begin{figure}
%\epsscale{.60}
\plotone{P9-6_1.eps}
\caption{The overall LUCIFER software architecture.} \label{P9.6-fig-1}
\end{figure}
The motor electronics and the monitoring hardware for temperature and pressure can be accessed via serial connections. In order to reach these units from the control room a port sever is implemented in the electronic rack at the telescope site. It is a network-based serial device server for connecting 16
RS-232 directly to a TCP/IP network (Ethernet or Internet) and is delivered in a 19-inch rack.
\begin{figure}
%\epsscale{.8}
\plotone{P9-6_2.eps}
\caption{Hardware architecture and services.} \label{P9.6-fig-2}
\end{figure}    
\section{Software development process}
Since the server provides RJ45 connectors an additional fibre-to-RJ45 adapter is necessary to connect to the
local LBT network. The port server is identified by its own IP address and running this server in raw
mode allows direct connection to each serial device, which is represented by a specific socket address. Due to the electronics design every serial port is responsible for sending commands to eight motors
inside LUCIFER and receives the appropriated answers. 

\noindent
Due to the complexity of the instrument (it is a cryogenic instrument where no encoder are available)
and the fact that the whole software package has to be easy maintained after commissioning an object-oriented software solution with extensive UML (Unified Modelling Language) design is desirable. Therefore we choose Java as the appropriate OO language. It is platform independent and easy to maintain. For the documentation the powerful Javadoc style is used.
The UML design has been prepared with the Together Control Center, which even provides reverse diagrams for already existing source codes. For the coding process we use the open source tool editor Eclipse, which supports Java syntax and CVS and much more. The derived classes are proofed with the help of JUnit tests.

\noindent 
The development process can be describes in four major steps:
\begin{enumerate} 
        \item Analysis of the problem
        \item Design of classes
        \item Development of a rapid prototype
        \item Re-Design
\end{enumerate}

\noindent 
In order to test the communication concept and to get experiences with the control electronics a prototype software has been developed. It is able to control the motors by sending appropriate firmware commands and can measure temperature and pressure from the monitoring devices.
                                                                                    
\section{Software tests}

The most important part during the software development process is to ensure that the build software complies with the specification made previously. Because of the complexity of the instrument a test of
the logical behaviour of the software is necessary in advance of the completion of the instrument. For this purpose a virtual instrument has been developed, simulating the behaviour of all implemented units and motors. It consists of a TCP/IP interface so that the control software communicates the same way as the real instrument.
To provide a tool which can be used as a testing environment three independent software packages had to be implemented:
\begin{itemize} 
\item A package simulating the mechanical movement inside the instrument. This was done by mixing an event orientated approach with a mathematical one to ensure temporal consistency of real and model time.
 
\item A package emulating the communication protocol of the used MPIA control electronics. This packages was realized by writing a command parser which controls the simulation and generates responses.
 
\item A package for visualisation of the current instrument status. This package was written using Java3D and enables the user to see virtually the moving of the simulated instrument.
\end{itemize}
\begin{figure}
\epsscale{.65}
\plotone{P9-6_3.eps}
\caption{The virtual LUCIFER instrument.} \label{P9.6-fig-3}
\end{figure}                                                                           

\acknowledgements
\small
This work is supported by the German Federal Ministry for Education and Research (BMBF) under Ids:
05 AL2V01/8, 05 AL2PCA/5, 05 AL9EE1/7.
\normalsize



%-----------------------------------------------------------------------
%                             References
%-----------------------------------------------------------------------
% List your references below within the reference environment
% (i.e. between the \begin{references} and \end{references} tags).
% Each new reference should begin with a \reference command which sets
% up the proper indentation.  Observe the following order when listing
% bibliographical information for each reference:  author name(s),
% publication year, journal name, volume, and page number for
% articles.  Note that many journal names are available as macros; see
% the User Guide listing "macro-ized" journals.   
%
% EXAMPLE:  \reference Hagiwara, K., \& Zeppenfeld, D.\  1986, 
%                Nucl.Phys., 274, 1
%           \reference H\'enon, M.\  1961, Ann.d'Ap., 24, 369
%           \reference King, I.\ R.\  1966, \aj, 71, 276
%           \reference King, I.\ R.\  1975, in Dynamics of Stellar 
%                Systems, ed.\ A.\ Hayli (Dordrecht: Reidel), 99
%           \reference Tody, D.\  1998, \adassvii, 146
%           \reference Zacharias, N.\ \& Zacharias, M.\ 2003,
%                \adassxii, \paperref{P7.6}
% 
% Note the following tricks used in the example above:
%
%   o  \& is used to format an ampersand symbol (&).
%   o  \'e puts an accent agu over the letter e.  See the User Guide
%      and the sample files for details on formatting special
%      characters.  
%   o  "\ " after a period prevents LaTeX from interpreting the period 
%      as an end of a sentence.
%   o  \aj is a macro that expands to "Astron. J."  See the User Guide
%      for a full list of journal macros
%   o  \adassvii is a macro that expands to the full title, editor,
%      and publishing information for the ADASS VII conference
%      proceedings.  Such macros are defined for ADASS conferences I
%      through XI.
%   o  When referencing a paper in the current volume, use the
%      \adassxii and \paperref macros.  The argument to \paperref is
%      the paper ID code for the paper you are referencing.  See the 
%      note in the "Paper ID Code" section above for details on how to 
%      determine the paper ID code for the paper you reference.  
%
\begin{references}
\reference Hoffmann, R., Thatte, N.A., Tomono, D.\ 2002, SPIE Proc. Vol. 4841, 2026 
\reference Seifert, W., Mandel, H., Appenzeller, I., et al.\ 2002, SPIE Proc. Vol. 4841, 2002
\end{references}

% Do not place any material after the references section

\end{document}  % Leave intact
