Initial revision
This commit is contained in:
110
doc/programmer/evdrivers.tex
Normal file
110
doc/programmer/evdrivers.tex
Normal file
@@ -0,0 +1,110 @@
|
||||
\subsubsection{LTC-11 Driver}
|
||||
This is a driver for the Kyocera LTC-11 temperature controller which
|
||||
is used with the Kryo furnace at SINQ (funny idea, a kryo
|
||||
furnace). As with the ITC-4 this device has a few special functions
|
||||
and requires an additional interpreter function which delegates to the
|
||||
standard one for the general stuff. This is mainly the switching of
|
||||
the operation mode of the LTC-11. It has two modes: analog mode and
|
||||
heater mode. For more details about this see the controller
|
||||
manual. The driver is implemented in the
|
||||
file ltc11.h and ltc11.c. The following functions, besides those
|
||||
required for the standard driver, are defined:
|
||||
|
||||
\begin{verbatim}
|
||||
pEVDriver CreateLTC11Driver(int argc, char *argv[]);
|
||||
|
||||
int LTC11GetMode(pEVDriver self, int *iMode);
|
||||
int LTC11SetMode(pEVDriver self, int iMode);
|
||||
|
||||
int LTC11Action(SConnection *pCon, SicsInterp *pSics, void *pData,
|
||||
int argc, char *argv[]);
|
||||
\end{verbatim}
|
||||
These are:
|
||||
\begin{description}
|
||||
\item[CreateLTC11Driver] creates a driver for a LTC-11. Returns a
|
||||
pointer to a newly allocated LTC-11 driver or NULL in case of failure.
|
||||
\item[LTC11GetMode] retrieves the current operation mode of the
|
||||
LTC-11.
|
||||
\item[LTC11SetMode] sets the operation mode for the LTC-11.
|
||||
\item[LTC11Action] The interpreter interface function for the
|
||||
LTC-11. Implements the special commands for the LTC-11 and calls
|
||||
EVControlWrapper for anything else.
|
||||
\end{description}
|
||||
|
||||
|
||||
\subsubsection{The Dillution Cryostat}
|
||||
This is the old monster cryostat inherited from Saphir. Its driver is
|
||||
implemented in dilludriv.h and dilludriv.c. There is additional code
|
||||
for this device in the hardsup subdirectory in the file dillutil.h and
|
||||
dillutil.c. This device has a fairly involved command protocoll. A
|
||||
change of the set point requires heater output and and various
|
||||
parameters for the resistance bridge used for temperature measurement
|
||||
to be set. Then the set value has to be formatted in a range specific
|
||||
way in a hexidecimal format. Most of this code is a C adaption of an
|
||||
earlier F77 code from Elsenhans. Additionally this controller does not
|
||||
provide a temperature but a resistance value. This resistance value
|
||||
has to be converted to temperature through a calibration table. Thus
|
||||
there is an additional file, dilu.tem, which holds this conversion
|
||||
table.
|
||||
|
||||
\subsubsection{Eurotherm Temperature Controller}
|
||||
SANS is Eurotherm temperature controller somewhere. These controllers
|
||||
are quite common and the problem may come up again. The Eurotherm
|
||||
supports not one but several command protocolls, each weirder then the
|
||||
other. The implementation here serves the EI-Bisynch protocoll. The
|
||||
thing ahs to be configured manually to run this protocoll. This
|
||||
protocoll uses specific message formats for communication, the command
|
||||
protocoll is not plain ASCII. For more details about the protocoll see
|
||||
the documentation coming with the gadget. Due to this protocoll
|
||||
restriction the usual Send function of the driver just returns an
|
||||
error. The driver is impelemwnted
|
||||
in file eurodriv.h and eurodriv.c. The following functions are
|
||||
provided:
|
||||
\begin{verbatim}
|
||||
pEVDriver CreateEURODriv(int argc, char *argv[]);
|
||||
|
||||
/*
|
||||
these are hooks to implement further functionality which,
|
||||
I'am sure, Joachim Kohlbrecher will request.
|
||||
*/
|
||||
int EuroGetParameter(void **pData, char *pPar, int iLen, float *fVal);
|
||||
int EuroSetParameter(void **pData, char *pPar, int iLen,
|
||||
char *pFormat, float fVal);
|
||||
|
||||
\end{verbatim}
|
||||
These are:
|
||||
\begin{description}
|
||||
\item[CreateEuroDriver] creates a driver for a Eurotherm controller. Returns a
|
||||
pointer to a newly allocated Eurotherm driver or NULL in case of failure.
|
||||
\item[EuroGetParameter] gets one out of many parameters possible with
|
||||
the Eurotherm. This is a hook to implement further functionality. For
|
||||
possible values for parameter names pPar see the Eurotherm
|
||||
documentation. iLen is the length of pPar.
|
||||
\item[LTC11SetParameter] retrieves the value of a parameter from the
|
||||
Eurotherm. Again a hook for further expansion. pFormat is the format
|
||||
how to print the parameter into the command string.
|
||||
\end{description}
|
||||
|
||||
\subsubsection{EL755 Magnet Controller}
|
||||
This is a driver for the PSI manufactured EL755 magnet
|
||||
controller. There is additional code for this in the hardsup directory
|
||||
with files el755\_utility.*. The functions there are documented in that
|
||||
file. For SICS there is only an adapter to this implemented in
|
||||
el755driv.h and el755driv.c. The only external function is a driver
|
||||
creation function with the usual parameters and return values.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user