.
This commit is contained in:
@ -1,9 +1,10 @@
|
|||||||
# Makefile for modifications to PGPLOT allowing for
|
# Makefile for modifications to PGPLOT allowing for
|
||||||
# timeout on cursor input for the devices VMAC, XWINDOW and XSERVE
|
# timeout on cursor input for the devices VMAC, XWINDOW and XSERVE
|
||||||
|
|
||||||
ORIG=/usr/local/distsrc/pgplot5.2.2
|
PGROOT=/afs/psi.ch/project/sinq/sl6
|
||||||
|
ORIG=$(PGROOT)/lib
|
||||||
|
|
||||||
FFLAGS=-g -Wimplicit -Wall -g -I$(ORIG)
|
FFLAGS=-g -Wimplicit -Wall -g -I$(PGROOT)/include
|
||||||
CFLAGS=-g -DPG_PPU -I. -I/usr/X11R6/include
|
CFLAGS=-g -DPG_PPU -I. -I/usr/X11R6/include
|
||||||
|
|
||||||
include make_gen
|
include make_gen
|
||||||
|
@ -173,7 +173,7 @@ int CocCreateSockAdr(
|
|||||||
}
|
}
|
||||||
|
|
||||||
char* readWrite(int tmo, int skip, char *find) {
|
char* readWrite(int tmo, int skip, char *find) {
|
||||||
int lbuf, go, iret, n, shortTmo, l, socket;
|
int lbuf, go, n, shortTmo, l, socket;
|
||||||
Mode idx;
|
Mode idx;
|
||||||
char *msg, *p, *q;
|
char *msg, *p, *q;
|
||||||
char chr;
|
char chr;
|
||||||
@ -283,7 +283,7 @@ char* readWrite(int tmo, int skip, char *find) {
|
|||||||
shortTmo = 0;
|
shortTmo = 0;
|
||||||
}
|
}
|
||||||
fflush(stdout);
|
fflush(stdout);
|
||||||
if (iret==0) laststat=0;
|
if (result==NULL) laststat=0;
|
||||||
return result;
|
return result;
|
||||||
OnError: return NULL;
|
OnError: return NULL;
|
||||||
}
|
}
|
||||||
|
201
tecs/tecs.c
201
tecs/tecs.c
@ -61,19 +61,14 @@ typedef struct {
|
|||||||
char typ;
|
char typ;
|
||||||
} SensorT;
|
} SensorT;
|
||||||
|
|
||||||
enum Sensors { A, B, C, D, A0, A1, A2, A3, A4, N_SENSORS };
|
enum Sensors { A, B, C, D, N_SENSORS };
|
||||||
|
|
||||||
static SensorT
|
static SensorT
|
||||||
sensA={"A"},
|
sensA={"A"},
|
||||||
sensB={"B"},
|
sensB={"B"},
|
||||||
sensC={"C"},
|
sensC={"C"},
|
||||||
sensD={"D"},
|
sensD={"D"},
|
||||||
sensA0={"A0", DATA_UNDEF},
|
*sensors[N_SENSORS]={&sensA, &sensB, &sensC, &sensD},
|
||||||
sensA1={"A1", DATA_UNDEF},
|
|
||||||
sensA2={"A2", DATA_UNDEF},
|
|
||||||
sensA3={"A3", DATA_UNDEF},
|
|
||||||
sensA4={"A4", DATA_UNDEF},
|
|
||||||
*sensors[N_SENSORS]={&sensA, &sensB, &sensC, &sensD, &sensA0, &sensA1, &sensA2, &sensA3, &sensA4 },
|
|
||||||
*ctlSens=NULL, /* control sensor */
|
*ctlSens=NULL, /* control sensor */
|
||||||
*heliumSens=NULL,
|
*heliumSens=NULL,
|
||||||
*auxSens=NULL,
|
*auxSens=NULL,
|
||||||
@ -145,6 +140,7 @@ static float
|
|||||||
still=0,
|
still=0,
|
||||||
linearPower=0, /* normally 0. Maximum power when loop=2 and the power linear to the output */
|
linearPower=0, /* normally 0. Maximum power when loop=2 and the power linear to the output */
|
||||||
shiftUp, shiftLow, /* upper and lower limit of tShift correction */
|
shiftUp, shiftLow, /* upper and lower limit of tShift correction */
|
||||||
|
maxpower2=1.0,
|
||||||
state,
|
state,
|
||||||
mout;
|
mout;
|
||||||
|
|
||||||
@ -180,16 +176,15 @@ static int
|
|||||||
tim0, /* msec Time */
|
tim0, /* msec Time */
|
||||||
per, /* effective period */
|
per, /* effective period */
|
||||||
mmInt, mmTime, /* interval and time for next min-max logging */
|
mmInt, mmTime, /* interval and time for next min-max logging */
|
||||||
nScan=0, /* number of scanned channels */
|
|
||||||
iScan=1, /* actual scan channel */
|
|
||||||
alarmListSize=0,
|
alarmListSize=0,
|
||||||
keepT=0, /* keep control over power-up */
|
keepT=0, /* keep control over power-up */
|
||||||
swRangeOn=60, /* when not happen several times within less than 60 sec. delay,
|
swRangeOn=60, /* when not happen several times within less than 60 sec. delay,
|
||||||
switch heater range on when controller switched it off */
|
switch heater range on when controller switched it off */
|
||||||
initMaxPower=0, /* set MaxPower for the first time */
|
initMaxPower=0, /* set MaxPower for the first time */
|
||||||
unit=1, /* 1: Kelvin, 2: Celsius */
|
unit=1, /* 1: Kelvin, 2: Celsius */
|
||||||
autoconfig=1,
|
autoconfig=0, /* automatic configuration 1: inside tecs, 0: done by SEA */
|
||||||
lockAlarm,
|
lockAlarm,
|
||||||
|
stickhtr=-1,
|
||||||
cntError;
|
cntError;
|
||||||
|
|
||||||
static int tim, rdTim; /* actual time, read Time */
|
static int tim, rdTim; /* actual time, read Time */
|
||||||
@ -444,12 +439,7 @@ int InstalCurve(SensorT *sensor, char *devArg) {
|
|||||||
str_upcase(head, chead);
|
str_upcase(head, chead);
|
||||||
ERR_P(LscCmd(ser, "CRVHDR [num]:[head]"));
|
ERR_P(LscCmd(ser, "CRVHDR [num]:[head]"));
|
||||||
}
|
}
|
||||||
if (chan[1]>'1') { /* scanned inputs A2...A4 */
|
ERR_P(LscCmd(ser, "INTYPE?[chan]>buf1;INCRV?[chan]>buf2;INSET?[chan]>buf3"));
|
||||||
ERR_P(LscCmd(ser, "INCRV?[chan]>buf2;INSET?[chan]>buf3"));
|
|
||||||
str_copy(buf1, intype);
|
|
||||||
} else {
|
|
||||||
ERR_P(LscCmd(ser, "INTYPE?[chan]>buf1;INCRV?[chan]>buf2;INSET?[chan]>buf3"));
|
|
||||||
}
|
|
||||||
if (!LscEqPar(buf1, intype) || atoi(buf2)!=num || buf3[0]!='1') {
|
if (!LscEqPar(buf1, intype) || atoi(buf2)!=num || buf3[0]!='1') {
|
||||||
ERR_P(LscCmd(ser, "ANALOG 2:0,3;INSET [chan],1"));
|
ERR_P(LscCmd(ser, "ANALOG 2:0,3;INSET [chan],1"));
|
||||||
if (chan[1]<='1') ERR_P(LscCmd(ser, "RANGE:0;INTYPE [chan]:[intype]"));
|
if (chan[1]<='1') ERR_P(LscCmd(ser, "RANGE:0;INTYPE [chan]:[intype]"));
|
||||||
@ -628,10 +618,10 @@ again:
|
|||||||
twoloops=0;
|
twoloops=0;
|
||||||
initMaxPower=1;
|
initMaxPower=1;
|
||||||
resist=10;
|
resist=10;
|
||||||
nScan=0;
|
|
||||||
unit=1;
|
unit=1;
|
||||||
empty=0;
|
empty=0;
|
||||||
full = -1;
|
full = -1;
|
||||||
|
stickhtr = -1;
|
||||||
} else {
|
} else {
|
||||||
InitSensor(&sensC);
|
InitSensor(&sensC);
|
||||||
if (strcasecmp(nam, "none") == 0) {
|
if (strcasecmp(nam, "none") == 0) {
|
||||||
@ -646,10 +636,6 @@ again:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i=5;i<9;i++) {
|
|
||||||
InitSensor(sensors[i]);
|
|
||||||
}
|
|
||||||
|
|
||||||
dev[0]='\0';
|
dev[0]='\0';
|
||||||
str_copy(heUnits, "%");
|
str_copy(heUnits, "%");
|
||||||
|
|
||||||
@ -662,17 +648,6 @@ again:
|
|||||||
j=2;
|
j=2;
|
||||||
}
|
}
|
||||||
str_copy(plug->descr, dev);
|
str_copy(plug->descr, dev);
|
||||||
if (sensA.type[0]>'0' && sensA.type[0]<='4') {
|
|
||||||
nScan=sensA.type[0]-'0';
|
|
||||||
for (i=5;i<5+nScan;i++) {
|
|
||||||
s=sensors[i];
|
|
||||||
s->present=-1;
|
|
||||||
s->band=10;
|
|
||||||
if (s->scale==0.0) s->scale=1.0;
|
|
||||||
s->typ='1'+i-5;
|
|
||||||
}
|
|
||||||
sensA.type[0]='\0';
|
|
||||||
}
|
|
||||||
if (tLimit==0.0) {
|
if (tLimit==0.0) {
|
||||||
if (tMaxLimit==0.0) {
|
if (tMaxLimit==0.0) {
|
||||||
tLimit=310;
|
tLimit=310;
|
||||||
@ -707,14 +682,6 @@ again:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i=5;i<9;i++) {
|
|
||||||
s=sensors[i];
|
|
||||||
if (s->type[0] != '\0') {
|
|
||||||
s->present=-1;
|
|
||||||
}
|
|
||||||
s->typ=s->type[0];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!plug->devcmd) { /* set device name */
|
if (!plug->devcmd) { /* set device name */
|
||||||
str_copy(plug->device, nam);
|
str_copy(plug->device, nam);
|
||||||
ConcatDevice();
|
ConcatDevice();
|
||||||
@ -873,16 +840,9 @@ void LogMinMax(int new) {
|
|||||||
sprintf(buf1, " Tk %.5g", tk);
|
sprintf(buf1, " Tk %.5g", tk);
|
||||||
str_append(buf, buf1);
|
str_append(buf, buf1);
|
||||||
}
|
}
|
||||||
} else if (nScan==0) {
|
} else {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
for (i=5; i<5+nScan; i++) {
|
|
||||||
s1=sensors[i];
|
|
||||||
if (s1->t!=DATA_UNDEF) {
|
|
||||||
sprintf(buf1, " T%c %.5g", s1->ch[1], s1->t);
|
|
||||||
str_append(buf, buf1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (power!=DATA_UNDEF) {
|
if (power!=DATA_UNDEF) {
|
||||||
sprintf(buf1, " P %.4g", power);
|
sprintf(buf1, " P %.4g", power);
|
||||||
str_append(buf, buf1);
|
str_append(buf, buf1);
|
||||||
@ -997,41 +957,13 @@ int ReadTemp(void) {
|
|||||||
int i, doit, stat;
|
int i, doit, stat;
|
||||||
int tfill, dfill;
|
int tfill, dfill;
|
||||||
static time_t lastRead=0;
|
static time_t lastRead=0;
|
||||||
time_t now;
|
|
||||||
float hlev;
|
float hlev;
|
||||||
SensorT *s;
|
SensorT *s;
|
||||||
|
|
||||||
readTemp=0;
|
readTemp=0;
|
||||||
|
|
||||||
doit=0;
|
doit=0;
|
||||||
if (nScan>0) {
|
lastRead = 0;
|
||||||
time(&now);
|
|
||||||
if (lastRead == 0) {
|
|
||||||
lastRead = now;
|
|
||||||
} else if (now/30 != lastRead/30) {
|
|
||||||
s=sensors[iScan+4];
|
|
||||||
str_copy(chan, s->ch);
|
|
||||||
/* find next sensor s2 */
|
|
||||||
for (i = iScan; i < iScan - 1 + nScan; i++) {
|
|
||||||
sens = sensors[i % nScan + 5];
|
|
||||||
if (sens->present >= 1) {
|
|
||||||
iScan = i % nScan + 1;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
ibuf = iScan-1;
|
|
||||||
if (unit == CELSIUS) {
|
|
||||||
ERR_P(LscCmd(ser, "CRDG?[chan]>fbuf;DOUT 3,[ibuf];XSCAN 1,[iScan];DISPFLD [sens.dispfld],[chan],[unit]"));
|
|
||||||
} else {
|
|
||||||
ERR_P(LscCmd(ser, "KRDG?[chan]>fbuf;DOUT 3,[ibuf];XSCAN 1,[iScan];DISPFLD [sens.dispfld],[chan],[unit]"));
|
|
||||||
}
|
|
||||||
lastRead = now;
|
|
||||||
s->t = fbuf;
|
|
||||||
s->readStat = 0;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
lastRead = 0;
|
|
||||||
}
|
|
||||||
for (i=0; i<4; i++) {
|
for (i=0; i<4; i++) {
|
||||||
s=sensors[i];
|
s=sensors[i];
|
||||||
s->stat1=0;
|
s->stat1=0;
|
||||||
@ -1174,7 +1106,7 @@ int ReadTemp(void) {
|
|||||||
if (samp.temp==DATA_UNDEF) {
|
if (samp.temp==DATA_UNDEF) {
|
||||||
samp.temp=cryo.temp;
|
samp.temp=cryo.temp;
|
||||||
}
|
}
|
||||||
} else if (nScan==0) {
|
} else {
|
||||||
tm=(rdTim % 3600) * 1.0e-4;
|
tm=(rdTim % 3600) * 1.0e-4;
|
||||||
ts=(rdTim % 60) * 60.0e-4+0.5;
|
ts=(rdTim % 60) * 60.0e-4+0.5;
|
||||||
}
|
}
|
||||||
@ -1242,7 +1174,7 @@ int ReadHeater(int full) {
|
|||||||
} else {
|
} else {
|
||||||
if (twoloops) {
|
if (twoloops) {
|
||||||
ERR_P(LscCmd(ser, "HTR?>htr;HTRST?>htrst;RELAYST?1>relay;RANGE?>ibuf;AOUT?2>fbuf"));
|
ERR_P(LscCmd(ser, "HTR?>htr;HTRST?>htrst;RELAYST?1>relay;RANGE?>ibuf;AOUT?2>fbuf"));
|
||||||
power2 = fbuf*fbuf*1e-5;
|
power2 = fbuf*fbuf*1e-4*maxpower2;
|
||||||
} else {
|
} else {
|
||||||
ERR_P(LscCmd(ser, "HTR?>htr;HTRST?>htrst;RELAYST?1>relay;RANGE?>ibuf"));
|
ERR_P(LscCmd(ser, "HTR?>htr;HTRST?>htrst;RELAYST?1>relay;RANGE?>ibuf"));
|
||||||
}
|
}
|
||||||
@ -1346,7 +1278,7 @@ int SetTemp(int switchOn) {
|
|||||||
mout=0;
|
mout=0;
|
||||||
ERR_P(LscCmd(ser, "CSET [loop]:[chan],[unit],1,[keepT];MOUT [loop],0"));
|
ERR_P(LscCmd(ser, "CSET [loop]:[chan],[unit],1,[keepT];MOUT [loop],0"));
|
||||||
if (twoloops) {
|
if (twoloops) {
|
||||||
ERR_P(LscCmd(ser, "CSET 2:D,[unit],1,[keepT];MOUT [loop],0"));
|
ERR_P(LscCmd(ser, "CSET 2:C,[unit],1,[keepT];MOUT 2,0"));
|
||||||
}
|
}
|
||||||
if (loop==1) {
|
if (loop==1) {
|
||||||
ERR_P(LscCmd(ser, "RANGE:0"));
|
ERR_P(LscCmd(ser, "RANGE:0"));
|
||||||
@ -1386,17 +1318,17 @@ int SetTemp(int switchOn) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
ERR_P(LscCmd(ser, "SETP?[loop]>fbuf"));
|
ERR_P(LscCmd(ser, "SETP?[loop]>fbuf"));
|
||||||
if (fabsf(setH-fbuf) >= (fbuf+setH)*1.0e-5 || twoloops) {
|
if (fabsf(setH-fbuf) >= (fbuf+setH)*1.0e-5) {
|
||||||
ERR_P(LscCmd(ser, "SETP [loop]:[setH]"));
|
ERR_P(LscCmd(ser, "SETP [loop]:[setH]"));
|
||||||
if (twoloops) {
|
|
||||||
ERR_P(LscCmd(ser, "SETP 2:[set2]"));
|
|
||||||
}
|
|
||||||
if (!doubleControl && !showSet) {
|
if (!doubleControl && !showSet) {
|
||||||
logfileOut(LOG_MAIN, "set %g (on %s) (was changed %g -> %g)\n", set, ctlSens->ch, fbuf, setH);
|
logfileOut(LOG_MAIN, "set %g (on %s) (was changed %g -> %g)\n", set, ctlSens->ch, fbuf, setH);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
setH=fbuf;
|
setH=fbuf;
|
||||||
}
|
}
|
||||||
|
if (twoloops) {
|
||||||
|
ERR_P(LscCmd(ser, "SETP 2:[set2]"));
|
||||||
|
}
|
||||||
tr=TrueScale(ctlSens, setH);
|
tr=TrueScale(ctlSens, setH);
|
||||||
if (showSet) {
|
if (showSet) {
|
||||||
logfileOut(LOG_MAIN, "set %g (on %s)\n", set, ctlSens->ch);
|
logfileOut(LOG_MAIN, "set %g (on %s)\n", set, ctlSens->ch);
|
||||||
@ -1675,7 +1607,7 @@ int ConfigAlarms(float genLimit) {
|
|||||||
ERR_P(LscCmd(ser, "RELAY 1:1;BEEP:0"));
|
ERR_P(LscCmd(ser, "RELAY 1:1;BEEP:0"));
|
||||||
relay=0;
|
relay=0;
|
||||||
k=0;
|
k=0;
|
||||||
for (i=0;i<5+nScan;i++) {
|
for (i=0;i<4;i++) {
|
||||||
s=sensors[i];
|
s=sensors[i];
|
||||||
str_copy(buf1, s->ch);
|
str_copy(buf1, s->ch);
|
||||||
if (s->customAlarm==0 && genLimit>0.0) s->alarm=genLimit;
|
if (s->customAlarm==0 && genLimit>0.0) s->alarm=genLimit;
|
||||||
@ -1738,7 +1670,7 @@ void AssignTypes(void) {
|
|||||||
auxSens=NULL;
|
auxSens=NULL;
|
||||||
testSens=NULL;
|
testSens=NULL;
|
||||||
test2Sens=NULL;
|
test2Sens=NULL;
|
||||||
for (i=0; i<5+nScan; i++) {
|
for (i=0; i<4; i++) {
|
||||||
s=sensors[i];
|
s=sensors[i];
|
||||||
if (s->present==1) {
|
if (s->present==1) {
|
||||||
typ=s->typ;
|
typ=s->typ;
|
||||||
@ -1789,7 +1721,7 @@ int Settings(void) {
|
|||||||
SensorT *s;
|
SensorT *s;
|
||||||
SensorT *fields[8];
|
SensorT *fields[8];
|
||||||
char *cfg, *p;
|
char *cfg, *p;
|
||||||
int i,k,l,kk;
|
int i,k,l;
|
||||||
|
|
||||||
if (remoteMode!=2) {
|
if (remoteMode!=2) {
|
||||||
remoteMode=2; /* set to remote mode */
|
remoteMode=2; /* set to remote mode */
|
||||||
@ -1799,7 +1731,7 @@ int Settings(void) {
|
|||||||
} else {
|
} else {
|
||||||
ERR_P(LscCmd(ser, "PID [loop],[prop],[integ],[deriv]"));
|
ERR_P(LscCmd(ser, "PID [loop],[prop],[integ],[deriv]"));
|
||||||
}
|
}
|
||||||
for (i=0; i<5+nScan; i++) {
|
for (i=0; i<4; i++) {
|
||||||
s=sensors[i];
|
s=sensors[i];
|
||||||
if (i<4) {
|
if (i<4) {
|
||||||
plug=plugs[i/2];
|
plug=plugs[i/2];
|
||||||
@ -1808,24 +1740,9 @@ int Settings(void) {
|
|||||||
}
|
}
|
||||||
if (s->present < 0) {
|
if (s->present < 0) {
|
||||||
if (settingsFlag) return 0;
|
if (settingsFlag) return 0;
|
||||||
/*
|
|
||||||
if (i==4) {
|
|
||||||
ERR_P(LscCmd(ser, "DOUT:2;XSCAN:2,,2"));
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
ERR_I(InstalCurve(s, plug->device));
|
ERR_I(InstalCurve(s, plug->device));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (nScan>0) {
|
|
||||||
for (out1=nScan+1;out1<=4;out1++) {
|
|
||||||
ERR_P(LscCmd(ser, "INSET A[out1],0"));
|
|
||||||
}
|
|
||||||
ERR_P(LscCmd(ser, "INSET A5,0;INSET A6,0;INSET A7,0;INSET A8,0"));
|
|
||||||
ERR_P(LscCmd(ser, "INSET A9,0;INSET A10,0;INSET A11,0;INSET A12,0"));
|
|
||||||
ERR_P(LscCmd(ser, "INSET A13,0;INSET A14,0;INSET A15,0;INSET A16,0"));
|
|
||||||
} else {
|
|
||||||
ERR_P(LscCmd(ser, "XSCAN:0"));
|
|
||||||
}
|
|
||||||
|
|
||||||
AssignTypes();
|
AssignTypes();
|
||||||
|
|
||||||
@ -1861,16 +1778,6 @@ int Settings(void) {
|
|||||||
DisplayFmt(testSens, fields, &k);
|
DisplayFmt(testSens, fields, &k);
|
||||||
DisplayFmt(test2Sens, fields, &k);
|
DisplayFmt(test2Sens, fields, &k);
|
||||||
DisplayFmt(auxSens, fields, &k);
|
DisplayFmt(auxSens, fields, &k);
|
||||||
if (nScan>0) {
|
|
||||||
i=0;
|
|
||||||
kk=k;
|
|
||||||
while (i<nScan && DisplayFmt(sensors[i+5], fields, &k)) {
|
|
||||||
if (k>4) k=kk;
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
/* k = kk + nScan + 1; */
|
|
||||||
if (k > 4) k = 5;
|
|
||||||
}
|
|
||||||
maxfld=k-1;
|
maxfld=k-1;
|
||||||
|
|
||||||
/* fields 5-8 standard raw data */
|
/* fields 5-8 standard raw data */
|
||||||
@ -1934,6 +1841,7 @@ int ConfigByCode(int plugNr) {
|
|||||||
logfileOut(LOG_MAIN ,"reset inputs on plug%d\n", plugNr);
|
logfileOut(LOG_MAIN ,"reset inputs on plug%d\n", plugNr);
|
||||||
plug->sensor1->present=0;
|
plug->sensor1->present=0;
|
||||||
plug->sensor2->present=0;
|
plug->sensor2->present=0;
|
||||||
|
settingsFlag=1;
|
||||||
} else {
|
} else {
|
||||||
if (plugNr == 0) {
|
if (plugNr == 0) {
|
||||||
str_copy(devname0, "none");
|
str_copy(devname0, "none");
|
||||||
@ -1965,6 +1873,7 @@ int ConfigByCode(int plugNr) {
|
|||||||
str_append(buf, nam);
|
str_append(buf, nam);
|
||||||
str_append(buf, "'");
|
str_append(buf, "'");
|
||||||
ERR_I(PrepInput(buf));
|
ERR_I(PrepInput(buf));
|
||||||
|
settingsFlag=1;
|
||||||
} else {
|
} else {
|
||||||
logfileOut(LOG_MAIN+LOG_STAT ,"%s on plug%d (code %d)\n", nam, plugNr, plug->code);
|
logfileOut(LOG_MAIN+LOG_STAT ,"%s on plug%d (code %d)\n", nam, plugNr, plug->code);
|
||||||
if (plugNr == 0) {
|
if (plugNr == 0) {
|
||||||
@ -1975,7 +1884,6 @@ int ConfigByCode(int plugNr) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
settingsFlag=1;
|
|
||||||
return 0;
|
return 0;
|
||||||
OnError: return -1;
|
OnError: return -1;
|
||||||
}
|
}
|
||||||
@ -2251,13 +2159,13 @@ int PeriodicTask(void) {
|
|||||||
/*
|
/*
|
||||||
static float shiftTarget=0;
|
static float shiftTarget=0;
|
||||||
*/
|
*/
|
||||||
if (nScan==0) {
|
if (stickhtr < 0) {
|
||||||
ERR_P(LscCmd(ser, "DIOST?>cod1,out1;DOUT 3,29;BUSY?>busy"));
|
ERR_P(LscCmd(ser, "DIOST?>cod1,out1;DOUT 3,29;BUSY?>busy"));
|
||||||
} else {
|
} else {
|
||||||
cod1=0;
|
cod1=0;
|
||||||
ERR_P(LscCmd(ser, "BUSY?>busy"));
|
ERR_P(LscCmd(ser, "DOUT 3,0;BUSY?>busy"));
|
||||||
}
|
}
|
||||||
if ((plug0.codDefined && plug1.codDefined) || nScan>0) {
|
if ((plug0.codDefined && plug1.codDefined)) {
|
||||||
per=period; /* no timeout on above command and codes are defined: normal period */
|
per=period; /* no timeout on above command and codes are defined: normal period */
|
||||||
if (per>logPeriod*1000) per=logPeriod*1000;
|
if (per>logPeriod*1000) per=logPeriod*1000;
|
||||||
}
|
}
|
||||||
@ -2412,7 +2320,7 @@ int PeriodicTask(void) {
|
|||||||
if (rdTim>=logTime) {
|
if (rdTim>=logTime) {
|
||||||
ERR_I(DataPutAll(NULL, rdTim));
|
ERR_I(DataPutAll(NULL, rdTim));
|
||||||
logTime=(rdTim / logPeriod + 1) * logPeriod;
|
logTime=(rdTim / logPeriod + 1) * logPeriod;
|
||||||
if (rdTim>mmTime && (cryo.sensor1 != NULL || nScan>0)) LogMinMax(0);
|
if (rdTim>mmTime && (cryo.sensor1 != NULL)) LogMinMax(0);
|
||||||
}
|
}
|
||||||
if (set!=0 && remoteMode==2) {
|
if (set!=0 && remoteMode==2) {
|
||||||
t=ctlSens->t;
|
t=ctlSens->t;
|
||||||
@ -2439,7 +2347,7 @@ int PeriodicTask(void) {
|
|||||||
}
|
}
|
||||||
if (htr == 100.0 && mout > 0) {
|
if (htr == 100.0 && mout > 0) {
|
||||||
mstep = 0.2;
|
mstep = 0.2;
|
||||||
while (htr == 0 && mout > 0) {
|
while (htr == 100.0 && mout > 0) {
|
||||||
mstep *= 2;
|
mstep *= 2;
|
||||||
mout -= mstep;
|
mout -= mstep;
|
||||||
ERR_P(LscCmd(ser, "MOUT [loop],[mout]"));
|
ERR_P(LscCmd(ser, "MOUT [loop],[mout]"));
|
||||||
@ -2560,13 +2468,13 @@ int PeriodicTask(void) {
|
|||||||
}
|
}
|
||||||
oldSet = set;
|
oldSet = set;
|
||||||
|
|
||||||
if (nScan==0) {
|
if (stickhtr < 0) {
|
||||||
ERR_P(LscCmd(ser, "KEYST?>key;DIOST?>cod2,out2;DOUT 3,30"));
|
ERR_P(LscCmd(ser, "KEYST?>key;DIOST?>cod2,out2;DOUT 3,30"));
|
||||||
} else {
|
} else {
|
||||||
ERR_P(LscCmd(ser, "KEYST?>key"));
|
ERR_P(LscCmd(ser, "KEYST?>key"));
|
||||||
}
|
}
|
||||||
if (busy==0) {
|
if (busy==0) {
|
||||||
if (nScan==0) {
|
if (stickhtr < 0) {
|
||||||
if (out1!=30) {
|
if (out1!=30) {
|
||||||
ERR_P(LscCmd(ser, "DOUT:3,30"));
|
ERR_P(LscCmd(ser, "DOUT:3,30"));
|
||||||
ERR_P(LscCmd(ser, "DIOST?>cod1,out1"));
|
ERR_P(LscCmd(ser, "DIOST?>cod1,out1"));
|
||||||
@ -2575,34 +2483,14 @@ int PeriodicTask(void) {
|
|||||||
ERR_P(LscCmd(ser, "DOUT:3,29"));
|
ERR_P(LscCmd(ser, "DOUT:3,29"));
|
||||||
ERR_P(LscCmd(ser, "DIOST?>cod2,out2;DOUT 3,30"));
|
ERR_P(LscCmd(ser, "DIOST?>cod2,out2;DOUT 3,30"));
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
out1=0;
|
||||||
|
out2=0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* obsolete
|
|
||||||
* if ((plug0.code1 & 0x2a) == 0x20) {
|
|
||||||
* sensA0.t = DATA_UNDEF;
|
|
||||||
* sensA1.t = DATA_UNDEF;
|
|
||||||
* sensA2.t = DATA_UNDEF;
|
|
||||||
* sensA3.t = DATA_UNDEF;
|
|
||||||
* switch ((int)scanChan) {
|
|
||||||
* case 0: sensA0.t = te; break;
|
|
||||||
* case 1: sensA1.t = te; break;
|
|
||||||
* case 2: sensA2.t = te; break;
|
|
||||||
* case 3: sensA3.t = te; break;
|
|
||||||
* default: break;
|
|
||||||
* }
|
|
||||||
* }
|
|
||||||
*/
|
|
||||||
if (out1==30 && out2==29) {
|
if (out1==30 && out2==29) {
|
||||||
/* code conversion */
|
/* code conversion */
|
||||||
plug0.code1=3*decod[cod2 % 8] ^ 2*decod[cod1 % 8]; /* ^ is exclusive OR */
|
plug0.code1=3*decod[cod2 % 8] ^ 2*decod[cod1 % 8]; /* ^ is exclusive OR */
|
||||||
/* obsolete, for external switch (MA09)
|
|
||||||
* if ((plug0.code1 & 0x2a) == 0x20) {
|
|
||||||
* scanChan = cod1 & 0x03;
|
|
||||||
* plug0.code1 = plug0.code1 & 0x30;
|
|
||||||
* } else {
|
|
||||||
* scanChan = DATA_UNDEF;
|
|
||||||
* }
|
|
||||||
*/
|
|
||||||
plug1.code1=-(3*decod[cod2 / 8] ^ 2*decod[cod1 / 8]);
|
plug1.code1=-(3*decod[cod2 / 8] ^ 2*decod[cod1 / 8]);
|
||||||
for (i=0; i<2; i++) {
|
for (i=0; i<2; i++) {
|
||||||
plug=plugs[i];
|
plug=plugs[i];
|
||||||
@ -3203,7 +3091,7 @@ int StatusHdl(int mode, void *base, int fd) {
|
|||||||
}
|
}
|
||||||
ERR_I(ShowSensor(&buf, samp.sensor2, "T", "K", '<'));
|
ERR_I(ShowSensor(&buf, samp.sensor2, "T", "K", '<'));
|
||||||
}
|
}
|
||||||
if (testSens!=NULL || test2Sens!=NULL || nScan>0) {
|
if (testSens!=NULL || test2Sens!=NULL) {
|
||||||
ERR_I(StrPut(&buf, "\ntest", ':'));
|
ERR_I(StrPut(&buf, "\ntest", ':'));
|
||||||
}
|
}
|
||||||
if (testSens!=NULL) {
|
if (testSens!=NULL) {
|
||||||
@ -3212,7 +3100,7 @@ int StatusHdl(int mode, void *base, int fd) {
|
|||||||
if (test2Sens!=NULL) {
|
if (test2Sens!=NULL) {
|
||||||
ERR_I(ShowSensor(&buf, test2Sens, "T", "K", 0));
|
ERR_I(ShowSensor(&buf, test2Sens, "T", "K", 0));
|
||||||
}
|
}
|
||||||
for (i=5; i<5+nScan; i++) {
|
for (i=5; i<4; i++) {
|
||||||
ERR_I(ShowSensor(&buf, sensors[i], "T", "K", 0));
|
ERR_I(ShowSensor(&buf, sensors[i], "T", "K", 0));
|
||||||
}
|
}
|
||||||
if (auxSens!=NULL) {
|
if (auxSens!=NULL) {
|
||||||
@ -3405,11 +3293,6 @@ int main(int argc, char *argv[]) {
|
|||||||
CocDefStruct(sensB, SensorT);
|
CocDefStruct(sensB, SensorT);
|
||||||
CocDefStruct(sensC, SensorT);
|
CocDefStruct(sensC, SensorT);
|
||||||
CocDefStruct(sensD, SensorT);
|
CocDefStruct(sensD, SensorT);
|
||||||
CocDefStruct(sensA0, SensorT);
|
|
||||||
CocDefStruct(sensA1, SensorT);
|
|
||||||
CocDefStruct(sensA2, SensorT);
|
|
||||||
CocDefStruct(sensA3, SensorT);
|
|
||||||
CocDefStruct(sensA4, SensorT);
|
|
||||||
|
|
||||||
CocDefPtr(sens, SensorT);
|
CocDefPtr(sens, SensorT);
|
||||||
CocFltFld(SensorT, t, RD);
|
CocFltFld(SensorT, t, RD);
|
||||||
@ -3468,6 +3351,7 @@ int main(int argc, char *argv[]) {
|
|||||||
CocDefFlt(r2, RD);
|
CocDefFlt(r2, RD);
|
||||||
CocDefFlt(tShift, RW);
|
CocDefFlt(tShift, RW);
|
||||||
CocDefFlt(linearPower, RW);
|
CocDefFlt(linearPower, RW);
|
||||||
|
CocDefFlt(maxpower2, RW);
|
||||||
CocDefFlt(scanChan, RW);
|
CocDefFlt(scanChan, RW);
|
||||||
|
|
||||||
CocDefFlt(shiftUp, RW);
|
CocDefFlt(shiftUp, RW);
|
||||||
@ -3535,8 +3419,7 @@ int main(int argc, char *argv[]) {
|
|||||||
CocDefInt(busy, RD);
|
CocDefInt(busy, RD);
|
||||||
CocDefInt(serialNo, RD);
|
CocDefInt(serialNo, RD);
|
||||||
CocDefInt(quit, RW);
|
CocDefInt(quit, RW);
|
||||||
CocDefInt(nScan, RD);
|
CocDefInt(stickhtr, RW);
|
||||||
CocDefInt(iScan, RW);
|
|
||||||
CocDefInt(keepT, RW);
|
CocDefInt(keepT, RW);
|
||||||
CocDefInt(swRangeOn, RW);
|
CocDefInt(swRangeOn, RW);
|
||||||
CocDefInt(doubleControl, RW);
|
CocDefInt(doubleControl, RW);
|
||||||
@ -3555,11 +3438,6 @@ int main(int argc, char *argv[]) {
|
|||||||
CocAlias(Tb,sensB.t);
|
CocAlias(Tb,sensB.t);
|
||||||
CocAlias(Tc,sensC.t);
|
CocAlias(Tc,sensC.t);
|
||||||
CocAlias(Td,sensD.t);
|
CocAlias(Td,sensD.t);
|
||||||
CocAlias(T0,sensA0.t);
|
|
||||||
CocAlias(T1,sensA1.t);
|
|
||||||
CocAlias(T2,sensA2.t);
|
|
||||||
CocAlias(T3,sensA3.t);
|
|
||||||
CocAlias(T4,sensA4.t);
|
|
||||||
CocAlias(P,power);
|
CocAlias(P,power);
|
||||||
CocAlias(tempC, set);
|
CocAlias(tempC, set);
|
||||||
CocAlias(int,integ);
|
CocAlias(int,integ);
|
||||||
@ -3590,7 +3468,7 @@ int main(int argc, char *argv[]) {
|
|||||||
use_stdout=1;
|
use_stdout=1;
|
||||||
opt=' ';
|
opt=' ';
|
||||||
} else if ('a'==opt) {
|
} else if ('a'==opt) {
|
||||||
autoconfig=0;
|
autoconfig=1;
|
||||||
opt=' ';
|
opt=' ';
|
||||||
} else if ('n'==opt) {
|
} else if ('n'==opt) {
|
||||||
i++;
|
i++;
|
||||||
@ -3683,11 +3561,6 @@ int main(int argc, char *argv[]) {
|
|||||||
ERR_P(DataCreateSet(NULL, "Te", &te, logPeriod, LOGLIFETIME, tim));
|
ERR_P(DataCreateSet(NULL, "Te", &te, logPeriod, LOGLIFETIME, tim));
|
||||||
ERR_P(DataCreateSet(NULL, "Tk", &tk, logPeriod, LOGLIFETIME, tim));
|
ERR_P(DataCreateSet(NULL, "Tk", &tk, logPeriod, LOGLIFETIME, tim));
|
||||||
ERR_P(DataCreateSet(NULL, "He", &he, logPeriod, LOGLIFETIME, tim));
|
ERR_P(DataCreateSet(NULL, "He", &he, logPeriod, LOGLIFETIME, tim));
|
||||||
ERR_P(DataCreateSet(NULL, "T0", &sensA0.t, logPeriod, LOGLIFETIME, tim));
|
|
||||||
ERR_P(DataCreateSet(NULL, "T1", &sensA1.t, logPeriod, LOGLIFETIME, tim));
|
|
||||||
ERR_P(DataCreateSet(NULL, "T2", &sensA2.t, logPeriod, LOGLIFETIME, tim));
|
|
||||||
ERR_P(DataCreateSet(NULL, "T3", &sensA3.t, logPeriod, LOGLIFETIME, tim));
|
|
||||||
ERR_P(DataCreateSet(NULL, "T4", &sensA4.t, logPeriod, LOGLIFETIME, tim));
|
|
||||||
ERR_P(DataCreateSet(NULL, "Aux", &aux, logPeriod, LOGLIFETIME, tim));
|
ERR_P(DataCreateSet(NULL, "Aux", &aux, logPeriod, LOGLIFETIME, tim));
|
||||||
ERR_P(DataCreateSet(NULL, "P", &power, logPeriod, LOGLIFETIME, tim));
|
ERR_P(DataCreateSet(NULL, "P", &power, logPeriod, LOGLIFETIME, tim));
|
||||||
ERR_P(DataCreateSet(NULL, "power2", &power2, logPeriod, LOGLIFETIME, tim));
|
ERR_P(DataCreateSet(NULL, "power2", &power2, logPeriod, LOGLIFETIME, tim));
|
||||||
|
Reference in New Issue
Block a user