M.Z.
This commit is contained in:
58
tecs/tecs.c
58
tecs/tecs.c
@@ -1076,7 +1076,7 @@ int SetTemp(int switchOn) {
|
||||
|
||||
void CalcMaxPower(void) {
|
||||
int i, j, vmax;
|
||||
float pa, pr, pw, dif, p, pl, plim;
|
||||
float pa, pr, pw, quo, p, pl, plim;
|
||||
|
||||
iAmp=1; iRange=0;
|
||||
if (scalPower==0) scalPower=maxPower;
|
||||
@@ -1086,34 +1086,32 @@ void CalcMaxPower(void) {
|
||||
/* power limited by 50 V output. U*U/R=2500/R */
|
||||
if (p>plim) p=plim;
|
||||
pa=resist*4; /* max. maxPower R*I*I (I=2 A) */
|
||||
pw=0; dif=1.0e6;
|
||||
pw=0; quo=0.;
|
||||
for (i=4; i>0; i--) {
|
||||
pr=pa;
|
||||
for (j=5; j>0; j--) {
|
||||
if (pr>p) {
|
||||
if (pr/p<dif) { dif=pr/p; pw=pr; iAmp=i; iRange=j; }
|
||||
} else if (p<plim) {
|
||||
if (p/pr<dif) { dif=p/pr; pw=pr; iAmp=i; iRange=j; }
|
||||
if (p<pr) {
|
||||
if (p/pr>quo) { quo=p/pr; pw=pr; iAmp=i; iRange=j; }
|
||||
} else if (p<plim || pw==0) {
|
||||
if (pr/p>quo) { quo=pr/p; pw=pr; iAmp=i; iRange=j; }
|
||||
}
|
||||
pr=pr/10;
|
||||
}
|
||||
pa=pa/4;
|
||||
}
|
||||
scalPower=pw*powFact;
|
||||
if (scalPower<plim) {
|
||||
assert(scalPower>0);
|
||||
if (scalPower<plim*powFact) {
|
||||
maxPower=scalPower;
|
||||
} else {
|
||||
maxPower=plim;
|
||||
maxPower=plim*powFact;
|
||||
}
|
||||
} else {
|
||||
iRange=0;
|
||||
}
|
||||
}
|
||||
|
||||
#define ABS(x) (x < 0 ? -(x) : (x))
|
||||
|
||||
|
||||
int SetMaxPower(void) {
|
||||
int i, j;
|
||||
float pa, pr, pw, dif, p;
|
||||
static float p0;
|
||||
|
||||
if (loop == 1) {
|
||||
@@ -1129,12 +1127,8 @@ int SetMaxPower(void) {
|
||||
if (slope!=0 && slope<0.1) slope=0.1;
|
||||
fbuf=tLimit/CtlScale();
|
||||
if (loop==1) {
|
||||
if(ABS(p0) > .0 && ABS(scalPower) > .0){
|
||||
prop=sqrt(p0/scalPower)*prop;
|
||||
} else {
|
||||
prop = 10.;
|
||||
}
|
||||
ERR_P(LscCmd(ser, "CLIMIT 1:[fbuf],[slope],0,2.0,[iRange];PID [loop],[prop]"));
|
||||
if (scalPower!=0) prop=sqrt(p0/scalPower)*prop;
|
||||
ERR_P(LscCmd(ser, "CLIMIT 1:[fbuf],[slope],0,[iAmp],[iRange];PID [loop],[prop]"));
|
||||
} else {
|
||||
ERR_P(LscCmd(ser, "CLIMIT 2:[fbuf],[slope],0"));
|
||||
}
|
||||
@@ -1193,7 +1187,7 @@ int LoadFromLsc(void) {
|
||||
|
||||
int Settings(void) {
|
||||
char buf[256], typ;
|
||||
char flds[6], fmt[6];
|
||||
char *flds[6], fmt[6];
|
||||
char *cfg, *p;
|
||||
int i,k,l;
|
||||
SensorT *s;
|
||||
@@ -1291,40 +1285,50 @@ int Settings(void) {
|
||||
|
||||
fmt[k]=DisplayFmt(cryo.sensor1);
|
||||
if (fmt[k]!='\0') {
|
||||
flds[k]=cryo.sensor1->ch[0];
|
||||
flds[k]=cryo.sensor1->ch;
|
||||
k++;
|
||||
}
|
||||
if (samp.sensor1 != cryo.sensor1) {
|
||||
fmt[k]=DisplayFmt(samp.sensor1);
|
||||
if (fmt[k]!='\0') {
|
||||
flds[k]=samp.sensor1->ch[0];
|
||||
flds[k]=samp.sensor1->ch;
|
||||
k++;
|
||||
}
|
||||
}
|
||||
if (cryo.sensor2 != cryo.sensor1) {
|
||||
fmt[k]=DisplayFmt(cryo.sensor2);
|
||||
if (fmt[k]!='\0') {
|
||||
flds[k]=cryo.sensor2->ch[0];
|
||||
flds[k]=cryo.sensor2->ch;
|
||||
k++;
|
||||
}
|
||||
}
|
||||
if (samp.sensor2 != samp.sensor1 && samp.sensor2 != cryo.sensor2) {
|
||||
fmt[k]=DisplayFmt(samp.sensor2);
|
||||
if (fmt[k]!='\0') {
|
||||
flds[k]=samp.sensor2->ch[0];
|
||||
flds[k]=samp.sensor2->ch;
|
||||
k++;
|
||||
}
|
||||
}
|
||||
fmt[k]=DisplayFmt(testSens);
|
||||
if (fmt[k]!='\0' && k<=4) {
|
||||
flds[k]=testSens->ch[0];
|
||||
flds[k]=testSens->ch;
|
||||
k++;
|
||||
}
|
||||
fmt[k]=DisplayFmt(auxSens);
|
||||
if (fmt[k]!='\0' && k<=4) {
|
||||
flds[k]=auxSens->ch[0];
|
||||
flds[k]=auxSens->ch;
|
||||
k++;
|
||||
}
|
||||
if (nScan>0) {
|
||||
i=0;
|
||||
while (k<=4 && i<nScan) {
|
||||
fmt[k]=DisplayFmt(sensors[i+4]);
|
||||
if (fmt[k]!='\0') {
|
||||
flds[k]=sensors[i+4]->ch;
|
||||
k++; i++;
|
||||
}
|
||||
}
|
||||
}
|
||||
maxfld=k-1;
|
||||
|
||||
/* fields 5-8 standard raw data */
|
||||
@@ -1335,7 +1339,7 @@ int Settings(void) {
|
||||
l=0;
|
||||
for (k=1; k<=maxfld; k++) {
|
||||
assert(l<128);
|
||||
sprintf(buf+l, "DISPFLD %d,%c,%c;", k, flds[k], fmt[k]);
|
||||
sprintf(buf+l, "DISPFLD %d,%s,%c;", k, flds[k], fmt[k]);
|
||||
l=strlen(buf);
|
||||
}
|
||||
str_append(buf, "DISPLAY:[maxfld]");
|
||||
|
||||
Reference in New Issue
Block a user