EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  <20132014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024  Index 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  <20132014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: EPICS 'seq' record doesn't send updates on VAL
From: "Kasemir, Kay" <[email protected]>
To: "[email protected]" <[email protected]>
Date: Tue, 20 Aug 2013 14:43:51 -0400
Hi:

While debugging some `seq` record setup I failed to get any updates on its VAL.
This is with R3.14.12.2

I use either 'caput' via the network or a 'dbpf' in the IOC shell to write to the record's VAL field.
The `seq` record would process as expected, going through its DLY1, DLY2 delays, writing to the LNK1, LNK2, … records.
A  `camonitor` would only show the initial value, then never print any updates. When re-starting 'camonitor', it would show the then-current VAL, but again never show updates.

The reason seems to be inside src/rec/seqRecord.c :

static long asyncFinish(seqRecord *prec)
{
  unsigned short MonitorMask;

  if (seqRecDebug > 5)
    printf("asyncFinish(%s) completing processing\n", prec->name);
  prec->udf = FALSE;

  MonitorMask = recGblResetAlarms(prec);

  if (MonitorMask)
    db_post_events(prec, &prec->val, MonitorMask);

--> The MonitorMask tends to be 0x0, except maybe when the alarm state of the record changes as from the initial UDF/UNDEFINED to the OK when processed the very first time.
Later, when VAL merely changes value, MonitorMask is 0x0 and thus no events are posted.

This probably hardly matters in the real world because the seq record is used for put-callback, nobody reads VAL from it.
In fact the record totally ignores VAL, you can write anything to VAL just to cause the record to process.
Still, that number in VAL may be useful for debugging your setup, in case you have different sources write to the VAL field, each with a unique number, but note that camonitor won't receive any updates.

The latest 3.15 code in bazar seems to also check 

 if (prec->seln != prec->oldn) {
    db_post_events(prec, &prec->seln, events | DBE_VALUE | DBE_LOG);

so it should post monitors on SELL/SELN, but probably has the same behavior for VAL.

Thanks,
Kay

Navigate by Date:
Prev: Comms issue with New Focus 8752 motor driver tim.hayton
Next: Re: Comms issue with New Focus 8752 motor driver Kevin Peterson
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  <20132014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: RE: Comms issue with New Focus 8752 motor driver Mark Rivers
Next: EPICS Qt Framework Ricardo Fernandes
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  <20132014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
ANJ, 20 Apr 2015 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·