Added fields drvl and drvh.

This commit is contained in:
Janet B. Anderson
2000-05-31 18:33:52 +00:00
parent b520b21015
commit 6272f98eef
2 changed files with 45 additions and 7 deletions

View File

@@ -114,6 +114,7 @@ struct longoutdset { /* longout input dset */
static void alarm();
static void monitor();
static long writeValue();
static void convert();
static long init_record(plongout,pass)
@@ -151,6 +152,7 @@ static long process(plongout)
{
struct longoutdset *pdset = (struct longoutdset *)(plongout->dset);
long status=0;
long value;
unsigned char pact=plongout->pact;
if( (pdset==NULL) || (pdset->write_longout==NULL) ) {
@@ -158,11 +160,17 @@ static long process(plongout)
recGblRecordError(S_dev_missingSup,(void *)plongout,"write_longout");
return(S_dev_missingSup);
}
if (!plongout->pact && plongout->omsl == CLOSED_LOOP) {
status = dbGetLink(&(plongout->dol),DBR_LONG,
&(plongout->val),0,0);
if (plongout->dol.type!=CONSTANT && RTN_SUCCESS(status))
plongout->udf=FALSE;
if (!plongout->pact) {
if (plongout->omsl == CLOSED_LOOP) {
status = dbGetLink(&(plongout->dol),DBR_LONG,
&value,0,0);
if (plongout->dol.type!=CONSTANT && RTN_SUCCESS(status))
plongout->udf=FALSE;
}
else {
value = plongout->val;
}
if (!status) convert(plongout,value);
}
/* check for alarms */
@@ -246,8 +254,14 @@ static long get_control_double(paddr,pcd)
|| paddr->pfield==(void *)&plongout->high
|| paddr->pfield==(void *)&plongout->low
|| paddr->pfield==(void *)&plongout->lolo){
pcd->upper_ctrl_limit = plongout->hopr;
pcd->lower_ctrl_limit = plongout->lopr;
/* do not change pre drvh/drvl behavior */
if(plongout->drvh > plongout->drvl) {
pcd->upper_ctrl_limit = plongout->drvh;
pcd->lower_ctrl_limit = plongout->drvl;
} else {
pcd->upper_ctrl_limit = plongout->hopr;
pcd->lower_ctrl_limit = plongout->lopr;
}
} else recGblGetControlDouble(paddr,pcd);
return(0);
}
@@ -373,3 +387,15 @@ static long writeValue(plongout)
return(status);
}
static void convert(plongout,value)
struct longoutRecord *plongout;
long value;
{
/* check drive limits */
if(plongout->drvh > plongout->drvl) {
if (value > plongout->drvh) value = plongout->drvh;
else if (value < plongout->drvl) value = plongout->drvl;
}
plongout->val = value;
}

View File

@@ -27,6 +27,18 @@ recordtype(longout) {
interest(1)
size(16)
}
field(DRVH,DBF_LONG) {
prompt("Drive High Limit")
promptgroup(GUI_OUTPUT)
pp(TRUE)
interest(1)
}
field(DRVL,DBF_LONG) {
prompt("Drive Low Limit")
promptgroup(GUI_OUTPUT)
pp(TRUE)
interest(1)
}
field(HOPR,DBF_LONG) {
prompt("High Operating Range")
promptgroup(GUI_DISPLAY)