motor: added support for ADEL and MDEL fields in motor record. The implementation in monitor() is based on the ai record. Also had to modify post_MARKed_fields in order to get RBV and DMOV posts behaving correctly.

This commit is contained in:
mp49
2010-03-05 17:30:58 +00:00
parent 8ae32f67c2
commit df1586fd5a
2 changed files with 46 additions and 3 deletions
+26 -3
View File
@@ -3200,9 +3200,30 @@ static void alarm_sub(motorRecord * pmr)
static void monitor(motorRecord * pmr)
{
unsigned short monitor_mask;
double delta = 0.0;
monitor_mask = recGblResetAlarms(pmr);
/* check for value change */
delta = pmr->mlst - pmr->rbv;
if (delta<0.0) delta = -delta;
if (delta > pmr->mdel) {
/* post events for value change */
monitor_mask |= DBE_VALUE;
/* update last value monitored */
pmr->mlst = pmr->rbv;
}
/* check for archive change */
delta = pmr->alst - pmr->rbv;
if (delta<0.0) delta = -delta;
if (delta > pmr->adel) {
/* post events on value field for archive change */
monitor_mask |= DBE_LOG;
/* update last archive value monitored */
pmr->alst = pmr->rbv;
}
/* Catch all previous 'calls' to MARK(). */
post_MARKed_fields(pmr, monitor_mask);
return;
@@ -3224,11 +3245,13 @@ static void post_MARKed_fields(motorRecord * pmr, unsigned short mask)
msta.All = pmr->msta;
if ((local_mask = mask | (MARKED(M_RBV) ? DBE_VAL_LOG : 0)))
{
db_post_events(pmr, &pmr->rbv, local_mask);
if (MARKED(M_RBV)) {
db_post_events(pmr, &pmr->rbv, mask);
UNMARK(M_RBV);
}
/*Now we have posted change on RBV, reset the monitor mask.*/
mask = recGblResetAlarms(pmr);
if ((local_mask = mask | (MARKED(M_RRBV) ? DBE_VAL_LOG : 0)))
{
+20
View File
@@ -768,4 +768,24 @@ recordtype(motor) {
interest(1)
menu(motorRMOD)
}
field(ADEL,DBF_DOUBLE) {
prompt("Archive Deadband")
promptgroup(GUI_COMMON)
interest(1)
}
field(MDEL,DBF_DOUBLE) {
prompt("Monitor Deadband")
promptgroup(GUI_COMMON)
interest(1)
}
field(ALST,DBF_DOUBLE) {
prompt("Last Value Archived")
special(SPC_NOMOD)
interest(3)
}
field(MLST,DBF_DOUBLE) {
prompt("Last Val Monitored")
special(SPC_NOMOD)
interest(3)
}
}