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  2013  2014  <20152016  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  2013  2014  <20152016  2017  2018  2019  2020  2021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: RE: scalcout fails to write to bo
From: "Mooney, Tim M." <[email protected]>
To: Isabella Rey <[email protected]>, "[email protected]" <[email protected]>
Date: Fri, 15 May 2015 17:08:39 +0000
Hi Isabella,

There are three ways to get the behavior you want in this situation:

1. Have the calc _expression_ produce a string value that is one of the bo record's ZNAM or ONAM strings:

record(scalcout, "BS:CAMS_OK") {
  field(SCAN, ".1 second")
  field(CALC, "AA==CC ? 'ON' : 'OFF' ")         <---<<
  field(INAA, "CAM1:TRAFFIC_LIGHT")
  field(OUT, "BS:AUTO PP")
  field(OOPT, "When Zero")
  field(CC, "OK")
}

2. Have the calc _expression_ explicitly produce a string value that is '0' or '1':

record(scalcout, "BS:CAMS_OK") {
  field(SCAN, ".1 second")
  field(CALC, "AA==CC ? '1' : '0' ")             <---<<
  field(INAA, "CAM1:TRAFFIC_LIGHT")
  field(OUT, "BS:AUTO PP")
  field(OOPT, "When Zero")
  field(CC, "OK")
}

3. Make the scalcout record's conversion from number to string produce zero decimal digits:

record(scalcout, "BS:CAMS_OK") {
  field(PREC, "0")                                  <---<<
  field(SCAN, ".1 second")
  field(CALC, "AA==CC")
  field(INAA, "CAM1:TRAFFIC_LIGHT")
  field(OUT, "BS:AUTO PP")
  field(OOPT, "When Zero")
  field(CC, "OK")
}



Tim Mooney ([email protected]) (630)252-5417
Software Services Group (www.aps.anl.gov)
Advanced Photon Source, Argonne National Lab


From: [email protected] [[email protected]] on behalf of Isabella Rey [[email protected]]
Sent: Friday, May 15, 2015 11:21 AM
To: [email protected]
Subject: scalcout fails to write to bo

Hi All,

I have a scalcout record whose output should go into a bo record, as follows:


record(scalcout, "BS:CAMS_OK") {
  field(SCAN, ".1 second")
  field(CALC, "AA==CC")
  field(INAA, "CAM1:TRAFFIC_LIGHT")
  field(OUT, "BS:AUTO PP")
  field(OOPT, "When Zero")
  field(CC, "OK")
}

record(bo, "BS:AUTO") {
  field(PINI, "YES")
  field(VAL, "0")
  field(ZNAM, "OFF")
  field(ONAM, "ON")
}

When I run the IOC, I get this error message:
Illegal choice PV: BS:AUTO 0.00000000

After looking at other posts, I think the scalcout is trying to write a string in the bo, which generates the error. But my understanding of the scalcout documentation is that the conversion to int should be done automatically, and this should just work.

Interestingly, this workaround does the job:

record(scalcout, "BS:CAMS_OK") {
  field(CALC, "AA==CC")
  field(INAA, "CAM1:TRAFFIC_LIGHT")
  field(CC, "OK")
}

record(calcout, "BS:CAMS_OK_FAN") {
  field(SCAN, ".1 second")
  field(INPA, "BS:CAMS_OK PP")
  field(OUT, "BS:AUTO PP")
  field(OOPT, "When Zero")
}

record(bo, "BS:AUTO") {
  field(PINI, "YES")
  field(VAL, "0")
  field(ZNAM, "OFF")
  field(ONAM, "ON")
}

So it looks like if a record "pulls" the result from scalcout it's OK, but scalcout doesn't "push" it correctly.

I could live with the workaround, but it's a bit of a hack...

Any thoughts on why this is not working?

Cheers,
Isabella

References:
scalcout fails to write to bo Isabella Rey

Navigate by Date:
Prev: scalcout fails to write to bo Isabella Rey
Next: Expected database load times Klemen Vodopivec
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  <20152016  2017  2018  2019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: scalcout fails to write to bo Isabella Rey
Next: Expected database load times Klemen Vodopivec
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  <20152016  2017  2018  2019  2020  2021  2022  2023  2024 
ANJ, 16 Dec 2015 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·