Many updates; converted to clean xhtml with nice formatting
git-svn-id: https://subversion.xor.aps.anl.gov/synApps/areaDetector/trunk@7637 dc6c5ff5-0b8b-c028-a01f-ffb33f00fc8b
This commit is contained in:
@@ -1,349 +1,329 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
|
||||
"http://www.w3.org/TR/html4/strict.dtd">
|
||||
<html lang="en-us" xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<title>areaDetector ADSC driver</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<center>
|
||||
<h1>areaDetector ADSC driver</h1>
|
||||
|
||||
<h2> September 5, 2008</h2>
|
||||
<h2> Lewis Muir</h2>
|
||||
<h2> University of Chicago</h2>
|
||||
</center>
|
||||
|
||||
<h2>Table of Contents</h2>
|
||||
<ol>
|
||||
<li><a href="#Introduction">Introduction</a></li>
|
||||
<li><a href="#Dependencies">Dependencies</a></li>
|
||||
<li><a href="#Building">Building</a></li>
|
||||
<li><a href="#Configuring">Configuring</a></li>
|
||||
<li><a href="#ImageModes">Image Modes</a></li>
|
||||
<li><a href="#TriggerModes">Trigger Modes</a></li>
|
||||
<li><a href="#DarkImages">Dark Images</a></li>
|
||||
<li><a href="#ValuesAndSettings">Driver Specific Values and Settings</a></li>
|
||||
<li><a href="#Screenshots">Screenshots</a></li>
|
||||
<li><a href="#Unsupported">Unsupported <tt>areaDetector</tt> <q>base</q>
|
||||
Features</a></li>
|
||||
<li><a href="#Limitations">Limitations</a></li>
|
||||
</ol>
|
||||
|
||||
<h2 id="Introduction">Introduction</h2>
|
||||
|
||||
<p>
|
||||
This is a driver for <a href="http://www.adsc-xray.com/">ADSC</a> detectors.
|
||||
It has been tested with the ADSC Q210. While not yet tested with other
|
||||
models, it should work with the ADSC Q4 (with the upgrade to four computers),
|
||||
Q4r, Q210, Q210r, Q270, Q315, and Q315r.
|
||||
</p>
|
||||
|
||||
<h2 id="Dependencies">Dependencies</h2>
|
||||
|
||||
<p>
|
||||
This driver controls the detector via the <tt>detcon_lib_th</tt> detector
|
||||
control library provided by ADSC. The <tt>detcon_lib_th</tt> library must
|
||||
date from 2008-06-30 or newer.
|
||||
</p>
|
||||
|
||||
<h2 id="Building">Building</h2>
|
||||
|
||||
<ol>
|
||||
<li>Build the ADSC control library</li>
|
||||
<li>Copy and rename, or create a symlink to, the ADSC <tt>auxlib.a</tt>
|
||||
library so that it has the name <tt>libauxlib.a</tt> to satisfy the EPICS
|
||||
build facility's requirement that a library file name start with
|
||||
<q><tt>lib</tt></q></li>
|
||||
<li>Add <q><tt>DIRS += adscSrc</tt></q> to <tt>ADApp/Makefile</tt></li>
|
||||
<li>Set <tt>ADSC_HOME</tt> in <tt>ADApp/adscSrc/Makefile</tt></li>
|
||||
<li>Rebuild the <tt>areaDetector</tt> module</li>
|
||||
</ol>
|
||||
|
||||
<h2 id="Configuring">Configuring</h2>
|
||||
|
||||
<p>
|
||||
This driver is configured via the <tt>adscConfig()</tt> function. If this is
|
||||
to be used in an IOC, it must be called before <tt>iocInit()</tt>. It has the
|
||||
following signature:
|
||||
</p>
|
||||
|
||||
<dl>
|
||||
<dt><tt>int adscConfig(const char *portName, const char *modelName)</tt></dt>
|
||||
<dd>
|
||||
<dl>
|
||||
<dt><tt>portName</tt></dt>
|
||||
<dd>ASYN port name for the driver instance</dd>
|
||||
<dt><tt>modelName</tt></dt>
|
||||
<dd>ADSC detector model name; must be one of <tt>Q4</tt>, <tt>Q4r</tt>,
|
||||
<tt>Q210</tt>, <tt>Q210r</tt>, <tt>Q270</tt>, <tt>Q315</tt>,
|
||||
<tt>Q315r</tt></dd>
|
||||
</dl>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
<p>
|
||||
The underlying ADSC control library obtains its configuration from the
|
||||
environment. Therefore, the environment must be correctly configured (i.e.
|
||||
ADSC environment variables set) for the ADSC control library before calling
|
||||
<tt>adscConfig()</tt>.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
If being used in an IOC, and an EPICS PV interface with the driver is desired,
|
||||
the <tt>ADBase.template</tt> and <tt>adsc.template</tt> databases should also
|
||||
be loaded for the driver instance.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
An example IOC configuration for this driver is at
|
||||
<tt>iocBoot/iocAdsc/st.cmd</tt>.
|
||||
</p>
|
||||
|
||||
<h2 id="ImageModes">Image Modes</h2>
|
||||
|
||||
<h3><tt>Single</tt></h3>
|
||||
|
||||
<p>
|
||||
The <tt>Single</tt> mode acquires just one image.
|
||||
</p>
|
||||
|
||||
<h3><tt>Multiple</tt></h3>
|
||||
|
||||
<p>
|
||||
The <tt>Multiple</tt> mode acquires the number of images specified in
|
||||
<tt>$(P)$(R)NumImages_RBV</tt>.
|
||||
</p>
|
||||
|
||||
<h3><tt>Continuous</tt></h3>
|
||||
|
||||
<p>
|
||||
The <tt>Continuous</tt> mode acquires images indefinitely until <em>last
|
||||
image</em> is set. In this mode, the last image of the acquisition must be
|
||||
signaled before exposing the last image by setting
|
||||
<tt>$(P)$(R)ADSCLastImage</tt> to <tt>1</tt>. This requirement is due to how
|
||||
the underlying ADSC control library works.
|
||||
</p>
|
||||
|
||||
<h2 id="TriggerModes">Trigger Modes</h2>
|
||||
|
||||
<h3><tt>Internal</tt></h3>
|
||||
|
||||
<p>
|
||||
The <tt>Internal</tt> mode will make the driver expose images on its own once
|
||||
the acquisition is started.
|
||||
</p>
|
||||
|
||||
<h3><tt>External</tt></h3>
|
||||
|
||||
<p>
|
||||
The <tt>External</tt> mode will make the driver expose images only when told
|
||||
to once the acquisition is started. A special protocol must be followed to
|
||||
trigger each image exposure. This would normally be very simple, but because
|
||||
the ADSC control library can report that an exposure did not work and should
|
||||
be retried after any exposure, a more complex protocol is required.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The protocol is described in terms of the EPICS PV driver interface, but the
|
||||
same rules apply if controlling the driver directly through ASYN. The
|
||||
protocol is as follows:
|
||||
</p>
|
||||
|
||||
<ol>
|
||||
<li>Wait for <tt>$(P)$(R)ADSCOkToExpose</tt> to be <tt>Yes</tt></li>
|
||||
<li>Set <tt>$(P)$(R)ADSCExTrCtl</tt> to <tt>Start</tt> to start the
|
||||
exposure</li>
|
||||
<li>Set <tt>$(P)$(R)ADSCExTrCtl</tt> to <tt>Stop</tt> to stop the
|
||||
exposure</li>
|
||||
<li>Wait for <tt>$(P)$(R)ADSCExTrCtl_RBV</tt> to be <tt>OK</tt> or
|
||||
<tt>Again</tt></li>
|
||||
<li>If <tt>$(P)$(R)ADSCExTrCtl_RBV</tt> is <tt>Again</tt>, the exposure did
|
||||
not work and should be tried again</li>
|
||||
</ol>
|
||||
|
||||
<p>
|
||||
Note that care must be taken when waiting for <tt>$(P)$(R)ADSCExTrCtl_RBV</tt>
|
||||
to be <tt>OK</tt> or <tt>Again</tt> to ensure the PV value is not stale (i.e.
|
||||
from the previous exposure). There are at least two methods to ensure this:
|
||||
</p>
|
||||
|
||||
<ul>
|
||||
<li>Use a CA monitor on <tt>$(P)$(R)ADSCExTrCtl_RBV</tt>; before waiting for
|
||||
the <tt>OK</tt> or <tt>Again</tt> values, wait for the <tt>Stop</tt> value; a
|
||||
CA monitor is used to receive the value changes since the PV will have the
|
||||
<tt>Stop</tt> value for just a short time</li>
|
||||
<li>After starting the exposure, wait for <tt>$(P)$(R)ADSCExTrCtl_RBV</tt> to
|
||||
be <tt>Start</tt></li>
|
||||
</ul>
|
||||
|
||||
<h2 id="DarkImages">Dark Images</h2>
|
||||
|
||||
<p>
|
||||
Dark images are acquired automatically at the beginning of a data acquisition.
|
||||
They are taken if any of the following conditions are true:
|
||||
</p>
|
||||
|
||||
<ul>
|
||||
<li><em>Reuse darks</em> is <tt>No</tt></li>
|
||||
<li><em>Exposure time</em> is different from that of the previous
|
||||
acquisition</li>
|
||||
<li><em>ADC/binning</em> is different from that of the previous
|
||||
acquisition</li>
|
||||
<li><em>Binning</em> is different from that of the previous acquisition</li>
|
||||
<li>The acquisition is the first after <em>stored darks</em> was changed from
|
||||
<tt>Yes</tt> to <tt>No</tt></li>
|
||||
</ul>
|
||||
|
||||
<h2 id="ValuesAndSettings">Driver Specific Values and Settings</h2>
|
||||
|
||||
<p>
|
||||
This driver provides status values and settings in addition to what is
|
||||
provided by <tt>areaDetector</tt> <q>base</q>. They are listed here according
|
||||
to their label in the driver specific MEDM GUI and their EPICS PV name in the
|
||||
EPICS PV driver interface. A screenshot of the driver specific MEDM GUI can
|
||||
be seen in the <a href="#Screenshots">Screenshots</a> section.
|
||||
</p>
|
||||
|
||||
<h3>Detector Condition</h3>
|
||||
|
||||
<dl>
|
||||
<dt>State, <tt>$(P)$(R)ADSCState</tt></dt>
|
||||
<dd>State of the detector reported by the ADSC control library.</dd>
|
||||
<dt>Status, <tt>$(P)$(R)ADSCStatus</tt></dt>
|
||||
<dd>Status message reported by the ADSC control library.</dd>
|
||||
<dt>Last error, <tt>$(P)$(R)ADSCLastError</tt></dt>
|
||||
<dd>Last error message reported by the ADSC control library.</dd>
|
||||
<dt>Update rate for above properties,
|
||||
<tt>$(P)$(R)ADSCReadConditn.SCAN</tt></dt>
|
||||
<dd>How frequently to update the above properties.</dd>
|
||||
</dl>
|
||||
|
||||
<h3>Detector Error Recovery</h3>
|
||||
|
||||
<dl>
|
||||
<dt>Software Reset, <tt>$(P)$(R)ADSCSoftReset</tt></dt>
|
||||
<dd>Performs a software reset. Aborts any current operation, clears status
|
||||
and error messages, and sets <em>detector state</em> to <tt>Idle</tt>.</dd>
|
||||
</dl>
|
||||
|
||||
<h3>Detector Continuous Image Mode</h3>
|
||||
|
||||
<dl>
|
||||
<dt>Last Image, <tt>$(P)$(R)ADSCLastImage</tt></dt>
|
||||
<dd>Signals that the next exposure is the last image when in
|
||||
<tt>Continuous</tt> image mode.</dd>
|
||||
</dl>
|
||||
|
||||
<h3>Detector External Trigger</h3>
|
||||
|
||||
<dl>
|
||||
<dt>OK to expose, <tt>$(P)$(R)ADSCOkToExpose</tt></dt>
|
||||
<dd>When in <tt>External</tt> trigger mode, indicates whether it is OK to
|
||||
start an image exposure.</dd>
|
||||
<dt>Start, Stop, <tt>$(P)$(R)ADSCExTrCtl</tt></dt>
|
||||
<dd>When in <tt>External</tt> trigger mode, set to <tt>1</tt> to start an
|
||||
exposure and <tt>0</tt> to stop it.</dd>
|
||||
<dt><tt>$(P)$(R)ADSCExTrCtl_RBV</tt></dt>
|
||||
<dd>When in <tt>External</tt> trigger mode, will be <tt>Start</tt>,
|
||||
<tt>Stop</tt>, <tt>OK</tt>, or <tt>Again</tt>. See <a
|
||||
href="#TriggerModes">Trigger Modes</a> section for more about how this
|
||||
property will behave.</dd>
|
||||
</dl>
|
||||
|
||||
<h3>Driver Parameters</h3>
|
||||
|
||||
<dl>
|
||||
<dt>Reuse darks, <tt>$(P)$(R)ADSCReusDrk</tt></dt>
|
||||
<dd>Reuse dark images when possible. This is useful to avoid wasting time
|
||||
acquiring dark images when previously acquired dark images are available and
|
||||
can be reused.</dd>
|
||||
<dt>Dezinger, <tt>$(P)$(R)ADSCDezingr</tt></dt>
|
||||
<dd>Acquire <q>dezingered</q> images.</dd>
|
||||
</dl>
|
||||
|
||||
<h3>Detector Hardware Parameters</h3>
|
||||
|
||||
<dl>
|
||||
<dt>ADC/Binning, <tt>$(P)$(R)ADSCAdc</tt></dt>
|
||||
<dd>For Q4 and Q4r detectors, controls whether to use <tt>Fast</tt> or
|
||||
<tt>Slow</tt> ADC. For all other detectors, controls whether to use
|
||||
<tt>Hardware</tt> or <tt>Software</tt> binning.</dd>
|
||||
<dt>Raw images, <tt>$(P)$(R)ADSCRaw</tt></dt>
|
||||
<dd>Write raw images.</dd>
|
||||
<dt>Image transforms, <tt>$(P)$(R)ADSCImXform</tt></dt>
|
||||
<dd>Perform image transformations.</dd>
|
||||
<dt>Stored darks, <tt>$(P)$(R)ADSCStrDrks</tt></dt>
|
||||
<dd>Use stored dark images. If set to <tt>Yes</tt>, stored dark images are
|
||||
assumed to have been installed by ADSC and should be used.</dd>
|
||||
</dl>
|
||||
|
||||
<h3>Detector File Parameters</h3>
|
||||
|
||||
<dl>
|
||||
<dt>Beam center X, <tt>$(P)$(R)ADSCBeamX</tt></dt>
|
||||
<dd>Beam center in the X dimension.</dd>
|
||||
<dt>Beam center Y, <tt>$(P)$(R)ADSCBeamY</tt></dt>
|
||||
<dd>Beam center in the Y dimension.</dd>
|
||||
<dt>Distance, <tt>$(P)$(R)ADSCDistnce</tt></dt>
|
||||
<dd>Detector distance.</dd>
|
||||
<dt>Two theta, <tt>$(P)$(R)ADSC2Theta</tt></dt>
|
||||
<dd>Detector 2θ angle.</dd>
|
||||
<dt>Axis, <tt>$(P)$(R)ADSCAxis</tt></dt>
|
||||
<dd>Crystal rotation axis.</dd>
|
||||
<dt>Wavelength, <tt>$(P)$(R)ADSCWavelen</tt></dt>
|
||||
<dd>X-ray wavelength.</dd>
|
||||
<dt>Image width, <tt>$(P)$(R)ADSCImWidth</tt></dt>
|
||||
<dd>Crystal rotation during exposure.</dd>
|
||||
<dt>Phi, <tt>$(P)$(R)ADSCPhi</tt></dt>
|
||||
<dd>Phi position at start of exposure.</dd>
|
||||
<dt>Omega, <tt>$(P)$(R)ADSCOmega</tt></dt>
|
||||
<dd>Omega position at start of exposure.</dd>
|
||||
<dt>Kappa, <tt>$(P)$(R)ADSCKappa</tt></dt>
|
||||
<dd>Kappa position at start of exposure.</dd>
|
||||
</dl>
|
||||
|
||||
<h2 id="Screenshots">Screenshots</h2>
|
||||
|
||||
<ul>
|
||||
<li><a href="adsc-screenshot.png">ADSC Specific MEDM GUI</a></li>
|
||||
</ul>
|
||||
|
||||
<h2 id="Unsupported">Unsupported <tt>areaDetector</tt> <q>base</q>
|
||||
Features</h2>
|
||||
|
||||
<ul>
|
||||
<li>Shutter control</li>
|
||||
<li>Collect: number of exposures per image</li>
|
||||
<li>File: save file</li>
|
||||
<li>File: read file</li>
|
||||
<li>File: format</li>
|
||||
<li>File: auto save (always <tt>Yes</tt>)</li>
|
||||
<li>Readout: image region of interest</li>
|
||||
<li>Readout: reverse image</li>
|
||||
<li>Readout: gain</li>
|
||||
<li>Readout: data type (always <tt>UInt16</tt>)</li>
|
||||
<li>Image frame callbacks</li>
|
||||
</ul>
|
||||
|
||||
<h2 id="Limitations">Limitations</h2>
|
||||
|
||||
<ul>
|
||||
<li>Only one ADSC detector may be controlled with this driver per OS process.
|
||||
If this driver is being used in an IOC, this means only one ADSC detector may
|
||||
be controlled with this driver per IOC. This is a limitation of the
|
||||
underlying ADSC control library which does not support more than one detector
|
||||
per OS process.</li>
|
||||
<li>Acquiring <q>dezingered</q> images is not supported. This is a limitation
|
||||
of the underlying ADSC control library which has a bug preventing it from
|
||||
working correctly.</li>
|
||||
<li><em>Software reset</em> does not work. This is a limitation of the
|
||||
underlying ADSC control library which has a bug preventing it from working
|
||||
correctly. It would be great if, after an error, performing a software reset
|
||||
would allow a new acquisition to proceed normally. Currently, the recovery
|
||||
solution often is to restart the control software.</li>
|
||||
</ul>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
|
||||
"http://www.w3.org/TR/html4/strict.dtd">
|
||||
<html lang="en-us" xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<title>areaDetector ADSC driver</title>
|
||||
<meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
|
||||
</head>
|
||||
<body>
|
||||
<center>
|
||||
<h1>
|
||||
areaDetector ADSC driver</h1>
|
||||
<h2>
|
||||
September 17, 2008</h2>
|
||||
<h2>
|
||||
Lewis Muir</h2>
|
||||
<h2>
|
||||
University of Chicago</h2>
|
||||
</center>
|
||||
<h2>
|
||||
Table of Contents</h2>
|
||||
<ol>
|
||||
<li><a href="#Introduction">Introduction</a></li>
|
||||
<li><a href="#Dependencies">Dependencies</a></li>
|
||||
<li><a href="#Building">Building</a></li>
|
||||
<li><a href="#Configuring">Configuring</a></li>
|
||||
<li><a href="#ImageModes">Image Modes</a></li>
|
||||
<li><a href="#TriggerModes">Trigger Modes</a></li>
|
||||
<li><a href="#DarkImages">Dark Images</a></li>
|
||||
<li><a href="#ValuesAndSettings">Driver Specific Values and Settings</a></li>
|
||||
<li><a href="#Screenshots">Screenshots</a></li>
|
||||
<li><a href="#Unsupported">Unsupported <tt>areaDetector</tt> <q>base</q> Features</a></li>
|
||||
<li><a href="#Limitations">Limitations</a></li>
|
||||
</ol>
|
||||
<h2 id="Introduction">
|
||||
Introduction</h2>
|
||||
<p>
|
||||
This is a driver for <a href="http://www.adsc-xray.com/">ADSC</a> detectors. It
|
||||
has been tested with the ADSC Q210. While not yet tested with other models, it should
|
||||
work with the ADSC Q4 (with the upgrade to four computers), Q4r, Q210, Q210r, Q270,
|
||||
Q315, and Q315r.
|
||||
</p>
|
||||
<h2 id="Dependencies">
|
||||
Dependencies</h2>
|
||||
<p>
|
||||
This driver controls the detector via the <tt>detcon_lib_th</tt> detector control
|
||||
library provided by ADSC. The <tt>detcon_lib_th</tt> library must date from 2008-06-30
|
||||
or newer.
|
||||
</p>
|
||||
<h2 id="Building">
|
||||
Building</h2>
|
||||
<ol>
|
||||
<li>Build the ADSC control library</li>
|
||||
<li>Copy and rename, or create a symlink to, the ADSC <tt>auxlib.a</tt> library so
|
||||
that it has the name <tt>libauxlib.a</tt> to satisfy the EPICS build facility's
|
||||
requirement that a library file name start with <q><tt>lib</tt></q></li>
|
||||
<li>Add <q><tt>DIRS += adscSrc</tt></q> to <tt>ADApp/Makefile</tt></li>
|
||||
<li>Set <tt>ADSC_HOME</tt> in <tt>ADApp/adscSrc/Makefile</tt></li>
|
||||
<li>Rebuild the <tt>areaDetector</tt> module</li>
|
||||
</ol>
|
||||
<h2 id="Configuring">
|
||||
Configuring</h2>
|
||||
<p>
|
||||
This driver is configured via the <tt>adscConfig()</tt> function. If this is to
|
||||
be used in an IOC, it must be called before <tt>iocInit()</tt>. It has the following
|
||||
signature:
|
||||
</p>
|
||||
<dl>
|
||||
<dt><tt>int adscConfig(const char *portName, const char *modelName)</tt></dt>
|
||||
<dd>
|
||||
<dl>
|
||||
<dt><tt>portName</tt></dt>
|
||||
<dd>
|
||||
ASYN port name for the driver instance</dd>
|
||||
<dt><tt>modelName</tt></dt>
|
||||
<dd>
|
||||
ADSC detector model name; must be one of <tt>Q4</tt>, <tt>Q4r</tt>, <tt>Q210</tt>,
|
||||
<tt>Q210r</tt>, <tt>Q270</tt>, <tt>Q315</tt>, <tt>Q315r</tt></dd>
|
||||
</dl>
|
||||
</dd>
|
||||
</dl>
|
||||
<p>
|
||||
The underlying ADSC control library obtains its configuration from the environment.
|
||||
Therefore, the environment must be correctly configured (i.e. ADSC environment variables
|
||||
set) for the ADSC control library before calling <tt>adscConfig()</tt>.
|
||||
</p>
|
||||
<p>
|
||||
If being used in an IOC, and an EPICS PV interface with the driver is desired, the
|
||||
<tt>ADBase.template</tt> and <tt>adsc.template</tt> databases should also be loaded
|
||||
for the driver instance.
|
||||
</p>
|
||||
<p>
|
||||
An example IOC configuration for this driver is at <tt>iocBoot/iocAdsc/st.cmd</tt>.
|
||||
</p>
|
||||
<h2 id="ImageModes">
|
||||
Image Modes</h2>
|
||||
<h3>
|
||||
<tt>Single</tt></h3>
|
||||
<p>
|
||||
The <tt>Single</tt> mode acquires just one image.
|
||||
</p>
|
||||
<h3>
|
||||
<tt>Multiple</tt></h3>
|
||||
<p>
|
||||
The <tt>Multiple</tt> mode acquires the number of images specified in <tt>$(P)$(R)NumImages_RBV</tt>.
|
||||
</p>
|
||||
<h3>
|
||||
<tt>Continuous</tt></h3>
|
||||
<p>
|
||||
The <tt>Continuous</tt> mode acquires images indefinitely until <em>last image</em>
|
||||
is set. In this mode, the last image of the acquisition must be signaled before
|
||||
exposing the last image by setting <tt>$(P)$(R)ADSCLastImage</tt> to <tt>1</tt>.
|
||||
This requirement is due to how the underlying ADSC control library works.
|
||||
</p>
|
||||
<h2 id="TriggerModes">
|
||||
Trigger Modes</h2>
|
||||
<h3>
|
||||
<tt>Internal</tt></h3>
|
||||
<p>
|
||||
The <tt>Internal</tt> mode will make the driver expose images on its own once the
|
||||
acquisition is started.
|
||||
</p>
|
||||
<h3>
|
||||
<tt>External</tt></h3>
|
||||
<p>
|
||||
The <tt>External</tt> mode will make the driver expose images only when told to
|
||||
once the acquisition is started. A special protocol must be followed to trigger
|
||||
each image exposure. This would normally be very simple, but because the ADSC control
|
||||
library can report that an exposure did not work and should be retried after any
|
||||
exposure, a more complex protocol is required.
|
||||
</p>
|
||||
<p>
|
||||
The protocol is described in terms of the EPICS PV driver interface, but the same
|
||||
rules apply if controlling the driver directly through ASYN. The protocol is as
|
||||
follows:
|
||||
</p>
|
||||
<ol>
|
||||
<li>Wait for <tt>$(P)$(R)ADSCOkToExpose</tt> to be <tt>Yes</tt></li>
|
||||
<li>Set <tt>$(P)$(R)ADSCExTrCtl</tt> to <tt>Start</tt> to start the exposure</li>
|
||||
<li>Set <tt>$(P)$(R)ADSCExTrCtl</tt> to <tt>Stop</tt> to stop the exposure</li>
|
||||
<li>Wait for <tt>$(P)$(R)ADSCExTrCtl_RBV</tt> to be <tt>OK</tt> or <tt>Again</tt></li>
|
||||
<li>If <tt>$(P)$(R)ADSCExTrCtl_RBV</tt> is <tt>Again</tt>, the exposure did not work
|
||||
and should be tried again</li>
|
||||
</ol>
|
||||
<p>
|
||||
Note that care must be taken when waiting for <tt>$(P)$(R)ADSCExTrCtl_RBV</tt> to
|
||||
be <tt>OK</tt> or <tt>Again</tt> to ensure the PV value is not stale (i.e. from
|
||||
the previous exposure). There are at least two methods to ensure this:
|
||||
</p>
|
||||
<ul>
|
||||
<li>Use a CA monitor on <tt>$(P)$(R)ADSCExTrCtl_RBV</tt>; before waiting for the <tt>
|
||||
OK</tt> or <tt>Again</tt> values, wait for the <tt>Stop</tt> value; a CA monitor
|
||||
is used to receive the value changes since the PV will have the <tt>Stop</tt> value
|
||||
for just a short time</li>
|
||||
<li>After starting the exposure, wait for <tt>$(P)$(R)ADSCExTrCtl_RBV</tt> to be <tt>
|
||||
Start</tt></li>
|
||||
</ul>
|
||||
<h2 id="DarkImages">
|
||||
Dark Images</h2>
|
||||
<p>
|
||||
Dark images are acquired automatically at the beginning of a data acquisition. They
|
||||
are taken if any of the following conditions are true:
|
||||
</p>
|
||||
<ul>
|
||||
<li><em>Reuse darks</em> is <tt>No</tt></li>
|
||||
<li><em>Exposure time</em> is different from that of the previous acquisition</li>
|
||||
<li><em>ADC/binning</em> is different from that of the previous acquisition</li>
|
||||
<li><em>Binning</em> is different from that of the previous acquisition</li>
|
||||
<li>The acquisition is the first after <em>stored darks</em> was changed from <tt>
|
||||
Yes</tt> to <tt>No</tt></li>
|
||||
</ul>
|
||||
<h2 id="ValuesAndSettings">
|
||||
Driver Specific Values and Settings</h2>
|
||||
<p>
|
||||
This driver provides status values and settings in addition to what is provided
|
||||
by <tt>areaDetector</tt> <q>base</q>. They are listed here according to their label
|
||||
in the driver specific MEDM GUI and their EPICS PV name in the EPICS PV driver interface.
|
||||
A screenshot of the driver specific MEDM GUI can be seen in the <a href="#Screenshots">
|
||||
Screenshots</a> section.
|
||||
</p>
|
||||
<h3>
|
||||
Detector Condition</h3>
|
||||
<dl>
|
||||
<dt>State, <tt>$(P)$(R)ADSCState</tt></dt>
|
||||
<dd>
|
||||
State of the detector reported by the ADSC control library.</dd>
|
||||
<dt>Status, <tt>$(P)$(R)ADSCStatus</tt></dt>
|
||||
<dd>
|
||||
Status message reported by the ADSC control library.</dd>
|
||||
<dt>Last error, <tt>$(P)$(R)ADSCLastError</tt></dt>
|
||||
<dd>
|
||||
Last error message reported by the ADSC control library.</dd>
|
||||
<dt>Update rate for above properties, <tt>$(P)$(R)ADSCReadConditn.SCAN</tt></dt>
|
||||
<dd>
|
||||
How frequently to update the above properties.</dd>
|
||||
</dl>
|
||||
<h3>
|
||||
Detector Error Recovery</h3>
|
||||
<dl>
|
||||
<dt>Software Reset, <tt>$(P)$(R)ADSCSoftReset</tt></dt>
|
||||
<dd>
|
||||
Performs a software reset. Aborts any current operation, clears status and error
|
||||
messages, and sets <em>detector state</em> to <tt>Idle</tt>.</dd>
|
||||
</dl>
|
||||
<h3>
|
||||
Detector Continuous Image Mode</h3>
|
||||
<dl>
|
||||
<dt>Last Image, <tt>$(P)$(R)ADSCLastImage</tt></dt>
|
||||
<dd>
|
||||
Signals that the next exposure is the last image when in <tt>Continuous</tt> image
|
||||
mode.</dd>
|
||||
</dl>
|
||||
<h3>
|
||||
Detector External Trigger</h3>
|
||||
<dl>
|
||||
<dt>OK to expose, <tt>$(P)$(R)ADSCOkToExpose</tt></dt>
|
||||
<dd>
|
||||
When in <tt>External</tt> trigger mode, indicates whether it is OK to start an image
|
||||
exposure.</dd>
|
||||
<dt>Start, Stop, <tt>$(P)$(R)ADSCExTrCtl</tt></dt>
|
||||
<dd>
|
||||
When in <tt>External</tt> trigger mode, set to <tt>1</tt> to start an exposure and
|
||||
<tt>0</tt> to stop it.</dd>
|
||||
<dt><tt>$(P)$(R)ADSCExTrCtl_RBV</tt></dt>
|
||||
<dd>
|
||||
When in <tt>External</tt> trigger mode, will be <tt>Start</tt>, <tt>Stop</tt>, <tt>
|
||||
OK</tt>, or <tt>Again</tt>. See <a href="#TriggerModes">Trigger Modes</a> section
|
||||
for more about how this property will behave.</dd>
|
||||
</dl>
|
||||
<h3>
|
||||
Driver Parameters</h3>
|
||||
<dl>
|
||||
<dt>Reuse darks, <tt>$(P)$(R)ADSCReusDrk</tt></dt>
|
||||
<dd>
|
||||
Reuse dark images when possible. This is useful to avoid wasting time acquiring
|
||||
dark images when previously acquired dark images are available and can be reused.</dd>
|
||||
<dt>Dezinger, <tt>$(P)$(R)ADSCDezingr</tt></dt>
|
||||
<dd>
|
||||
Acquire <q>dezingered</q> images.</dd>
|
||||
</dl>
|
||||
<h3>
|
||||
Detector Hardware Parameters</h3>
|
||||
<dl>
|
||||
<dt>ADC/Binning, <tt>$(P)$(R)ADSCAdc</tt></dt>
|
||||
<dd>
|
||||
For Q4 and Q4r detectors, controls whether to use <tt>Fast</tt> or <tt>Slow</tt>
|
||||
ADC. For all other detectors, controls whether to use <tt>Hardware</tt> or <tt>Software</tt>
|
||||
binning.</dd>
|
||||
<dt>Raw images, <tt>$(P)$(R)ADSCRaw</tt></dt>
|
||||
<dd>
|
||||
Write raw images.</dd>
|
||||
<dt>Image transforms, <tt>$(P)$(R)ADSCImXform</tt></dt>
|
||||
<dd>
|
||||
Perform image transformations.</dd>
|
||||
<dt>Stored darks, <tt>$(P)$(R)ADSCStrDrks</tt></dt>
|
||||
<dd>
|
||||
Use stored dark images. If set to <tt>Yes</tt>, stored dark images are assumed to
|
||||
have been installed by ADSC and should be used.</dd>
|
||||
</dl>
|
||||
<h3>
|
||||
Detector File Parameters</h3>
|
||||
<dl>
|
||||
<dt>Beam center X, <tt>$(P)$(R)ADSCBeamX</tt></dt>
|
||||
<dd>
|
||||
Beam center in the X dimension.</dd>
|
||||
<dt>Beam center Y, <tt>$(P)$(R)ADSCBeamY</tt></dt>
|
||||
<dd>
|
||||
Beam center in the Y dimension.</dd>
|
||||
<dt>Distance, <tt>$(P)$(R)ADSCDistnce</tt></dt>
|
||||
<dd>
|
||||
Detector distance.</dd>
|
||||
<dt>Two theta, <tt>$(P)$(R)ADSC2Theta</tt></dt>
|
||||
<dd>
|
||||
Detector 2θ angle.</dd>
|
||||
<dt>Axis, <tt>$(P)$(R)ADSCAxis</tt></dt>
|
||||
<dd>
|
||||
Crystal rotation axis.</dd>
|
||||
<dt>Wavelength, <tt>$(P)$(R)ADSCWavelen</tt></dt>
|
||||
<dd>
|
||||
X-ray wavelength.</dd>
|
||||
<dt>Image width, <tt>$(P)$(R)ADSCImWidth</tt></dt>
|
||||
<dd>
|
||||
Crystal rotation during exposure.</dd>
|
||||
<dt>Phi, <tt>$(P)$(R)ADSCPhi</tt></dt>
|
||||
<dd>
|
||||
Phi position at start of exposure.</dd>
|
||||
<dt>Omega, <tt>$(P)$(R)ADSCOmega</tt></dt>
|
||||
<dd>
|
||||
Omega position at start of exposure.</dd>
|
||||
<dt>Kappa, <tt>$(P)$(R)ADSCKappa</tt></dt>
|
||||
<dd>
|
||||
Kappa position at start of exposure.</dd>
|
||||
</dl>
|
||||
<h2 id="Screenshots">
|
||||
Screenshots</h2>
|
||||
<ul>
|
||||
<li><a href="adsc-screenshot.png">ADSC Specific MEDM GUI</a></li>
|
||||
</ul>
|
||||
<h2 id="Unsupported">
|
||||
Unsupported <tt>areaDetector</tt> <q>base</q> Features</h2>
|
||||
<ul>
|
||||
<li>Shutter control</li>
|
||||
<li>Collect: number of exposures per image</li>
|
||||
<li>File: save file</li>
|
||||
<li>File: read file</li>
|
||||
<li>File: format</li>
|
||||
<li>File: auto save (always <tt>Yes</tt>)</li>
|
||||
<li>Readout: image region of interest</li>
|
||||
<li>Readout: reverse image</li>
|
||||
<li>Readout: gain</li>
|
||||
<li>Readout: data type (always <tt>UInt16</tt>)</li>
|
||||
<li>Image frame callbacks</li>
|
||||
</ul>
|
||||
<h2 id="Limitations">
|
||||
Limitations</h2>
|
||||
<ul>
|
||||
<li>Only one ADSC detector may be controlled with this driver per OS process. If this
|
||||
driver is being used in an IOC, this means only one ADSC detector may be controlled
|
||||
with this driver per IOC. This is a limitation of the underlying ADSC control library
|
||||
which does not support more than one detector per OS process.</li>
|
||||
<li>Acquiring <q>dezingered</q> images is not supported. This is a limitation of the
|
||||
underlying ADSC control library which has a bug preventing it from working correctly.</li>
|
||||
<li><em>Software reset</em> does not work. This is a limitation of the underlying
|
||||
ADSC control library which has a bug preventing it from working correctly. It would
|
||||
be great if, after an error, performing a software reset would allow a new acquisition
|
||||
to proceed normally. Currently, the recovery solution often is to restart the control
|
||||
software.</li>
|
||||
</ul>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,205 +1,310 @@
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE>areaDetector Prosilica driver</TITLE>
|
||||
</HEAD>
|
||||
<BODY>
|
||||
|
||||
<CENTER>
|
||||
<H1>areaDetector Prosilica driver</H1>
|
||||
|
||||
<H2> September 5, 2008</H2>
|
||||
<H2> Mark Rivers</H2>
|
||||
<H2> University of Chicago</H2>
|
||||
</CENTER>
|
||||
|
||||
<P> </P>
|
||||
|
||||
<CENTER><H2>Contents</H2></CENTER>
|
||||
<UL>
|
||||
<LI><A href="#Overview">
|
||||
Overview</A>
|
||||
<LI><A href="#Performance measurements">
|
||||
Performance measurements</A>
|
||||
<LI><A href="#Hardware notes">
|
||||
Hardware notes</A>
|
||||
<LI><A href="#Restrictions">
|
||||
Restrictions</A>
|
||||
</UL>
|
||||
|
||||
<CENTER><H2><A name="Prosilica Driver">
|
||||
Prosilica Driver</A></H2></CENTER>
|
||||
|
||||
This is a driver for Gigabit Ethernet and Firewire cameras from
|
||||
<A HREF="http://www.prosilica.com">Prosilica</A>.
|
||||
It inherits from ADDriver and implements nearly all of the parameters in ADStdDriverParams.h.
|
||||
It also implements a number of parameters that are specific
|
||||
to the Prosilica cameras. The driver is currently only supported under Windows (EPICS win32-x86 architecture)
|
||||
because the vendor library is provided as a Windows DLL.
|
||||
The vendor library provided by Prosilica does callbacks to a user-supplied
|
||||
function each time there is a new frame. Thus, it is not necessary to create a thread for callbacks in this driver.
|
||||
<P>
|
||||
The vendor library supports saving individual frames as TIFF files, and this is implemented in the driver. The NDPluginFile
|
||||
plugin can be used to capture or stream images much more rapidly in the netCDF file format.
|
||||
<P>
|
||||
The driver redefines the choices for 2 of the parameters defined in ADStdDriverParams.h. The ADTriggerMode choices for the
|
||||
Prosilica are:
|
||||
<UL>
|
||||
<LI>Free Run (collects images as fast as allowed by the camera readout and the exposure time)
|
||||
<LI>Sync In 1 (external trigger on line 1)
|
||||
<LI>Sync In 2 (external trigger on line 2)
|
||||
<LI>Sync In 3 (external trigger on line 3)
|
||||
<LI>Sync In 4 (external trigger on line 4)
|
||||
<LI>Fixed Rate (collects images at a fixed rate)
|
||||
<LI>Software (single software trigger)
|
||||
</UL>
|
||||
<P>The Prosilica supports additional hardware timing signals that may be supported in a future release.
|
||||
<P>
|
||||
The ADFileFormat choices for the Prosilica are:
|
||||
<UL>
|
||||
<LI>TIFF (this is the only format supported)
|
||||
<LI>Invalid
|
||||
</UL>
|
||||
|
||||
The Prosilica driver implements the following parameters in addition to those in ADStdDriverParams.h:
|
||||
<P>
|
||||
<TABLE style="TEXT-ALIGN: left" cellSpacing=2 cellPadding=2 border=1>
|
||||
<TBODY>
|
||||
<TR>
|
||||
<TD COLSPAN=7, ALIGN=CENTER><B>Parameter Definitions in prosilica.cpp and EPICS Record Definitions in prosilica.template</B></TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TH>Enum name</TH>
|
||||
<TH>asyn interface</TH>
|
||||
<TH>Access</TH>
|
||||
<TH>Description</TH>
|
||||
<TH>drvUser string</TH>
|
||||
<TH>EPICS record name</TH>
|
||||
<TH>EPICS record type</TH>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>PSReadStatistics</TD>
|
||||
<TD>asynInt32</TD>
|
||||
<TD>r/w</TD>
|
||||
<TD>Read the Gigabit Ethernet statistics when 1</TD>
|
||||
<TD>PS_READ_STATISTICS</TD>
|
||||
<TD>$(P)$(R)PSReadStatistics</TD>
|
||||
<TD>longout</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>PSStatDriverType</TD>
|
||||
<TD>asynOctet</TD>
|
||||
<TD>r/o</TD>
|
||||
<TD>Driver type</TD>
|
||||
<TD>PS_DRIVER_TYPE</TD>
|
||||
<TD>$(P)$(R)PSDriverType_RBV</TD>
|
||||
<TD>stringin</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>PSStatFilterVersion</TD>
|
||||
<TD>asynOctet</TD>
|
||||
<TD>r/o</TD>
|
||||
<TD>Packet filter version</TD>
|
||||
<TD>PS_FILTER_VERSION</TD>
|
||||
<TD>$(P)$(R)PSFilterVersion_RBV</TD>
|
||||
<TD>stringin</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>PSStatFrameRate</TD>
|
||||
<TD>asynFloat64</TD>
|
||||
<TD>r/o</TD>
|
||||
<TD>Frame rate (Hz)</TD>
|
||||
<TD>PS_FRAME_RATE</TD>
|
||||
<TD>$(P)$(R)PSFrameRate_RBV</TD>
|
||||
<TD>ai</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>PSStatFramesCompleted</TD>
|
||||
<TD>asynInt32</TD>
|
||||
<TD>r/o</TD>
|
||||
<TD>Number of frames completed</TD>
|
||||
<TD>PS_FRAMES_COMPLETED</TD>
|
||||
<TD>$(P)$(R)PSFramesCompleted_RBV</TD>
|
||||
<TD>longin</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>PSStatFramesDropped</TD>
|
||||
<TD>asynInt32</TD>
|
||||
<TD>r/o</TD>
|
||||
<TD>Number of frames dropped</TD>
|
||||
<TD>PS_FRAMES_DROPPED</TD>
|
||||
<TD>$(P)$(R)PSFramesDropped_RBV</TD>
|
||||
<TD>longin</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>PSStatPacketsErroneous</TD>
|
||||
<TD>asynInt32</TD>
|
||||
<TD>r/o</TD>
|
||||
<TD>Number of erroneous packets</TD>
|
||||
<TD>PS_PACKETS_ERRONEOUS</TD>
|
||||
<TD>$(P)$(R)PSPacketsErroneous_RBV</TD>
|
||||
<TD>longin</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>PSStatPacketsMissed</TD>
|
||||
<TD>asynInt32</TD>
|
||||
<TD>r/o</TD>
|
||||
<TD>Number of missed packets</TD>
|
||||
<TD>PS_PACKETS_MISSED</TD>
|
||||
<TD>$(P)$(R)PSPacketsMissed_RBV</TD>
|
||||
<TD>longin</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>PSStatPacketsReceived</TD>
|
||||
<TD>asynInt32</TD>
|
||||
<TD>r/o</TD>
|
||||
<TD>Number of received packets</TD>
|
||||
<TD>PS_PACKETS_RECEIVED</TD>
|
||||
<TD>$(P)$(R)PSPacketsReceived_RBV</TD>
|
||||
<TD>longin</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>PSStatPacketsRequested</TD>
|
||||
<TD>asynInt32</TD>
|
||||
<TD>r/o</TD>
|
||||
<TD>Number of packets requested</TD>
|
||||
<TD>PS_PACKETS_RESENT</TD>
|
||||
<TD>$(P)$(R)PSPacketsRequested_RBV</TD>
|
||||
<TD>longin</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>PSStatPacketsResent</TD>
|
||||
<TD>asynInt32</TD>
|
||||
<TD>r/o</TD>
|
||||
<TD>Number of packets resent</TD>
|
||||
<TD>PS_PACKETS_RESENT</TD>
|
||||
<TD>$(P)$(R)PSPacketsResent_RBV</TD>
|
||||
<TD>longin</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>PSBadFrameCounter</TD>
|
||||
<TD>asynInt32</TD>
|
||||
<TD>r/o</TD>
|
||||
<TD>Number of bad frames</TD>
|
||||
<TD>PS_BAD_FRAME_COUNTER</TD>
|
||||
<TD>$(P)$(R)PSBadFrameCounter_RBV</TD>
|
||||
<TD>longin</TD>
|
||||
</TR>
|
||||
</TBODY>
|
||||
</TABLE>
|
||||
|
||||
<P>
|
||||
The following is the MEDM screen ADBase.adl connected to a Prosilica camera.
|
||||
<P>
|
||||
<CENTER><IMG src="ADBase_prosilica.png"></CENTER>
|
||||
<P>
|
||||
The following is the MEDM screen that provides access to the specific parameters for the Prosilica detector.
|
||||
<P>
|
||||
<CENTER><IMG src="prosilica.png"></CENTER>
|
||||
<P>
|
||||
The following is an IDL epics_ad_display screen (discussed below) illustrating the Prosilica detector images.
|
||||
<P>
|
||||
<CENTER><IMG src="prosilica_tvscl.png"></CENTER>
|
||||
<P>
|
||||
|
||||
</BODY>
|
||||
</HTML>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<title>areaDetector Prosilica driver</title>
|
||||
</head>
|
||||
<body>
|
||||
<center>
|
||||
<h1>
|
||||
areaDetector Prosilica driver</h1>
|
||||
<h2>
|
||||
September 17, 2008</h2>
|
||||
<h2>
|
||||
Mark Rivers</h2>
|
||||
<h2>
|
||||
University of Chicago</h2>
|
||||
</center>
|
||||
<p>
|
||||
</p>
|
||||
<center>
|
||||
<h2>
|
||||
Contents</h2>
|
||||
</center>
|
||||
<ul>
|
||||
<li><a href="#Overview">Overview</a></li>
|
||||
<li><a href="#Performance measurements">Performance measurements</a></li>
|
||||
<li><a href="#Hardware notes">Hardware notes</a></li>
|
||||
<li><a href="#Restrictions">Restrictions</a></li>
|
||||
</ul>
|
||||
<center>
|
||||
<h2 id="Prosilica Driver">
|
||||
Prosilica Driver</h2>
|
||||
</center>
|
||||
<p>
|
||||
This is a driver for Gigabit Ethernet and Firewire cameras from <a href="http://www.prosilica.com">
|
||||
Prosilica</a>. It inherits from ADDriver and implements nearly all of the parameters
|
||||
in ADStdDriverParams.h. It also implements a number of parameters that are specific
|
||||
to the Prosilica cameras. The driver is currently only supported under Windows (EPICS
|
||||
win32-x86 architecture) because the vendor library is provided as a Windows DLL.
|
||||
The vendor library provided by Prosilica does callbacks to a user-supplied function
|
||||
each time there is a new frame. Thus, it is not necessary to create a thread for
|
||||
callbacks in this driver.
|
||||
</p>
|
||||
<p>
|
||||
The vendor library supports saving individual frames as TIFF files, and this is
|
||||
implemented in the driver. The NDPluginFile plugin can be used to capture or stream
|
||||
images much more rapidly in the netCDF file format.
|
||||
</p>
|
||||
<p>
|
||||
The driver redefines the choices for 2 of the parameters defined in ADStdDriverParams.h.
|
||||
The ADTriggerMode choices for the Prosilica are:
|
||||
</p>
|
||||
<ul>
|
||||
<li>Free Run (collects images as fast as allowed by the camera readout and the exposure
|
||||
time)</li>
|
||||
<li>Sync In 1 (external trigger on line 1)</li>
|
||||
<li>Sync In 2 (external trigger on line 2)</li>
|
||||
<li>Sync In 3 (external trigger on line 3)</li>
|
||||
<li>Sync In 4 (external trigger on line 4)</li>
|
||||
<li>Fixed Rate (collects images at a fixed rate)</li>
|
||||
<li>Software (single software trigger)</li>
|
||||
</ul>
|
||||
<p>
|
||||
The Prosilica supports additional hardware timing signals that may be supported
|
||||
in a future release.
|
||||
</p>
|
||||
<p>
|
||||
The ADFileFormat choices for the Prosilica are:
|
||||
</p>
|
||||
<ul>
|
||||
<li>TIFF (this is the only format supported)</li>
|
||||
<li>Invalid (this menu item is defined only because MEDM will not display a menu widget
|
||||
with only 1 choice)</li></ul>
|
||||
<p>
|
||||
The Prosilica driver implements the following parameters in addition to those in
|
||||
ADStdDriverParams.h:
|
||||
</p>
|
||||
<table border="1" cellpadding="2" cellspacing="2" style="text-align: left">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td align="CENTER" colspan="7,">
|
||||
<b>Parameter Definitions in prosilica.cpp and EPICS Record Definitions in prosilica.template</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>
|
||||
Enum name</th>
|
||||
<th>
|
||||
asyn interface</th>
|
||||
<th>
|
||||
Access</th>
|
||||
<th>
|
||||
Description</th>
|
||||
<th>
|
||||
drvUser string</th>
|
||||
<th>
|
||||
EPICS record name</th>
|
||||
<th>
|
||||
EPICS record type</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
PSReadStatistics</td>
|
||||
<td>
|
||||
asynInt32</td>
|
||||
<td>
|
||||
r/w</td>
|
||||
<td>
|
||||
Read the Gigabit Ethernet statistics when 1</td>
|
||||
<td>
|
||||
PS_READ_STATISTICS</td>
|
||||
<td>
|
||||
$(P)$(R)PSReadStatistics</td>
|
||||
<td>
|
||||
longout</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
PSStatDriverType</td>
|
||||
<td>
|
||||
asynOctet</td>
|
||||
<td>
|
||||
r/o</td>
|
||||
<td>
|
||||
Driver type</td>
|
||||
<td>
|
||||
PS_DRIVER_TYPE</td>
|
||||
<td>
|
||||
$(P)$(R)PSDriverType_RBV</td>
|
||||
<td>
|
||||
stringin</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
PSStatFilterVersion</td>
|
||||
<td>
|
||||
asynOctet</td>
|
||||
<td>
|
||||
r/o</td>
|
||||
<td>
|
||||
Packet filter version</td>
|
||||
<td>
|
||||
PS_FILTER_VERSION</td>
|
||||
<td>
|
||||
$(P)$(R)PSFilterVersion_RBV</td>
|
||||
<td>
|
||||
stringin</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
PSStatFrameRate</td>
|
||||
<td>
|
||||
asynFloat64</td>
|
||||
<td>
|
||||
r/o</td>
|
||||
<td>
|
||||
Frame rate (Hz)</td>
|
||||
<td>
|
||||
PS_FRAME_RATE</td>
|
||||
<td>
|
||||
$(P)$(R)PSFrameRate_RBV</td>
|
||||
<td>
|
||||
ai</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
PSStatFramesCompleted</td>
|
||||
<td>
|
||||
asynInt32</td>
|
||||
<td>
|
||||
r/o</td>
|
||||
<td>
|
||||
Number of frames completed</td>
|
||||
<td>
|
||||
PS_FRAMES_COMPLETED</td>
|
||||
<td>
|
||||
$(P)$(R)PSFramesCompleted_RBV</td>
|
||||
<td>
|
||||
longin</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
PSStatFramesDropped</td>
|
||||
<td>
|
||||
asynInt32</td>
|
||||
<td>
|
||||
r/o</td>
|
||||
<td>
|
||||
Number of frames dropped</td>
|
||||
<td>
|
||||
PS_FRAMES_DROPPED</td>
|
||||
<td>
|
||||
$(P)$(R)PSFramesDropped_RBV</td>
|
||||
<td>
|
||||
longin</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
PSStatPacketsErroneous</td>
|
||||
<td>
|
||||
asynInt32</td>
|
||||
<td>
|
||||
r/o</td>
|
||||
<td>
|
||||
Number of erroneous packets</td>
|
||||
<td>
|
||||
PS_PACKETS_ERRONEOUS</td>
|
||||
<td>
|
||||
$(P)$(R)PSPacketsErroneous_RBV</td>
|
||||
<td>
|
||||
longin</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
PSStatPacketsMissed</td>
|
||||
<td>
|
||||
asynInt32</td>
|
||||
<td>
|
||||
r/o</td>
|
||||
<td>
|
||||
Number of missed packets</td>
|
||||
<td>
|
||||
PS_PACKETS_MISSED</td>
|
||||
<td>
|
||||
$(P)$(R)PSPacketsMissed_RBV</td>
|
||||
<td>
|
||||
longin</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
PSStatPacketsReceived</td>
|
||||
<td>
|
||||
asynInt32</td>
|
||||
<td>
|
||||
r/o</td>
|
||||
<td>
|
||||
Number of received packets</td>
|
||||
<td>
|
||||
PS_PACKETS_RECEIVED</td>
|
||||
<td>
|
||||
$(P)$(R)PSPacketsReceived_RBV</td>
|
||||
<td>
|
||||
longin</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
PSStatPacketsRequested</td>
|
||||
<td>
|
||||
asynInt32</td>
|
||||
<td>
|
||||
r/o</td>
|
||||
<td>
|
||||
Number of packets requested</td>
|
||||
<td>
|
||||
PS_PACKETS_RESENT</td>
|
||||
<td>
|
||||
$(P)$(R)PSPacketsRequested_RBV</td>
|
||||
<td>
|
||||
longin</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
PSStatPacketsResent</td>
|
||||
<td>
|
||||
asynInt32</td>
|
||||
<td>
|
||||
r/o</td>
|
||||
<td>
|
||||
Number of packets resent</td>
|
||||
<td>
|
||||
PS_PACKETS_RESENT</td>
|
||||
<td>
|
||||
$(P)$(R)PSPacketsResent_RBV</td>
|
||||
<td>
|
||||
longin</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
PSBadFrameCounter</td>
|
||||
<td>
|
||||
asynInt32</td>
|
||||
<td>
|
||||
r/o</td>
|
||||
<td>
|
||||
Number of bad frames</td>
|
||||
<td>
|
||||
PS_BAD_FRAME_COUNTER</td>
|
||||
<td>
|
||||
$(P)$(R)PSBadFrameCounter_RBV</td>
|
||||
<td>
|
||||
longin</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>
|
||||
The following is the MEDM screen ADBase.adl connected to a Prosilica camera.
|
||||
</p>
|
||||
<center>
|
||||
<img alt="ADBase_prosilica.png" src="ADBase_prosilica.png" /></center>
|
||||
<p>
|
||||
The following is the MEDM screen that provides access to the specific parameters
|
||||
for the Prosilica detector.
|
||||
</p>
|
||||
<center>
|
||||
<img alt="prosilica.png" src="prosilica.png" /></center>
|
||||
<p>
|
||||
The following is an IDL epics_ad_display screen (discussed below) illustrating the
|
||||
Prosilica detector images.
|
||||
</p>
|
||||
<center>
|
||||
<img alt="prosilica_tvscl.png" src="prosilica_tvscl.png" /></center>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
Reference in New Issue
Block a user