From f7abbe6aa5119e27e1db3822ceaf0b53aefec9d6 Mon Sep 17 00:00:00 2001 From: cvs Date: Tue, 8 Jul 2003 13:26:53 +0000 Subject: [PATCH] - New drivers for EL737 and EL734 high performance - Changes to makefiles SKIPPED: psi/dornier2.c psi/el734hp.c psi/el737driv.c psi/el737hpdriv.c psi/make_gen psi/makefile_alpha psi/psi.c psi/velodorn.c psi/velodorn.h psi/velodorn.w psi/hardsup/el737_utility.c psi/hardsup/makefile_alpha psi/tecs/makefile_alpha --- alpha_def | 15 +++ counter.c | 2 +- danu.dat | 2 +- makefile_alpha | 9 +- matrix/makefile_alpha | 5 +- motor.c | 142 +++++++++++++++++++++++++++- motor.h | 4 + network.c | 11 ++- nread.c | 4 +- nserver.c | 4 +- rs232controller.c | 149 +++++++++++++++++++++++++++--- rs232controller.h | 18 ++++ rs232controller.w | 28 ++++++ sicsstatus.tcl | 209 +++++++++++++++++++++--------------------- test.tcl | 7 +- velo.c | 3 +- viscom.tcl | 4 +- 17 files changed, 473 insertions(+), 143 deletions(-) create mode 100644 alpha_def diff --git a/alpha_def b/alpha_def new file mode 100644 index 00000000..7a166bfa --- /dev/null +++ b/alpha_def @@ -0,0 +1,15 @@ +#------------------------------------------------------------------------ +# Some defines used further up in the makefile hierarchy of the PSI SICS +# universe. +#------------------------------------------------------------------------- + +#========================================================================== +# the following lines only for fortified version +#DFORTIFY=-DFORTIFY +#FORTIFYOBJ=strdup.o fortify.o + +#----------------select proper Makefile +MFLAGS= -f makefile_alpha + +#------------- path to HDF installation +HDFROOT=/data/lnslib diff --git a/counter.c b/counter.c index ff2dc4d1..1bc2bb22 100644 --- a/counter.c +++ b/counter.c @@ -5,7 +5,7 @@ The SICS Interface to a single detector and his associated monitors. - + Mark Koennecke, January 1997 Copyright: diff --git a/danu.dat b/danu.dat index d53f5012..ee01ca8c 100644 --- a/danu.dat +++ b/danu.dat @@ -1,3 +1,3 @@ - 288 + 290 NEVER, EVER modify or delete this file You'll risk eternal damnation and a reincarnation as a cockroach!|n \ No newline at end of file diff --git a/makefile_alpha b/makefile_alpha index 46c25b57..183ff52c 100644 --- a/makefile_alpha +++ b/makefile_alpha @@ -5,10 +5,6 @@ # Mark Koennecke 1996-2001 # Markus Zolliker, March 2003 #========================================================================== -# the following lines only for fortified version -#DFORTIFY=-DFORTIFY -#FORTIFYOBJ=strdup.o fortify.o -#========================================================================== # assign if the National Instrument GPIB driver is available #NI= -DHAVENI #NIOBJ= nigpib.o @@ -22,10 +18,7 @@ #DIFIL= difrac.o #--------------------------------------------------------------------------- -#----------------select proper Makefile -MFLAGS= -f makefile_alpha - -HDFROOT=/data/lnslib +include alpha_def CC = cc CFLAGS = -I$(HDFROOT)/include -I. $(DFORTIFY) -DHDF4 -DHDF5 -Ipsi/hardsup \ diff --git a/matrix/makefile_alpha b/matrix/makefile_alpha index fec7eea5..b7cc446b 100644 --- a/matrix/makefile_alpha +++ b/matrix/makefile_alpha @@ -5,9 +5,8 @@ # Mark Koennecke, November 1996 # Markus Zolliker, March 2003 #-------------------------------------------------------------------------- -# the following line only for fortified version -#DFORTIFY=-DFORTIFY -I$(SRC).. -#========================================================================== + +include ../alpha_def CC = cc CFLAGS = -std1 -g $(DFORTIFY) diff --git a/motor.c b/motor.c index e1d47dac..e57c3feb 100644 --- a/motor.c +++ b/motor.c @@ -74,6 +74,7 @@ #define SPEED 9 #define SIGN 10 #define ECOUNT 11 +#define POSCOUNT 12 /*------------------------------------------------------------------------ a tiny structure used in CallBack work */ @@ -173,6 +174,9 @@ fputs(pBueffel,fd); sprintf(pBueffel,"%s AccessCode %f\n",name,ObVal(self->ParArray,USRIGHTS)); fputs(pBueffel,fd); + sprintf(pBueffel,"%s poscount %f\n",name, + ObVal(self->ParArray,POSCOUNT)); + fputs(pBueffel,fd); return 1; } /*-------------------------------------------------------------------------*/ @@ -195,18 +199,145 @@ SCSetInterrupt(pCon,iVal); } } +/*-----------------------------------------------------------------------*/ +static int evaluateStatus(pMotor self, SConnection *pCon) +{ + int iRet, iCode; + MotCallback sCall; + char pBueffel[256], pError[132]; + float fHard; + + iRet = self->pDriver->GetStatus(self->pDriver); + if( (iRet == OKOK) || (iRet == HWIdle)) + { + MotorGetSoftPosition(self,pCon,&sCall.fVal); + sCall.pName = self->name; + InvokeCallBack(self->pCall, MOTEND, &sCall); + MotorGetHardPosition(self,pCon,&fHard); + self->fPosition = fHard; + if(absf(fHard - self->fTarget) > ObVal(self->ParArray,PREC)) + { + snprintf(pBueffel,131,"WARNING: %s off position by %f", + self->name, absf(fHard - self->fTarget)); + SCWrite(pCon,pBueffel, eWarning); + MotorInterrupt(pCon,ObVal(self->ParArray,INT)); + self->retryCount = 0; + return HWPosFault; + } + self->retryCount = 0; + return HWIdle; + } + /* motor suggests a fault */ + else if(iRet == HWFault) + { + self->pDriver->GetError(self->pDriver,&iCode, pError,131); + iRet = self->pDriver->TryAndFixIt(self->pDriver,iCode, self->fTarget); + if(iRet == MOTFAIL) + { + snprintf(pBueffel,255,"ERROR: %s on %s",pError,self->name); + SCWrite(pCon,pBueffel,eError); + MotorInterrupt(pCon,ObVal(self->ParArray,INT)); + self->retryCount = 0; + return HWFault; + } + else if(iRet == MOTREDO) + { + self->pDriver->RunTo(self->pDriver,self->fTarget); + self->retryCount++; + if(self->retryCount >= 3) + { + self->retryCount = 0; + return HWFault; + } + return HWBusy; + } + else + { + self->retryCount = 0; + return HWBusy; + } + } + /* a positioning fault */ + else if(iRet == HWPosFault) + { + self->pDriver->GetError(self->pDriver,&iCode, pError,131); + iRet = self->pDriver->TryAndFixIt(self->pDriver,iCode, self->fTarget); + if(iRet == MOTFAIL) + { + snprintf(pBueffel,255,"ERROR: %s on %s",pError,self->name); + SCWrite(pCon,pBueffel,eError); + MotorInterrupt(pCon,ObVal(self->ParArray,INT)); + self->retryCount = 0; + return HWFault; + } + else if(iRet == MOTREDO) + { + self->posFaultCount++; + if(self->posFaultCount >= 4) + { + self->posFaultCount = 0; + self->retryCount = 0; + return HWPosFault; + } + self->pDriver->RunTo(self->pDriver,self->fTarget); + return HWBusy; + } + else + { + return HWBusy; + } + } + else if(iRet == HWWarn) + { + self->pDriver->GetError(self->pDriver,&iCode,pError,131); + snprintf(pBueffel,255,"WARNING: %s on %s",pError,self->name); + SCWrite(pCon,pBueffel,eStatus); + return HWIdle; + } + self->retryCount = 0; + return iRet; +} +/*---------------------------------------------------------------------*/ +static void handleMoveCallback(pMotor self, SConnection *pCon) +{ + MotCallback sCall; + + self->posCount++; + if(self->posCount >= ObVal(self->ParArray,POSCOUNT)) + { + MotorGetSoftPosition(self,pCon,&sCall.fVal); + sCall.pName = self->name; + InvokeCallBack(self->pCall, MOTDRIVE, &sCall); + self->posCount = 0; + } +} +/*-----------------------------------------------------------------------*/ + static int MotorStatus(void *sulf, SConnection *pCon) + { + pMotor self = NULL; + int status; + + assert(sulf); + self = (pMotor)sulf; + + status = evaluateStatus(self,pCon); + if(status == HWBusy) + { + handleMoveCallback(self,pCon); + } + return status; + } /*-------------------------------------------------------------------------- Refactor --------------------------------------------------------------------------*/ - static int MotorStatus(void *sulf, SConnection *pCon) + static int MotorStatus2(void *sulf, SConnection *pCon) { float fHard; pMotor self; int iRet,i, iCode; - static int iRetry = 0; char pError[132]; char pBueffel[256]; - static int iPosFault = 0; + static int iPosFault = 0, iRetry = 0; MotCallback sCall; @@ -354,7 +485,7 @@ /* create and initialize parameters */ - pM->ParArray = ObParCreate(12); + pM->ParArray = ObParCreate(13); if(!pM->ParArray) { free(pM); @@ -372,6 +503,7 @@ ObParInit(pM->ParArray,SPEED,"speed",0.02,usInternal); ObParInit(pM->ParArray,SIGN,"sign",1.0,usMugger); ObParInit(pM->ParArray,ECOUNT,"failafter",3.0,usMugger); + ObParInit(pM->ParArray,POSCOUNT,"poscount",20.0,usMugger); pDriv->GetPosition(pDriv,&(pM->fPosition)); pM->fTarget = pM->fPosition; pM->endScriptID = 0; @@ -696,6 +828,8 @@ extern void KillPiPiezo(void *pData); } /* Boundaries OK, send command */ + self->posFaultCount = 0; + self->retryCount = 0; self->fTarget = fHard; iRet = self->pDriver->RunTo(self->pDriver,fHard); if(iRet != OKOK) diff --git a/motor.h b/motor.h index 32f7afb7..509a3130 100644 --- a/motor.h +++ b/motor.h @@ -25,6 +25,10 @@ float fTarget; float fPosition; long endScriptID; + int posCount; /* counter for calling the + motor callback */ + int retryCount; /* for retries in status */ + int posFaultCount; } Motor; typedef Motor *pMotor; /*-------------------------------------------------------------------------*/ diff --git a/network.c b/network.c index d386a546..6efb042c 100644 --- a/network.c +++ b/network.c @@ -472,7 +472,7 @@ CreateSocketAdress( /* how may cycles to read in order to have a timeout */ - nLoop = timeout/10; + nLoop = timeout/5; if(nLoop <= 0) { nLoop = 1; @@ -480,7 +480,7 @@ CreateSocketAdress( for(i = 0; i < nLoop; i++) { - iRet = NETAvailable(self,10); + iRet = NETAvailable(self,5); if(iRet < 0) { return iRet; @@ -521,6 +521,13 @@ CreateSocketAdress( return 1; } } + if(read >= iBufLen) + { + /* + we have filled the buffer but not found a terminator + */ + return -1; + } } } return 0; /* timeout! */ diff --git a/nread.c b/nread.c index 461bf3d1..33ee54ba 100644 --- a/nread.c +++ b/nread.c @@ -957,7 +957,7 @@ extern VerifyChannel(mkChannel *self); /* defined in network.c */ assert(self); - /* find the entry to remove */ + /* find the entry to read */ iRet = LLDnodePtr2First(self->iList); while(iRet != 0) { @@ -1006,3 +1006,5 @@ extern VerifyChannel(mkChannel *self); /* defined in network.c */ } return 0; } + + diff --git a/nserver.c b/nserver.c index 53d6a43f..426314b9 100644 --- a/nserver.c +++ b/nserver.c @@ -301,7 +301,9 @@ /* shut tasker down */ TaskerDelete(&self->pTasker); - + self->pTasker = NULL; + self->pReader = NULL; + /* save status */ if(!self->simMode) { diff --git a/rs232controller.c b/rs232controller.c index 8c3b32f6..6e94c5cc 100644 --- a/rs232controller.c +++ b/rs232controller.c @@ -16,15 +16,9 @@ #include "fortify.h" #include "sics.h" #include "splitter.h" +#include "nread.h" #include "rs232controller.h" -/* - own error codes -*/ -#define NOTCONNECTED -2700 -#define BADMEMORY -2701 -#define TIMEOUT -2702 -#define FAILEDCONNECT -2703 /*--------------------------------------------------------------------*/ void setRS232SendTerminator(prs232 self, char *term) @@ -70,6 +64,12 @@ void setRS232Timeout(prs232 self, int timeout) assert(self); self->timeout = timeout; } +/*---------------------------------------------------------------------*/ +void setRS232Debug(prs232 self, int deb) +{ + assert(self); + self->debug = deb; +} /*--------------------------------------------------------------------*/ int writeRS232(prs232 self, void *data, int dataLen) { @@ -121,6 +121,11 @@ int writeRS232(prs232 self, void *data, int dataLen) send */ iRet = NETWrite(self->pSock,data,dataLen); + if(self->debug > 0) + { + printf("RS232 OUT: %s",(char *)data); + fflush(stdout); + } if(pPtr != NULL) free(pPtr); @@ -164,6 +169,11 @@ int readRS232(prs232 self, void *data, int *dataLen) lRead = recv(self->pSock->sockid, data,rLength,0); if(lRead >= 0) { + if(self->debug > 0) + { + printf("RS232 IN: %s",(char *)data); + fflush(stdout); + } *dataLen = lRead; return 1; } @@ -172,11 +182,45 @@ int readRS232(prs232 self, void *data, int *dataLen) return (int)lRead; } } + /* not reached */ return 0; } +/*--------------------------------------------------------------------*/ +int readRS232TillTerm(prs232 self, void *data, int *datalen){ + int iRet, replylen; + assert(self); + + /* + catch an unconnected socket + */ + if(!self->pSock) + { + return NOTCONNECTED; + } + + memset(data,0,*datalen); + replylen = *datalen; + iRet = NETReadTillTerm(self->pSock,self->timeout,self->replyTerminator, + (char *)data, replylen); + if(self->debug > 0) + { + printf("RS232 IN/TERM: %s",(char *)data); + fflush(stdout); + } + if(iRet == 0) + { + return TIMEOUT; + } + else if(iRet == -1) + { + return INCOMPLETE; + } + *datalen = strlen((char *)data); + return 1; +} /*-----------------------------------------------------------------------*/ int availableRS232(prs232 self) { @@ -190,7 +234,32 @@ int availableRS232(prs232 self) return NOTCONNECTED; } - return NETAvailable(self->pSock,self->timeout); + return NETAvailable(self->pSock,3); +} +/*-----------------------------------------------------------------------*/ +int availableNetRS232(prs232 self) +{ + int status; + assert(self); + + /* + catch an unconnected socket + */ + if(!self->pSock) + { + return NOTCONNECTED; + } + + if(!self->registered){ + if(pServ->pReader != NULL){ + NetReadRegisterUserSocket(pServ->pReader,self->pSock->sockid); + self->registered = 1; + return 0; + } + } + status = NetReadReadable(pServ->pReader,self->pSock->sockid); + NetReadResetUser(pServ->pReader, self->pSock->sockid); + return status; } /*------------------------------------------------------------------------*/ int transactRS232(prs232 self, void *send, int sendLen, @@ -223,10 +292,19 @@ int transactRS232(prs232 self, void *send, int sendLen, memset(reply,0,replyLen); iRet = NETReadTillTerm(self->pSock,self->timeout,self->replyTerminator, reply, replyLen); + if(self->debug > 0) + { + printf("RS232 IN/TRANS: %s",(char *)reply); + fflush(stdout); + } if(iRet == 0) { return TIMEOUT; } + else if(iRet == -1) + { + return INCOMPLETE; + } else { return iRet; @@ -262,6 +340,10 @@ void getRS232Error(int iCode, char *errorBuffer, "Failed to connect to terminal server", errorBufferLen); break; + case INCOMPLETE: + strncpy(errorBuffer,"Did not find terminator in read buffer", + errorBufferLen); + break; default: strncpy(errorBuffer,strerror(errno), errorBufferLen); @@ -277,17 +359,53 @@ int initRS232(prs232 self) if(self->pSock != NULL) { + if(pServ->pReader != NULL){ + NetReadRemoveUserSocket(pServ->pReader,self->pSock->sockid); + } NETClosePort(self->pSock); self->pSock = NULL; } self->pSock = NETConnect(self->pHost, self->iPort); - if(!self->pSock) + if(!self->pSock){ return FAILEDCONNECT; - else + } else{ + if(pServ->pReader != NULL){ + NetReadRegisterUserSocket(pServ->pReader,self->pSock->sockid); + self->registered = 1; + } return 1; + } +} +/*------------------------------------------------------------------*/ +prs232 createRS232(char *host, int iPort) +{ + prs232 pNew = NULL; + + /* + create data structure + */ + pNew = (prs232)malloc(sizeof(rs232)); + if(!pNew) + { + return NULL; + } + memset(pNew, 0, sizeof(rs232)); + + pNew->pHost = strdup(host); + pNew->iPort = iPort; + pNew->sendTerminator = strdup("\r"); + pNew->replyTerminator = strdup("\n"); + pNew->timeout = 1000; + pNew->pDes = CreateDescriptor("RS232 Controller"); + if(!pNew->pDes || !pNew->pHost || + !pNew->replyTerminator || !pNew->sendTerminator) + { + return NULL; + } + return pNew; } /*-------------------------------------------------------------------*/ -static void KillRS232(void *pData) + void KillRS232(void *pData) { prs232 self = (prs232)pData; if(!self) @@ -309,6 +427,9 @@ static void KillRS232(void *pData) } if(self->pSock) { + if(pServ->pReader != NULL){ + NetReadRemoveUserSocket(pServ->pReader,self->pSock->sockid); + } NETClosePort(self->pSock); } if(self->pHost) @@ -590,7 +711,7 @@ int RS232Factory(SConnection *pCon, SicsInterp *pSics, void *pData, int argc, char *argv[]) { prs232 pNew = NULL; - int iRet; + int iRet, status; char pError[256]; if(argc < 4) @@ -623,8 +744,8 @@ int RS232Factory(SConnection *pCon, SicsInterp *pSics, SCWrite(pCon,"ERROR: out of memory in RS232Factory",eError); return 0; } - pNew->pSock = NETConnect(pNew->pHost, pNew->iPort); - if(!pNew->pSock) + status = initRS232(pNew); + if(status != 1) { sprintf(pError,"ERROR: failed to connect to %s at port %d", pNew->pHost, pNew->iPort); diff --git a/rs232controller.h b/rs232controller.h index 3b5be048..f6f466ff 100644 --- a/rs232controller.h +++ b/rs232controller.h @@ -14,6 +14,14 @@ #ifndef RS232CONTROLLER #define RS232CONTROLLER #include "network.h" +/* + own error codes +*/ +#define NOTCONNECTED -2700 +#define BADMEMORY -2701 +#define TIMEOUT -2702 +#define FAILEDCONNECT -2703 +#define INCOMPLETE -2704 /*----------------------- a data structure ----------------------------*/ @@ -25,6 +33,8 @@ mkChannel *pSock; char *pHost; int iPort; + int debug; + int registered; } rs232, *prs232; @@ -39,14 +49,22 @@ void setRS232SendTerminator(prs232 self, char *term); void setRS232ReplyTerminator(prs232 self, char *term); void setRS232Timeout(prs232 self, int timeout); + void setRS232Debug(prs232 self, int deb); + int writeRS232(prs232 self, void *data, int dataLen); int readRS232(prs232 self, void *data, int *dataLen); + int readRS232TillTerm(prs232 self, void *data, int *datalen); int availableRS232(prs232 self); + int availableNetRS232(prs232 self); int transactRS232(prs232 self, void *send, int sendLen, void *reply, int replylen); + void getRS232Error(int iCode, char *errorBuffer, int errorBufferLen); + int initRS232(prs232 self); + prs232 createRS232(char *host, int iPort); + void KillRS232(void *pData); #endif diff --git a/rs232controller.w b/rs232controller.w index 76f3f0f8..71554276 100644 --- a/rs232controller.w +++ b/rs232controller.w @@ -23,6 +23,8 @@ This class provides the basic communication facilities for an arbitrary mkChannel *pSock; char *pHost; int iPort; + int debug; + int registered; } rs232, *prs232; @} @@ -36,6 +38,10 @@ The fields are: \item[mkChannel] Our very own structure for a network connection. \item[pHost]The host (mostly the terminal server) to connect to. \item[iPort] The port at host to which to connect. +\item[debug] a flag which switches logging of the communication to +stdout on. +\item[registered] a flag which is set if the registration of the rs232 +controllers network port has succeeded. \end{description} The following interface functions are provided: @@ -49,14 +55,22 @@ The following interface functions are provided: void setRS232SendTerminator(prs232 self, char *term); void setRS232ReplyTerminator(prs232 self, char *term); void setRS232Timeout(prs232 self, int timeout); + void setRS232Debug(prs232 self, int deb); + int writeRS232(prs232 self, void *data, int dataLen); int readRS232(prs232 self, void *data, int *dataLen); + int readRS232TillTerm(prs232 self, void *data, int *datalen); int availableRS232(prs232 self); + int availableNetRS232(prs232 self); int transactRS232(prs232 self, void *send, int sendLen, void *reply, int replylen); + void getRS232Error(int iCode, char *errorBuffer, int errorBufferLen); + int initRS232(prs232 self); + prs232 createRS232(char *host, int iPort); + void KillRS232(void *pData); @} All functions take a pointer to their daat structure as a parameter. @@ -80,10 +94,16 @@ The functions have the following meanings: replyLen bytes of reply are copied to reply. \item[availableRS232] returns 1 if data is available, o if none is available and a negative value if an error occurs. +\item[availableNetRS232] returns 1 when data is pending at the network +reader for this port, else 0. This function also resets the network reader for +further use. This could lead to trouble if pending data is not +directly followed by a read. \item[getRS232Error] gets a string representation for the error code iCode. \item[initRS232] tries to close and reopen the RS232 connection. This is useful for the automatic fixing of communication problems encountered. +\item[createRS232] creates a new rs232 data structure with all +parameters at default values. The connection is NOT opened. \end{description} @o rs232controller.h @{ @@ -102,6 +122,14 @@ The functions have the following meanings: #ifndef RS232CONTROLLER #define RS232CONTROLLER #include "network.h" +/* + own error codes +*/ +#define NOTCONNECTED -2700 +#define BADMEMORY -2701 +#define TIMEOUT -2702 +#define FAILEDCONNECT -2703 +#define INCOMPLETE -2704 /*----------------------- a data structure ----------------------------*/ @ diff --git a/sicsstatus.tcl b/sicsstatus.tcl index b4b0fd9a..5bbe7fdb 100644 --- a/sicsstatus.tcl +++ b/sicsstatus.tcl @@ -1,80 +1,50 @@ -# naff was here , best wishes -# naff was here , best wishes -# naff was here , best wishes -yfactor 1.420000 -yfactor setAccess 1 -xfactor 0.715000 -xfactor setAccess 1 -ps.listfile peaksearch.dat -ps.listfile setAccess 2 -ps.scansteps 24 -ps.scansteps setAccess 2 -ps.scanpreset 1000000.000000 -ps.scanpreset setAccess 2 -ps.preset 1000.000000 -ps.preset setAccess 2 -ps.countmode monitor -ps.countmode setAccess 2 -ps.cogcontour 0.200000 -ps.cogcontour setAccess 2 -ps.cogwindow 60 -ps.cogwindow setAccess 2 -ps.window 7 -ps.window setAccess 2 -ps.steepness 3 -ps.steepness setAccess 2 -ps.threshold 30 -ps.threshold setAccess 2 -ps.sttstep 3.000000 -ps.sttstep setAccess 2 -ps.sttend 70.000000 -ps.sttend setAccess 2 -ps.sttstart 5.000000 -ps.sttstart setAccess 2 -ps.omstep 3.000000 -ps.omstep setAccess 2 -ps.omend 30.000000 -ps.omend setAccess 2 -ps.omstart 0.000000 -ps.omstart setAccess 2 -ps.chistep 12.000000 -ps.chistep setAccess 2 -ps.chiend 180.000000 -ps.chiend setAccess 2 -ps.chistart 0.000000 -ps.chistart setAccess 2 -ps.phistep 3.000000 -ps.phistep setAccess 2 -ps.phiend 180.000000 -ps.phiend setAccess 2 -ps.phistart 0.000000 -ps.phistart setAccess 2 -hm3 CountMode timer -hm3 preset 10.000000 +a5l.length 80.000000 +flightpathlength 0.000000 +flightpathlength setAccess 1 +flightpath 0.000000 +flightpath setAccess 1 +delay 2500.000000 +delay setAccess 1 +hm CountMode timer +hm preset 100.000000 +hm genbin 120.000000 35.000000 512 +hm init +datafile focus-1001848.hdf +datafile setAccess 3 hm2 CountMode timer hm2 preset 10.000000 -banana CountMode timer -banana preset 2.000000 hm1 CountMode timer -hm1 preset 2.000000 +hm1 preset 100.000000 +dbfile UNKNOWN +dbfile setAccess 2 +# Motor th +th sign 1.000000 +th SoftZero 0.000000 +th SoftLowerLim -120.000000 +th SoftUpperLim 120.000000 +th Fixed -1.000000 +th InterruptMode 0.000000 +th precision 0.010000 +th AccessCode 2.000000 +th poscount 20.000000 #Crystallographic Settings -hkl lambda 1.179000 -hkl setub -0.017880 -0.074923 0.028280 -0.007008 -0.036800 -0.057747 0.160912 -0.009928 0.000627 +hkl lambda 0.703790 +hkl setub -0.124702 0.001618 -0.041357 -0.104448 -0.001326 0.049388 0.000751 0.084094 0.001574 hkl hm 0 -detdist3 0.000000 -detdist3 setAccess 1 +det3dist 300.000000 +det3dist setAccess 1 det3zeroy 128.000000 det3zeroy setAccess 1 det3zerox 128.000000 det3zerox setAccess 1 -detdist2 0.000000 -detdist2 setAccess 1 +det2dist 300.000000 +det2dist setAccess 1 det2zeroy 128.000000 det2zeroy setAccess 1 det2zerox 128.000000 det2zerox setAccess 1 -detdist1 0.000000 -detdist1 setAccess 1 +det1dist 300.000000 +det1dist setAccess 1 det1zeroy 128.000000 det1zeroy setAccess 1 det1zerox 128.000000 @@ -92,24 +62,27 @@ om Fixed -1.000000 om InterruptMode 0.000000 om precision 0.010000 om AccessCode 2.000000 +om poscount 20.000000 # Motor stt stt sign 1.000000 stt SoftZero 0.000000 -stt SoftLowerLim 4.000000 -stt SoftUpperLim 113.000000 +stt SoftLowerLim -120.000000 +stt SoftUpperLim 120.000000 stt Fixed -1.000000 stt InterruptMode 0.000000 stt precision 0.010000 stt AccessCode 2.000000 +stt poscount 20.000000 # Motor ch ch sign 1.000000 ch SoftZero 0.000000 ch SoftLowerLim 0.000000 -ch SoftUpperLim 190.000000 +ch SoftUpperLim 360.000000 ch Fixed -1.000000 ch InterruptMode 0.000000 ch precision 0.010000 -ch AccessCode 1.000000 +ch AccessCode 2.000000 +ch poscount 20.000000 # Motor ph ph sign 1.000000 ph SoftZero 0.000000 @@ -119,6 +92,7 @@ ph Fixed -1.000000 ph InterruptMode 0.000000 ph precision 0.010000 ph AccessCode 2.000000 +ph poscount 20.000000 # Motor dg3 dg3 sign 1.000000 dg3 SoftZero 0.000000 @@ -128,6 +102,7 @@ dg3 Fixed -1.000000 dg3 InterruptMode 0.000000 dg3 precision 0.010000 dg3 AccessCode 2.000000 +dg3 poscount 20.000000 # Motor dg2 dg2 sign 1.000000 dg2 SoftZero 0.000000 @@ -137,6 +112,7 @@ dg2 Fixed -1.000000 dg2 InterruptMode 0.000000 dg2 precision 0.010000 dg2 AccessCode 2.000000 +dg2 poscount 20.000000 # Motor dg1 dg1 sign 1.000000 dg1 SoftZero 0.000000 @@ -146,6 +122,7 @@ dg1 Fixed -1.000000 dg1 InterruptMode 0.000000 dg1 precision 0.010000 dg1 AccessCode 2.000000 +dg1 poscount 20.000000 # Motor muca muca sign 1.000000 muca SoftZero 0.000000 @@ -155,6 +132,7 @@ muca Fixed -1.000000 muca InterruptMode 0.000000 muca precision 0.010000 muca AccessCode 2.000000 +muca poscount 20.000000 # Motor phi phi sign 1.000000 phi SoftZero 0.000000 @@ -164,15 +142,17 @@ phi Fixed -1.000000 phi InterruptMode 0.000000 phi precision 0.010000 phi AccessCode 2.000000 +phi poscount 20.000000 # Motor chi chi sign 1.000000 chi SoftZero 0.000000 chi SoftLowerLim 0.000000 -chi SoftUpperLim 190.000000 +chi SoftUpperLim 360.000000 chi Fixed -1.000000 chi InterruptMode 0.000000 chi precision 0.010000 -chi AccessCode 1.000000 +chi AccessCode 2.000000 +chi poscount 20.000000 # Motor omega omega sign 1.000000 omega SoftZero 0.000000 @@ -182,17 +162,21 @@ omega Fixed -1.000000 omega InterruptMode 0.000000 omega precision 0.010000 omega AccessCode 2.000000 +omega poscount 20.000000 # Motor twotheta twotheta sign 1.000000 twotheta SoftZero 0.000000 -twotheta SoftLowerLim 4.000000 -twotheta SoftUpperLim 113.000000 +twotheta SoftLowerLim -120.000000 +twotheta SoftUpperLim 120.000000 twotheta Fixed -1.000000 twotheta InterruptMode 0.000000 twotheta precision 0.010000 twotheta AccessCode 2.000000 -lastscancommand sscan a3 100 110 10 1 +twotheta poscount 20.000000 +lastscancommand cscan a4 0. .2 10 2 lastscancommand setAccess 2 +banana CountMode timer +banana preset 100.000000 sample_mur 0.000000 sample_mur setAccess 2 email UNKNOWN @@ -204,17 +188,18 @@ phone setAccess 2 adress UNKNOWN adress setAccess 2 # Counter counter -counter SetPreset 1.000000 +counter SetPreset 2.000000 counter SetMode Monitor # Motor som som sign 1.000000 -som SoftZero -20.000000 -som SoftLowerLim -340.000000 -som SoftUpperLim 380.000000 +som SoftZero 0.000000 +som SoftLowerLim -360.000000 +som SoftUpperLim 360.000000 som Fixed -1.000000 som InterruptMode 0.000000 som precision 0.010000 som AccessCode 2.000000 +som poscount 20.000000 # Motor sax sax sign 1.000000 sax SoftZero 0.000000 @@ -224,6 +209,7 @@ sax Fixed -1.000000 sax InterruptMode 0.000000 sax precision 0.010000 sax AccessCode 2.000000 +sax poscount 20.000000 # Motor tilt tilt sign 1.000000 tilt SoftZero 0.000000 @@ -233,28 +219,11 @@ tilt Fixed -1.000000 tilt InterruptMode 0.000000 tilt precision 0.010000 tilt AccessCode 0.000000 +tilt poscount 20.000000 #----- MultiMotor st -st recovernampos henry d1r 5. d1l -5. d1t 0. +st recovernampos henry d1r 5. d1l -5. d1t 0. #----- MultiMotor sampletable -sampletable recovernampos henry d1r 5. d1l -5. d1t 0. -# Motor cex2 -cex2 sign 1.000000 -cex2 SoftZero 0.000000 -cex2 SoftLowerLim -360.000000 -cex2 SoftUpperLim 360.000000 -cex2 Fixed -1.000000 -cex2 InterruptMode 0.000000 -cex2 precision 0.010000 -cex2 AccessCode 2.000000 -# Motor cex1 -cex1 sign 1.000000 -cex1 SoftZero 0.000000 -cex1 SoftLowerLim -360.000000 -cex1 SoftUpperLim 360.000000 -cex1 Fixed -1.000000 -cex1 InterruptMode 0.000000 -cex1 precision 0.010000 -cex1 AccessCode 2.000000 +sampletable recovernampos henry d1r 5. d1l -5. d1t 0. # Motor detectorrotation detectorrotation sign 1.000000 detectorrotation SoftZero 0.000000 @@ -264,6 +233,7 @@ detectorrotation Fixed -1.000000 detectorrotation InterruptMode 0.000000 detectorrotation precision 0.010000 detectorrotation AccessCode 2.000000 +detectorrotation poscount 20.000000 # Motor detectory detectory sign 1.000000 detectory SoftZero 0.000000 @@ -273,6 +243,7 @@ detectory Fixed -1.000000 detectory InterruptMode 0.000000 detectory precision 0.010000 detectory AccessCode 2.000000 +detectory poscount 20.000000 # Motor detectorx detectorx sign 1.000000 detectorx SoftZero 0.000000 @@ -282,6 +253,7 @@ detectorx Fixed -1.000000 detectorx InterruptMode 0.000000 detectorx precision 0.010000 detectorx AccessCode 2.000000 +detectorx poscount 20.000000 # Motor beamstopy beamstopy sign 1.000000 beamstopy SoftZero 0.000000 @@ -291,6 +263,7 @@ beamstopy Fixed -1.000000 beamstopy InterruptMode 0.000000 beamstopy precision 0.010000 beamstopy AccessCode 2.000000 +beamstopy poscount 20.000000 # Motor beamstopx beamstopx sign 1.000000 beamstopx SoftZero 0.000000 @@ -300,6 +273,7 @@ beamstopx Fixed -1.000000 beamstopx InterruptMode 0.000000 beamstopx precision 0.010000 beamstopx AccessCode 2.000000 +beamstopx poscount 20.000000 # Motor d2t d2t sign 1.000000 d2t SoftZero 0.000000 @@ -309,6 +283,7 @@ d2t Fixed -1.000000 d2t InterruptMode 0.000000 d2t precision 0.010000 d2t AccessCode 2.000000 +d2t poscount 20.000000 # Motor d2l d2l sign 1.000000 d2l SoftZero 0.000000 @@ -318,6 +293,7 @@ d2l Fixed -1.000000 d2l InterruptMode 0.000000 d2l precision 0.010000 d2l AccessCode 2.000000 +d2l poscount 20.000000 # Motor d2r d2r sign 1.000000 d2r SoftZero 0.000000 @@ -327,6 +303,7 @@ d2r Fixed -1.000000 d2r InterruptMode 0.000000 d2r precision 0.010000 d2r AccessCode 2.000000 +d2r poscount 20.000000 # Motor d1t d1t sign 1.000000 d1t SoftZero 0.000000 @@ -336,6 +313,7 @@ d1t Fixed -1.000000 d1t InterruptMode 0.000000 d1t precision 0.010000 d1t AccessCode 2.000000 +d1t poscount 20.000000 # Motor d1l d1l sign 1.000000 d1l SoftZero 0.000000 @@ -345,6 +323,7 @@ d1l Fixed -1.000000 d1l InterruptMode 0.000000 d1l precision 0.010000 d1l AccessCode 2.000000 +d1l poscount 20.000000 # Motor d1r d1r sign 1.000000 d1r SoftZero 0.000000 @@ -354,6 +333,7 @@ d1r Fixed -1.000000 d1r InterruptMode 0.000000 d1r precision 0.010000 d1r AccessCode 2.000000 +d1r poscount 20.000000 # Motor monochi monochi sign 1.000000 monochi SoftZero 0.000000 @@ -363,6 +343,7 @@ monochi Fixed -1.000000 monochi InterruptMode 0.000000 monochi precision 0.010000 monochi AccessCode 2.000000 +monochi poscount 20.000000 # Motor monophi monophi sign 1.000000 monophi SoftZero 0.000000 @@ -372,6 +353,7 @@ monophi Fixed -1.000000 monophi InterruptMode 0.000000 monophi precision 0.010000 monophi AccessCode 2.000000 +monophi poscount 20.000000 # Motor monoy monoy sign 1.000000 monoy SoftZero 0.000000 @@ -381,6 +363,7 @@ monoy Fixed -1.000000 monoy InterruptMode 0.000000 monoy precision 0.010000 monoy AccessCode 2.000000 +monoy poscount 20.000000 # Motor monox monox sign 1.000000 monox SoftZero 0.000000 @@ -390,6 +373,7 @@ monox Fixed -1.000000 monox InterruptMode 0.000000 monox precision 0.010000 monox AccessCode 2.000000 +monox poscount 20.000000 # Motor tasse tasse sign 1.000000 tasse SoftZero 0.000000 @@ -399,6 +383,7 @@ tasse Fixed -1.000000 tasse InterruptMode 0.000000 tasse precision 0.010000 tasse AccessCode 2.000000 +tasse poscount 20.000000 # Motor sdm sdm sign 1.000000 sdm SoftZero 0.000000 @@ -408,6 +393,7 @@ sdm Fixed -1.000000 sdm InterruptMode 0.000000 sdm precision 0.010000 sdm AccessCode 2.000000 +sdm poscount 20.000000 # Motor sgu sgu sign 1.000000 sgu SoftZero 0.000000 @@ -417,6 +403,7 @@ sgu Fixed -1.000000 sgu InterruptMode 0.000000 sgu precision 0.010000 sgu AccessCode 2.000000 +sgu poscount 20.000000 # Motor sgl sgl sign 1.000000 sgl SoftZero 0.000000 @@ -426,6 +413,7 @@ sgl Fixed -1.000000 sgl InterruptMode 0.000000 sgl precision 0.010000 sgl AccessCode 2.000000 +sgl poscount 20.000000 # Motor mgu mgu sign 1.000000 mgu SoftZero 0.000000 @@ -435,6 +423,7 @@ mgu Fixed -1.000000 mgu InterruptMode 0.000000 mgu precision 0.010000 mgu AccessCode 2.000000 +mgu poscount 20.000000 # Motor stu stu sign 1.000000 stu SoftZero 0.000000 @@ -444,6 +433,7 @@ stu Fixed -1.000000 stu InterruptMode 0.000000 stu precision 0.010000 stu AccessCode 2.000000 +stu poscount 20.000000 # Motor stl stl sign 1.000000 stl SoftZero 0.000000 @@ -453,6 +443,7 @@ stl Fixed -1.000000 stl InterruptMode 0.000000 stl precision 0.010000 stl AccessCode 2.000000 +stl poscount 20.000000 # Motor mtu mtu sign 1.000000 mtu SoftZero 0.000000 @@ -462,6 +453,7 @@ mtu Fixed -1.000000 mtu InterruptMode 0.000000 mtu precision 0.010000 mtu AccessCode 2.000000 +mtu poscount 20.000000 # Motor mtl mtl sign 1.000000 mtl SoftZero 0.000000 @@ -471,6 +463,7 @@ mtl Fixed -1.000000 mtl InterruptMode 0.000000 mtl precision 0.010000 mtl AccessCode 2.000000 +mtl poscount 20.000000 # Motor a6 a6 sign 1.000000 a6 SoftZero 0.000000 @@ -480,6 +473,7 @@ a6 Fixed -1.000000 a6 InterruptMode 0.000000 a6 precision 0.010000 a6 AccessCode 2.000000 +a6 poscount 20.000000 # Motor a5 a5 sign 1.000000 a5 SoftZero 0.000000 @@ -489,6 +483,7 @@ a5 Fixed -1.000000 a5 InterruptMode 0.000000 a5 precision 0.010000 a5 AccessCode 2.000000 +a5 poscount 20.000000 # Motor a4 a4 sign 1.000000 a4 SoftZero 0.000000 @@ -498,15 +493,17 @@ a4 Fixed -1.000000 a4 InterruptMode 0.000000 a4 precision 0.010000 a4 AccessCode 2.000000 +a4 poscount 20.000000 # Motor a3 a3 sign 1.000000 -a3 SoftZero -20.000000 -a3 SoftLowerLim -340.000000 -a3 SoftUpperLim 380.000000 +a3 SoftZero 0.000000 +a3 SoftLowerLim -360.000000 +a3 SoftUpperLim 360.000000 a3 Fixed -1.000000 a3 InterruptMode 0.000000 a3 precision 0.010000 a3 AccessCode 2.000000 +a3 poscount 20.000000 # Motor a2 a2 sign 1.000000 a2 SoftZero 0.000000 @@ -516,6 +513,7 @@ a2 Fixed -1.000000 a2 InterruptMode 0.000000 a2 precision 0.010000 a2 AccessCode 2.000000 +a2 poscount 20.000000 # Motor a1 a1 sign 1.000000 a1 SoftZero 0.000000 @@ -525,11 +523,14 @@ a1 Fixed -1.000000 a1 InterruptMode 0.000000 a1 precision 0.010000 a1 AccessCode 2.000000 -user Uwe Filges +a1 poscount 20.000000 +batchroot /data/koenneck/src/sics +batchroot setAccess 2 +user Daniel_the_Clementine user setAccess 2 -sample D20 30K SNP Okt 2001 GS +sample DanielOxid sample setAccess 2 -title endtest called with 23.000000 :Driving: +title TopsiTupsiTapsi title setAccess 2 -starttime 2002-08-07 08:09:45 +starttime UNKNOWN starttime setAccess 2 diff --git a/test.tcl b/test.tcl index 9a002751..6f433c4e 100644 --- a/test.tcl +++ b/test.tcl @@ -169,7 +169,12 @@ set dornen(Port) 4000 set dornen(Channel) 6 set dornen(Timeout) 5000 #VelocitySelector nvs tilt DORNIER dornen -VelocitySelector nvs tilt SIM +set d2003(Host) psts233 +set d2003(Port) 3004 +set d2003(Timeout) 20000 +VelocitySelector nvs tilt dornier2003 d2003 + +#VelocitySelector nvs tilt SIM nvs add -20 28800 nvs add 3800 4500 nvs add 5900 6700 diff --git a/velo.c b/velo.c index 90a15370..e2302c52 100644 --- a/velo.c +++ b/velo.c @@ -173,7 +173,8 @@ /* if we are here we tried three times and failed to get it work */ - sprintf(pBueffel,"ERRROR: Failed 3 times to vary rotation speed. Failing."); + sprintf(pBueffel, + "ERRROR: Failed 3 times to vary rotation speed. Failing."); SCWrite(pCon,pBueffel,eError); SCSetInterrupt(pCon,(int)ObVal(self->pPar,INT)); EVCSetMode(self->pMonitor,EVIdle); diff --git a/viscom.tcl b/viscom.tcl index c8c758a9..8c4c1637 100755 --- a/viscom.tcl +++ b/viscom.tcl @@ -1,4 +1,4 @@ -#!/data/koenneck/bin/wish +#!/usr/bin/wish #----------------------------------------------------------------------------- # A semi visual command line client for SICS # @@ -11,7 +11,7 @@ lappend auto_path /data/koenneck/bin/tcl set INI(DefUser) Spy set INI(DefPasswd) 007 -set INI(ServerPort) 2910 +set INI(ServerPort) 3006 set INI(InterruptPort) 2913 set INI(box) localhost set INI(usPasswd) Rosy