EPICS Home

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  <20142015  2016  2017  2018  2019  Index 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  <20142015  2016  2017  2018  2019 
<== Date ==> <== Thread ==>

Subject: Re: AsynPortDriver setting DRVH of ao?
From: Florian Feldbauer <florian@ep1.ruhr-uni-bochum.de>
To: Scott Baily <sbaily@lanl.gov>, tech-talk@aps.anl.gov
Date: Thu, 23 Oct 2014 09:04:31 +0200
Just realized one problem using getBounds:
according to the comments in the source code of asynPortDiver.cpp
getBounds is "Called when asyn clients call pasynInt32->getBounds(), "

My ao records are using the asynFloat64 since my hardware wants to have
floating point numbers.
One would need to implement a getBounds routine for the asynFloat64 interface...

On 10/23/2014 08:57 AM, Florian Feldbauer wrote:
On 10/22/2014 05:49 PM, Scott Baily wrote:
On 10/15/2014 7:11 AM, Florian Feldbauer wrote:
Is it possible (e.g. during initialization) to set the DRVH fields via
the asynPortDriver?

At present asynPortDriver does not set DRVH or DRVL. However, I think this would be a good addition, and easy to add. AsynPortDriver already has a getBounds function. If you write your writeInt32 function correctly, you can have it coerce the value to be within range, and get the same functionality. Unfortunately, the VAL field of the EPICS channel won't be coerced so users won't know its happening without a separate readback channel (but you won't write out of range values to hardware). The initAi and initAo functions already call getBounds, and convertAi and convertAo use these limits to calculate eslo and eoff. I see no reason why initLo and InitAo couldn't be modified to adjust DRVH and DRVL to these values (i.e. set them if they are both 0, or adjust them if the current values are out of range). Certainly, one would want to allow the database to specify a tighter range than device support permits.
Sure. If the database contains a thighter range than the actual hardware limit, these limits should not be overwritten by the driver/device support. I will have a look into the init functions to see how it can be implemented.

Also, you can probably use less than 17 records for the workaround others were suggesting if you use a couple of dfanout records.
due to our PV naming scheme I would need a individual macro for each output link of the dfanout record. Concerning configuration and maintenance I think using one additional ao record for each Vset record is easier...

Regards,
Florian



--
----------------------------------------
| Dr. Florian Feldbauer                |
|                                      |
| Helmholtz-Institut Mainz /           |
| Johannes Gutenberg-Universität Mainz |
| Johann-Joachim-Becher-Weg 36         |
| D-55128 Mainz                        |
|                                      |
| Office: SB1 / 00-213                 |
| Phone:  (+49)6131 / 39-29605         |
----------------------------------------


References:
AsynPortDriver setting DRVH of ao? Florian Feldbauer
Re: AsynPortDriver setting DRVH of ao? Scott Baily
Re: AsynPortDriver setting DRVH of ao? Florian Feldbauer

Navigate by Date:
Prev: Re: AsynPortDriver setting DRVH of ao? Florian Feldbauer
Next: Re: Discussion about licenses, copyrights, business, and source code Johnson, Andrew N.
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  <20142015  2016  2017  2018  2019 
Navigate by Thread:
Prev: Re: AsynPortDriver setting DRVH of ao? Florian Feldbauer
Next: areadetector, iocSimDetector can not be started on OS X due to dyld: Symbol not found: _xmlFree Heinz Junkes
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  <20142015  2016  2017  2018  2019