1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 <2012> 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 | Index | 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 <2012> 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 |
<== Date ==> | <== Thread ==> |
---|
Subject: | Re: aiRecord conversion |
From: | Bruno Seiva Martins <[email protected]> |
To: | Eric Norum <[email protected]> |
Cc: | [email protected] |
Date: | Tue, 28 Aug 2012 10:55:34 -0300 |
Perhaps you misread the wiki page. EGUL does not take part in the conversions.Here is the salient portion of the wiki page:The record processing routine performs the following algorithm for all records except those that use the Soft Channel device support routine. Be aware that step 3 is performed only when the record specifies LINEAR:
- 1. Val= RVAL + ROFF
- 2. Val = Val * ASLO + AOFF
If the conversion algorithm is LINEAR, the raw value is converted via the equation:
- 3. val = val * ESLO + EOFF
If the conversion is via a breakpoint table, the new value is obtained.
On Aug 28, 2012, at 5:48 AM, Bruno Seiva Martins <[email protected]> wrote:Hi all,I am having trouble trying to adjust the conversion parameters of an analog input record for a A/D converter.My AD accepts voltages ranging from -10 to 10 volts and has a resolution of 12 bits.For -10 volts, it produces a digital output of 0For 10 volts, 4095I configured the conversion fields as follows:EGUF: 10EGUL: -10AOFF: 0ASLO: 1EOFF: 0ESLO 0.004884 // which is (EGUF - EGUL) / 4095ROFF: 0LINR: LINEARThose values seem right to me but, for example, RVAL=1005 gets converted to VAL=4.9084, when it should be VAL=-5.0916. The problem seems to be that the conversion formula isn't taking into account the EGUL field.According to the EPICS record reference for aiRecord:The record processing routine performs the following algorithm for all records except those that use theSoft Channel
device support routine. Be aware that step 3 is performed only when the record specifies LINEAR:
1. Val= RVAL + ROFF
2. Val = Val * ASLO + AOFF
If the conversion algorithm isLINEAR
, the raw value is converted via the equation:
3. val = val * ESLO + EGULSeems like the step 3 is not being completely executed, or considering EGUL = 0...Does anybody know what is wrong? Probably I'm missing something really obvious, but I couldn't figure it out...Thanks in advance,
Bruno Seiva Martins--
Eric Norum
[email protected]