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

Subject: Re: calc VAL field not updating from bi VAL field
From: Tim Mooney <[email protected]>
To: "J. Lewis Muir" <[email protected]>
Cc: [email protected]
Date: Wed, 30 May 2012 12:25:22 -0500 (CDT)

----- Original Message -----
> From: "J. Lewis Muir" <[email protected]>
> To: "Andrew Johnson" <[email protected]>
> Cc: [email protected]
> Sent: Wednesday, May 30, 2012 12:06:05 PM
> Subject: Re: calc VAL field not updating from bi VAL field
> On 5/30/12 11:11 AM, Andrew Johnson wrote:
> > Hi Lewis,
> >
> > On 2012-05-30 Allison, Stephanie wrote:
> >> Could this be a round-off error (long to double)? Does this CALC
> >> work:
> >>
> >> field(CALC, "A>0.5?1:0")
> >
> > If that works, also try the expression "!!A" which is more efficient
> > than
> > using ?: anyway. In general I never assume that a true value is 1,
> > it's
> > better to check for non-zero, so use "A!=0?1:0" or just "A?1:0".
> 
> Hi, Andrew.
> 
> Yes, "!!A" works too.
> 
> I'm not actually assuming a true value is 1. I'm simply
> comparing the value of A with 1 to see if the bi record value is
> 1. That should work. The bi record does not indicate true or
> false; it indicates two values: 0 or 1. I could just as easily
> be using an mbbi record and doing a comparison of A with the 2
> to see if the mbbi record value is 2.
> 
> My CALC expression shows the problem, but it is not what I would
> normally write by hand. The real situation is that I have a
> database where the bi value corresponding to the "inserted"
> state of a pneumatically controlled backlight is specified as a
> macro (in this case named "INSERTED"). So the CALC expression
> in the database actually looks like this:
> 
> field(CALC, "A=$(INSERTED)?1:0")
> 
> This enables the database to work with a pneumatically
> controlled backlight where the actual state (i.e. inserted or
> retracted) is reported as a high *or* low digital I/O signal.
> 
> Maybe I could do something tricky like setting the INSERTED
> macro to "!" or the empty string "" depending on how the actual
> state is reported to achieve your CALC expression, but that
> would be way less readable and therefore a poorer choice to me.
> 
> > However I admit I would be very surprised if the integer to double
> > conversion
> > is not exact for the value 1.
> 
> Right. And I'm sure I'm not the only one writing CALC
> expressions like this. There have got to be hundreds of
> expressions (probably thousands) out there that would break
> under these circumstances.
> 
> I also tried "nint(A)=1?1:0". This does not work.

It seems that the integer to double conversion really is not exact for 1.  If so, it wouldn't be exact for either 1.
Could you try "nint(a)=nint(1)?1:0"

> Thanks,
> 
> Lewis

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


Replies:
Re: calc VAL field not updating from bi VAL field J. Lewis Muir
Re: calc VAL field not updating from bi VAL field Eric Norum
References:
Re: calc VAL field not updating from bi VAL field J. Lewis Muir

Navigate by Date:
Prev: RE: Proposed change in asyn - request for comments Mark Rivers
Next: ether_ip problem reading DINT arrays Bob Gunion
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  <20122013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: Re: calc VAL field not updating from bi VAL field J. Lewis Muir
Next: Re: calc VAL field not updating from bi VAL field J. Lewis Muir
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  <20122013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
ANJ, 18 Nov 2013 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·