From ca69fe5101a2782c4f1d8787a0bfd5d6efc01528 Mon Sep 17 00:00:00 2001 From: koennecke Date: Wed, 5 Oct 2005 07:20:17 +0000 Subject: [PATCH] - Committing first working version of new AMOR settings module --- .cdtproject | 31 + .project | 108 ++ SCinter.c | 8 +- conman.c | 1 + counter.c | 7 + doc/manager/managerman.aux | 110 ++ doc/manager/managerman.dvi | Bin 0 -> 163356 bytes doc/manager/managerman.pdf | Bin 0 -> 195482 bytes doc/manager/managerman.tex | 2340 ++++++++++++++++++++++++++++++++++++ doc/manager/managerman.toc | 80 ++ doc/manager/scrap1.htm | 4 + dynstring.c | 15 +- dynstring.h | 8 +- fourtable.c | 20 +- fourtable.h | 2 +- make_gen | 4 +- makefile_slinux | 2 +- mesure.c | 6 +- motorlist.c | 265 ++++ motorlist.h | 34 + motorlist.tex | 101 ++ motorlist.w | 67 ++ mumo.c | 81 +- napiu.c | 160 +++ napiu.h | 72 ++ nxconfig.h | 132 ++ trigd.c | 10 + trigd.h | 1 + 28 files changed, 3607 insertions(+), 62 deletions(-) create mode 100644 .cdtproject create mode 100644 .project create mode 100644 doc/manager/managerman.aux create mode 100644 doc/manager/managerman.dvi create mode 100644 doc/manager/managerman.pdf create mode 100644 doc/manager/managerman.tex create mode 100644 doc/manager/managerman.toc create mode 100644 doc/manager/scrap1.htm create mode 100644 motorlist.c create mode 100644 motorlist.h create mode 100644 motorlist.tex create mode 100644 motorlist.w create mode 100644 napiu.c create mode 100644 napiu.h create mode 100644 nxconfig.h diff --git a/.cdtproject b/.cdtproject new file mode 100644 index 00000000..784922d7 --- /dev/null +++ b/.cdtproject @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.project b/.project new file mode 100644 index 00000000..64b240cd --- /dev/null +++ b/.project @@ -0,0 +1,108 @@ + + + sics + + + + + + org.eclipse.cdt.make.core.makeBuilder + + + org.eclipse.cdt.core.errorOutputParser + org.eclipse.cdt.core.MakeErrorParser;org.eclipse.cdt.core.GCCErrorParser;org.eclipse.cdt.core.GASErrorParser;org.eclipse.cdt.core.GLDErrorParser;org.eclipse.cdt.core.VCErrorParser; + + + org.eclipse.cdt.make.core.fullBuildTarget + clean all + + + org.eclipse.cdt.make.core.incrementalBuildTarget + all + + + org.eclipse.cdt.make.core.enableAutoBuild + false + + + org.eclipse.cdt.make.core.buildLocation + + + + org.eclipse.cdt.make.core.enableFullBuild + true + + + org.eclipse.cdt.make.core.enabledIncrementalBuild + true + + + org.eclipse.cdt.make.core.enableCleanBuild + true + + + org.eclipse.cdt.make.core.cleanBuildTarget + clean + + + org.eclipse.cdt.make.core.useDefaultBuildCmd + false + + + org.eclipse.cdt.make.core.buildArguments + -f makefile_slinux + + + org.eclipse.cdt.make.core.buildCommand + make + + + org.eclipse.cdt.make.core.autoBuildTarget + all + + + org.eclipse.cdt.make.core.stopOnError + false + + + + + org.eclipse.cdt.make.core.ScannerConfigBuilder + + + org.eclipse.cdt.make.core.ScannerConfigDiscoveryEnabled + true + + + org.eclipse.cdt.make.core.makeBuilderParserId + org.eclipse.cdt.make.core.GCCScannerInfoConsoleParser + + + org.eclipse.cdt.make.core.esiProviderCommandEnabled + true + + + org.eclipse.cdt.make.core.siProblemGenerationEnabled + true + + + org.eclipse.cdt.make.core.useDefaultESIProviderCmd + true + + + org.eclipse.cdt.make.core.makeBuilderParserEnabled + true + + + org.eclipse.cdt.make.core.esiProviderParserId + org.eclipse.cdt.make.core.GCCSpecsConsoleParser + + + + + + org.eclipse.cdt.core.cnature + org.eclipse.cdt.make.core.makeNature + org.eclipse.cdt.make.core.ScannerConfigNature + + diff --git a/SCinter.c b/SCinter.c index 8b8138c6..328222ff 100644 --- a/SCinter.c +++ b/SCinter.c @@ -414,15 +414,15 @@ } pCurrent = pCurrent->pNext; } + if(iMot) + { + fprintf(fd,"Success \n"); + } fclose(fd); /* rename temporary to final file (this is an atomic action) */ if (0 > rename(tmpfile, file)) { return 0; } - if(iMot) - { - fprintf(fd,"Success \n"); - } return 1; } /*------------------------------------------------------------------------*/ diff --git a/conman.c b/conman.c index 0886327b..29cd99c0 100644 --- a/conman.c +++ b/conman.c @@ -1835,6 +1835,7 @@ static void writeToLogFiles(SConnection *self, char *buffer) SCWrite(self,"Login OK",eError); self->iLogin = 1; SCSetRights(self,iRet); + pHost[0] = '\0'; NETInfo(self->pSock,pHost,131); sprintf(pBueffel,"Accepted connection on socket %d from %s", self->pSock->sockid, pHost); diff --git a/counter.c b/counter.c index 731b9da7..690786cf 100644 --- a/counter.c +++ b/counter.c @@ -713,6 +713,7 @@ SConnection *pCon = NULL; pMonEvent pMon = NULL; char pBueffel[512]; + int rights; if(iEvent != MONITOR) { @@ -725,7 +726,13 @@ assert(pMon); sprintf(pBueffel,"%s.CountStatus = %f %d",pMon->pName,pMon->fPreset, (int)nintf(pMon->fCurrent)); + /** + * prevent this to be written to log files + */ + rights = SCGetRights(pCon); + SCSetRights(pCon,usSpy); SCWrite(pCon,pBueffel,eWarning); + SCSetRights(pCon,rights); return 1; } /*-----------------------------------------------------------------------*/ diff --git a/doc/manager/managerman.aux b/doc/manager/managerman.aux new file mode 100644 index 00000000..bfff1d09 --- /dev/null +++ b/doc/manager/managerman.aux @@ -0,0 +1,110 @@ +\relax +\@writefile{toc}{\contentsline {chapter}{\numberline {1}Introduction}{4}} +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\@writefile{toc}{\contentsline {chapter}{\numberline {2}SICS programs, Scripts and Prerequisites}{5}} +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\newlabel{f0}{{2}{5}} +\@writefile{toc}{\contentsline {section}{\numberline {2.1}Hardware}{5}} +\@writefile{toc}{\contentsline {section}{\numberline {2.2}Server programs}{5}} +\@writefile{toc}{\contentsline {chapter}{\numberline {3}General SICS Setup}{7}} +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\@writefile{toc}{\contentsline {section}{\numberline {3.1}System Control}{8}} +\@writefile{toc}{\contentsline {section}{\numberline {3.2}Moving SICS}{9}} +\newlabel{f2}{{3.2}{9}} +\@writefile{toc}{\contentsline {subsection}{\numberline {3.2.1} Moving the SICS Server to a new Computer}{9}} +\@writefile{toc}{\contentsline {subsection}{\numberline {3.2.2}Exchanging the Serial Port Server}{9}} +\@writefile{toc}{\contentsline {subsection}{\numberline {3.2.3}Exchanging the Histogram Memory}{10}} +\@writefile{toc}{\contentsline {section}{\numberline {3.3}SICS Trouble Shooting }{10}} +\newlabel{f3}{{3.3}{10}} +\@writefile{toc}{\contentsline {subsection}{\numberline {3.3.1}Check Server Status}{10}} +\@writefile{toc}{\contentsline {subsection}{\numberline {3.3.2}Inspecting Log Files}{10}} +\@writefile{toc}{\contentsline {subsection}{\numberline {3.3.3}Restarting SICS}{11}} +\@writefile{toc}{\contentsline {subsection}{\numberline {3.3.4}Restart Everything}{11}} +\@writefile{toc}{\contentsline {subsection}{\numberline {3.3.5}Starting SICS Manually}{11}} +\@writefile{toc}{\contentsline {subsection}{\numberline {3.3.6}Test the SerPortServer Program}{11}} +\@writefile{toc}{\contentsline {subsection}{\numberline {3.3.7}Trouble with Environment Devices}{12}} +\@writefile{toc}{\contentsline {subsection}{\numberline {3.3.8} HELP debugging!!!!}{12}} +\@writefile{toc}{\contentsline {chapter}{\numberline {4}The SICS Initialization File}{13}} +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\@writefile{toc}{\contentsline {section}{\numberline {4.1}Overview of SICS Initialization}{13}} +\newlabel{f4}{{4.1}{13}} +\@writefile{toc}{\contentsline {section}{\numberline {4.2}SICS Options and Users}{14}} +\newlabel{f5}{{4.2}{14}} +\@writefile{toc}{\contentsline {section}{\numberline {4.3}SICS Variables }{15}} +\newlabel{f6}{{4.3}{15}} +\@writefile{toc}{\contentsline {section}{\numberline {4.4}SICS Hardware Configuration}{16}} +\newlabel{f7}{{4.4}{16}} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.4.1}Bus Access}{16}} +\@writefile{toc}{\contentsline {subsubsection}{Direct Access to RS232 Controllers or TCP/IP Controllers.}{16}} +\@writefile{toc}{\contentsline {subsubsection}{Accessing Serial Ports (Old System)}{17}} +\@writefile{toc}{\contentsline {subsubsection}{GPIB Controller Access}{19}} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.4.2}Controllers}{20}} +\@writefile{toc}{\contentsline {subsubsection}{ECB Controllers}{20}} +\@writefile{toc}{\contentsline {subsubsection}{Siematic SPS Controllers}{21}} +\@writefile{toc}{\contentsline {subsubsection}{General Controller Object and Choppers}{22}} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.4.3} Motors}{23}} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.4.4}Counting Devices}{24}} +\@writefile{toc}{\contentsline {subsubsection}{Histogram Memory}{25}} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.4.5}Velocity Selectors}{26}} +\@writefile{toc}{\contentsline {section}{\numberline {4.5}Initialization of General Commands}{27}} +\newlabel{f10}{{4.5}{27}} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.5.1}Monochromators}{28}} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.5.2}Reoccuring Tasks}{28}} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.5.3}The SICS Online Help System}{29}} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.5.4}Aliases in SICS}{29}} +\@writefile{toc}{\contentsline {subsubsection}{Object Aliases}{29}} +\@writefile{toc}{\contentsline {subsubsection}{Runtime Aliases}{29}} +\@writefile{toc}{\contentsline {subsubsection}{Command Aliases}{30}} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.5.5}The AntiCollision Module}{30}} +\@writefile{toc}{\contentsline {section}{\numberline {4.6}The Internal Scan Commands}{31}} +\newlabel{f11}{{4.6}{31}} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.6.1}Scan Concepts}{31}} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.6.2}User Definable Scan Functions}{34}} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.6.3}User Defined Scans(Old Style)}{35}} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.6.4}The Scan Command Header Description File}{35}} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.6.5}Differential Scans}{36}} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.6.6}Peak Analysis}{37}} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.6.7}Common Scan Scripts}{37}} +\@writefile{toc}{\contentsline {section}{\numberline {4.7}Scripting NeXus Files}{37}} +\newlabel{f12}{{4.7}{37}} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.7.1}Usage}{38}} +\@writefile{toc}{\contentsline {subsubsection}{File Opening and Closing}{38}} +\@writefile{toc}{\contentsline {subsubsection}{Writing Things}{38}} +\@writefile{toc}{\contentsline {section}{\numberline {4.8}Automatic Updating of NeXus Files}{39}} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.8.1}Prerequisites for Using the Automatic Update Manager}{39}} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.8.2}Installing Automatic Update}{40}} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.8.3}Configuring Automatic Update}{40}} +\@writefile{toc}{\contentsline {section}{\numberline {4.9}Instrument Specific SICS Initializations}{40}} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.9.1}Initialization for Four Circle Diffractometers}{40}} +\newlabel{f13}{{4.9.1}{40}} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.9.2}Triple Axis Spectrometer Specific Commands}{42}} +\newlabel{f14}{{4.9.2}{42}} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.9.3}Special Commands for the Reflectometer (AMOR)}{42}} +\newlabel{f15}{{4.9.3}{42}} +\@writefile{toc}{\contentsline {subsubsection}{AMOR Status Display Commands}{43}} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.9.4}SANS Special Commands}{44}} +\newlabel{f16}{{4.9.4}{44}} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.9.5}Special FOCUS Initializations}{45}} +\newlabel{f17}{{4.9.5}{45}} +\@writefile{toc}{\contentsline {subsubsection}{Special Internal FOCUS Support Commands}{45}} +\@writefile{toc}{\contentsline {chapter}{\numberline {5}Programming SICS Macros}{46}} +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\newlabel{f18}{{5}{46}} +\@writefile{toc}{\contentsline {section}{\numberline {5.1}Input/Output}{46}} +\@writefile{toc}{\contentsline {section}{\numberline {5.2}Error Handling}{47}} +\@writefile{toc}{\contentsline {section}{\numberline {5.3}Interacting with SICS within a Script}{47}} +\@writefile{toc}{\contentsline {section}{\numberline {5.4}SICS Interfaces in Tcl}{47}} +\@writefile{toc}{\contentsline {subsection}{\numberline {5.4.1}The Object Interface}{47}} +\@writefile{toc}{\contentsline {subsection}{\numberline {5.4.2}Overriding the Drivable Interface with Tcl}{48}} +\@writefile{toc}{\contentsline {chapter}{\numberline {6}The McStas SICS Interface}{49}} +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\newlabel{f8}{{6}{49}} +\@writefile{toc}{\contentsline {section}{\numberline {6.1}McStas Requirements and SICS Requirements}{50}} +\@writefile{toc}{\contentsline {section}{\numberline {6.2}The McStas Reader}{50}} +\@writefile{toc}{\contentsline {section}{\numberline {6.3}The McStas Controller}{51}} diff --git a/doc/manager/managerman.dvi b/doc/manager/managerman.dvi new file mode 100644 index 0000000000000000000000000000000000000000..6795a0c830d486dbb01f34459ce8f8c4123b4dbd GIT binary patch literal 163356 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%0A0LC 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 literal 0 HcmV?d00001 diff --git a/doc/manager/managerman.pdf b/doc/manager/managerman.pdf new file mode 100644 index 0000000000000000000000000000000000000000..d262d4f76acc2e44dbc0880545aab0d4abc2cd5e GIT binary patch literal 195482 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�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[OIS1>z^B-C9$vi{8!KdAuc91oIj_{yY-T7Z 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�@ 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 S;upXH=W?Xg)QlI*mHrPsmRHOG literal 0 HcmV?d00001 diff --git a/doc/manager/managerman.tex b/doc/manager/managerman.tex new file mode 100644 index 00000000..3a14d8f7 --- /dev/null +++ b/doc/manager/managerman.tex @@ -0,0 +1,2340 @@ +\documentclass[12pt,a4paper]{report} +%%\usepackage[dvips]{graphics} +%%\usepackage{epsf} +\setlength{\textheight}{24cm} +\setlength{\textwidth}{16cm} +\setlength{\headheight}{0cm} +\setlength{\headsep}{0cm} +\setlength{\topmargin}{0cm} +\setlength{\oddsidemargin}{0cm} +\setlength{\evensidemargin}{0cm} +\setlength{\hoffset}{0cm} +\setlength{\marginparwidth}{0cm} + +\begin{document} +\begin{center} +\begin{huge} +SICS--Managers--Manual \\ +\end{huge} +Version: \today\\ +Dr. Mark K\"onnecke \\ +Labor f\"ur Neutronenstreuung\\ +Paul Scherrer Institut\\ +CH--5232 Villigen--PSI\\ +Switzerland\\ +\end{center} +\clearpage +\tableofcontents +\clearpage + +\chapter{Introduction} +This document describes the general setup of SICS, the configuration of the + SICS server and its clients and the writing of macros in the +SICS macro language. This document is aimed at SICS system managers and +instrument scientists. This document requires that the SICS user +documentation +has been read and understood beforehand. For writing macros it is essential +to understand John Ousterhouts Tool Command Language, +which is described elsewhere. + +% html: Beginning of file: `setup.htm' + +\chapter{SICS programs, Scripts and Prerequisites} + +\label{f0} + +\section{Hardware} + +The following hardware is usually present for any SICs instrument: +\begin{itemize} +\item An instrument computer +\item A Lantronix terminal server with 8-16 serial ports for connecting: +\item Motor controllers +\item Counter boxes +\item Temperature controllers. +\item Optionally 1-n histogram memory computers are present. +\end{itemize} +The terminal server software is provided by Lantronix, see the +appropriate manuals for the device for a description. The histogram +memories are 68000 VME or MEN-A12 onboard computers + running the VXworks realtime +operating system and some home grown histogramming software documented +elsewhere. + +\section{Server programs} + + +For proper operation of an instrument the following software components are +required: +\begin{description} +\item[SerPortServer] This is a TCP/IP server which implements a special protocoll for +communicating with serial ports. The actual communication with the +serial ports is done through the Lantronix terminal server. Both the +serial port protocoll and the SerPortServer are only documented in the +source code. The SerPortServer program is on its way out. +\item[TecsServer] This is a TCP/IP server which watches over temperature +controllers. The only known source of documentation about this +software is Markus Zolliker. +\item[FileSync] This is a little UDP server which waits for UDP messages from the +instrument control program. Then the server starts a script which +synchronizes the local data directory with the central data storage on +the labarotory server. FileSync is configured through an +initialization file usually called fs.ini. See the comments in the + initialization file for more information. +\item[SICServer] This is the actual instrument control server. The configuration of +this program is documented in this manual. +\end{description} +Additionally a client program is needed which connects to the +instrument control server and provides a user interface to it. + +\chapter{General SICS Setup} + + +SICS is a client server system. This implies that there is a server program +which implements all the functionlity and client programs which implement +the user interface. The client program is the only thing the user is +intended to see. This also means that the location of the client programs is +quite independent from the computer where the server runs. In the following +the layout of a server installation is described as established at SINQ. + +For each instrument there is a data aquisition computer. On this computer +there exists a user name and consequently a home directory for the +instrument. In the following text this instrument root directory will be called +sicsroot. This root directory has the following subdirectories: +\begin{description} +\item[bin] The directory where some executables live. +\item[inst\_sics] All instrument configuration files and the SICServer live in + this directory. Replace inst by the name of the instrument as appropriate. +\item[data] The data directory is the central place where all data files collected +at the instrument are stored. This directory contains subdirectories +for each year. These directories hold the data collected at the + instrument in this year plus a file named +DataNumber which keeps the current serial number of the data files. This +file should never be edited. At the start of each year the instruement manager +must create a new directory with an empty DataNumber +file. Additionally the +path variables both for the data file directory and the DataNumber +file have to be set to the new directory in the instrument +initialization file. +\item[log] The log directory contains the server log files and the automatically +generated client log files. Any now and then, and especially when disk space +problems loom, the client*.log files should be deleted by the instrument +manager. +\item[lib] Contains some files needed for running SICS clients locally. +\item[ doc] This directory holds a copy of the SICS user documentation for the +instrument. These are html files which can be viewed with WWW-browsers such +as lynx or netscape. +\item[motor] This directory holds a script for reading and restoring the motor +parameter from the EL734 motor controllers. And the motor parameters +stored in parameter files. It is the instrument scientists +responsability to save the motor parameters after changes to the +configuration of the instrument. +\item[tmp] A directory for temporary and PID files. +\item[help] A directory for help files for the help system. +\end{description} +Besides these directories there should be nothing on the instrument account. +All evaluated data, personal command files etc. should be held on the normal +user account of the instrument user. + +\section{System Control} + + +All commands listed in this section have to issued with the privilege of the + instrument user account. + +In order to watch over all these servers, the monit\footnote{See URL http://www.tildeslash.com/monit} software is used. This is + a program which watches server processes and restarts them as necessary. + Monit can also be used to watch over hardware and the file system. Monit + writes a log file and can trigger e-mail alerts on certain + problematic conditions. + +Monit itself is controlled through a configuration file, .monitrc, which lives +in the instrument accounts home directory. Monit also uses another Tcl program runwithpid which is responsible for starting and stopping server programs. +In order to configure all this, there is another program: makemonit which + creates the monit configuration file and copies and edits the runwithpid + program. The syntax of makemonit is: +\begin{description} +\item[makemonit instrument terminalserver data-mount-point hm1 hm2 ..] instrument is the instrument name in lowercase, terminalserver is the + name of the terminal server used for serial port access, data-mount-point is + the name of file system onto which the instruments data is written. This is + followed by a list of all the histogram memory computers used by the + instrument. +\item[monitinit] monitinit is an alias which calls makemonit with all required parameters + for a given instrument in standard configuration. +\end{description} + +Monit itself can be controlled with the following commands: +\begin{description} +\item[monit] Starts the monit daemon and all configured processes. This is only + necessary after a reboot of the system. +\item[monit status] This shows a status message listing the status of all configured servers + and the checked hardware. The monit status is also available on the WWW from + http://lns00.psi.ch/monit/instrument. Replace instrument with the appropriate + instrument name. +\item[monit stop target] Stops the server process target. The following targest exist: +\begin{description} +\item[all] All processes +\item[sicsserver] The SICS server +\item[SerPortServer] The serial port server. +\item[sync] The file synchronisation server. +\item[tecs] The TecsServer for controlling environment devices. +\item[simserver] A simulation server(not on all instruments). +\end{description} +\item[monit start target] Starts a server process, targest are the same as described above. +\item[monit restart target] Stops and starts the process target. Targets are as listed above. +\item[monit quit] Stops monit alltogether. Please note, that servers stay running with + this command. In order to sop everything the sequence: monit stop all; + monit quit is required. +\item[startsics] This script starts all the necessary server programs for driving +the instrument through monit. +\item[killsics] This script shuts down all instrument control servers properly through + monit. +\item[instsync] replace inst by the name of the instrument in lower case. This +script is invoked by the FileSync server and is responsible for +synchronizing the local data store with the one on the labaratory +server. This is usally done by calling the unix program rsync with +appropriate parameters. +\end{description} + +% html: End of file: `setup.htm' +% html: Beginning of file: `move.htm' + +\section{Moving SICS} + +\label{f2} +\subsection{ Moving the SICS Server to a new Computer} + + +This requires the following steps: +\begin{enumerate} +\item Create a new local account on the host computer. There is a +prefabricated account with the credentials: instbck/INSTBCKLNS on +lnsl15. +\item Create the directory structure. +\item Create and edit a suitable DataNumber file for the instrument and put it + into data/YYYY. YYYY is the year. +\item Edit the instrument configuration files and adapt the path names +to match the new configuration. +\item Try to start and debug. +\end{enumerate} + +\subsection{Exchanging the Serial Port Server} + + +\begin{enumerate}\item Fetch a new one and make sure that all cables are plugged as +they were in the old one. +\item Create a new .monitrc file by running makemonit. +\item Exchange all references to the old terminal server in the instrument + configuration files to the new terminal server. +\item Done! +\end{enumerate} + +\subsection{Exchanging the Histogram Memory} + + +\begin{enumerate}\item Get a new histogram memory computer from either Gerd Theidel, +the test setup in the electronics barrack. +\item Put into the rack. +\item Configure the HM boot parameters through the console connected to +the serial port belonging to the HM. Instructions for this can be +found in the histogram memory documentation. Up to date boot + configuration parameters should be available under + /afs/psi.ch/group/sinqhm/boot/INST where INST is a place holder for the + instrument in upper case. +\item Adapt the instrument configuration file to reflect the new name of +the HM. +\item Start and debug. +\end{enumerate} + +% html: End of file: `move.htm' +% html: Beginning of file: `trouble.htm' + +\section{SICS Trouble Shooting } + +\label{f3} +\subsection{Check Server Status} + + +One of the first things to do is to check the server status with: +monit status. + + +\subsection{Inspecting Log Files} + + +Suppose something went wrong over the weekend or during the night and +you are not absolutely sure what the problem was. In such a case it is +helpful to look at the SICS log files. They live in the log directory +of the instrument account. For each day (or after each restart of the +SICS server) a new log file is created. They are named according to the +following convention: +\begin{verbatim} +autoYYYY-mm-dd@hh-MM-ss.log +\end{verbatim} + with YYYY denoting the year, mm the month, dd the day, hh the hour of +creation, MM the minute of creation and ss the seconds of +creation. The most recent log file can be looked at with the +{\bf sicstail} command. {\bf sicstail num} shows the last num lines +of the log file. Within SICS and especially in the SICS command line +client, the last 1000 lines of the log are accessible through the +{\bf commandlog tail num} command. The command log is also accessible +through the WWW at lns00. The log file is equipped with hourly time +stamps which allow to find out when exactly a problem began to +appear. + +There is also another log file, log/monit.log, which logs messages from + the monit daemon. This can be used to determine when server processes + were restarted or when hardware failed. + +Quite often the inspection of the log files will indicate problems +which are not software related such as: +\begin{itemize} +\item Communication problems (usually network) +\item Positioning problems of motors. +\item BAD\_EMERG\_STOP: the motor emergency stop was engaged. It must be +released before the motors move again. +\item BAD\_STP: a motor had been switched off. +\end{itemize} + +\subsection{Restarting SICS} + + +\begin{description}\item[monit restart sicsserver] +\end{description} + +\subsection{Restart Everything} + + +If nothing seems to work any more, no connections can be obtained etc, then +the next guess is to restart everything. This is especially necessary if +mechanics or electronics people were closer to the instrument then a + nautical mile. +\begin{itemize} +\item Reboot the histogram memory. It has a tiny button labelled RST. That' s +the one. Can be operated with a hairpin, a ball point pen or the like. +\item Restart all of SICS with the sequence: monit stop all; monit quit; monit +\item Wait for a couple of minutes for the system to come up. +\end{itemize} + +\subsection{Starting SICS Manually} + + +In order to find out if some hardware is broken or if the SICS server + initializes badly it is useful to look at the SICS servers startup messages. +The following steps are required: +\begin{itemize} +\item monit stop sicsserver +\item cd \~{}/inst\_sics +\item ./SICServer inst.tcl \mbox{$|$} more +\end{itemize} +Replace inst by the name of the instrument, as usual. Look at the screen + output in + order to find out why SICS does not initialize things or where the + initialization hangs. Do not forget to kill the SICServer thus started when + you are done and to issue the command: {\bf monit start sicsserver} in order + to place the SICS server back under monits control again. + + +\subsection{Test the SerPortServer Program} + + +Sometimes the SerPortServer program hangs and inhibits the communication with + the RS-232 hardware. This can be diagnosed by the following procedure: Find + out at which port either a EL734 motor controller or a E737 counter box + lives. Then type:{\bf asyncom localhost 4000 portnumber} This yields a + new prompt at which you type {\bf ID}. If all is well a string identifying + the device will be printed. If not a large stack dump will come up. + The asyncom program can be exited by typing {\bf quit}. If there is + a problem with the + SerPortServer program type: {\bf monit restart SerPortServer} in order to + restart it. + + +\subsection{Trouble with Environment Devices} + + +The first stop for trouble with temperature or other environment devices + is Markus Zolliker. A common problem is that old environment controllers + have not be deconfigured from the system and still reserve terminal server + ports. Thus take care to deconfigure your old devices when swapping. + + +\subsection{ HELP debugging!!!!} + + +The SICS server hanging or crashing should not happen. In order to sort such +problems out it is very helpful if any available debugging information is +saved and presented to the programmers. Information available are the log +files as written continously by the SICS server and posssible core files +lying around. They have just this name: core. In order to save them create a +new directory (for example dump2077) and copy the stuff in there. This looks +like: +\begin{verbatim} +/home/DMC> mkdir dump2077 +/home/DMC> cp log/*.log dump2077 +/home/DMC> cp core dump2077 +\end{verbatim} +The {\tt /home/DMC> } is just the command prompt. Please note, that core +files are only available after crashes of the server. These few commands +will help to analyse the cause of the problem and to eventually resolve it. +% html: End of file: `trouble.htm' + +\chapter{The SICS Initialization File} +% html: Beginning of file: `ini.htm' + +\section{Overview of SICS Initialization} + +\label{f4} + The command to start the SICServer is: {\bf SICServer inifile }. So, what +happens at the initialization of the SICS server? First, internally, a set +of standard SICS commands is initialized, than a set of special +initialization commands. These are special commands which help to configure +the SICS server to match the actual hardware present on the hall floor and +to define the commands available later on. Following this, the SICS server +will read the initialization file specified on the command line or servo.tcl +as a default. Using the data supplied in this file, the server will be +configured. At this stage all special initialization commands, all +Tcl-mechanisms and all SICS commands already initialized are available. +After this is done, the server will delete the initialisation commands from +its internal command list (No need to carry them around all the time). Now a +status backup file will be read. This file contains normal SICS statements +which initialise parameter values to the values they had before the last +shutdown of the server. Such a file is automatically written whenever a +normal shutdown of the server happens or variables change. + +The SICS server configuration file is essentially a SICS macro language +file. This implies that all general SICS commands and Tcl mechanisms are +available. Additionally the configuration file (and only the configuration +file) may use special commands for the installation of: +\begin{itemize} +\item SICS server options. +\item SICS variables. +\item Special commands. +\item Hardware +\end{itemize} + +Actually the SICS servers configuration is rarely stored in one file +but in several files which are included by the main configuration +file. In general the following files are present: +\begin{description} +\item[inst.tcl] Replace inst with the name of the instrument in lowercase. This is +the main initialization file. It should contain all the hardware +initialization. +\item[instcom.tcl] Again replace inst with name of the instrument in +lowercase. This file holds instrument specific commands defined in the +Tcl macro language. This file is automatically included by inst.tcl. +\item[scancommand.tcl, tecs.tcl, log.tcl] Some macro definitions are used by so many instruments that +it was deemed appropriate to hold them in separate files. Such files +are included from instcom.tcl. +\end{description} + +% html: End of file: `ini.htm' +% html: Beginning of file: `option.htm' + +\section{SICS Options and Users} + +\label{f5} + The SICS server has an internal options database which holds such values + as port number to listen too and the like. Additionally there exists a user + database. Currently these values are configured from the initialisation + file. The commands to do this are: +\begin{itemize} +\item {\bf ServerOption name value } defines the server option name to be +value. +\item {\bf SicsUser name password accesscode } defines a user with name +and password and an access right accesscode. Accesscode is an integer from 1 +to 3 for User, Manager and Spy rights. A user with Spy right may look at +everything but cannot change anything. A user with user privilege may change +most of the SICS parameters, perform measurements etc. A user with manager +privilege may do everything to the system. +\end{itemize} + The Sics server currently uses the following options: +\begin{itemize} +\item {\bf ReadTimeOut } The server checks in each cycle of the main loop +fro pending commands. Het waits for new commands for a specific period of +time. This value is the ReadTimeOut. It should be as short as possible. This +value may need to be increased if there are network performance problems. A +good value is 100. +\item {\bf ReadUserPasswdTimeout } This is the time a client has to send a +username password pair after a connection request. If nothing comes in in +that time, the connection request is terminated. +\item {\bf LogFileBaseName } defines the path and the base name for the +server log file. +\item {\bf ServerPort } defines the port number the server is listening +to. Should be greater than 1024 and less than 64000. The port number should +also be different from any other server port number in use on the system. +Otherwise evil things may happen. +\item {\bf InterruptPort } The SICS server can handle interrupts coming in +as UDP messages on a special port. This option defines this UDP port +number. The choice of possible port numbers is limited by the constraints +given above in the ServerPort section. Espacillay this port number MUST be +different from the ServerPort number. The UDP messages accepted are expected to consist of the string +SICSINT followed by an interrupt number. For interrupt numbers see file +interrupt.h. +\item {\bf DefaultTclDirectory } specifies where Tcl defined commands are +stored. When this is properly defined Tcl will autoload commands. +\item {\bf statusfile } defines the file to which he current state will be +saved on close down of the server and restored from at startup time. +\item {\bf TelnetPort} The port number where the SICS server will be +listening for telnet connections. If this option is missing login via telnet +to the SICS server is disabled. +\item {\bf TelWord} In order to login to SICS via telnet a magic word is +needed. The login word, This option defines this word. If this option is +missing telnet login to SICS is disabled. +\item {\bf LogFileDir} This server option defines the directory where +commandlog log files are kept. +\item {\bf RedirectFile} This defines a filename to which all output to +stdout and stderr is logged by the SICS server. This is mainly a +debugging feature. +\item {\bf TecsPort} The port number at which the Tecs temperature +control server is listening. +\end{itemize} + +% html: End of file: `option.htm' +% html: Beginning of file: `var.htm' + +\section{SICS Variables } + +\label{f6} +In SICS most parameters necessary for instrument control are kept with the SICS +object implementing the functionality. However, there are some odd bits of +information which need to be known, mostly additional information about and +from the user, which should go into data files. Such information is kept in +SICS variables, created with the command VarMake detailed below. + +Variables are also used in order to control the SINQ automatic file name +creation scheme for data files. At SINQ, data files are put into a special +directory. The actual name consists of a prefix, a sequential number, the +last two digits of the year and an ending. All these components are +controlled by variables. + +The exact syntax for creating variables looks like this: +\begin{itemize} +\item {\bf VarMake name type access } creates a simple variable name. The +variable type can be Text, Int or Float. The access parameter defines who +may may change the variable. Possible values are: Internal, Manager, User +and Spy. +\end{itemize} + +There are quite a few SICS variables which have special usages and should be +present. Some of them may need to be set by the user, all of them should be +inspectable by the user. Many of these variables are used when writing +NeXus data files. These special variables are: +\begin{description} +\item[ sample] The sample name. To be set by the user. +\item[ title.] The experiment title. +\item[ User] The name of the user to be specified in a data file. +\item[ Instrument.] The name of the instrument. +\item[ SicsDataPath] The full path name of the instruments data directory. Should have a / at +the end. +\item[ SicsDataPrefix] The prefix to use for data file names. +\item[ SicsDataPostFix] The ending to use for the data file name. Including the '.'. +\item[ Adress] The users adress. +\item[ phone] The users phone number. +\item[ email] The users e-mail adress. +\item[ fax] The users fax number. +\end{description} + +Some of the variables stated above should never be changed by a user. This +can be achieved by the variable lock command described in the user +documentation. +% html: End of file: `var.htm' +% html: Beginning of file: `hwini.htm' + +\section{SICS Hardware Configuration} + +\label{f7} +Hardware is configured into the SICS system by executing special hardware +configuration commands from the server initialisation file. These commands +are described here. Much SICS hardware is hooked up to the system via RS-232 +interfaces. The SICS server communicates with such devices through a serial +port server program running on the instrument computer. + All such devices require on +initialisation the following parameters: +\begin{itemize} +\item {\bf hostname} The name of the instrument computer. +\item {\bf port} The port number where the serial port server program is +listening for requests. It is usually 4000. +\item {\bf channel} The number of the RS-232 interface port + on the terminal server. +\end{itemize} + +\subsection{Bus Access} + + +SICS and its internals cover many common usage cases. However there are always + situations where SICS has to be bypassed and commands to be sent to a + controller directly. This can happen in order to satisfy a special request or + as first step in the integration of a special piece of hardware into SICS. In + order to do such things the following facilities are available: + +\subsubsection{Direct Access to RS232 Controllers or TCP/IP Controllers.} + + +Both controllers listening on a TCP/IP port or RS-232 devices connected to a + terminal server can be directly accessed through the RS232 commands. The + first step in using this system is always to accounce the controller to SICS + using the command: +\begin{verbatim} +MakeRS232Controller name terminalserver port +\end{verbatim} +in the SICS initialization file. +For example: +\begin{verbatim} +MakeRS232Controller hugo psts213 3004 +\end{verbatim} +name is the SICS name for the controller, terminalserver is the name +of the terminal server the device is connected to and port is the port +number at which the terminal server publishes the RS232 channel to +which the device is connected. This is usally the port number plus 3000. + +Now various commands are available for interfacing with the RS232 +controller. In the following description the SICS name of the +controller is replaced by the symbol rs232name. +\begin{description} +\item[rs232name sendterminator] prints the current terminator used when sending data to the device +as hexadecimal numbers. +\item[rs232name sendterminator h1h2..hn] sets the current terminator used when sending data to the device +to the characters described by the hexadecimal numbers h1 to hn. The +numbers are in the format 0xval, where val is the hex number. +\item[rs232name replyterminator] prints the current terminator expected to terminate a response +from the device as a hexadecimal number. +\item[rs232name replyterminator h1h2..hn] sets the current terminator expected to terminate a response from +the device to the characters described by the hexadecimal numbers h1 +to hn. +The numbers are in the format 0xval, where val is the hex number. +\item[rs232name timeout] prints the current timeout when waiting for a reponse from the +device. +\item[rs232name timeout val] sets the timeout for waiting for responses from the device. The +value is in microseconds. +\item[rs232name send data data data] sends the remainder of the line to the RS232 device and waits for +a response terminated with the proper reply terminator specified. This +commands waits at maximum timeout microseconds for a response. If a +valid response is obtained it is printed, otherwise an error message +occurs. +\item[rs232name write data data data] writes the remainder of the line after write to the device without +waiting for a response. +\item[rs232 available] checks if data is pending to be read from the device. +\item[rs232 read] reads data from the device. +\end{description} + +\subsubsection{Accessing Serial Ports (Old System)} + + +In addition to the system describe above there is another system for accessing + serial ports which uses the SerPortServer program. The use of the system is + deprecated, new software should use the commands describe above. Nevertheless + the older sytem is described here for reference. + +Serial port access is implemented as an extension to the Tcl macro language. +Essentially this is the same implementation as used in the program psish. + This section describes how to use serial port access. Several + steps have to be performed: +\begin{enumerate} +\item Install the serialport command into the SICS server. This requires two lines to be added to +the server startup script: +\begin{itemize} +\item SerialInit +\item TclPublish serialport UserRights +\end{itemize} +Where UserRights stands for one of the possible SICS user rights. + See documentation +for TclPublish above. +\item Each separate serial port will be represented by a name in the SICS server +after it has been initialized. This name is also a command. These port names + live in the Tcl interpreter and must be made accessible with TclPublish. + For example for +a port named p1 include this line in the server startup script: +\begin{itemize} +\item TclPublish p1 User +\end{itemize} + Replace User with the correct access code you want for a serial port. It is + recommended +to restrict serial port access to SICS managers only. +\item After starting the SICS server the command serialport is now available. +\item Now a serial port can be initialized with a command like this: +\begin{itemize} +\item serialport name1 SerPortServer.host port channel force +\item Example: serialport p1 localhost 4000 5 +\end{itemize} +Such a command creates the command name1 and links it with serial port channel +channel on the instrument computer (localhost) running the SerPortServer program . Port is the port number on which the + SerPortServer is listening for connections (usually 4000). +The last flag force is optional. If something is there, the connection to that +port is done on a separate socket of its own. This has to do with some +feature of the software interface to the SerPortServer serial port server. +This +software interface tries to direct messages for multiple channels through one +socket connection between the host and the Macintosh server. This is perfectly +fine as long as none of the commands through this socket takes a long time +to execute. However, if a RS-232 device takes a long time to respond, the whole +socket is blocked. Fortunately, the serial port server runs a separate +thread of execution for each different socket. By forcing a new socket it can +be achieved that such a slow device is decoupled from the rest. Exactly this +is achieved with the force flag. +\item Once the port has been initialised (for example p1) it is ready to + operate. +The port object allows to send data to the serial port and receive data from +it. Furthermore some configuration is possible. The syntax is like this: +\begin{description} +\item[portname -tmo number] Sets the timeout for the serial port. This is the maximum amount of time +the serial port server waits for data to arrive from the RS-232 device. +Increase this if a lot of {\tt \_BAD\_TMO} error messages creep up. +\item[portname -sendterm string] Sets the terminator which will be automatically added to the string + which is +sent. Some RS-232 devices require special terminators in order to accept a command. +The serial port implementation ensures that such a terminator is sent after +each message. This command allows to configure this terminator. Please note, +that the terminator string needs to be enclosed in quotes. An example: +\begin{itemize} +\item {\tt p1 -sendterm {\tt{}"{}}\mbox{$\backslash$}r\mbox{$\backslash$}n{\tt{}"{}}} +\end{itemize} +This sets the terminator to carriage return - line feed. +\item[portname -replyterm string.] The serial port server expects the RS-232 device to send a terminator +when it is done with sending answers. It even supports multiple lines to be +sent as a reply. This expected reply terminator is set with this command. +The string may may be four characters long. An example: {\tt 1\mbox{$\backslash$}r\mbox{$\backslash$}n} sets +the expected terminator to one of {\tt \mbox{$\backslash$}r\mbox{$\backslash$}n}. One of them is expected. +Thus the first character is the count of terminators to expect, followed by + the characters possible as terminators. This string must usually be quoted. +\item[portname blablalakjdl] When none of the options -tmo, -replyterm, -sendterm, is found everything + after portname is sent to the RS-232 device. The reply from the RS-232 + device is printed. +\end{description} + \end{enumerate} +The defaults set for the configuration parameters of the serial port connection +are suited for the EL734, EL737 and ITC4 devices usually encountered at SINQ. + For other RS-232 devices consult the manuals hopefully delivered with the + device. +The defaults are: 100 for timeout, {\tt 1\mbox{$\backslash$}r\mbox{$\backslash$}n} for the reply terminator and +{\tt \mbox{$\backslash$}r\mbox{$\backslash$}n}for the send terminator. + +\subsubsection{GPIB Controller Access} + + +GPIB is yet another bus system. Up to 30 devices can share the bus and +transfer data on it. SICS likest to speak to GPIB devices through the +National Instrument ENET-100 TCP/IP bridge. In order for this to work +the National Instruments driver software must have been installed on +the computer running SICS. SICS has to be compiled with the define +HAVENI defined and the proper paths to the header file and library +configured. Then an GPIB controller can be installed into SICS with the +command: +\begin{verbatim} +MakeGPIB name drivertype +\end{verbatim} +Name is the name under which the GPIB controller is addressable within +SICS afterwards. drivertype is the driver to use for the GPIB +device. Supported values are: +\begin{description} +\item[sim] Simulation +\item[ni] National instruments driver, see above. +\end{description} +The GPIB controller supports a couple of commands for communicating +with devices on the GPIB bus directly. Use with extra care because it +is very easy to lock things up on the GPIB bus. In the following +documentation of the command set it is assumed that a GPIB controller +has been configured into the system under the name {\bf gpib}. Please +note, that managers privilege is required in order to be allowed to +wrestle with this controller. +\begin{description} +\item[gpib attach controller-no gpib-address gpib-secondary timeout eos eot] This attaches the GPIB controller to a certain device at a certain + address for later communication. The return value is an integer + handle which will be used later on a s a handle devID when referring + to the connection. The parameters are: +\begin{description} +\item[controller-no] The number of the GPIB controller on the computer. There may be +more then one GPIB controllerinstalled on a given system. Usually this +is 0. +\item[gpib-address] The GPIB address of the device on the bus. +\item[gpib-secondary] GPIB devices may have a seconadry address. This can be specified +with this parameter. Usually this is 0. +\item[timeout] The time to wait for answers on the GPIB bus. 13 is 10 seconds and +ussually a good value. +\item[eot] A parameter determining the termination mode on this +connection. Consult NI documentation for this or leave at 0. +\item[eoi] A terminator. Set to 1 or understand NI documentation for this +parameter. +\end{description} +\item[gpib detach devID] Breaks the connection described through devID. devID is the return +value from attach. +\item[gpib clear devID] Tries to clear the GPIB buffers for the conenction described +through devID. Usually in vain. +\item[gpib send devID bal bla bla] sends data to the device at devID. +\item[gpib sendwithterm devID string terminator] Sends string to the device at devID. The terminator character +identified through the integer terminator is automatically +appended. Use this to send things which require a +terminator. Terminators included in strings sent by send get messed up +through Tcl! +\item[gpib read devID] Reads data from the device at devID and returns it as a string. +\item[gpib readtillterm devID terminator] Read from teh device devID unti the terminator character described +through the interger terminator is read. Then return the data read as +a string. +\end{description} + +\subsection{Controllers} + + +For the same reason as stated above, it is necessary to represent controllers + within SICS. Controllers implement more then only device access but also + maintain common state or implement special behaviour. + +\subsubsection{ECB Controllers} + + +ECB controllers are at the heart of the Risoe data aquisition +system. These are essentially Z80 processors wired to the GPIB +bus. Functions can be invoked in this processor by sending a function +code followed by the contents of 4 8 bit registers. As a result the +contents of the registers after the function call are returned. A ECB +can be made knwon to SICS through the initialisation command: +\begin{verbatim} +MakeECB name gpib-controller gbib-controller-number gpib-address +\end{verbatim} +The parameters: +\begin{description} +\item[name] The name used as a token for this controller later on. +\item[gpib-controller] the name of the GPIB interface to use. See above. +\item[gbib-controller-no] The number of the GPIB board in the system +\item[gpib-address] The GPIB address of the ECB on the GPIB bus. +\end{description} +Once installed, the ECB controller understands a few commands: +\begin{description} +\item[ecb1 func funcode d e bc] Invoke ECB function funcode with the registers d e b c.Returns the +contents of the registers d e b c. Function codes and register +contents are documented, if at all, in the ECB documentation. In fact, as + ECB documentation is not available, the only documentation on ECB is the + source code of tascom. +\item[ecb1 clear] Tries, usually in vain, to clear the communications interface to +the ECB. +\item[ecb1 toint char] A helper function which converts the character char to an +integer. Tcl does not seem to be able to do that. +\end{description} + +\subsubsection{Siematic SPS Controllers} + + +Siematic SPS controllers are used at SinQ for handling all the things which +fit nowhere else. Such as operating air cushions on some instruments, +reading variables from ADC's, reading status of shutters or other parts of +the instrument and the like. Those SPS units have an RS-232 connector and +understand a simple ASCII command protocoll. + The Siematic SPS and its command protocoll are +special to PSI and this section is probably of no interest to SICS managers + outside. The SPS basiaclly support three operations: +\begin{itemize} +\item Push a button (Set a Digital I/O Bit). +\item Read a status of instrument status packed into a bit (Read Digital I/O) . +\item Read an ADC. +\end{itemize} + This is so user unfriendly that the usage of the SPS will mostly be packaged +into Tcl-macros. + +A SPS unit can be configured into the SICS server with the command:\newline +{\bf MakeSPS name macintosh port channel} \newline +The parameters are: the name of the SPS in SICS, the serial port server +computer, the port where the serial port server is listening and the +channel number of the SPS unit at the serial port server computer. An +example: \newline +MakeSPS sps1 lnsp25.psi.ch 4000 6 \newline +configures a SPS unit at lnsp25.psi.ch at channel 5. The serial port server +is listening at port number 4000. The SPS unit will be accessible as sps1 in +SICS. + +After configuartion the following four commands are understood by name, +shown with sps1 as example: +\begin{description} +\item[sps1 push byte bit] Corresponds to pushing the button mapped to the bit bit in the byte +byte. +\item[sps1 adc num] Reads the value in the ADC num. num can be between 0 to 7 for a maximum +of eight ADC's. Please note, that the values read are raw values which +usually must be converted in some way to physically meaningful values. +\item[sps1 status bit] Reads the status of the bit bit. bit can be in the range 0 - 128. +\item[sps1 stat2 byte bit] Reads the status bit bit in status byte byte. Is equivalent to status, +but adds some syntatctic sugar. +\end{description} +For all conversion factors, for all mappings of bytes and bits, consult the +electronician who coded the SPS. + +\subsubsection{General Controller Object and Choppers} + + +Chopper systems are handled via a generic controller object. This basicly +consists of two components: One object represents the actual +controller. This basic object allows to query parameters only. Then +there is for each parameter which can be controlled from SICS in this +controller an adapter object. These adapter object are virtual motors +which can be driven with the normal run or drive commands. Currently +two drivers for this scheme exists: one for a simulated device, the +other for the Dornier Chopper Controller at FOCUS. The first step when +initializing this system is the installation of the general controller +object into SICS. This is done with the commands: +\begin{verbatim} +MakeChopper name sim +MakeChopper name docho mac port channel +\end{verbatim} +The first command simply installs a simulated controller. +The second command install a controller with a driver for the FOCUS +Dornier Chopper system. Mac, port and channel are the usual Macintosh +terminal server parameters which describe where the chopper controller +is connected to through its RS-232 interface. After both commands the +controller is available as command name within SICS. + +A drivable parameter at this controller is installed with a command +similar to this: +\begin{verbatim} +ChopperAdapter vname cname pname lower upper +\end{verbatim} +vname is the name under which the virtual motor will appear in +SICS. cname is the name of the controller object installed into SICS +with the commands in the previous paragraph. pname is the name of the +drivable parameter in the controller. upper and lower are the upper +and lower limits for this parameter. More then one of these commands +can be given for each general controller. + +After this, the parameter can be modified by a command like: +\begin{verbatim} +drive vname newvalue +\end{verbatim} + +\subsection{ Motors} + + +The following commands are available to install motors into the system: +\begin{description} +\item[ Motor name SIM lowlim uplim err speed] This command creates a simulated +motor with the lower limits lowlim, the upper limit uplim, an ratio of +randomly generated errors err and a driving speed of speed. Use this for +testing and instrument simulation. If err is less then 0, the motor will +not create failures and thus can be used in a instrument simulation server. +\item[Motor name EL734 host port chan no ] This command creates a stepper motor named name which is controlled through a +El734 motor controller. The +parameters host, port, chan have the meanings defined above. no is the +number of the motor in the EL734 motor controller. +\item[Motor name EL734DC host port chan no ] This command creates an analog motor named name which is controlled + through a El734DC motor controller. The +parameters host, port, chan have the meanings defined above. no is the +number of the motor in the EL734DC motor controller. +\item[Motor name el734hp rs232controllername motornum] Creates a motor object name using the newer motor drivers which access + the motor controller directly, without the serial port server. + rs232controllername is the name of a connection to the motor controll which +has been set up with MakeRS232, above. Motornum is the number of the motor in + the controller. +\item[MakePIMotor name c804 pararray] Creates a motor name connected to a C804 motor controller from the + manufacturer Physik Instrumente. Pararray is a Tcl array holding the + initialization information. The follwoing elements are required in this + array: + \begin{description} \item[Computer, port, channel ] The standard connection parameters. + \item[upperlimit, lowerlimit ] The limits for this motor. + \item[motor ] The number of the motor in the motor controller. + \end{description} + \item[Motor name pipiezo pararray] Creates a piezo electric positioning device. Again the controller is a + Physik Instrumente controller. pararray has the same meaning as for the + C804 controller given above. +\item[Motor name ecb ecbcontroller ecb-number lowerlimit upperlimit] This creates a motor which is controlled through the Risoe ECB + electronic. The parameters: +\begin{description} +\item[ecbcontroller] The ECB controller to which this motor is connected to. See below +for more on ECB controllers. +\item[ecb-number] Number of the motor in the ECB system. +\item[lowerlimit] The lower hardware limit for this motors operation +\item[upperlimit] The upper hardware limit for this motors operation +\end{description} +In contrast to normal motors, the ECB motors have quite a number of +hardware parameters which must be configured. The general syntax to +configure them is: motorname parametername value. The following +parameters are available: +\begin{description} +\item[encoder] 0 if there is no encoder for this motor, 1-3 for the encoder used +for this motor. +\item[control] The control bit flag. This falg determines if the motor sets a +control bit in the ECB controller. This control bit can be used to +drive air cushions and the like. If required set to 1, else leave at +0. +\item[delay] Delay time to wait after setting a control bit. +\item[range] The speed range for the motor: 0 for slow, 1 for fast +\item[multi] The ECB controller supports up to 24 motors. In some instances +this is not enough. Then one ECB channel can be multiplexed into +several motors. This flag (),1) determines if this is the case. +\item[multchan] The multiplexer channel for a multiplexed motor. +\item[port] The ECB port a multiplexed motor is using. +\item[acceleration] The speed with which the motor accelerates to its final speed. +\item[rotation\_dir] Rotation direction of the motor. +\item[startspeed] Starting speed of the motor. +\item[maxspeed] The maximum speed for this motor. +\item[auto] Speed in automatic mode +\item[manuell] Speed used when driving the motor through the manual control box. +\item[offset] When using an encoder: the offset between the motor zero and the +encoder zero. +\item[dtolerance] hardware tolerance of the motor. +\item[step2dig] conversion factor from encoder steps to physical values. +\item[step2deg] Conversion factor from motor pseudo encoder steps to physical +values. +\item[backlash] In order to correct for backlash, Risoe motors always approach a +target position from the same direction. In order to do this the motor +has to overshoot and drive back when driving in the wrong +direction. The parameter backlash determines how much to overshoot. +\end{description} + ECB motors have another quirck: 8 motors in a rack share a power +supply! This has the consequence that only one of the 8 motors can run +at any given time. In SICS this is directed through the anticollider +module described elsewhere. +\end{description} + +\subsection{Counting Devices} + + +\begin{description}\item[MakeCounter name SIM failrate] This command creates a simulated single counter +accessible as object name. Failrate is the per centage of invocations +at which the counter will generate a random failure for testing error +treatment code. If failrate is less then 0, there are no +failures. This can be used in a instrument simulation server. +\item[MakeCounter name mcstas] Creates a counter which interoperates with a + McStas (cf.\ Section~\ref{f8}) simulation. Please note, + that the McStas module mccontrol must have been initialized before this initialization + can work. +\item[MakeCounter name EL737 host port chan ] This command creates a single +counter name, using an EL737 driver. The counter is at host host, listening +at port port and sits at serial port chan. +\item[MakeCounter name EL737hp terminalserver port] Creates a counter object name which uses the faster driver which connects + directly to the terminal server without the serial port server program. + Terminalserver is the name of the instruments terminal server. Port is the + port number at which the terminal server publishes the port at which the EL737 + controller is connected. Usually this 3000 + port number. +\item[ MakeCounter name ecb ecb-controller] Installs a counetr on top of the Risoe ECB hardware. The only +parameter is the name of the ECB controller to use. +\item[MakeHMControl name counter hm1 hm2 hm3] At some instruments (for instance TRICS) multiple counters or +histogram memories are controlled by a master counter which watches +over presets and the like. This command installs a virtual counter +which does exactly that. The parameters are: +\begin{description} +\item[name] The name of the virtual counter in SICS +\item[counter The name of the master counter] +\item[hm1, hm2, hm3] Up to three slave counting devices. +\end{description} +\end{description} + +\subsubsection{Histogram Memory} + + +Due to the large amount of parameters, histogram memories are configured +differently. A histogram memory object is created using a special +creation command. This command is described below. Then a lot of options need to +be configured. The commands used for setting these options and their meanings +are defined in the user documentation because histogram memories +may be reconfigured at runtime. The sequence of configuartion options is +ended with the command hmname init. This last command actually initialises the +HM. Histogram memory objects can be created using the command: +\begin{description} +\item[ MakeHM name type] The parameter name specifies the name under which the HM will be +avialable in the system. type specifies which type of driver to use. +Currently these drivers are supported: +\begin{description} +\item[SIM ] for a simulated HM +\item[SINQHM ] for the SINQ histogram memory +\item[tdc ] for the Risoe histogram memory. +\item[mcstas ] for the integration with the McStas (cf.\ Section~\ref{f8}) simulation. +\end{description} + Please care to note, that the SINQHM +requires a EL737 counter box for count control. This counter must have been +defined before creating the HM object. +\end{description} +As an example the configuration of a SINQHM HM with the name banana will be +shown: +\begin{verbatim} +MakeHM banana SINQHM +banana configure HistMode Normal +banana configure OverFlowMode Ceil +banana configure Rank 1 +banana configure dim0 400 +banana configure BinWidth 4 +banana preset 100. +banana CountMode Timer +banana configure HMComputer psds04.psi.ch +banana configure HMPort 2400 +banana configure Counter counter +banana init +\end{verbatim} + +\subsection{Velocity Selectors} + + +A velocity selector is configured in a three step process. First a Tcl array +is filled with the necessary configuration options for the actual velocity +selector driver. In a second step the +velocity selector is created with a special command. In a third step the +forbidden regions for the velocity selector are defined. Currently two +drivers for velocity selctors are known: a SIM driver for a simulated +velocity selector and a DORNIER driver for a Dornier velocity selector +hooked to a SINQ serial port setup. The last one needs a parameter array +containing the fields Host, Port, Channel and Timeout. Host, Port and +Channel have the meanings as defined at the very top of this section. +Timeout is the maximum time to wait for responses from the velocity selector. +A large value is required as the dornier velocity selector is very slow. +The second step is performed through the following commands: +\begin{description} +\item[VelocitySelector name tilt-motor SIM] This command installs a simulated velocity selector with the name name +into the system. tilt-motor is used for driving the tilt angle of the +selector. tilt-motor must exist before this command can be executed +successfully. +\item[VelocitySelector name tilt-motor DORNIER arrayname] This command installs a dornier velocity selector into the system. name +and tilt-motor have the same meanings as described above. arrayname is the +Tcl-array with the driver configuration parameters. +\end{description} + As an example the configuration of a dornier velocity selector named +nvs is shown: +\begin{verbatim} +set dornen(Host) lnsp25.psi.ch +set dornen(Port) 4000 +set dornen(Channel) 6 +set dornen(Timeout) 5000 +VelocitySelector nvs tilt DORNIER dornen +nvs add -20 28800 +nvs add 3800 4500 +nvs add 5900 6700 +nvs add 8100 9600 +\end{verbatim} + +% html: End of file: `hwini.htm' +% html: Beginning of file: `gencom.htm' + +\section{Initialization of General Commands} + +\label{f10} +This section gives details on the initialization of commands which are + common to many different instruments. The command set of SICS can be tailored + to cover many specific needs. Moreover this system allows to replace + functionality by other implementations suited to another users taste. This + is a list of common command initialization commands. +\begin{description} +\item[MakeRuenBuffer ] MakeRuenBuffer makes the R\"unBuffer system available. +\item[MakeBatchManager \mbox{$[$}name\mbox{$]$}] Installs the new batch buffer management system. If no name is +given, the default will be exe. +\item[MakeDrive] MakeDrive creates the drive and run command. +\item[ Publish name access] The SICS server uses Tcl as its internal macro language. However, it +was felt that the whole Tcl command set should not be available to all users +from the command line without any protection. There are reasons for this: + careless use of Tcl may clog up memory, thereby grinding the system to a + halt. Invalid Tcl statements may cause the server to hang. Last not least, + Tcl contains commands to manipulate files and access the operating system. + This is a potential security problem when the server is hacked. However, + in order to make macro procedures available the Publish + command exists. It makes a Tcl command name available to SICS users with the + access code access. Valid values for access are: Internal, Mugger, User + and Spy. +\item[TokenInit tokenpassword] This command initialises the token control management system with the +token command. The single parameter tokenpassword specifies the password for +the token force command. +\item[MakeOptimise name countername] This command installs the Peak Optimiser into the SICS server. The Peak +Optimiser is an object which can locate the maximum of a peak with respect +to several variables. The arguments are: name, the name under which the Peak +Optimiser can be accessed within SICS and countername, which is the name of +an already configured SICS counter box. +\item[MakeO2T nam OM 2TM] creates an omega 2Theta virtual motor +with name nam for omega 2Theta scans. OM defines an omega motor, 2TM a two +theta motor. +\item[MakeDataNumber SicsDataNumber filename] This command makes a +variable SicsDataNumber available which holds the current sequential data + file number. filename is the complete path to the file were this data +number is stored. This file should never, ever be edited without good +reason, i.e. resetting the sequential number to 0 at the beginning of a +year. +\item[MakeXYTable myname] Creates a XYTable object with the name myname. This object can store a + list of x-y values. +\item[MakeSinq] Install the listener module for the accelerator divisions broadcast + messages. This creates a command sinq. +\item[MakeMaximize counter] Installs a command max into SICS which implements a more efficient + algorithm for locating the maximum of a peak then scanning and peak or + center. +\item[MakeMaxDetector name] Installs name into SICS which implements a command for locating + maxima on a two dimensional histogram memory image. +\item[MakeLin2Ang name motor] Creates a virtual motor name which translates an input angle into a + translation along a tangent to the rotation axis. The distance of the + translation table can be configured as variable: name length once this + is established. +\item[MakeSWHPMotor realmotor switchscript mot1 mot2 mot3] Creates switched motors mot1, mot2 and mot3 for real motor + realmotor. For switching the script switchscript is used. This + can be used when several motors are operated through the same + motor driver. This implementation is not completely general now. +\end{description} + +\subsection{Monochromators} + + +A monochromator is represented in SICS through a monochromator object which + holds all the parameters associated with the monochromator and virtual + motors which drive wavelength or energy. The commands to configure such a + monochromator are: +\begin{description} +\item[MakeMono name M1 M2 M3 M4] This command creates a crystal monochromator object. Such a +monochromator object is necessary for the usage of the wavelength or energy +variables. The parameter name defines the name of the monochromator object +in the system. M1 and M2 are the names of the Theta and two Theta motors +respectively. M3 is an optional parameter defining a motor for driving the +horizontal curvature. M4 is an optional parameter defining a motor for +driving the vertical curvature of the monochromator. +\item[MakeWaveLength nam mono] creates a wavelength variable nam. The monochromator mono is used for +adjustment. +\item[MakeEnergy nam mono] creates a energy variable nam. The +monochromator mono is used for adjustment. +\item[MakeOscillator name motor] Installs a module name which oscillates motor between the software + limits of the motor. This is useful for suppressing preferred + orientation effects on powder diffractometers.name then supports the + commands: start, stop, status which are self explanatory. +\end{description} + +\subsection{Reoccuring Tasks} + + +Sometimes it may be necessary to execute a SICS command at regular +time intervalls. This can be achieved with the sicscron command: +\begin{description} +\item[sicscron intervall bla blab blab] This command installs a reoccuring task into SICS. The first +parameter is the intervall in seconds between calls to the SICS +command. Everything behind that is treated as the command to execute. +\end{description} + +\subsection{The SICS Online Help System} + + +SICS has a simple built in help system. Help text is stored in simple +ASCII text files which are printed to the client on demand. The help +system can search for help files in several directories. Typically one +would want one directory with general SICS help files and another one +with instrument specific help files. If help is invoked without any +options, a default help file is printed. This file is supposed to +contain a directory of available help topics together with a brief +description. The normal usage is: help topicname . The help system +will then search for a file named topicname.txt in its help +directories. + +A SICS manager will need to configure this help system. A new +directory can be added to the list of directories to search with the +command: +\begin{verbatim} +help configure adddir dirname +\end{verbatim} +The default help file can be specified with: +\begin{verbatim} +help configure defaultfile filename +\end{verbatim} +Each of these command given without a parameter print the current +settings. + +\subsection{Aliases in SICS} + + +SICS knows three different kinds of aliases: object aliases, +runtime aliases and command +aliases. This is confusing but finds its explanation in the structure +of SICS internals. + +\subsubsection{Object Aliases} + + +An object alias is another name for a first class object installed +into the SICS interpreter. For instance a second name for a motor. For +instance the motor twotheta is quite often aliased to a4. Such an +alias can be used like a normal SICS objects. Even in commands which +access internal SICS interfaces like the drive command or +others. Object aliases are installed into SICS with the SICSAlias +command: +\begin{description} +\item[SicsAlias oldname newname] This command installs newname as alias for the object oldname. +\end{description} + SicsAlias can only be used within initialization scripts. SicsAlias is + considered deprecated and can be replaced with the superior runtime + aliases described below. + +\subsubsection{Runtime Aliases} + + +Runtime aliases are full object aliases which can be configured into the + system at run time by a SICS manager. +The syntax looks like this: +\begin{description} +\item[DefineAlias aliasname SICSobject] This defines aliasname to be the alias for the SICS object SICSobject. + It is not needed that SICSobject already exists. If SICSobject is already + an alias, it is translated before definition. + Multiple translation is possible, depending on the order of definition. + When an alias is used, and it does not point to an existing object, + the behaviour is the same as if an unknown object would have been used. +\item[DefineAlias aliasname] This command deletes the alias aliasname. +\end{description} + +\subsubsection{Command Aliases} + + +Command aliases are shortcuts for lengthy commands. For instance one +might want to define A4LL as a shortcut for {\tt{}"{}}a4 softlowerlim{\tt{}"{}}. This is +just to save typing or adapt SICS to MAD users who appear to have an +unlimited memory for 2-4 letter acronyms. It is possible to redefine a +SICS object with this for instance to define tt as an alias for +temperature. However if one tries to use tt in a drive command it will +fail because it is just a text replacement. A command alias can be +installed into SICS at any time with manager privilege and the +command: +\begin{description} +\item[alias shortcut bla bla bla ....] This define shortcut as an alias for everything behind it. +\end{description} +A shortcut may take parameters. + +\subsection{The AntiCollision Module} + + +In some cases motors have to be drive in a coordinated way. For instance, + at TRICS, the chi motor may need to move first before omega can be + driven in order to avoid collisions. Or at the ECB instruments, only one + of eight motors in a rack can be driven at any given time. The anti collision + module now allows to implement this. Anticollisions pattern of + operation: Each + collaborating motor is registered with the anti collision module. When trying + to start such a motor, the anti collider just takes a note where it shoud go. + On the first status check, a program is called which has to + arrange the running of the motors into a sequence. This sequence then is + executed by the anti collision module. The program which arranges the + motors into a sequence is a configurable parameter and usually implemented + as a script in SICS own marco language. In the SICS initialization file this + requires the commands: +\begin{description} +\item[AntiCollisionInstall] Creates the anitcollision module. +\item[anticollision register motorname] Registers motorname with the anti collision module. +\item[anticollision script scriptname] This command configures the script which is responsible for + arranging the sequence of operations. +\end{description} +The script configured into anticollision is called with pairs + or motor names and targets as parameters, Example: +\begin{verbatim} +sans2rack mot1 target1 mot2 target2 ..... +\end{verbatim} +Within the anticollision script, the following command may be + used in order to define the sequence. +\begin{description} +\item[anticollision clear] Clears the sequence list +\item[anticollision add level motor target] Add motor with target to level in the sequence. +\end{description} + +% html: End of file: `gencom.htm' +% html: Beginning of file: `iscan.htm' + +\section{The Internal Scan Commands} + +\label{f11} +\subsection{Scan Concepts} + + +Scans in SICS involve an internal scan module and a lot of scripts which + wrap the internal scan module into a syntax liked by the users. + +The internal scan module in SICS evolved a little over time. It turned +out that scans +are a demanding job for a programmer because of the plethora of +special scans people wish to perform and the many data file formats which +have to be supported. This requires a very high degree of +configurability. Under several refactorings the internal scan command +has grown to become: +\begin{itemize} +\item A controller for the scan process. +\item A container to store scanned variables and counts during the +process of a scan. This includes commands to store and retrieve such +values. +\item A container for the configuration of the scan. A scan is +configured by specifying functions to be called at the various steps +during the scan. These are preconfigured to the standard scan +functions. An API is provided to replace some or all of the scan +functions by user defined ones. +\end{itemize} +The internal scan object is augmented by a library of standard scan +functions. The transition to the new model is not yet clean in order +not to break to much old code. + +The standard scan command can be configured into SICS using the command: +\begin{description} +\item[MakeScanCommand name countername headfile recoverfil] MakeScanCommand initialises the SICS internal scan command. It will be +accessible as name in the system. The next parameter is the name of a valid +counter object to use for counting. The next parameter is the full pathname of +a header description file. This file describes the contents of the header of +the data file. The format of this file is described below. The parameter +recoverfil is the full pathname of a file to store recover data. The internal +scan command writes the state of the scan to a file after each scan point. +This allows for restarting of aborted scans. +\end{description} + +The scan object (named here xxscan, but may have another name) understands +the following commands: +\begin{description} +\item[xxscan clear] clears the list of scan variables. Must be called before each scan with +different parameters. +\item[xxscan add name start step] This command adds the variable specified by the argument name to the +list of variables scanned in the next scan. The arguments start and step +define the starting point and the sptep width for the scan on this variable. +\item[xxscan run NP mode preset] Executes a scan. The arguments are: NP the number of scan points, mode +the counter mode to use (this can be either timer or monitor) and preset +which is the preset value for the counter. Scan data is written to an output +file. +\item[xxscan continue NP mode preset] Continues an interrupted scan. Used by the recovery feauture. +\item[xxscan silent NP mode preset] Executes a scan. The arguments are: NP the number of scan points, mode +the counter mode to use (this can be either timer or monitor) and preset +which is the preset value for the counter. The difference to run is, that +this scan does not produce an output file. +\item[xxscan recover] Recovers an aborted scan. The scan object writes a file with all data +necessary to continue the scan after each scan point. If for some reason a +scan has been aborted due to user intervention or a system failure, this +scheme allows to continue the scan when everything is alright again. This +works only if the scan has been started with run, not with silent. +\item[xxscan getfile] This command returns the name of the current data file. +\item[xxscan setchannel n] Sometimes it is required to scan not the counter but a monitor. This +command sets the channel to collect data from. The argument n is an integer +ID for the channel to use. +\item[xxscan getcounts] Retrieves the counts collected during the scan. +\item[xxscan getmonitor i] Prints the monitor values collected during the scan for the +monitor number i +\item[xxscan gettime] Prints the counting times for the scan points in the current scan. +\item[xxscan np] Prints the number of points in the current scan. +\item[xxscan getvardata n] This command retrieves the values of a scan variable during the scan +(the x axis). The argument n is the ID of the scan variable to retrieve data +for. ID is 0 for the first scan variable added, 1 for the second etc. +\item[xxscan noscanvar] Prints the number of scan variables +\item[xxscan getvarpar i] Prints the name , start and step of the scan variable number i +\item[xxscan interest] A SICS client can be automatically notified about scan progress. This is +switched on with this command. Three types of messages are sent: A string +NewScan on start of the scan, a string ScanEnd after the scan has finished +and a string scan.Counts = \{109292 8377 ...\} with the scan values after each +finished scan point. +\item[xxscan uuinterest] As above but the array of counts is transferred in UU encoded +format. +\item[xxscan dyninterest] As above but scan points are printed one by one as a list +containing: point number first\_scan\_var\_pos counts. +\item[xxscan uninterest] Uninterest switches automatic notification about scan progress off. +\item[xxscan integrate] Calculates the integrated intensity of the peak and the variance of the +intensity for the last scan. Returns either an error, when insufficient scan +data is available or a pair of numbers. Peak integration is performed along +the method described by Grant and Gabe in J. Appl. Cryst. (1978), 11, +114-120. +\item[xxscan window \mbox{$[$}newval\mbox{$]$}] Peak Integration uses a window in order to determine if it is still in the +peak or in background. This command allows to request the size of this +window (without argument) or set it (with argument giving the new window +size). +\item[xxscan simscan pos FWHM height] This is a debugging command. It simulates scan data with a hundred +points between an x axis ranging from 10 to 20. A gauss peak is produced +from the arguments given: pos denotes the position of the peak maximum, FWHM +is the full width at half maximum for the peak and height is its height. +\item[xxscan command tclcommand] Sets the tcl command procedure to invoke at each scan point. See below + for the description of user defined scans (Old Style). + Invoked without argument command + returns the name of the current command procedure. +\item[xxscan configure mode] Configures the several possible scan modes for the scan +object. Currently there are two: +\begin{itemize} +\item {\bf standard}, the default mode writing ASCII files. +\item {\bf amor}, a special mode the reflectometer AMOR which writes +NeXus files. +\item {\bf script} Scan functions are overriden by the user. +\item {\bf soft} The scan stores and saves software zero point corrected + motor positions. The standard is to save the hardware positions as + read from the motor controller. +\item {\bf user} configures the old style user overridable scans. +\end{itemize} +\item[xxscan storecounts counts time mon1 mon2 ...] This stores an entry of count values into the scan data +structure. To be used from user defined scan functions. The scan +pointer is incremented by one. +\item[xxscan storecounter ] Store the counts and monitors in the counter object configured for +the scan into the scan data structure. Increments the scan pointer by +one. +\item[xxscan appendvarpos i pos ] Append pos to the array of positions for scan variable i. To be +used from user defined scan functions. +\item[xxscan callback scanstart \mbox{$|$} scanpoint \mbox{$|$} scanend] Triggers callbacks configured on the scan object. May be used by +user functions implementing own scan loops. +\item[xxscan function list] Lists the available configurable function names. The calling style +of these functions is described in the next section about stdscan. +\item[xxscan function functionname] Returns the currently configured function for functionname. +\item[xxscan function functionname newfunctionname] Sets a new function to be called for the function functionname in +the scan. +\end{description} + +\subsection{User Definable Scan Functions} + + +The last commands in the last section allowed to overload the +functions implementing various operations during the scan with user +defined methods. This section is the reference for these +functions. The following operations during a scan be configured: +\begin{description} +\item[writeheader] Is supposed to write the header of the data file +\item[prepare ] Prepare does all the necessary operations necessary before a scan +starts. +\item[drive] Is called to drive to the next scan point +\item[count ] Is called at each scan point to perform the counting operation +\item[collect] Is called for each scan point. This function is supposed to store +the scan data into the scan data structure. +\item[writepoint] Is called for each scan point and is meant to print information +about the scan point to the data ile and to the user. +\item[finish] Is called after the scan finishes and may be used to dump a data file + or perform other clean up operations after a scan. +\item[userdata] This is the name of a user defined object which may be used to +store user data for the scan. +\end{description} +The exact invocations of the functions: +\begin{itemize} +\item writeheader scanobjectname userobjectname +\item prepare scanobjectname userobjectname +\item drive scanobjectname userobjectname point +\item count scanobjectname userobjectname point mode preset +\item collect scanobjectname userobjectname point +\item writepoint scanobjectname userobjectname point +\item finish scanobjectname userobjname +\end{itemize} +scanobjectname is the name of the scan object invoking the +function. This can be used for querying the scan +object. userobjectname is the name of a entity as specified as +userdata in the configuration. point is the number of the current scan point. + +\subsection{User Defined Scans(Old Style)} + + +This feauture allows to override only the counting operation during a scan. + This feauture is deprecated in favour of the user overridable scan functions + described above. As it is still used, however, here is the documentation + for reference. + +In some cases users wish to control the scan more closely, i.e. do +multiple counting operations at the same point etc. This is especially +true when magnets are involved. In order to do this a facility has +been provided which allows the user to specify a macro routine which +is called at each point. This macro routine then performs all +necessary operations and then is responsible for storing its data. In +order to allow for this commands have been defined which allow to append +a line to the scan data file and to store measured data in the scan data +structure. The last feature is necessary in order to make scan status +displays and scan analysis, such as center detection, work. The +following steps are required: +\begin{enumerate} +\item Write a suitable macro procedure for the actions required at each +scan point. The procedure signature looks like this: +\begin{verbatim} +proc myScanPoint {point} { +} +\end{verbatim} + And will be called with the number of the current scan point as +a parameter. Besides all usual Tcl and SICS commands the following +special commands may be used: +\begin{description} +\item[xxxscan line text] Appends all the text after line to the scan data file. +\item[xxxscan storecounts c1 c2 c3 c4 ...] Stores the first number given as count data, all the others as +monitor values in the internal scan data structure. + \end{description} + \item Test the procedure. +\item Switch the internal scan command command into user scan mode with +the command: +{\bf xxxscan configure user} +\item Assign your procedure to the internal scan command with the +command: {\bf xxxscan command myScanPoint} +\item Use normal scan commands for doing your scan. +\item Switch the internal scan command into normal mode with the +command: +{\bf xxxscan configure standard}. +\end{enumerate} +In all this replace xxxscan with the name of the internal scan +command. + +\subsection{The Scan Command Header Description File} + + +As if all this configurability is not enough, there is another + level of configurability. +The SICS internal scan command allows to configure the contents of + the header of +the ASCII scan data file through a template header file. This is only + possible when the scan functions are left in their default configuration. + If scan functions are overloaded it is the users repsonsability to take + care of data file writing. +This section describes +the contents of the template file. This header description file + consists of normal +text mixed with a few special keywords. The normal test will be copied to +output verbatim. The keywords indicate that their place will be replaced by +values at run time. Currently only one keyword per line is supported. +Keywords recognized are: +\begin{description} +\item[!!DATE!!] Will be replaced with the file creation date. +\item[!!VAR(name)!!] Will be replaced with the value of the SICS variable name. +\item[!!DRIV(name)!!] Will be replaced with the value drivable variable name. Drivable variables are +all motors and all variables which may be used in a drive or run command. +\item[!!ZERO(name)!!] Will be replaced with the value of the softzero point for motor name. +\item[!!FILE!!] Will be replaced by the creation name of the file. +\end{description} +Please note that text behind such a keyword in the line will not be copied to +the output. + +\subsection{Differential Scans} + + +When aligning or when searching peaks a very fast scan is +required. This is the differential scan. It starts a motor and +collects counts while the motor is running. The counts collected are +the monitor normalized difference to the previous reading. This +functionality can be configured into SICS with the command: +\begin{verbatim} +MakeDiffScan +\end{verbatim} + in the configuration file. An optional parameter defines +another name then diffscan (the default) for this object. Differential +scans can only be run against one motor as it cannot be guaranteed that +motors involved in a coordinated movement operate at the same speed + without mechanical coupling. The +procedure to use diffscan is: +\begin{itemize} +\item Configure a scan variable into a SICS scan object: xxscan add var +start step +\item Run diffscan as: diffscan scanobjectname end\_position\_of\_scan +This runs the differential scan. Scanobjectname is the name of a SICS +internal scan object. It will be used to store the results of the +scan. While the scan is running some basic information is printed. The +scan will range from the start given in the xxscan add command to the +end position given in this call. +\end{itemize} +The diffscan object has two configurable parameters: +\begin{description} +\item[monitor] The monitor number to normalize against. For maximum precision +this should be a monitor with a lot of intensity on it. +\item[skip] The number of SICS main loop cycles to skip between readings. This +can be used to control the amount of data generated during a +differential scan. This may become a problem if there is fast hardware. +\end{description} + A word of warning: positions found in differential scans may not be +totally correct. The differential scan might even miss peaks when the +relationship between motor speed and sampling rate is bad. + +Diffscan is usally wrapped in a common script command: +\begin{description} +\item[fastscan motor start stop speed] which does a fast scan for motor from start to stop. Before the scan + the motors speed is set to speed. The motor is set to its original speed + after termination of the scan. +\end{description} +This script can be copied from one of the older instrument command files. + +\subsection{Peak Analysis} + + +There are several other feautures which can be configured into SICS + which interact very closely with the scan module: +\begin{description} +\item[MakePeakCenter scancommand] MakePeakCenter initialises the peak analysis commands peak and center. The +only parameter is the name of the internal scan command. +\end{description} + +\subsection{Common Scan Scripts} + + +There exists a library of script functions around the scan module which are + commonly used. They provide an object oriented wrapper around the internal + scan command and the {\bf cscan} and {\bf sscan} commands. These + commands can be made available by including the scancommand.tcl file into + the instruments configuration file. +% html: End of file: `iscan.htm' +% html: Beginning of file: `nxscript.htm' + +\section{Scripting NeXus Files} + +\label{f12} +This section describes the scripting interface to NeXus +files, called nxscript. Scripting the generation of NeXus files has +the advantage that +it can be customised very quickly to special needs. Moreover it might +help to reduce the amount of instrument specific code required for an +instrument. This scripting interface uses the NeXus dictionary API for +the actual writing process. This has the following consequences: +\begin{itemize} +\item The interface needs two filenames: the +NeXus filename and the dictionary filename when opening files. +\item Writing commands have the general form: alias object. This means +that object is written to the NeXus file using the specified alias. +\item Another property is that some writing commands write several bits +of information in one go. In such cases the aliases for the additional +bits are derived from the base alias by appending specific +strings. Thus dictionary files need to have a special form for this +scripting interface to work. +\item Nxscript also tries to figure out the dimensions of +multidimensional datasets such as histogram memories by itself. In +such cases the dimension attribute in the dictionary file must be +omitted. +\item Nxscript assumes the following policy for data writing: +irrespective of errors write everything you can. Thus this interface +will complain bitterly and verbosely if something does not work, but +never return an error. +\end{itemize} + +\subsection{Usage} + + +Before this facility can be used nxscript has to be installed into the +SICServer from the instrument configuration file. This is done through +the command: +\begin{description} +\item[MakeNXScript ?name? ] This creates a NeXus scripting object. If the name is omitted, an +object named nxscript is created. If a name is given, this name is +used for the scripting object. Having scripting objects with different +names is also the only possibility to have more then one NeXus file +writing operation going at a given time. +\end{description} +In the following sections it is assumed that an object {\bf nxscript} +had been configured into SICS. + +\subsubsection{File Opening and Closing} + + +\begin{description}\item[nxscript create5 nexusFile dictFile] Creates a new NeXus file based on HDF-5 with the name +nexusFile. The dictionary file dictFile is used. +\item[nxscript create4 nexusFile dictFile] Creates a new NeXus file based on HDF-4 with the name +nexusFile. The dictionary file dictFile is used. +\item[nxscript createxml nexusFile dictFile] Creates a new NeXus file based on XML with the name +nexusFile. The dictionary file dictFile is used. +\item[nxscript reopen nexusFile dictFile] Reopens an existing NeXus with the name +nexusFile for modification or appending. +The dictionary file dictFile is used. +\item[nxscript close] Closes the current NeXus file. This command MUST be given at the +end of each script in order to make sure that all data is written +properly to disk. +\end{description} + +\subsubsection{Writing Things} + + +\begin{description}\item[nxscript puttext alias bla bla bla ....] Writes everything after alias as text data to the alias. The +definition string for the alias should not contain a dimension +description, this is automatically appended. +\item[nxscript putfloat alias value] Writes a single floating point value to alias alias. +\item[nxscript putint alias value] Writes a single integer value to alias alias. +\item[nxscript updatedictvar alias value] Updates the dictionary value alis to value. +\item[nscript putmot aliasName motorName] Writes the position of the motor motorName into the NeXus file as +described by aliasName. Theposition is a zero point corrected position. If +another alias aliasname\_null exists in the dictionary, the zero +point of the motor is also written to file. +\item[nxscript putcounter aliasBase counterName] Writes counter data to a NeXus file. Data is taken from the single +counter counterName. What is written depends on the aliases present in +the dictionary file: +\begin{description} +\item[aliasBase\_preset] The preset value. +\item[aliasBase\_mode] The counter mode +\item[aliasBase\_time] The actual time counted, without breaks due to insufficient beam. +\item[aliasbase\_00 ... aliasBase\_09] The monitor readings for monitors 0 to 9. Please note that 00 +would denote the normal counting tube at a scanning type of +experiment. +\end{description} +\item[nxscript puthm hmAlias hmName ?start? ?length?] Writes data from the histogram memory hmName to a NeXus file using +the alias hmAlias. Nxscript automatically updates the dim0, dim1, ..., timedim +dictionary variables. Thus these can be used to define the dimensions in the +dictionary file. +If the optional parameters start and end are given, a +subset of the data is written. It is the users responsability that the +values requested make sense to the histogram memory. In the case of +subset writing, the dimensions have to be specified in the definition +string belonging to the alias. Nxscript sets a variable timedim in the +dictionary though which contains the length of a time binning if +appropriate. This is a special feauture for writing extra detectors at +SANS and AMOR. +\item[nxscript puttimebinning aliasName hmName] Writes the time binning at histogram memory hmName to file using +the alias aliasName. The length of the time binning data is +automatically appended to the definition string for the alias. +\item[nxscript putarray aliasName arrayName length] Writes the Tcl array arrayName to file using the aliasName. The +definiton string belonging to aliasName does not need to contain a +-dim argument as this is set by this routine. The parameter length is +the length of the array. Only rank 1 arrays are supported. +\item[nxsript putglobal attName bla bla bla] This writes an global attribute attName. Everything after attName +is concatenated to a string which then respresents the value of the +attribute. +\item[nxscript makelink targetAlias victimAlias] This creates a symbolic link for victimAlias in the group +designated by targetAlias. +\end{description} + +\section{Automatic Updating of NeXus Files} + + +Some instruments perform measurements for quite long counting +times. In such cases it is advisable to save the data measured so far +to file in order to protect against hardware or software failures. To +this purpose an automatic file upgrade manager is provided. On +installation the automatic update object is connected wth a counting +device through the the callback interface. This makes sure that the +update manager is automatically notified when counting starts or +finishes. + +\subsection{Prerequisites for Using the Automatic Update Manager} + + +In order to use automatic updating, three programs must be +provided. Each of these programs can be a script which uses the +nxscript facility. It can also be a SICS command. +\begin{description} +\item[startScript] This program is supposed to write the static part of the file. It +is called once when the file is created. +\item[updateScript] This program is supposed to create and update the variable data +elements in the NeXus file. This is called frequently. +\item[linkScript] This program is supposed to create the links within the NeXus +file. This is called once after startscript and updateScript have been +run. +\end{description} + +\subsection{Installing Automatic Update} + + +An automatic update object is installed into SICS with: +\begin{verbatim} +updatefactory name countername +\end{verbatim} +name is a placeholder for the name under which SICS knows the +automatic update object. name is available as a SICS command later on. + countername is a placeholder for a counter +object (counter or HM) which triggers automatic updating of NeXus +files. This object has to support both the countable and callback +interfaces of SICS. Suitable SICS objects include counter and +histogram memory objects. + +\subsection{Configuring Automatic Update} + + +The SICS command created with updatefactory (see above) supports a few +parameters which allow for the configuration of the whole +process. Parameters follow the normal SICS syntax. Futhermore there is +a subcommand list, which lists all configuration +parameters. Supported parameters are: +\begin{description} +\item[startScript] The program supposed to write the static part of the file. +\item[updateScript] The program supposed to create and update the variable data +elements in the NeXus file. +\item[linkScript] This program supposed to create the links within the NeXus +file. +\item[updateintervall] The time intervall in seconds between updates. The defualt is +1200, eg. 20 minutes. +\end{description} + +% html: End of file: `nxscript.htm' +\section{Instrument Specific SICS Initializations} +% html: Beginning of file: `four.htm' + +\subsection{Initialization for Four Circle Diffractometers} + +\label{f13} +This section describes how the modules which are special for a four + circle single crystal diffractometer are configured into SICS. The + following feautures are available: +\begin{description} +\item[MakeHKL theta omega chi phi] MakeHKL creates the hkl command for the calculation of settings for a four +circle diffractometer. The four parameters are the names of the motors +driving the two theta, omega, chi and phi circles of the diffractometer. +These motors must already exists before this command may succeed. +\item[MakeHKLMot hkl] Creates the drivable H, k, l virtual motors using hkl, an + object created by MakeHKL for calculations. +\item[MakeDifrac tth om chi phi cter] This command installs the Difrac subsystem into SICS. Difrac is a +whole F77 package for controlling a four circle +diffractometer. Afterwards Difrac commands are available in SICS with +the prefix dif, for example dif ah calls the difrac ah command. Difrac +is described in more detail elsewhere. The parameters are the four +circle motors two theta, omega, chi and phi and the counter. This is no longer + maintained. +\item[MakeMesure name scanobject hklobject omega s2t fileroot datanumberobject] MakeMesure installs the single counter four circle diffractometer +measurement procedure into SICS. It will be accessible as object name +afterwards. MakeMesure takes a lot of parameters: +\begin{description} +\item[scanobject] The name of the internal scan object. +\item[hklobject] The name of the object which does crystallographic calculations. +\item[omega] The name of the motor driving omega. +\item[s2t] The name of the two theta motor for use in omega two theta scans. +\item[fileroot] The full path to the data file directory without final / +\item[datanumberobject] The name of the SICS data number object for creating unique file +numbers. +\end{description} +\item[MakeUBCalc name hklobject] This installs a UB matrix calculation module with the name name + into SICS. The second parameter is a hklobject as created with MakeHKL + to which any calculated UB's can be transferred. +\item[MakeHklscan scanobject hklobject] Installs the hklscan command which allows to scan in reciprocal space. +Scanobject is the name of SICS internal scan object, hklobject the name of a + reciprocal space calculation object as configured with MakeHKL. +\item[MakeTRICSSupport] Installs a command, tricssupport, which helps the TRICS status + display. +\end{description} + +Commands implemented by tricssupport: +\begin{description} +\item[tricssupport oldframe file idet nFrame] Loads and sends the frame nFrame of detector idet from file file in + UUencoded form. +\item[tricssupport interest] Enables this connection to receive notifications whenever a new frame + of data had been written +\item[tricssupport newframe] Called from scripts. Triggers sending new frames to all registered + connections. +\end{description} +There are also a lot of scripted command available for four circle + diffractometers. These may be copied from tricscom.tcl. These include: +\begin{description} +\item[four] print the four all important angles +\item[tricsscan start step np] Omega scan with a PSD +\item[psdrefscan file step np mode preset] Read reflections from file, drive to them, do a omega scan with tricsscan + using the parameters specified. +\item[detscan start step np] Do a detector calibration scan. +\item[phscan start step np] Do a phi scan +\item[hklscan2d] Scanning reciprocal space with the area detector +\item[scan2d] Configure SICS for general scanning with the PSD. This is meant + to supersede many of the special scans above. +\item[scan1d ] Configure SICS for general scanning with the single detector. +\end{description} + +% html: End of file: `four.htm' +% html: Beginning of file: `tas.htm' + +\subsection{Triple Axis Spectrometer Specific Commands} + +\label{f14} +One aim for the implementation of the triple axis spectrometer in SICS + was to implement as closely as possible the command set of the ILL program + MAD. For this, there are two implementations: an older one where + most things werde done in C-code. And a newer one which implements + a relaxter MAD emulation. The problem with the MAD emulation is that + MAD relies on the order of variables and motors in memory. The newer + MAD emulation obeys this only for the qh, qk, ql and en variables. + This section describes the newer more portable TAS setup. There are + some C-modules and a lots of scripts which implement the MAD emulation. + +The TAS requires the following initializations in its instrument file: +\begin{description} +\item[MakeTasUB tasub] Installs the TAS crystallographic calculation module into SICS. It will + have the name tasub (recommended). +\item[MakeTasScan iscan tasub] Installs the module with the TAS specific scan functions into SICS. The + TAS implements its own data format resembling the ILL TAS data format. +\end{description} +Moreover it is required to add the peak center module, drive, exe and a lot of + variables: polfile, alf1-4, bet1-4, ETAM ETAS ETAA. + +The scripts for the MAD emulation live in the file tasubcom.tcl. This file + will need little editing in order to cope with another triple axis machine, + just a couple of path variables will need to be changed. +% html: End of file: `tas.htm' +% html: Beginning of file: `amor.htm' + +\subsection{Special Commands for the Reflectometer (AMOR)} + +\label{f15} +There are some special command initializations for the reflectometer AMOR. + These commands are most likely not portable to other instruments because + they encompass the special geometry at AMOR and the AMOR development has + not fully matured. The following initialization commands are available: +\begin{description} +\item[MakeAmor2T name da] This creates a virtual two theta motor for the reflectometer +AMOR. The two parameters are the name of the object in SICS and a +Tcl-array with configuration parameters. The needed elements of this +array are: +\begin{description} +\item[mom] The monochromator omega motor. +\item[som] The sample omega motor. +\item[coz] The height movement of the detector. +\item[cox] The movement of the detector along the optical bench. +\item[stz ] The height movement of the sample connected to the omega circle. +\item[soz] The height movement of the sample table. +\item[d4b] The motor moving the whole diaphragm 4 up. +\item[d5b] The motor moving the whole diaphragm 5 up. +\item[com] The omega mevement of the detector. +\end{description} + An example: +\begin{verbatim} +set a2t(mom) mom +set a2t(som) som +set a2t(coz) coz +set a2t(cox) cox +set a2t(stz) stz +set a2t(soz) soz +set a2t(d4b) d4b +set a2t(d5b) d5b +set a2t(com) com +MakeAmor2T a2t a2t +\end{verbatim} +creates a virtual AMOR two theta motor with the name a2t. +\item[MakeStoreAmor hm] Creates an object for writing reflectometer data files. The name +of the command is storeamor. The parameter hm denotes the histogram +memory object. +\item[MakeAmorStatus name scan hm] This creates a helper object for the reflectometer status display +with name name. This object performs some operations on behalf of the +status display for the reflectometer AMOR. The parameter scan denotes +the name of the scan object. The parameter hm the name of the +histogram memory object. +\end{description} + +\subsubsection{AMOR Status Display Commands} + + +MakeAmorStatus creates a SICS command which is used by the AMOR status + display for displaying proceesed data, especially in TOF-mode. This module + provides the following commands: +\begin{description} +\item[amorstatus interest] This registers this connection for receiving automatic +notifications. Automatic notifications send are: +\begin{description} +\item[SCANSTART] At scan start a message {\bf ScanClear} is sent followed by the +uuencoded new x-axis for the plot. +\item[SCANPOINT] At each scan point the arrays of counts in both detector are sent +in uuencoded form labelled arrow\_spinupup and arrow\_spinuplo. +\item[COUNTSTART] The start of counting on the histogram memory. Send a message +{\bf TOFClear} and then the uuencoded time binning labelled +arrow\_time. +\item[FILELOADED] activated each time user defined model data is loaded into the +SICS server. This data gets send as arrow\_name in uuencoded form. Both +x- and y-axis are sent in floating point. +\end{description} +Please note that floating point data is transformed to fixed point by +multiplication of 65653 before transfer. The first number in each +uuencoded message is an integer describing the length of the data. In +case of double data such as fileloaded the y-data follows immediatetly +after the x-data. Also the appropriate data is automatically sent after +the interest command. +\item[amorstatus collapse] sums all counts in all detectors in time and sends the data back +as an uuencoded image. The first two numbers in the message define the +dimensions of the data. +\item[amorstatus sample name x1 x2 y1 y2] Sums the detector counts on an area defined by the rectangle x1, +x2, y1, y2. The length of this is the time binning. The data is sent +back in uuencoded form labelled arrow\_name. +\item[amorstatus clear] Clears all user loaded data. +\item[amorstatus load filename scale] loads user defined data for distribution to the status display +clients. The y data is scaled according to the scale factor provided. +\item[amorstatus projectytof] Returns a UUencoded 2D array of y against TOF. +\end{description} + +% html: End of file: `amor.htm' +% html: Beginning of file: `sans.htm' + +\subsection{SANS Special Commands} + +\label{f16} +Some special initializations for SANS Instruments: +\begin{description} +\item[ MakeMulti name] SANS uses a special syntax feature where several motors are grouped into a + component group. For example beamstop or detector. MakeMulti creates such a +group with the name name. Once such a group has been created, it has to be +configured. For this a few configuration commands are available: +\begin{description} +\item[name alias motname compname] This command makes motor motname available as component motor compname. +For example: {\bf bs alias bsx x} makes motor bsx available as x in the beamstop +group. Then the bsx motor can be driven by the command {\bf bx x = 12.}. +\item[ name pos posname motname value motname value ....] The group command supports the notion of named positions. This means that +a special combination of angles can be accessed through a name. This commands +defines such a named position with the name posname. posname is followed by pairs +of motorname value which define the position. +\item[name endconfig] Once a group has been completely defined the configuration process must be +ended with endconfig. +\end{description} +\item[MakeSANSWave name velo\_name] > Installs a velocity selector wavelength variable into SICS. The +variable will have the name given as first parameter. Usually lambda is a +good idea. The second parameter, velo\_name, is the name of the velocity +selector which is controlled by this wavelength variable. This module contains + a hard coded formula which may only be applicable to the SANS at PSI. +\item[MakePSDFrame] This installs a command into SICS which allows to retrieve a detector + image from the histogram memory, even in TOF-mode. +\end{description} +Many other commands for controlling collimators, attenuators, beamstops + and shutters are implemented in Tcl. These commands use non standardizable + hardware such as the Siematic SPS. +% html: End of file: `sans.htm' +% html: Beginning of file: `focus.htm' + +\subsection{Special FOCUS Initializations} + +\label{f17} +These initailizations are special to the FOCUS instrument: +\begin{description} +\item[InstallFocusmerge datafile] Installs the module which is responsible for merging focus data into + merged detector banks. +\item[MakeFocusAverager average hmc] Installs the average command and the focusraw command into SICS which + are used by the FOCUS status client in order to display processed + histogram memory data. +\end{description} + +\subsubsection{Special Internal FOCUS Support Commands} + + +\begin{description}\item[focusraw bankid] Dumps in UUencoded form the content of the detector bank bankid. This is +required in order to add the TOF-binning to the data and in order to handle + the virtual merged detector bank which is built from contributions of the + three physical detector banks. +\item[average start stop bankid] Sums the detectors between start and stop of detector bankid into a + histogram. A standard display in the status client. +\item[focusmerge puttwotheta nxscriptmod bankname alias] Writes two theta values for the detector bank bankname into + the file described by the nxscript module nxsciptmod to the + alias alias. A helper function for data file writing. +\item[focusmerge putmerged nxscriptmod alias] Writes the virtual merged detector bank into alias in + nxscriptmod. +\item[focusmerge putsum nxscriptmod bankname alias] Writes the summed counts for detector bank bankname under alias + into nxscriptmod. +\item[focusmerge putelastic nxscriptmod alias theoelastic] Calculate the position of the elastic line and write it to alias in + nxscriptmod. If no elastic line can be calculated, the theoretical + elastic line, theoelastic, is used. +\end{description} + +% html: End of file: `focus.htm' + +% html: Beginning of file: `macroman.htm' + +\chapter{Programming SICS Macros} + +\label{f18} +The SICS server has a built in macro language. This macro language is basically +John Ousterhout's Tool Command Language Tcl. Tcl is described elsewhere. +A sound knowledge of Tcl is required for programming SICS macros. The SICS macro +language can be used for the following purposes: +\begin{itemize} +\item Add hoc measurement procedures. +\item Trial measurement procedures. +\item Syntax adaptions to one's own favourite syntax. +\item Building of more complex commands from the SICS primitives. +\end{itemize} +The general procedure for defining a macro requires defining the macro in a new +file, source this file from the configuration script and the use of the Publish +command to make it available. New commands can best be defined as Tcl procedures, + but the obTcl object oriented extension to Tcl is known to work as well. The SICS +macro language allows to access: +\begin{itemize} +\item Most Tcl commands. +\item All SICS commands. +\end{itemize} +In the following sections a few pecularities of the SICS macro system will be +discussed. + +\section{Input/Output} + + +It would be quite verbose and confusing for the user if all output from SICS +commands called from a macro would appear on the screen during macro execution. +Therefore all +normal SICS output to a client is suppressed while executing a macro. Except + error messages and warnings which will always be written to the +client executing the macro. The output of a SICS command is available within the +macro script through the normal Tcl mechanism as a return value. This allows for +processing of SICS output within a macro. If the output to the client executing +the macro is required this can be done with the ClientPut command, detailed in the +user documentation. + +\section{Error Handling} + + +Tcl has the feature that it aborts execution of a script when an error occurs. +If a macro script needs to handle errors either from Tcl or from SICS commands +this can be achieved by using the Tcl catch mechanism. + +If things are seriously wrong or the users wishes to interrupt an operation + SICS interrupts are used. Scripts implementing measurement procedures may +need to test and even modify interrupt values. +A script can inquire the current interrupt value of the +connection with the command {\bf GetInt}. If a script can handle an error condition +it may set the interrupt on the connection object with the {\bf SetInt} command. +The textual representations of interrupts for these commands are: +continue, abortop, abortscan, abortbatch, halt, free, end. + +\section{Interacting with SICS within a Script} + + +There exist a few commands which allow to inquire or manipulate SICS +internals. Most of these commands are only available in macro scripts. +\begin{description} +\item[SICSType thing.] SICSType lets SICS find out if thing has some meaning within SICS. Possible return +values are: DRIV for a drivable variable, COM for a SICS command, NUM for a numeric +value and TEXT for anything else. +\item[SICSBounds var newval] SICSBounds checks if newval violates the hardware or software limits of +the variable var. +\item[SetStatus newval] SetStatus sets the SICS status line to a new value. Possible values for +newval are: Eager, UserWait, Count, NoBeam, Paused, Driving, Running, +Scanning, Batch, Halt, Dead. +\item[SICSStatus var] SICSStatus returns a integer value representing the current status of +the object var. var must be a drivable or countable object. The integer code returned +are defined in the SICS programmers documentation. +\end{description} + +\section{SICS Interfaces in Tcl} + + +Work has begun to implement SICS internal interfaces in Tcl. This opens the + port for writing even device drivers in Tcl. Another use is to define + virtual motors quickly in Tcl. At the time of writing, July 2005, this + is only developed for the object interface and the drivable interface. + For the meaning of internal SICS interfaces please consult the SICS + programmers documentation. Be warned: with the feautures described in this + section, you can mess up SICS badly. + +\subsection{The Object Interface} + + +\begin{description}\item[MakeTclInt name] Creates an object name. This object then understands the following + commands: + \begin{description} \item[ name savescript scriptname ] Configures a script which will be called when it is time to dump + the status of the SICS server. This script will be called with the + name of the object as its only parameter. + \item[name backup bla bla bla.... ] To be used from savescripts. Writes everything behind backup into the + status file. + \end{description} + The use of this facility is to place special commands into the status file + which may, for instance, request calculations to be made or drive parameters + not caught in the standard SICS objects to special values. For example: + at SANS2 this is used in order to store attenuator and collimator + values. Both are implemented as scripted commands and thus do take part + in the standard SICS object saving scheme. +\end{description} + +\subsection{Overriding the Drivable Interface with Tcl} + + +The drivable interface of any given drivable object can be overriden with + tcl functions. This includes an object created with MakeTclInt. The syntax is: +\begin{description} +\item[TclReplaceDrivable objname key scriptname tclName] This replaces the drivable interface function defined by key with the + script scriptname in the driveable interface of the SICS object object. + tclName is the name of an arbitrary Tcl object which can hold user data. + Possible function keys and their function signatures are: + \begin{description} \item[halt ] haltscript, no parameters + \item[checklimits ] checklimitsscript targetvalue + \item[setvalue ] setvaluscript targetvalue + \item[checkstatus ] checkstatusscript, no parameters + \item[getvalue ] getvaluescript, no parameters + \end{description} + All procedures, excpet getvaluescript, are supposed to return the + approriate SICS return codes (HW*) as integer numbers. Getvaluescript + is supposed to return the position of the device. +\item[TclDrivableInvoke objname key] A debugging aid: Invokes the scripted function denoted by key of the + object objname and prints the results. The function keys are the same + as given above. +\end{description} + +% html: End of file: `macroman.htm' + +% html: Beginning of file: `mcstas.htm' + +\chapter{The McStas SICS Interface} + +\label{f8} +It is useful to drive a simulation of an instrument with the same interface as is used at +the original instruments. One of the better packages for performing simulations of neutron +scattering instruments, including samples, is McStas. This section describes the SICS +interface to McStas simulations. The interface consists of three parts: +\begin{itemize} +\item A McStas controller module which controls the actual simulation. +\item A McStas reader which is responsible for reading simulated data into + SICS counters and histogram memories. + \item Counter and histogram memory drivers which redirect their actions to the + McStas controller module. +\end{itemize} +The general ideas is that all parameters are handled through the normal SICS simulation + drivers. The counting operations, however, are linked with the McStas simulation. In order + to be portable, many aspects are controlled by scripts. These scripts are configured at the + McStas Controller. Several scripts must be defined: +\begin{description} +\item[startmcstas] This script will be invoked when counting starts and has to collect the necessary + settings from SICS, construct a McStas command line and start the simulation. As a return + value this script has to return the PID of the started mcstat process. + \item[mcstastest pid ] Tests if the McStas simulation is still running. + \item[mcstasdump pid ] Has to send a signal to McStas which causes it to dump its data without terminating. + Current versions of McStas do this on receiving the USR2 signal. + \item[mcstasstop pid ] Stops the McStas simulation. + \item[mcstasread ] Reads the McStas simulation output and transfers monitor and histogram memory data + into the appropriate SICS objects. +\end{description} + +\section{McStas Requirements and SICS Requirements} + + +In order for the McStas SICS interface to work the McStas simulation has to be configured +in a certain way: +\begin{itemize} +\item All parameters which have to pass between SICS and McStas have to be declared as + simulation parameters in the DEFINE INSTRUMENT section of the instrument definition file. + Alternatively SICS can write the data to be passed to McStas into a file. But then this + file must be read in the INITIALIZE section of the instrument definition and values must + be assigned to the appropriate McStas variables. +\item In order for the NeXus-XML based reading to work McStas must dump its data into a single file: + use the {\bf -f filename} option. The format must be {\bf --format=XML}. + \item In order to count on monitor, a modified monitor component, MKMonitor MUST be used in the + simulation. This component writes the collected total counts into a file. This file is + the read by SICS in order to determine the control monitor. Evaluating the McStas dump \mbox{$\backslash$} + file each time proved to be to inaccurate. The name of the file containing the monitor + must be configured through: mccontrol configure mcmonfile name-of-file. + \item The mcstas simulation executable must be declared with allowexec in order to be able + to start with the Tcl exec command. +\end{itemize} + +\section{The McStas Reader} + + +In order to enable transfer from McStas result files into SICS objects a reader object is +needed. This module supports XML formatted McStas files, with the output dumped into +one file. The McStas options to achieve this are: {\bf -f filename --format={\tt{}"{}}XML{\tt{}"{}}} +This module supports the following commands: +\begin{description} +\item[mcreader open filename] Opens a McStas simulation file for reading. +\item[mcreader close] Closes a McStas file after use. +\item[mcreader insertmon path object monitornumber scale] This transfers a monitor value from a previously opened McStas file into a SICS +monitor field. The McStas field read is the values tag belonging to the component. The +parameters: +\begin{description} +\item[path] The path to the correct values field in the simulation file. The format is the same +as the path format for NXopenpath in the NeXus-API (which will internally be used). For +groups, the name attribute is used a path component. +\item[object] The counter object into which the monitor is read. This is a limitation, with the + this McStas interface only counters can store monitors. + \item[monitornumber ] Monitornumber is the monitor\mbox{$\backslash$} channel into which the value is to be stored. + \item[scale ] Scale is an optional scale factor for the monitor. Real monitors have a + sensitivity of E-6, McStas monitors have an efficiency of 1.0. This factor allows to + correct for this. +\end{description} +\item[mcreader inserthm path hmobject scale] Inserts array data stored under path in the histogram memory array of hmobject which + must be a valid SICS histogram memory object. The path is the same as given for insertmon, + but of course the data part of the detector must be addressed. Scale is again an optional + scale factor which allows to scale the McStas counts to real counts. +\end{description} +The mccreader module also supports reading data from any ASCII file into SICS. Mcreader +close and open are not required then. For reading histogram memory data, the appropriate + data has to be parsed into a SICSdata object first. Then + data can be trasnferred using the following commands: + \begin{description} \item[mcreader insertmondirect counter num value ] Assigns value to the monitor num at the counter object counter. Monitor 0 is the + actual counts data. + \item[mcreader inserthmfromdata hm data ] Inserts the data in the SICSData object data into the histogram memory hm. + \end{description} + +\section{The McStas Controller} + + +The actual control of the {\tt{}"{}}counting{\tt{}"{}} operation of the McStas simulation is done by the + McStas controller module in SICS. Internally this module implements the routines for + counting virtual neutrons. Towards the SICS interpreter, an interface is exhibited which + allows to configure and test the McStas controller. The McStas Controller delegates many + tasks to script procedures written in SICS's internal Tcl scripting language. This is done + in order to achieve a degree of generality for various types of instruments and in order + to allow easier adaption to differing demands. This is the SICS interface implemented: + \begin{description} \item[mccontrol configure mcstart startscriptname ] Configures the script which starts the McStas simulation. Startscriptname is the name + of a Tcl procedure which collects the necessary information from SICS, builds a command +line and finally starts the simulation. This script is expected to return either an error or + the PID of the started process. Startscriptname will be called with the parameters mode and + preset which represent the counting characteristics. + \item[mccontrol configure mcisrunning runtestscriptname ] Configures the name of a script which tests if the McStas process is still running. + Runtestscriptname is called with the PID as a parameter. This returns 0 in the case the + McStas simulation was stopped or 1 if it is still running. + \item[mccontrol configure mcdump dumpscriptname ] Configures the name of the script which causes McStas to dump intermediate results. + The script will be called with the PID of the started McStas process as a parameter. + \item[mccontrol configure mckill killscript ] Configure the name of a procedure which kills the current McStas simulation + process. KillScript will be called with the PID of the McStas simulation as a parameter. + \item[mccontrol configure mccopydata copyscript ] This configures the name of a script which has the task to read the results of + a McStas simulation and assign values to SICS monitors and histogram memories. + \item[mccontrol configure update updateintervallinseconds ] This configures the minimum time between McStas dumps in seconds. The idea is that + SICS buffers values during a simulation run and does not interrupt the McStas process to + often. + \item[mccontrol configure update monitorscale ] Configures the scaling factor to use on the monitor in monfile. Normal monitors have + a efficiency of 1E-6, the McStas monitor counts every neutron. This can be compensated + for by this scaling factor. Note that this scaling factor may be dependent on the + wavelength used. + \item[mccontrol configure mcmonfile filename ] This configures the file which mccontrol is going to read in order to watch the + simulation control monitor. + \item[mccontrol list ] Prints a listing of the configuration parameters. + \item[mccontrol run scriptkey ] Invokes one of the scripts configure for testing purposes. scripkey can be one of: + mcstart, mcisrunning, mcdump, mckill and mccopydata. + \item[mccontrol finish ] This calls waitpid on the PID of the McStas process. This should be done in + the mckill script. Otherwise it may occur that the McStas simulation turns into + a Zombie process. + \end{description} +Standard scripts for many of the script routines required are provided for the unix + environment in the file mcsupport.tcl. Please note, that all system executables called + from scripts must be registrered with SICS using the allowexec command. +% html: End of file: `mcstas.htm' + +\end{document} diff --git a/doc/manager/managerman.toc b/doc/manager/managerman.toc new file mode 100644 index 00000000..092cf7c2 --- /dev/null +++ b/doc/manager/managerman.toc @@ -0,0 +1,80 @@ +\contentsline {chapter}{\numberline {1}Introduction}{4} +\contentsline {chapter}{\numberline {2}SICS programs, Scripts and Prerequisites}{5} +\contentsline {section}{\numberline {2.1}Hardware}{5} +\contentsline {section}{\numberline {2.2}Server programs}{5} +\contentsline {chapter}{\numberline {3}General SICS Setup}{7} +\contentsline {section}{\numberline {3.1}System Control}{8} +\contentsline {section}{\numberline {3.2}Moving SICS}{9} +\contentsline {subsection}{\numberline {3.2.1} Moving the SICS Server to a new Computer}{9} +\contentsline {subsection}{\numberline {3.2.2}Exchanging the Serial Port Server}{9} +\contentsline {subsection}{\numberline {3.2.3}Exchanging the Histogram Memory}{10} +\contentsline {section}{\numberline {3.3}SICS Trouble Shooting }{10} +\contentsline {subsection}{\numberline {3.3.1}Check Server Status}{10} +\contentsline {subsection}{\numberline {3.3.2}Inspecting Log Files}{10} +\contentsline {subsection}{\numberline {3.3.3}Restarting SICS}{11} +\contentsline {subsection}{\numberline {3.3.4}Restart Everything}{11} +\contentsline {subsection}{\numberline {3.3.5}Starting SICS Manually}{11} +\contentsline {subsection}{\numberline {3.3.6}Test the SerPortServer Program}{11} +\contentsline {subsection}{\numberline {3.3.7}Trouble with Environment Devices}{12} +\contentsline {subsection}{\numberline {3.3.8} HELP debugging!!!!}{12} +\contentsline {chapter}{\numberline {4}The SICS Initialization File}{13} +\contentsline {section}{\numberline {4.1}Overview of SICS Initialization}{13} +\contentsline {section}{\numberline {4.2}SICS Options and Users}{14} +\contentsline {section}{\numberline {4.3}SICS Variables }{15} +\contentsline {section}{\numberline {4.4}SICS Hardware Configuration}{16} +\contentsline {subsection}{\numberline {4.4.1}Bus Access}{16} +\contentsline {subsubsection}{Direct Access to RS232 Controllers or TCP/IP Controllers.}{16} +\contentsline {subsubsection}{Accessing Serial Ports (Old System)}{17} +\contentsline {subsubsection}{GPIB Controller Access}{19} +\contentsline {subsection}{\numberline {4.4.2}Controllers}{20} +\contentsline {subsubsection}{ECB Controllers}{20} +\contentsline {subsubsection}{Siematic SPS Controllers}{21} +\contentsline {subsubsection}{General Controller Object and Choppers}{22} +\contentsline {subsection}{\numberline {4.4.3} Motors}{23} +\contentsline {subsection}{\numberline {4.4.4}Counting Devices}{24} +\contentsline {subsubsection}{Histogram Memory}{25} +\contentsline {subsection}{\numberline {4.4.5}Velocity Selectors}{26} +\contentsline {section}{\numberline {4.5}Initialization of General Commands}{27} +\contentsline {subsection}{\numberline {4.5.1}Monochromators}{28} +\contentsline {subsection}{\numberline {4.5.2}Reoccuring Tasks}{28} +\contentsline {subsection}{\numberline {4.5.3}The SICS Online Help System}{29} +\contentsline {subsection}{\numberline {4.5.4}Aliases in SICS}{29} +\contentsline {subsubsection}{Object Aliases}{29} +\contentsline {subsubsection}{Runtime Aliases}{29} +\contentsline {subsubsection}{Command Aliases}{30} +\contentsline {subsection}{\numberline {4.5.5}The AntiCollision Module}{30} +\contentsline {section}{\numberline {4.6}The Internal Scan Commands}{31} +\contentsline {subsection}{\numberline {4.6.1}Scan Concepts}{31} +\contentsline {subsection}{\numberline {4.6.2}User Definable Scan Functions}{34} +\contentsline {subsection}{\numberline {4.6.3}User Defined Scans(Old Style)}{35} +\contentsline {subsection}{\numberline {4.6.4}The Scan Command Header Description File}{35} +\contentsline {subsection}{\numberline {4.6.5}Differential Scans}{36} +\contentsline {subsection}{\numberline {4.6.6}Peak Analysis}{37} +\contentsline {subsection}{\numberline {4.6.7}Common Scan Scripts}{37} +\contentsline {section}{\numberline {4.7}Scripting NeXus Files}{37} +\contentsline {subsection}{\numberline {4.7.1}Usage}{38} +\contentsline {subsubsection}{File Opening and Closing}{38} +\contentsline {subsubsection}{Writing Things}{38} +\contentsline {section}{\numberline {4.8}Automatic Updating of NeXus Files}{39} +\contentsline {subsection}{\numberline {4.8.1}Prerequisites for Using the Automatic Update Manager}{39} +\contentsline {subsection}{\numberline {4.8.2}Installing Automatic Update}{40} +\contentsline {subsection}{\numberline {4.8.3}Configuring Automatic Update}{40} +\contentsline {section}{\numberline {4.9}Instrument Specific SICS Initializations}{40} +\contentsline {subsection}{\numberline {4.9.1}Initialization for Four Circle Diffractometers}{40} +\contentsline {subsection}{\numberline {4.9.2}Triple Axis Spectrometer Specific Commands}{42} +\contentsline {subsection}{\numberline {4.9.3}Special Commands for the Reflectometer (AMOR)}{42} +\contentsline {subsubsection}{AMOR Status Display Commands}{43} +\contentsline {subsection}{\numberline {4.9.4}SANS Special Commands}{44} +\contentsline {subsection}{\numberline {4.9.5}Special FOCUS Initializations}{45} +\contentsline {subsubsection}{Special Internal FOCUS Support Commands}{45} +\contentsline {chapter}{\numberline {5}Programming SICS Macros}{46} +\contentsline {section}{\numberline {5.1}Input/Output}{46} +\contentsline {section}{\numberline {5.2}Error Handling}{47} +\contentsline {section}{\numberline {5.3}Interacting with SICS within a Script}{47} +\contentsline {section}{\numberline {5.4}SICS Interfaces in Tcl}{47} +\contentsline {subsection}{\numberline {5.4.1}The Object Interface}{47} +\contentsline {subsection}{\numberline {5.4.2}Overriding the Drivable Interface with Tcl}{48} +\contentsline {chapter}{\numberline {6}The McStas SICS Interface}{49} +\contentsline {section}{\numberline {6.1}McStas Requirements and SICS Requirements}{50} +\contentsline {section}{\numberline {6.2}The McStas Reader}{50} +\contentsline {section}{\numberline {6.3}The McStas Controller}{51} diff --git a/doc/manager/scrap1.htm b/doc/manager/scrap1.htm new file mode 100644 index 00000000..c4508066 --- /dev/null +++ b/doc/manager/scrap1.htm @@ -0,0 +1,4 @@ +
  • MakeWaveLength nam mono creates a wavelength variable nam. +The monochromator mono is used for adjustment. +
  • MakeEnergy nam mono creates a energy variable nam. The +monochromator mono is used for adjustment. diff --git a/dynstring.c b/dynstring.c index 25ea2e9a..0fca397b 100644 --- a/dynstring.c +++ b/dynstring.c @@ -97,7 +97,17 @@ free(self->pBuffer); free(self); - } + } +/*--------------------------------------------------------------------------*/ + int DynStringClear(pDynString self) + { + assert(self); + assert(self->iMAGIC == DYNMAGIC); + + self->iTextLen = 0; + memset(self->pBuffer,0,self->iBufferSize); + return 1; + } /*-------------------------------------------------------------------------*/ int DynStringCopy(pDynString self, char *pText) { @@ -245,3 +255,6 @@ return self->iTextLen; } + + + diff --git a/dynstring.h b/dynstring.h index e159f7db..9d93f327 100644 --- a/dynstring.h +++ b/dynstring.h @@ -84,5 +84,9 @@ /* returns the current length of the dynamic string. */ - -#endif + + int DynStringClear(pDynString self); + /* + removes all old dat from the dynstring + */ +#endif diff --git a/fourtable.c b/fourtable.c index 06157a35..38941613 100644 --- a/fourtable.c +++ b/fourtable.c @@ -32,17 +32,6 @@ void DeleteFourCircleTable(int handle){ LLDdelete(handle); } /*------------------------------------------------------------------------*/ -static void clearTable(int handle){ - int status; - - status = LLDnodePtr2First(handle); - while(status == 1) { - LLDnodeDelete(handle); - status = LLDnodePtr2Next(handle); - } - LLDnodeDelete(handle); -} -/*------------------------------------------------------------------------*/ static void printList(int handle, SConnection *pCon){ FourTableEntry entry; char pBueffel[132]; @@ -179,9 +168,12 @@ static void delEntry(int handle, int index){ } } /*------------------------------------------------------------------------*/ -int HandleFourCircleCommands(int handle, SConnection *pCon, +int HandleFourCircleCommands(int *table, SConnection *pCon, int argc, char *argv[], int *err){ + int handle; + *err = 1; + handle = *table; /* test if this is for us @@ -204,7 +196,9 @@ int HandleFourCircleCommands(int handle, SConnection *pCon, *err = 0; return 1; } - clearTable(handle); + LLDdelete(handle); + handle = LLDcreate(sizeof(FourTableEntry)); + *table = handle; SCparChange(pCon); SCSendOK(pCon); } else if (strcmp(argv[2],"list") == 0){ diff --git a/fourtable.h b/fourtable.h index 53b5f42e..a67718ef 100644 --- a/fourtable.h +++ b/fourtable.h @@ -13,7 +13,7 @@ int MakeFourCircleTable(void); void DeleteFourCircleTable(int handle); - int HandleFourCircleCommands(int handle, SConnection *pCon, + int HandleFourCircleCommands(int *table, SConnection *pCon, int argc, char *argv[], int *err); char *GetFourCircleScanVar(int handle, double two_theta); int GetFourCircleScanNP(int handle, double two_theta); diff --git a/make_gen b/make_gen index 2d4d0943..d1b2268e 100644 --- a/make_gen +++ b/make_gen @@ -7,7 +7,7 @@ COBJ = Sclient.o network.o ifile.o intcli.o $(FORTIFYOBJ) SOBJ = network.o ifile.o conman.o SCinter.o splitter.o passwd.o \ - servlog.o sicvar.o nserver.o SICSmain.o \ + servlog.o sicvar.o nserver.o SICSmain.o motorlist.o\ sicsexit.o costa.o task.o $(FORTIFYOBJ)\ macro.o ofac.o obpar.o obdes.o drive.o status.o intserv.o \ devexec.o mumo.o mumoconf.o selector.o selvar.o fupa.o lld.o \ @@ -46,7 +46,7 @@ full: purge all SICServer: $(SOBJ) $(MOTOROBJ) $(COUNTEROBJ) \ $(VELOOBJ) $(DIFIL) $(EXTRA) \ $(SUBLIBS) - $(CC) -g -o SICServer \ + $(CC) -pg -o SICServer \ $(SOBJ) $(MOTOROBJ) $(COUNTEROBJ) \ $(VELOOBJ) $(DIFOBJ) $(EXTRA) $(LIBS) diff --git a/makefile_slinux b/makefile_slinux index 3a76d92b..071960ae 100644 --- a/makefile_slinux +++ b/makefile_slinux @@ -17,7 +17,7 @@ CC = gcc CFLAGS = -I$(HDFROOT)/include -DHDF4 -DHDF5 -DNXXML $(NI) \ -Ipsi/hardsup -I. \ -fwritable-strings -DCYGNUS -DNONINTF -g $(DFORTIFY) \ - -Wall -Wno-unused -Wno-comment -Wno-switch -Werror + -Wall -Wno-unused -Wno-comment -Wno-switch -Werror BINTARGET = bin EXTRA=nintf.o diff --git a/mesure.c b/mesure.c index 1ef700ea..8ef861f8 100644 --- a/mesure.c +++ b/mesure.c @@ -1053,7 +1053,7 @@ static int ScanReflection(pMesure self, float twoTheta, SConnection *pCon) SNXFormatTime(pBueffel,512); GetScanVarStep(self->pScanner,0,&fStep); fPreset = GetScanPreset(self->pScanner); - fprintf(self->fRefl,"%3d %7.3f %9.0f %7.3f %s\n",iNP,fStep, + fprintf(self->fRefl,"%3d %7.4f %9.0f %7.3f %s\n",iNP,fStep, fPreset,fTemp,pBueffel); for(i = 0; i < iNP; i++) { @@ -1078,7 +1078,7 @@ static int ScanReflection(pMesure self, float twoTheta, SConnection *pCon) if(self->iCompact == 1) { strcpy(pTime,pBueffel); - sprintf(pBueffel,"%3d%8.3f%10.0f%8.3f %s\n",iNP,fStep, + sprintf(pBueffel,"%3d%8.4f%10.0f%8.3f %s\n",iNP,fStep, fPreset,fTemp,pTime); SCWrite(pCon,pBueffel,eValue); pBueffel[0] = '\0'; @@ -1528,7 +1528,7 @@ static int ScanReflection(pMesure self, float twoTheta, SConnection *pCon) /* catch table processing commands */ - iRet = HandleFourCircleCommands(self->stepTable,pCon,argc,argv,&err); + iRet = HandleFourCircleCommands(&self->stepTable,pCon,argc,argv,&err); if(iRet == 1) { return err; diff --git a/motorlist.c b/motorlist.c new file mode 100644 index 00000000..8dc4db9f --- /dev/null +++ b/motorlist.c @@ -0,0 +1,265 @@ +/*---------------------------------------------------------------------- + Support module which manages a list of motors and their target values + when running complex movements. See accompanying tex file for + more info. + + copyright: see file COPYRIGHT + + Mark Koennecke, September 2005 +-----------------------------------------------------------------------*/ +#include "motorlist.h" +#include "lld.h" +#include "motor.h" +/*---------------------------------------------------------------*/ +static void *MOLIGetInterface(void *data, int iD){ + return NULL; +} +/*---------------------------------------------------------------- + This routine can return either OKOK or HWFault when thing + go wrong. However, the return value of Halt is usually ignored! +------------------------------------------------------------------*/ +static int MOLIHalt(void *data) { + int self = 0, iRet; + MotControl tuktuk; + + self = *(int *)data; + + iRet = LLDnodePtr2First(self); + while(iRet != 0) + { + LLDnodeDataTo(self,&tuktuk); + tuktuk.pDriv->Halt(tuktuk.data); + iRet = LLDnodePtr2Next(self); + } + return OKOK; +} +/*---------------------------------------------------------------- + This routine can return either 1 or 0. 1 means the position can + be reached, 0 NOT + If 0, error shall contain up to errlen characters of information + about which limit was violated +------------------------------------------------------------------*/ +static int MOLICheckLimits(void *data, float val, + char *error, int errlen){ + int self = 0, iRet, test, retVal = 1; + MotControl tuktuk; + + self = *(int *)data; + + iRet = LLDnodePtr2First(self); + while(iRet != 0) + { + LLDnodeDataTo(self,&tuktuk); + test = tuktuk.pDriv->CheckLimits(tuktuk.data,val, error, errlen); + if(test == 0){ + retVal = 0; + } + iRet = LLDnodePtr2Next(self); + } + + return retVal; +} +/*---------------------------------------------------------------- + This routine can return 0 when a limit problem occurred + OKOK when the motor was successfully started + HWFault when a problem occured starting the device + Possible errors shall be printed to pCon + For real motors, this is supposed to try at least three times + to start the motor in question + val is the value to drive the motor too +------------------------------------------------------------------*/ +static long MOLISetValue(void *data, SConnection *pCon, float val){ + int self = 0, iRet, test; + MotControl tuktuk; + + self = *(int *)data; + + iRet = LLDnodePtr2First(self); + while(iRet != 0) + { + LLDnodeDataTo(self,&tuktuk); + test = tuktuk.pDriv->SetValue(tuktuk.data,pCon,tuktuk.target); + if(test != 1) { + return test; + } else { + tuktuk.running = 1; + LLDnodeDataFrom(self,&tuktuk); + } + iRet = LLDnodePtr2Next(self); + } + return OKOK; +} +/*---------------------------------------------------------------- + Checks the status of a running motor. Possible return values + HWBusy The motor is still running + OKOK or HWIdle when the motor finished driving + HWFault when a hardware problem ocurred + HWPosFault when the hardware cannot reach a position + Errors are duly to be printed to pCon + For real motors CheckStatus again shall try hard to fix any + issues with the motor +------------------------------------------------------------------*/ +static int MOLICheckStatus(void *data, SConnection *pCon){ + int self = 0, iRet, status, result = HWIdle; + MotControl tuktuk; + + self = *(int *)data; + + iRet = LLDnodePtr2First(self); + while(iRet != 0) + { + LLDnodeDataTo(self,&tuktuk); + if(tuktuk.running == 1){ + status = tuktuk.pDriv->CheckStatus(tuktuk.data, pCon); + switch(status){ + case HWIdle: + tuktuk.running = 0; + LLDnodeDataFrom(self,&tuktuk); + break; + case HWBusy: + result = HWBusy; + break; + case HWFault: + case HWPosFault: + return status; + break; + default: + /* + this is a programming error and has to be fixed + */ + assert(0); + } + } + iRet = LLDnodePtr2Next(self); + } + return result; +} +/*---------------------------------------------------------------- + GetValue is supposed to read a motor position + On errors, -99999999.99 is returned and messages printed to pCon +------------------------------------------------------------------*/ +static float MOLIGetValue(void *data, SConnection *pCon){ + int self = 0, iRet; + MotControl tuktuk; + float value, result = 1; + + self = *(int *)data; + + iRet = LLDnodePtr2First(self); + while(iRet != 0) + { + LLDnodeDataTo(self,&tuktuk); + if(MotorGetSoftPosition(tuktuk.data,pCon,&value) == 1){ + tuktuk.position = value; + } else { + tuktuk.position = -9999999.99; + } + LLDnodeDataFrom(self,&tuktuk); + iRet = LLDnodePtr2Next(self); + } + return OKOK; +} +/*======================== interface functions ========================*/ +pIDrivable makeMotListInterface(){ + pIDrivable pDriv = NULL; + + pDriv = CreateDrivableInterface(); + if(pDriv == NULL){ + return NULL; + } + pDriv->Halt = MOLIHalt; + pDriv->CheckLimits = MOLICheckLimits; + pDriv->SetValue = MOLISetValue; + pDriv->CheckStatus = MOLICheckStatus; + pDriv->GetValue = MOLIGetValue; + + return pDriv; +} +/*----------------------------------------------------------------------*/ +int addMotorToList(int listHandle, char *name, float targetValue){ + pMotor pMot = NULL; + MotControl tuktuk; + + pMot = FindMotor(pServ->pSics,name); + if(pMot == NULL){ + return 0; + } + tuktuk.data = pMot; + strncpy(tuktuk.name,name,79); + tuktuk.pDriv = pMot->pDrivInt; + tuktuk.target = targetValue; + tuktuk.running = 0; + tuktuk.position = -9999999.999; + LLDnodeAppendFrom(listHandle,&tuktuk); + return 1; +} +/*---------------------------------------------------------------------*/ +int setNewMotorTarget(int listHandle, char *name, float value){ + int iRet; + MotControl tuktuk; + + iRet = LLDnodePtr2First(listHandle); + while(iRet != 0) + { + LLDnodeDataTo(listHandle,&tuktuk); + if(strcmp(tuktuk.name,name) == 0){ + tuktuk.target = value; + tuktuk.running = 0; + LLDnodeDataFrom(listHandle, &tuktuk); + return 1; + } + iRet = LLDnodePtr2Next(listHandle); + } + return 0; +} +/*-----------------------------------------------------------------*/ +int getMotorFromList(int listHandle, char *name,pMotControl tuk){ + int iRet; + MotControl tuktuk; + + iRet = LLDnodePtr2First(listHandle); + while(iRet != 0) + { + LLDnodeDataTo(listHandle,&tuktuk); + if(strcmp(tuktuk.name,name) == 0){ + memcpy(tuk,&tuktuk,sizeof(MotControl)); + return 1; + } + iRet = LLDnodePtr2Next(listHandle); + } + return 0; +} +/*-----------------------------------------------------------------*/ +float getListMotorPosition(int listHandle, char *name){ + int iRet; + MotControl tuktuk; + + iRet = LLDnodePtr2First(listHandle); + while(iRet != 0) + { + LLDnodeDataTo(listHandle,&tuktuk); + if(strcmp(tuktuk.name,name) == 0){ + return tuktuk.position; + } + iRet = LLDnodePtr2Next(listHandle); + } + return -999999.99; +} +/*--------------------------------------------------------------------*/ +void printMotorList(int listHandle, SConnection *pCon){ + int iRet; + MotControl tuktuk; + char pBueffel[132]; + + MOLIGetValue(&listHandle,pCon); + + iRet = LLDnodePtr2First(listHandle); + while(iRet != 0) + { + LLDnodeDataTo(listHandle,&tuktuk); + snprintf(pBueffel,131,"Driving %20s from %8.3f to %8.3f", + tuktuk.name, tuktuk.position, tuktuk.target); + SCWrite(pCon,pBueffel,eValue); + iRet = LLDnodePtr2Next(listHandle); + } +} diff --git a/motorlist.h b/motorlist.h new file mode 100644 index 00000000..963d0e3b --- /dev/null +++ b/motorlist.h @@ -0,0 +1,34 @@ + +/*---------------------------------------------------------------------- + Support module which manages a list of motors and their target values + when running complex movements. See accompanying tex file for + more info. + + copyright: see file COPYRIGHT + + Mark Koennecke, September 2005 +-----------------------------------------------------------------------*/ +#ifndef SICSMOTLIST +#define SICSMOTLIST +#include "sics.h" + +typedef struct{ + char name[80]; + float target; + float position; + pIDrivable pDriv; + void *data; + int running; +}MotControl, *pMotControl; + +/*======================================================================*/ + +pIDrivable makeMotListInterface(); +int addMotorToList(int listHandle, char *name, float targetValue); +int setNewMotorTarget(int listHandle, char *name, float value); +int getMotorFromList(int listHandle, char *name, pMotControl tuk); +float getListMotorPosition(int listHandle, char *name); +void printMotorList(int listHandle, SConnection *pCon); + +#endif + diff --git a/motorlist.tex b/motorlist.tex new file mode 100644 index 00000000..e37b805e --- /dev/null +++ b/motorlist.tex @@ -0,0 +1,101 @@ +\subsection{The Motorlist Module} +The motorlist is e helper module for implementing complex movements of +multiple motors. A good example is the coordination of the reflectometer AMOR. +The general idea is to have a list (using the lld implementation used in +SICS) which contains one of the following data structure for each motor +to run: + +\begin{flushleft} \small +\begin{minipage}{\linewidth} \label{scrap1} +$\langle$motlistmot {\footnotesize ?}$\rangle\equiv$ +\vspace{-1ex} +\begin{list}{}{} \item +\mbox{}\verb@@\\ +\mbox{}\verb@typedef struct{@\\ +\mbox{}\verb@ char name[80];@\\ +\mbox{}\verb@ float target;@\\ +\mbox{}\verb@ float position;@\\ +\mbox{}\verb@ pIDrivable pDriv;@\\ +\mbox{}\verb@ void *data;@\\ +\mbox{}\verb@ int running;@\\ +\mbox{}\verb@}MotControl, *pMotControl;@\\ +\mbox{}\verb@@$\diamond$ +\end{list} +\vspace{-1ex} +\footnotesize\addtolength{\baselineskip}{-1ex} +\begin{list}{}{\setlength{\itemsep}{-\parsep}\setlength{\itemindent}{-\leftmargin}} +\item Macro referenced in scrap ?. +\end{list} +\end{minipage}\\[4ex] +\end{flushleft} +The motorlist module then takes care of starting all these motors, + checking their status etc. A client module then only needs to calculate + targets for its motors and populate a list with them. All other + drivable tasks will then be performed by motorlist. + +The interface provided by this module looks like this: +\begin{flushleft} \small +\begin{minipage}{\linewidth} \label{scrap2} +$\langle$motlistint {\footnotesize ?}$\rangle\equiv$ +\vspace{-1ex} +\begin{list}{}{} \item +\mbox{}\verb@@\\ +\mbox{}\verb@pIDrivable makeMotListInterface();@\\ +\mbox{}\verb@int addMotorToList(int listHandle, char *name, float targetValue);@\\ +\mbox{}\verb@int setNewMotorTarget(int listHandle, char *name, float value);@\\ +\mbox{}\verb@int getMotorFromList(int listHandle, char *name, pMotControl tuk);@\\ +\mbox{}\verb@float getListMotorPosition(int listHandle, char *name);@\\ +\mbox{}\verb@void printMotorList(int listHandle, SConnection *pCon); @\\ +\mbox{}\verb@@$\diamond$ +\end{list} +\vspace{-1ex} +\footnotesize\addtolength{\baselineskip}{-1ex} +\begin{list}{}{\setlength{\itemsep}{-\parsep}\setlength{\itemindent}{-\leftmargin}} +\item Macro referenced in scrap ?. +\end{list} +\end{minipage}\\[4ex] +\end{flushleft} +\begin{description} +\item[makeMotListInterface] creates a drivable interface which is initialized + with the motlist implementations. Each of the drivabel functions expects + as pData pointer a pointer to the listHandle describing the list of motors + to run + \item[addMotorToList] adds motor name with target value targetValue to + the list identified by listHandle. Retruns 1 on success, 0 on failure (The + motor could not be found) +\item[setNewMotorTarget] does what it says. +\item[getMotorFromList] rets a motor entry for name from listHandle. Used in +order to retrieve positions. +\item[getListMotorPosition] retrieves the current position of motor name. +\end{description} +All the rest of the interface is invoked through the drivable interface +functions which thus can be used in implementing own drivable interfaces. + +\begin{flushleft} \small +\begin{minipage}{\linewidth} \label{scrap3} +\verb@"motorlist.h"@ {\footnotesize ? }$\equiv$ +\vspace{-1ex} +\begin{list}{}{} \item +\mbox{}\verb@@\\ +\mbox{}\verb@/*----------------------------------------------------------------------@\\ +\mbox{}\verb@ Support module which manages a list of motors and their target values@\\ +\mbox{}\verb@ when running complex movements. See accompanying tex file for@\\ +\mbox{}\verb@ more info.@\\ +\mbox{}\verb@@\\ +\mbox{}\verb@ copyright: see file COPYRIGHT@\\ +\mbox{}\verb@@\\ +\mbox{}\verb@ Mark Koennecke, September 2005@\\ +\mbox{}\verb@-----------------------------------------------------------------------*/@\\ +\mbox{}\verb@#ifndef SICSMOTLIST@\\ +\mbox{}\verb@#define SICSMOTLIST@\\ +\mbox{}\verb@#include "sics.h"@\\ +\mbox{}\verb@@$\langle$motlistmot {\footnotesize ?}$\rangle$\verb@@\\ +\mbox{}\verb@/*======================================================================*/@\\ +\mbox{}\verb@@$\langle$motlistint {\footnotesize ?}$\rangle$\verb@@\\ +\mbox{}\verb@#endif@\\ +\mbox{}\verb@@\\ +\mbox{}\verb@@$\diamond$ +\end{list} +\vspace{-2ex} +\end{minipage}\\[4ex] +\end{flushleft} diff --git a/motorlist.w b/motorlist.w new file mode 100644 index 00000000..8c9a976e --- /dev/null +++ b/motorlist.w @@ -0,0 +1,67 @@ +\subsection{The Motorlist Module} +The motorlist is e helper module for implementing complex movements of +multiple motors. A good example is the coordination of the reflectometer AMOR. +The general idea is to have a list (using the lld implementation used in +SICS) which contains one of the following data structure for each motor +to run: + +@d motlistmot @{ +typedef struct{ + char name[80]; + float target; + float position; + pIDrivable pDriv; + void *data; + int running; +}MotControl, *pMotControl; +@} + +The motorlist module then takes care of starting all these motors, + checking their status etc. A client module then only needs to calculate + targets for its motors and populate a list with them. All other + drivable tasks will then be performed by motorlist. + +The interface provided by this module looks like this: +@d motlistint @{ +pIDrivable makeMotListInterface(); +int addMotorToList(int listHandle, char *name, float targetValue); +int setNewMotorTarget(int listHandle, char *name, float value); +int getMotorFromList(int listHandle, char *name, pMotControl tuk); +float getListMotorPosition(int listHandle, char *name); +void printMotorList(int listHandle, SConnection *pCon); +@} +\begin{description} +\item[makeMotListInterface] creates a drivable interface which is initialized + with the motlist implementations. Each of the drivabel functions expects + as pData pointer a pointer to the listHandle describing the list of motors + to run + \item[addMotorToList] adds motor name with target value targetValue to + the list identified by listHandle. Retruns 1 on success, 0 on failure (The + motor could not be found) +\item[setNewMotorTarget] does what it says. +\item[getMotorFromList] rets a motor entry for name from listHandle. Used in +order to retrieve positions. +\item[getListMotorPosition] retrieves the current position of motor name. +\end{description} +All the rest of the interface is invoked through the drivable interface +functions which thus can be used in implementing own drivable interfaces. + +@o motorlist.h @{ +/*---------------------------------------------------------------------- + Support module which manages a list of motors and their target values + when running complex movements. See accompanying tex file for + more info. + + copyright: see file COPYRIGHT + + Mark Koennecke, September 2005 +-----------------------------------------------------------------------*/ +#ifndef SICSMOTLIST +#define SICSMOTLIST +#include "sics.h" +@ +/*======================================================================*/ +@ +#endif + +@} diff --git a/mumo.c b/mumo.c index 77396b35..3fbb3ad8 100644 --- a/mumo.c +++ b/mumo.c @@ -505,7 +505,7 @@ static int SaveMumo(void *pData, char *name, FILE *fd) current value and compare it with the stored ones for all currently stored named positions. -*/ +-------------------------------------------------------------------------*/ const char *FindNamPos(pMulMot self, SConnection *pCon) { int iRet, iTest; @@ -514,6 +514,33 @@ static int SaveMumo(void *pData, char *name, FILE *fd) char *pName, *pVal; float f1, f2; pMotor pMot = NULL; + pStringDict motCache = NULL; + + /* + * create cache of motor positions + */ + motCache = CreateStringDict(); + if(motCache == NULL){ + SCWrite(pCon,"ERROR: out of memory in FindNamPos",eError); + return NULL; + } + StringDictKillScan(self->pAlias); + pAlias = StringDictGetNext(self->pAlias,pCurrCommand,1023); + while(pAlias != NULL){ + pMot = FindMotor(pServ->pSics,pCurrCommand); + if(pMot != NULL){ + iRet = MotorGetSoftPosition(pMot,pCon,&f1); + if(!iRet){ + sprintf(pTestCommand, + "ERROR: failed to get motor position for %s", pName); + SCWrite(pCon,pTestCommand,eError); + return NULL; + } + snprintf(pTestCommand,1023,"%f",f1); + StringDictAddPair(motCache,pCurrCommand,pTestCommand); + } + pAlias = StringDictGetNext(self->pAlias,pCurrCommand,1023); + } /* scan named position list */ StringDictKillScan(self->pNamPos); @@ -524,43 +551,27 @@ static int SaveMumo(void *pData, char *name, FILE *fd) pName = strtok(pCurrCommand," "); iTest = 1; while(pName != NULL) - { - pVal = strtok(NULL," "); - pMot = FindMotor(pServ->pSics,pName); - if(pMot) - { - iRet = MotorGetSoftPosition(pMot,pCon,&f1); - if(!iRet) - { - sprintf(pTestCommand, - "ERROR: failed to get motor position for %s", pName); - SCWrite(pCon,pTestCommand,eError); - return NULL; - } - sscanf(pVal,"%f",&f2); - f1 = f1 - f2; - if(f1 < 0.) - f1 = - f1; - if(f1 > 0.03) - { - iTest--; - break; - } - } - else - { - SCWrite(pCon,"ERROR: internal error in FindNamPos, no motor", - eError); - return NULL; - } - pName = strtok(NULL," "); + { + pVal = strtok(NULL," "); + StringDictGetAsNumber(motCache,pName,&f1); + sscanf(pVal,"%f",&f2); + f1 = f1 - f2; + if(f1 < 0.) + f1 = - f1; + if(f1 > 0.03) + { + iTest--; + break; + } + pName = strtok(NULL," "); + } + if(iTest == 1 && (strcmp(pAlias,"back") != 0) ) { + DeleteStringDict(motCache); + return pAlias; } - if(iTest == 1 && (strcmp(pAlias,"back") != 0) ) - return pAlias; - pAlias = StringDictGetNext(self->pNamPos,pTestCommand,1063); } - + DeleteStringDict(motCache); /* not found */ return NULL; } diff --git a/napiu.c b/napiu.c new file mode 100644 index 00000000..635b0cd9 --- /dev/null +++ b/napiu.c @@ -0,0 +1,160 @@ +/*--------------------------------------------------------------------------- + NeXus - Neutron & X-ray Common Data Format + + NeXus Utility (NXU) Application Program Interface Header File + + Copyright (C) 2005 Freddie Akeroyd + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + For further information, see + + $Id: napiu.c,v 1.1 2005/10/05 07:20:18 koennecke Exp $ + + ----------------------------------------------------------------------------*/ +static const char* rscid = "$Id: napiu.c,v 1.1 2005/10/05 07:20:18 koennecke Exp $"; /* Revision interted by CVS */ + +#include +#include +#include +#include +#include "napiu.h" + +#define DO_GLOBAL(__name) \ + if (__name != NULL) \ + { \ + if (NXputattr(file_id, #__name, (char*)__name, strlen(__name), NX_CHAR) != NX_OK) \ + { \ + return NX_ERROR; \ + } \ + } + + NXstatus CALLING_STYLE NXUwriteglobals(NXhandle file_id, const char* user, const char* affiliation, const char* address, const char* telephone_number, const char* fax_number, const char* email) + { + DO_GLOBAL(user); + DO_GLOBAL(affiliation); + DO_GLOBAL(address); + DO_GLOBAL(telephone_number); + DO_GLOBAL(fax_number); + DO_GLOBAL(email); + return NX_OK; + } + + /* NXUwritegroup creates and leaves open a group */ + NXstatus CALLING_STYLE NXUwritegroup(NXhandle file_id, const char* group_name, const char* group_class) + { + int status; + status = NXmakegroup(file_id, group_name, group_class); + if (status == NX_OK) + { + status = NXopengroup(file_id, group_name, group_class); + } + return status; + } + + NXstatus CALLING_STYLE NXUwritedata(NXhandle file_id, const char* data_name, const void* data, int data_type, int rank, const int dim[], const char* units, const int start[], const int size[]) + { + return NX_OK; + } + + NXstatus CALLING_STYLE NXUreaddata(NXhandle file_id, const char* data_name, void* data, char* units, const int start[], const int size[]) + { + return NX_OK; + } + + NXstatus CALLING_STYLE NXUwritehistogram(NXhandle file_id, const char* data_name, const void* data, const char* units) + { + return NX_OK; + } + + NXstatus CALLING_STYLE NXUreadhistogram(NXhandle file_id, const char* data_name, void* data, char* units) + { + return NX_OK; + } + +static int NXcompress_type = 0; +static int NXcompress_size = 0; + + /* NXUsetcompress sets the default compression type and minimum size */ + NXstatus CALLING_STYLE NXUsetcompress(NXhandle file_id, int comp_type, int comp_size) + { + int status; + if (comp_type == NX_COMP_LZW || comp_type == NX_COMP_HUF || + comp_type == NX_COMP_RLE || comp_type == NX_COMP_NONE) + { + NXcompress_type = comp_type; + if (comp_size != 0) + { + NXcompress_size = comp_size; + } + status = NX_OK; + } + else + { + NXIReportError(NXpData, "Invalid compression option"); + status = NX_ERROR; + } + return status; + } + + /* !NXUfindgroup finds if a NeXus group of the specified name exists */ + NXstatus CALLING_STYLE NXUfindgroup(NXhandle file_id, const char* group_name, char* group_class) + { + int status, n; + NXname vname, vclass; + status = NXgetgroupinfo(file_id, &n, vname, vclass); + if (status != NX_OK) + { + return status; + } + return NX_OK; + } + + NXstatus CALLING_STYLE NXUfindclass(NXhandle file_id, const char* group_class, char* group_name, int find_index) + { + return NX_OK; + } + +/* NXUfinddata finds if a NeXus data item is in the current group */ + NXstatus CALLING_STYLE NXUfinddata(NXhandle file_id, const char* data_name) + { + return NX_OK; + } + + NXstatus CALLING_STYLE NXUfindattr(NXhandle file_id, const char* attr_name) + { + return NX_OK; + } + + NXstatus CALLING_STYLE NXUfindsignal(NXhandle file_id, int signal, char* data_name, int* data_rank, int* data_type, int data_dimensions[]) + { + return NX_OK; + } + + NXstatus CALLING_STYLE NXUfindaxis(NXhandle file_id, int axis, int primary, char* data_name, int* data_rank, int* data_type, int data_dimensions[]) + { + return NX_OK; + } + + NXstatus CALLING_STYLE NXUfindlink(NXhandle file_id, NXlink* group_id, const char* group_class) + { + return NX_OK; + } + + NXstatus CALLING_STYLE NXUresumelink(NXhandle file_id, NXlink group_id) + { + return NX_OK; + } + diff --git a/napiu.h b/napiu.h new file mode 100644 index 00000000..d57915b3 --- /dev/null +++ b/napiu.h @@ -0,0 +1,72 @@ +/*--------------------------------------------------------------------------- + NeXus - Neutron & X-ray Common Data Format + + NeXus Utility (NXU) Application Program Interface Header File + + Copyright (C) 2005 Freddie Akeroyd + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + For further information, see + + $Id: napiu.h,v 1.1 2005/10/05 07:20:18 koennecke Exp $ + + ----------------------------------------------------------------------------*/ + +#ifndef NEXUSAPIU +#define NEXUSAPIU + +#include "napi.h" + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +NX_EXTERNAL NXstatus CALLING_STYLE NXUwriteglobals(NXhandle file_id, const char* user, const char* affiliation, const char* address, const char* phone, const char* fax, const char* email); + +NX_EXTERNAL NXstatus CALLING_STYLE NXUwritegroup(NXhandle file_id, const char* group_name, const char* group_class); + +NX_EXTERNAL NXstatus CALLING_STYLE NXUwritedata(NXhandle file_id, const char* data_name, const void* data, int data_type, int rank, const int dim[], const char* units, const int start[], const int size[]); + +NX_EXTERNAL NXstatus CALLING_STYLE NXUreaddata(NXhandle file_id, const char* data_name, void* data, char* units, const int start[], const int size[]); + +NX_EXTERNAL NXstatus CALLING_STYLE NXUwritehistogram(NXhandle file_id, const char* data_name, const void* data, const char* units); + +NX_EXTERNAL NXstatus CALLING_STYLE NXUreadhistogram(NXhandle file_id, const char* data_name, void* data, char* units); + +NX_EXTERNAL NXstatus CALLING_STYLE NXUsetcompress(NXhandle file_id, int comp_type, int comp_size); + +NX_EXTERNAL NXstatus CALLING_STYLE NXUfindgroup(NXhandle file_id, const char* group_name, char* group_class); + +NX_EXTERNAL NXstatus CALLING_STYLE NXUfindclass(NXhandle file_id, const char* group_class, char* group_name, int find_index); + +NX_EXTERNAL NXstatus CALLING_STYLE NXUfinddata(NXhandle file_id, const char* data_name); + +NX_EXTERNAL NXstatus CALLING_STYLE NXUfindattr(NXhandle file_id, const char* attr_name); + +NX_EXTERNAL NXstatus CALLING_STYLE NXUfindsignal(NXhandle file_id, int signal, char* data_name, int* data_rank, int* data_type, int data_dimensions[]); + +NX_EXTERNAL NXstatus CALLING_STYLE NXUfindaxis(NXhandle file_id, int axis, int primary, char* data_name, int* data_rank, int* data_type, int data_dimensions[]); + +NX_EXTERNAL NXstatus CALLING_STYLE NXUfindlink(NXhandle file_id, NXlink* group_id, const char* group_class); + +NX_EXTERNAL NXstatus CALLING_STYLE NXUresumelink(NXhandle file_id, NXlink group_id); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /*NEXUSAPIU*/ + diff --git a/nxconfig.h b/nxconfig.h new file mode 100644 index 00000000..2e5df705 --- /dev/null +++ b/nxconfig.h @@ -0,0 +1,132 @@ +/* include/nxconfig.h. Generated by configure. */ +/* include/nxconfig_h.in. Generated from configure.ac by autoheader. */ + +/* Define to 1 if you have the `alarm' function. */ +#define HAVE_ALARM 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_DLFCN_H 1 + +/* Define to 1 if you have the `ftime' function. */ +#define HAVE_FTIME 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_INTTYPES_H 1 + +/* Define to 1 if you have the `df' library (-ldf). */ +#define HAVE_LIBDF 1 + +/* Define to 1 if you have the `hdf5' library (-lhdf5). */ +#define HAVE_LIBHDF5 1 + +/* Define to 1 if you have the `jpeg' library (-ljpeg). */ +#define HAVE_LIBJPEG 1 + +/* Define to 1 if you have the `mfhdf' library (-lmfhdf). */ +#define HAVE_LIBMFHDF 1 + +/* Define to 1 if you have the `rpc' library (-lrpc). */ +/* #undef HAVE_LIBRPC */ + +/* Define to 1 if you have the `SystemStubs' library (-lSystemStubs). */ +/* #undef HAVE_LIBSYSTEMSTUBS */ + +/* Define to 1 if you have the `sz' library (-lsz). */ +#define HAVE_LIBSZ 1 + +/* Define to 1 if you have the `xml2' library (-lxml2). */ +#define HAVE_LIBXML2 1 + +/* Define to 1 if you have the `z' library (-lz). */ +#define HAVE_LIBZ 1 + +/* Define to 1 if your system has a GNU libc compatible `malloc' function, and + to 0 otherwise. */ +#define HAVE_MALLOC 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_MEMORY_H 1 + +/* Define to 1 if you have the `memset' function. */ +#define HAVE_MEMSET 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDLIB_H 1 + +/* Define to 1 if you have the `strchr' function. */ +#define HAVE_STRCHR 1 + +/* Define to 1 if you have the `strdup' function. */ +#define HAVE_STRDUP 1 + +/* Define to 1 if you have the `strftime' function. */ +#define HAVE_STRFTIME 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRINGS_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRING_H 1 + +/* Define to 1 if you have the `strrchr' function. */ +#define HAVE_STRRCHR 1 + +/* Define to 1 if you have the `strstr' function. */ +#define HAVE_STRSTR 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TIME_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the `tzset' function. */ +#define HAVE_TZSET 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_UNISTD_H 1 + +/* Name of package */ +#define PACKAGE "nexus" + +/* Define to the address where bug reports for this package should be sent. */ +#define PACKAGE_BUGREPORT "nexus-developers@anl.gov" + +/* Define to the full name of this package. */ +#define PACKAGE_NAME "NeXus Library" + +/* Define to the full name and version of this package. */ +#define PACKAGE_STRING "NeXus Library 3.0.1" + +/* Define to the one symbol short name of this package. */ +#define PACKAGE_TARNAME "nexus" + +/* Define to the version of this package. */ +#define PACKAGE_VERSION "3.0.1" + +/* Define to 1 if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +/* Define to 1 if you can safely include both and . */ +#define TIME_WITH_SYS_TIME 1 + +/* Define to 1 if your declares `struct tm'. */ +/* #undef TM_IN_SYS_TIME */ + +/* Version number of package */ +#define VERSION "3.0.1" + +/* Define to empty if `const' does not conform to ANSI C. */ +/* #undef const */ + +/* Define to rpl_malloc if the replacement function should be used. */ +/* #undef malloc */ + +/* Define to `unsigned' if does not define. */ +/* #undef size_t */ diff --git a/trigd.c b/trigd.c index 807087ba..f8167ed0 100644 --- a/trigd.c +++ b/trigd.c @@ -36,6 +36,16 @@ extern double Tand(double x) return (tan(x*DEGREE_RAD)); } /******************************************************************************* +* cotangens of angle in degrees +*****************************************************************************/ +extern double Cotd(double x){ + if(tan(x*DEGREE_RAD) > .00001){ + return (1./tan(x*DEGREE_RAD)); + } else { + return 0; + } +} +/******************************************************************************* * Cosinus of angle in degrees. *******************************************************************************/ extern double Cosd (double x) diff --git a/trigd.h b/trigd.h index 9aa7697f..7668bacc 100644 --- a/trigd.h +++ b/trigd.h @@ -9,6 +9,7 @@ double Sign(double d); double Sind (double x); double Tand(double x); + double Cotd(double x); double Cosd (double x); double Atand (double x); double Atand2 (double x);