内容

一、介绍

这是一个用于来自Dectris的Eiger和Eiger2的EPICS areaDetector驱动程序。已经在固件版本1.6.4+的Eiger 500K, 1M, 4M和16M以及固件2020.2的Eiger2上测试了它。这个驱动程序通过SIMPON REST接口与探测器进行通信,因此不需要来自Dectris的库文件。能够以HDF5文件或者以一个ZeroMQ流或者这二者从探测器拉取图像。文件可以在同时被保存到磁盘和被传递给areaDetector pipeline。

支持所有触发模式,虽然Internal Enable模式似乎没有正常工作。见已知问题。

这个驱动继承自ADDriver。它实现了在asynNDArrayDriver和在ADDriver中很多参数。它也实现了Eiger探测器很多专有参数。eigerDetector类详细地描述这个类。

此文档不尝试解释Eiger专有参数的含义,由于在来自SIMPLON API Reference中和EIGER Detector手册文件中解释了它们。有时它引用了那些参数如它们在Dectris文档中命名。

SIMPLON API提供了查询参数限制、对应枚举的有效值,错误状况等的方式。如果这些值超出了可接受范围,这个驱动程序将限制这些值在其最小和最大值。设置一个参数将立即推送其值到探测器。

这个驱动程序被构建在一个多线程架构上。一个线程组合被用于同时从探测器拉取文件,保存它们到磁盘以及解析它们为NDArrays。一个专用线程被用于以一个ZeroMQ流接收图像。

一些Eiger参数是在IOC初始化时被设置并且预计不会更改。即是:

  • detector/config/auto_summation=true
  • filewriter/config/image_nr_start=1
  • monitor/config/buffer_size=1

二、访问新参数

一些参数与这个驱动程序运行没有关系,并且像这样参数初始未被这个驱动程序暴露为PVs。有一种访问未由这个驱动程序自动创建的其它参数的机制,通过用合适的drvInfo字符串实例话新记录。其中一些PVs是用此方式创建。例如PV XPixelSize_RBV有以下drvInfo:

EIG_DCD_x_pixel_size

对于那些参数,前4个字符必须是EIG_。接着第五个字符必须是以下之一:

  • D:探测器子系统
  • M:监视器子系统
  • F:FileWriter子系统
  • S:流子系统

第六个字符确定这个参数是一个配置或者一个状态参数:

  • C:配置
  • S:状态

第七个字符确定要使用哪个asyn参数类型:

  • I:整数(asynParamInt32)
  • D:双精度浮点(asynParamFloat64)
  • S:字符串(asynParamOctet)

第八个字符必须是一个"_" 并且剩下的字符是根据SIMPLON API手册的参数名称。因而,对于这个示例,PV将访问这个参数:

detector/api/<version>/config/x_pixel_size

三、触发模式

有六种可用的触发模式:

  • Internal Series:一个内部触发脉冲产生N张图片
  • Internal Enable:一个内部触发脉冲产生一张图片
  • External Series:一个外部脉冲产生N张图片
  • External Enable:一个外部脉冲产生一张图片
  • Continous:与internal series相同,但在series后自动重启。
  • External Gate:这种模式至于在Eiger2上新固件一起使用,Eiger2每个像素有两个计数器。行为取决于设置ExtGateMode PV。

由Internal和External Series模块产生的图片总数是由NumImages和NumTrigers PVs的积给出(在Dectris术语中nimages和ntriggers)。

在Internal Enable和External Enabl模式,产生的图片总数唯一由NumTriggers PV(ntriggers)给出。NumImages在采集过程中临时被设成了1。

由运行Trigger PV发送对应Internal Enable的触发。每个单独图片的曝光是由TriggerExposure PV给出,并且在相同采集中触发之间变化。这个模式作为固件1.5.0的试验。

四、手动触发

在Internal Series和Internal Enable模式,如果ManualTrigger PV设为Yes,触发不是由驱动自动产生。而是由运行Trigger PV发送它们。在Internal Enable模式,触发携带能够未每次触发更改的曝光值,其是由TriggerExposure PV设置。注意:Internal Enable是作为固件1.5.0的试验。见已知问题。

五、数据采集

能够用数种方法从探测器拉取由Eiger产生的数据。探测器有三个模块,它们使得采集结果用不同方法获取。FileWrite模块以HDF5文件写产生的图像到探测器磁盘,这些HDF5文件由一个主(头)文件和很多数据文件组成。Stream模块使得图像尽快以一个ZeroMQ被捕获来获取。Monitor模块有规律地产生TIFF图像来监视一个长时间采集如何进行。

来自FileWriter或来自Stream模式地数据可以被解析成用于areaDetector pipeline地NDArray。用DataSource PV选择实际源。如果DataSource被设置成None,将没有数据被发送给areaDetector pipeliine,但探测器通过这个areaDetector驱动仍然是可控地;独立于这个驱动的第三方驱动则能够拉取文件或者监听ZeroMQ流。

5.1 使用FileWriter

当FWEnable设置为Yes时,FileWriter模块被激活。由FileWriter产生的文件有根据FWNamePattern PV的名称。默认模式是"series_$id",此处$id将被采集的顺序ID替代。探测器成功地armed时立即产生一个主文件。很多数据文件随后。产生数据文件的数目取决于采集的图像数目和FWNFilesPerImage PV。

例如,如果触发模式是External Enable,NumImage是60, NumTrigers是2,FWNImagesPerFile是100,对应采集的顺序ID是1并且FWNImagePattern是"series_$id",将产生总共3个文件:

  • series_1_master.h5
  • series_1_data_000001.h5(有100张图)
  • series_1_data_000002.h5(有20张图)

如果DataSource设置为FileWriter或者SaveFiles设置为Yes,产生文件将被下载。在文件可以获取时尽快下载它们。要确定一个文件是否可用,这个驱动以名义速率10Hz轮询这个探测器。当一个文件正在被处理时,并行下载下一个可用文件。除非FWAutoRemove被设置成Yes,否则所有文件将在探测器磁盘上保留。

当保存文件到磁盘时(SaveFiles=Yes),用FileOwner, FileOwnerGrp和FilePerms PVs设置文件的所有者。其组和其访问权限是可能的。要能够设置任意所有者,IOC可执行程序需要CAP_SETUID和CAP_SETGID能力,用以下这条命令能够赋予这个能力。

sudo setcap cap_setuid, cap_setgid+ep eigerDectorApp

通过运行FWClear PV,能够一次删除在探测器磁盘上所有文件。这仅对Eiger1和Simplon API版本1.6.0可用。

如果一个系列的最后数据文件没有满(例如:有20张图的series_1_data.000002.h5),则只在一个其清空FileWriter缓存的disarm(在停止采集时被发送)命令后,它才出现在探测器磁盘上。

5.2 使用Stream

当StreamEnable被设置成Yes时,Stream模块被激活。则数据将在探测器的tcp端口9999以一个ZMQ_PUSH套接字上获取。如果DataSource被设置成了Stream,这个驱动打开一个相应的ZMQ_PULL套接字并且解析到来的数据为NDArrays。另外,第三方客户端能够在那个套接字上监听数据。在Eiger SIMPLON API文档中指定了这个包的格式。

5.3 使用Monitor

当MonitorEnable设置成Yes时,Monitor模块被激活。当monitor模块缓存满时(有一张可用图片),数据将可用。这个驱动为数据可用等待MonitorTimout ms。有一个10Hz速率限制。一旦下载,TIFF图像将在NDArrayAddr 1上被解析成areaDetector的NDArray。(因而,一个独立的NDArray流)。

六、晶体参数

一些参数以用于采集的元数据方式可用。这些参数被存储在主文件上并且在ZeroMQ流中以元数据被发送,但除了相应地设置光子能量的Wavelength参数外,不影响采集。

七、标准驱动参数的实现

以下表格描述了Eiger驱动如何实现在asynNDArrayDriver.h和ADDriver.h,ADBase.template和NDFile.template中定义的一些标准驱动参数。

EPICS记录名称 Eiger参数 描述

$(P)$(R)TriggerMode

$(P)$(R)TriggerMode_RBV

detector/config/trigger_mode

为探测器设置触发模式。可选是:

1) Internal Series

2) Internal Enable

3) External Series

4) External Enable

5) External Gate(仅限有2021固件的Eiger2)

$(P)$(R)NumImages,

$(P)$(R)NumImages_RBV

detector/config/nimages 当在Internal Series或External Series模式时,设置每次触发采集的图像数目。

$(P)$(R)NumExposures,

$(P)$(R)NumExposures_RBV

detector/config/nexpi 在External Gate触发模式中设置每张图片的曝光次数。

$(P)$(R)AcquireTime,

$(P)$(R)AcquireTime_RBV

detector/config/count_time 设置参数"count_time",其是在Internal Series或External Series模式中单张图像的曝光时间。

$(P)$(R)AcquirePeriod,

$(P)$(R)AcquirePeriod_RBV

detector/config/frame_time 设置参数"frame_time",其直接影响探测器的帧率。产生的帧率是1/AcquirePeriod。
$(P)$(R)DataType_RBV N.A

图像数据的数据类型。这取决于Eiger模块,AcquirePeroid(帧率)和AquireTime(曝光时间)。用长曝光时间,它是UInt32,用中等曝光时间,它是UInt16,而用非常高帧率,它是UInt32。例如,在Eiger2 500K上:

1)AcquireTime>0.0066ms:DataType_RBV=UInt32

2)AcquirePeriod<0.00045(2200帧/s):DataTypeRBV=UInt32

3)不是上述条件:DataType_RBV=UInt16

$(P)$(R)TemperatureActual

detector/status/board_000/

th0_temp

读取探测器实际温度
$(P)$(R)MaxSizeX_RBV N.A 探测器传感器在X方向尺寸
$(P)$(R)MaxSizeY_RBV N.A 探测器传感器在Y方向尺寸
$(P)$(R)ArraySizeX_RBV detector/config/x_pixels_in_detector 当前探测器在X方向的传感器尺寸。这可以根据选择的ROI模式更改。
$(P)$(R)ArraySizeY_RBV detector/config/y_pixels_in_detector 当前探测器在Y方向的传感器尺寸。这可以根据选择的ROI模式更改。

$(P)$(R)Manufacturer_RBV,

$(P)$(R)Model_RBV

detector/config/description 读取探测器制造商(Dectris)和模块(Eiger xx M)
$(P)$(R)SerialNumber_RBV detector/config/detector_number 探测器序列号
$(P)$(R)FirmwareVersion_RBV detector/config/eiger_fw_version 探测器固件版本
$(P)$(R)SDKVersion_RBV detector/api/version Simplon API版本
$(P)$(R)DriverVersion_RBV N.A 这个驱动的版本

八、Eiger特有的参数

除了在asynNDArrayDriver.h和ADDriver.h中的参数外,Eiger驱动还实现了以下参数。大部分记录是在eigerBase.template中,并且是Eiger1和Eiger2都有的。Eiger1特有记录是在eiger1.template,Eiger2特有记录是在eiger2.template,一些记录仅在Eiger1,而一些记录仅在Eiger2。

8.1 探测器信息

Eiger参数 描述 EPICS记录名 EPICS记录类型
detector/config/description 探测器的制造商和模块 Description_RBV stringin
detector/config/x_pixel_size 在X方向探测器像素尺寸(米为单位) XPixelSize_RBV ai
detector/config/y_pixel_size 在Y方向探测器像素尺寸(米为单位) YPixelSize_RBV ai
detector/config/sensor_material 探测器的传感器材料 SensorMaterial_RBV stringin
detector/config/sensor_thickness

探测器的传感器厚度

(米为单位)

SensorThickness_RBV ai
detector/config/detector_readout_time 探测器在帧之间的读取时间(死时间)。随着不同阈值能量变化 DeadTime_RBV ai

8.2 探测器状态

Eiger参数 描述 EPICS记录名称 EPICS记录类型
N.A. 初始化探测器DCU。这条命令花费很多秒。 Initialize busy
detector/status/state 探测器的状态。 State_RBV stringin
detector/status/error 产生一个错误状态的参数列表 Error_RBV stringin

detector/status/board_000

/th0_temp

第一个模块的温度 Temp0_RBV stringin

detector/status/board_000

/th0_humidity

第一个模块的湿度 Humid0_RBV ai

detector/status/link_0

detector/status/link_1

detector/status/link_2

detector/status/link_3

探测器服务器和头之间四个链接的状态。

Link0_RBV

Link1_RBV

Link2_RBV

Link3_RBV

bi

detector/status/builder

/dcu_buffer_free

探测器空闲的内部缓存的百分比。低值可能表示一个问题。只限Eiger1 DCUBufferFree_RBV ai
N.A. 高压重置时间。只限Eiger 2

HVResetTime

HVResetTime_RBV

ao,ai
N.A. 高压重置命令。关闭HVResetTime的高压并且接着开启它。只限Eiger 2。 HVReset bo

detector/status/high_voltate

/state

高压状态。高压的状态。只限Eiger 2。 HVState_RBV stringin

8.3 采集设置

Eiger参数 描述 EPICS记录名 EPICS记录类型
detector/config/threhold_energy 对应采集的能量阈1。这在Eiger1上是唯一阈。

Threshold,

Threshold_RBV

ao,ai
detector/config/thresold/1/mode 启用或禁用阈1。仅Eiger2

Thresold1Enable

Thresold1Enable_RBV

bo, bi
detector/config/threhold/2/energy 对应采集的能量阈2。仅Eiger2

Threshold2,

Threshold2_RBV

ao,ai
detector/config/threhold/2/mode 启用或禁用阈2。仅阈2

Threshold2Enable,

Threshold2Enable_RBV

bo,bi

detector/config/threhold/difference

/mode

启用或禁用差模,此处输出图像是threshold1-threshold2。仅Eiger2

ThresholdDiffEnable,

ThresholdDiffEnable_RBV

bo,bi
detector/config/photon_energy 对应采集的光子能量

PhotoEnergy,

PhotoEnergy_RBV

ao,ai
detector/config/counting_mode 计数模式。"Normal"或"Retrigger"。仅限Eiger2。

CountingMode,

CountingMode_RBV

bo,bi

8.4 触发设置

Eiger参数 描述 EPICS记录名 EPICS记录类型
detector/config/extg_mode 当TriggerMode=External Gate时,使用的模式。选项是"Pump&Probe"和"HDR"。只限有2021固件的Eiger2

ExtGateMode,

ExtGateMode_RBV

mbbo

mbbi

detector/command/trigger 在模式Internal Series和Internal Enable,当设置了ManualTrigger时,使用的软件触发器 Trigger ao
N.A. 在Internal Enable触发模式,与触发一起使用的曝光

TriggerExposure,

TriggerExposure_RBV

ao,ai

detector/config/ntrigger 采集的触发次数

NumTriggers,

NumlTriggers_RBV

ao,ai
N.A. 在Internal Series和Internal Enable模式,控制将自动或者通过Trigger PV(1)发送触发。

ManualTrigger,

ManualTrigger_RBV

bo,bi

detector/config/

trigger_start_delay

在采取行动前在接收到触发信号后延时时间(秒为单位)

TriggerStartDelay,

TriggerStartDelay_RBV

ao,ai

8.5 读出设置

Eiger参数 描述 EPICS记录名 记录类型

detector/config/

roi_mode

使用哪个ROI模式。仅在Eiger 9M和16M上支持。选项是:

1) Disabled

2) 4M

ROIMode

ROIMode_RBV

mbbo

mbbi

detector/config/

flatfield_correction_applied

控制是否使用flatfield校正。

FlatfieldApplied,

FlatfieldApplied_RBV

bo,bi

detector/config/

countrate_correction_applied

控制是否使用计数速率矫正

CountrateCorrApplied,

CountrateCorrApplied_RBV

bo,bi

detector/config/

pixel_mask_applied

控制是否使用像素掩模

PixelMaskApplied,

PixelMaskApplied_RBV

bo,bi

detector/config/

auto_summation

控制是否应该进行自动求和

AutoSummation,

AutoSummation_RBV

bo,bi

detector/config/

compression

当启用压缩时,要使用的压缩算法。选项是:

1) lz4

2) bslz4(bitshuffle lz4)

3) None(仅API 1.8.0)

将总是在Stream ZMQ接口上使用选取的算法。如果FWCompression=Enabled,它也将用于由FileWriter接口写的HDF5文件。

CompressionAlgo

CompressionAlgo_RBV

mbbo,

mbbi

N.A.

哪个数据源用于areaDetector pipeline。有效值:

1) None

2) FileWriter

3) Stream

DataSource

DataSource_RBV

mbbo

mbbi

8.6 采集状态

Eiger参数 描述 EPICS记录名 类型

N.A.

探测器的Armed状态 Armed bi

detector/config/

bit_depth_image

图像数据的位深。这取决于Eiger模块、AcqurePeriod(帧率)和AcquireTime(曝光时间)。在长曝光时间,它是32,在一个中间帧率,它是16,而在非常高的帧率,它是8。例如,在Eiger2 500K:

1) AcquireTime>0.0066ms:BitDepthImage_RBV=32

2) AcquirePeriod<0.00045(2200帧/s):BitDepthImage_RBV=8

3) 不满足以上条件:BitDepthImage_RBV=16

$(P)$(R)

BitDepathImage

_RBV

longin

detector/config/

countrate_correction_count_cutoff

由于帧率矫正,探测器将在数次计数后终止。 CountCutoff_RBV ai

8.7 FileWriter接口

Eiger参数 描述 EPICS记录名 记录类型
filewriter/config/mode 启用或禁用FileWriter模块

FWEnable,

FWEnable_RBV

bo,bi
filewriter/status/state FileWriter模块的状态

FWEnable,

FWEnable_RBV

stringin

filewriter/config/

compression_enabled

为由DCU写的HDF5文件启用或禁用LZ4或BSLZ4压缩。

FWCompression,

FWCompression_RBV

bo,bi

filewriter/config/

nimages_per_file

每个HDF5数据文件的图像数目

FWNImgsPerFIle,

FWNImgsPerFIle_RBV

ao,ai

filewriter/config/

name_pattern

产生的HDF5文件的名称模式。模式可以是任何东西,但它必须在它中包含字符串"$id"。这个字符串被采集的当前顺序id替代。默认是:"series_$id",它将产生这些文件:

* series_1_master.h5

* series_1_data_000001.h5

* series_1_data_000002.h5

* ...

FWNamePattern,

FWNamePattern_RBV

stringout,

stringin

N.A. 当前采集的顺序ID SquenceId ai
N.A. 控制采集的文件是否应该被本地保存到磁盘

SaveFiles,

SaveFiles_RBV

bo,bi
N.A. 控制保存到磁盘的文件所有者。需要这个IOC有CAP_SETUID能力

FileOwner,

FileOwner_RBV

stringout,

stringin

N.A. 控制保存到磁盘的文件的所有组。需要IOC有CAP_SETGID能力。

FileOwnerGrp,

FileOwnerGrp_RBV

stringout

stringin

N.A. 控制保存到磁盘的文件的权限。正常Linux八进制位掩码格式,为所有者/所有组/其它,例如,0666是r+w所有者,组和其它。 FilePerms ao

filewriter/status/

buffer_free

在探测器磁盘上的空闲空间 FWFree_RBV ai
N.A. 控制是否从探测器磁盘删除被下载的文件。

FWAutoRemove,

FWAutoRemove_RBV

bo,bi

filewriter/config/

clear

写这个PV清除在探测器服务器磁盘上所有文件。仅Eiger1 FWClear ao

8.8 Stream接口

Eiger参数 描述 EPICS记录名 EPICS记录类型
stream/config/mode 启用或禁用Stream模块

StreamEnable,

StreamEnable_RBV

bo,bi
stream/status/state Stream模块的状态 StreamState_RBV stringin
N.A. 控制来自Stream接口的NDArrays是被解压缩(Yes)或被压缩(No)

StreamDecompress,

StreamDecompress_RBV

bo,bi

stream/config/

header_detail

选择对应Stream API Headers的详细程度。选项是:

1) All

2) Basic

3) None

StreamHdrDetail,

StreamHdrDetail_RBV

mbbo,

mbbi

stream/config/

header_appendix

设置被追加到Stream API header的文本 StreamHdrAppendix wavefrom

stream/config/

image_appendix

设置被追加到Stream API的文本 StreamImgAppendix wavefrom
stream/status/dropped 指明在上次采集中丢失了多少图像。 StreamDropped_RBV ai

8.9 Monitor接口

Eiger参数 描述 EPICS记录名 EPICS记录类型
monitor/config/mode 启用或禁用Monitor模块

MonitorEnable

MonitorEnable_RBV

bo,bi
monitor/status/state Monitor模块的状态 MonitorState_RBV stringin
N.A. 对应在Monitor接口上请求新图像的超时时间

MonitorTimeout

MonitorTimeout_RBV

ao,ai

8.10 采集元数据

Eiger参数 描述 EPICS记录名 EPICS记录类型

detector/config/

beam_center_x

束线X位置

BeamX,

BeamX_RBV

ao,ai

detector/config/

beam_center_y

束线Y位置

BeamY,

BeamY_RBV

ao,ai

detector/config/

detector_distance

探测器距离

DetDist,

DetDist_RBV

ao,ai

detector/config/

wavelength

束线波长。在光子能量变化时,这个参数自动变化。

Wavelength,

Wavelength_RBV

ao,ai

8.11 探测器元数据

Eiger参数 描述 EPICS记录名 EPICS记录类型

detector/config/

chi_start

设置Chi角值

ChiStart,

ChiStart_RBV

ao,ai

detector/config/

chi_increment

设置每帧吃角增量

ChiIncr,

ChiIncr_RBV

ao,ai

detector/config/

kappa_start

设置Kappa角值

KappaStart,

KappaStart_RBV

ao,ai

detector/config/

kappa_increment

设置每帧Kappa角增量

KappaIncr,

KappaIncr_RBV

ao,ai

detector/config/

omega_start

设置Phi角值。

PhiStart,

PhiStart_RBV

ao,ai

detector/config/

omega_increment

设置每帧Phi角增量

PhiIncr,

PhiIncr_RBV

ao,ai

detector/config/

phi_start

设置TwoTheta角的值

TwoThetaStart

TwoThetaStart_RBV

ao,ai

detector/config/

phi_increment

设置每帧TwoTheta角增量

TwoThetaIncr,

TwoThetaIncr_RBV

ao,ai

detector/config/

two_theta_start

detector/config/

two_theta_increment

8.12 允许最小的变化

Eiger参数 描述 EPICS记录名 EPICS记录类型
N.A. 允许波长的最小变化量

WavelengthEps,

WavelengthEps_RBV

ao,ai
N.A. 允许光子能量的最小变化量

EnergyEps,

EnergyEps_RBV

ao,ai

九、不受支持的标准驱动参数

在本文档中没有提到的所有标准参数都不被支持。

十、配置

从C/C++或从EPICS IOC shell用eigerDetectorConfig命令创建Eiger驱动:

int eigerDetectorConfig(const char *portName, const char *hostname,int maxBuffers, size_t maxMemory, int priority, int stackSize)

有关这个函数参数含义的详细情况,参考在eigerDetector中有关eigerDetectorConfig函数的详细文档以及在对应eigerDetector class的构造函数文档。

随areaDetector一起提供了一个IOC启动目录和启动脚本的示例。

十一、medm窗口

以下显示了medm窗口,其用于控制Eiger和Eiger2探测器。注意:可以使用通用的窗口ADBase.adl,但它暴露了一些不适用于Eiger的PVs,并且缺少了对Eiger重要的很多PVs。

eigerDetector.adl是用于控制Eiger1探测器的窗口。

eiger2Detector.adl是用于控制Eiger2探测器的窗口。

十二、适用两个能量阈值

Eiger2探测器支持2个能量阈值。阈值1必须能量总是低于阈值2。这些可以被独立地启用,但必须至少启用两个阈值之一。如果二者都被启用,ThresholdDiffEnable将产生为阈值1-阈值2之间差异的图像。

用放在探测器前两个放射源采集以下图像。在左侧是Fe55,其大约在5.9Kev产生Mn Ka x射线。在右侧是Cd109,其在大约23Kev产生Ag Ka x射线。阈值1设成了3.0Kev,大约是Fe55 x射线能量的50%。阈值2设置为11Kev,大约为Cd109 x射线能量的50%。

用Threshold1Enable=Enable和Threshold2Enable=Disable采集这张图。注意:因为两个元都在3Kev以上,它们都被探测到了。

用Threshold1Enable=Disable和Threshold2Enable=Enable采集这张图。注意:因为Fe55源低于11KeV,没有探测到它。

用Threshold1Enable=Enable和Threshold2Enable=Enable采集这张图。注意:仅探测到了Fe55,因为在3Kev和11Kev之上的任何事件都被丢弃。

十三、已知问题

更改光子能量

取决于探测器尺寸,更改光子能量是一个慢操作。在16M上,它大约花费10秒种。其它参数也花费这么长,因为它们也影响光子能量,即阈值能量和波长。StatusMessage PV指示设置任何这些参数何时开始和结束。

为了防止对能量和波长的微小或意外更改花费太长时间被应用,只在所需值和当前值之间的差值大于某个配置的参数时,才更新它们的值。尤其,只在它们产生差值岛屿WavelengthEps(默认:0.0005埃)时波长的更改才生效。类似,对光子能量的更改,只在阈值1和阈值2大于EnergyEps(默认:0.05ev)时,阈值1和阈值2才生效。

状态参数轮询

每次运行ReadStatus PV时,读取一些状态参数。一个高速率轮询产生问题,有时当一个参数被设置成一个无效值一起时,引起探测器挂起。

Internal Enable模式

Internal Enable模式被Dectris标记为试验的。在此时,它非常脆弱(固件1.5.0)并且经常不产生本该产生的所有文件。

示例启动脚本st.cmd

errlogInit(20000)< envPathsdbLoadDatabase("$(TOP)/dbd/DexelaApp.dbd")
DexelaApp_registerRecordDeviceDriver(pdbbase) # Prefix for all records
epicsEnvSet("PREFIX", "13DEX1:")
# The port name for the detector
epicsEnvSet("PORT",   "DEX1")
# The queue size for all plugins
epicsEnvSet("QSIZE",  "20")
# The maximim image width; used for row profiles in the NDPluginStats plugin
epicsEnvSet("XSIZE",  "2048")
# The maximim image height; used for column profiles in the NDPluginStats plugin
epicsEnvSet("YSIZE",  "2048")
# The maximum number of time seried points in the NDPluginStats plugin
epicsEnvSet("NCHANS", "2048")
# The maximum number of frames buffered in the NDPluginCircularBuff plugin
epicsEnvSet("CBUFFS", "500")
# The search path for database files
epicsEnvSet("EPICS_DB_INCLUDE_PATH", "$(ADCORE)/db")# Create a Dexels driver
# DexelaConfig(const char *portName, detIndex, maxBuffers, size_t maxMemory, int priority, int stackSize)# This is for the first detector in the system
DexelaConfig("$(PORT)", 0, 0, 0, 0, 0)asynSetTraceIOMask($(PORT), 0, 2)
#asynSetTraceMask($(PORT),0,0xff)dbLoadRecords("$(ADDEXELA)/db/Dexela.template", "P=$(PREFIX),R=cam1:,PORT=$(PORT),ADDR=0,TIMEOUT=1")# Create a standard arrays plugin, set it to get data from Driver.
NDStdArraysConfigure("Image1", 3, 0, "$(PORT)", 0)
# Set NELEMENTS to at least the total number of pixels in the detector.  The following is a little larger than 4096 x 4096
dbLoadRecords("$(ADCORE)/db/NDStdArrays.template", "P=$(PREFIX),R=image1:,PORT=Image1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=$(PORT),TYPE=Int16,SIZE=16,FTVL=SHORT,NELEMENTS=17000000")# Load all other plugins using commonPlugins.cmd
< $(ADCORE)/iocBoot/commonPlugins.cmd
set_requestfile_path("$(ADDEXELA)/dexelaApp/Db")iocInit()# save things every thirty seconds
create_monitor_set("auto_settings.req", 30, "P=$(PREFIX)")

EPICS--areaDetector--ADEiger相关推荐

  1. EPICS -- areaDetector URL驱动程序

    一.介绍 这是一个用于从一个URL读取一个EPICS areaDetector驱动程序.它能用于从网络摄像头(Axis vedio servers)或者仅从一个磁盘文件读取图片.它使用GraphicM ...

  2. EPICS教程5 -- areaDetector模块安装

    本次安装系统为Rocky Linux release 8.5 1 打开一个命令行终端,切换到root权限,执行以下安装命令,安装依赖包: [root@rockygu ~]# dnf install e ...

  3. epics安装css,EPICS-synApps/areaDetector安装

    1. 下载安装synApps areaDetector安装需要EPICS base与asyn,synApps模块安装环境,因此需要先安装synApps. wget https://epics.anl. ...

  4. EPICS教程1 -- 在Linux/UNIX/DARWIN(MAC)上安装

    1.1 EPICS有关于什么? 我们假设你多少知道EPICS是什么.这里我们从头开始并且达到这一点:我们有一台提供某些用于读取(caget或pvget)和写入(caput或pvput)的PVs的工作服 ...

  5. matlab epics,基于EPICS/MATLAB图像处理的光束位置测量系统

    同步辐射光源,需测定X射线光束线位置,常用的光斑位置探测器(X-rayBeamPositionMonitor,XBPM)有刀片式BPM和丝BPM等.刀片式BPM利用X射线在一对刀片上产生的光电流之比与 ...

  6. Centos7下areaDetector IOC的编译后记

    https://github.com/EPICS-synApps/support/releases synApps出新版了,本文发文时的最新版为:R6-2 Centos7下areaDetector I ...

  7. Centos7下areaDetector IOC的编译

    准备: Centos7ministall的系统: root权限下: yum install -y epel-release yum install -y git wget gcc gcc-c++ au ...

  8. EPICS synApps介绍

    一.synApps是什么? 1) 一个用于同步束线用户的EPICS模块集合. 2) EPICS模块 alive, autosave, busy, calc, camac, caputRecorder, ...

  9. 使用areaDetector和medm打开海康威视MV-CA004-10GM相机

    前言 前面拙作centos7 编译epics和areadetector中相机介绍了在centos下面编译EPICS base包.利用assemble_synsApps.sh文件获取synsApps_6 ...

最新文章

  1. 文章如何做伪原创 SEO大神教你几招做原创网站文章的心得
  2. 高并发环境下的Nginx该如何优化,让用户再也不会说卡
  3. linux常用操作符,Shell常用操作符总结
  4. 软考考前冲刺第十三章UML建模
  5. 前端学习(1484):json-server工具使用
  6. Android UI(四)云通讯录项目之云端更新进度条实现
  7. android poi读写,Android-android中怎样使用poi
  8. html5之Canvas坐标变换应用-时钟实例
  9. 简单C#生成静态及相关读取模板文件
  10. JavaScript正则表达式 1
  11. SQL最全基础教程(保证你看了绝对点赞收藏)
  12. ARM、DSP、FPGA比较——非常详细深入
  13. 计算机中临时存储数据指令的部件,第一单元 探索计算机的奥秘
  14. 对 ESX/ESXi 上的网络和 TCP/UDP 端口连接问题进行故障排除 (2020669)
  15. 仿真器(emulator)和模拟器(simulator)区别可以认为Emulator是Simualtor和真机之间的一层
  16. ETL工程师的岗位详情岗位职责
  17. 【多线程】采用Callable接口创建线程
  18. 关于Flash的一些随想(2021年)
  19. 腾讯云2核2G、2核4G、4核8G、8核16G、16核32G服务器价格出炉
  20. html+css 实现红绿灯效果

热门文章

  1. Ubuntu修改系统时间到北京时间的步骤
  2. Linux select函数的使用
  3. 小白学编程(CSS):跳动的文字
  4. Android打开系统设置界面
  5. Botler.ai为美国和加拿大推出性骚扰检测机器人
  6. spring boot 三种类型事物实现说明
  7. 关于双非本科2020秋招,我想说的
  8. 自学转行3年经验,终入职阿里!
  9. Windows 10 缺少 efi 分区无法启动的修复
  10. 你还在关注 AGV,而 AMR 已经悄然崛起