This commit is contained in:
cvs
2002-08-12 09:07:08 +00:00
parent bde19bb973
commit 643f0d81be
10 changed files with 187 additions and 73 deletions

View File

@@ -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]");