EPICS synApps SSCAN模块

这篇具有很好参考价值的文章主要介绍了EPICS synApps SSCAN模块。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、在这个模块中有什么?

1)代码

  • sscan记录
  • busy记录
  • recDynLink库
  • saveData数据存储客户端
  • scanparm记录

2)EPICS数据库

  • scan数据库
  • scanParms和alignParms数据库

3)MEDM显示窗口

  • scan*.adl
  • scan*_help.adl

2、简单扫描

1) 一维扫描

a) 进行NPTS次

  • 设置条件:例如,移动电机;等待结束
  • 触发探测器:例如:启动计数器;等待结束
  • 采集数据:读取探测器信号;存储在数组中

EPICS synApps SSCAN模块

b) 写数据到磁盘

2) 多维扫描

a)  外层扫描的探测器触发执行内层扫描。

b)  saveData监视一个sscan记录集合,在扫描启动时决定扫描维度,并且根据要求记录数据。

c)  对扫描维度数目没有限制。

EPICS synApps SSCAN模块

 3、扫描特性

1) 0-4定位器,0-4探测器触发器,0-70个探测器信号

  • 定位器和回读值是类型double
  • 探测器值是类型float

2)从标量器和/或数组PV采集

  • 数组PV的采集。NPTS个元素。

3)采集点数只受限于IOC内存

  • 标准的最大数是每个扫描维度2000(xi,yi)点。
  • 可以增加到~EPICS_CA_MAX_ARRAY_BYTES/8

4) 探测器/客户端等待,数据存储等待

  • 可以等待多个采集采集客户端
  • 仅一个数据存储客户端

5)暂停/继续,取消

  • 来自被取消扫描的数据被写到磁盘

6)双缓存:在扫描结束后,写1D采集数据

  • 在下个1D扫描时,可以写。

7) saveData写XDR-格式(".mda")文件到磁盘。

  • 在任何类型计算机上可以读取这些文件。

8) 一个定位器可以有私有扫描参数(scanparm记录)。

  • 用一个鼠标电机装载预设的扫描参数。
  • 对对齐有用。

9) 扫描结束后的操作包括:移动到峰位,谷位,+/-边界。

  • 可以例如通过一系列扫描跟踪一个峰位。

10)scanparm记录 + 扫描之后操作 = 自动化的1-D对齐

4、扫描实现

1)sscan记录是一个通道访问客户端

  • 受到扫描的PV‘s可以被托管于任何IOC
  • 使用recDynLink库来管理与PV的连接。
  • 使用ca_put_callback()来设置条件,触发探测器以及等待结束。
  • 在采集数据前使用ca_get_callback()。

2)saveData是一个通道访问客户端

  • 原则上,saveData可以监视托管于一个不同IOC的sscan记录。
  • 实际中,如果你能够避免它,不要做这件事。

3)扫描采集/存储可以运行在vxWorks,Linux或Solaris上。

  • 在synApps 5.1中新特性(EPICS 3.14)

4) sscan记录可以被任何通道访问客户端驱动。

  • 通过MEDM的手动操作是一个选项。
  • 可以用户编写的扫描控制软件。

5)扫描前/扫描后的链接

a) 在扫描启动和/或在扫描结束后,可以写一个常数值到任何数值或菜单PV。

b) 可以等待或者不等通过这个写操作启动的运行的结束。

c) 如果这个sscan记录是多维扫描的组成部分,在每次迭代时链接发挥作用。

d) 外层sscan记录可以写到这些链接,以及到它们写的值。

e) 这些链接可以写到它们自己sscan记录的START等字段,但可能没有使得其PV名(链接字段)变化。

EPICS synApps SSCAN模块

5、MEDM用户操作界面

EPICS synApps SSCAN模块

6、定位器选项 

1)扫描模式(.PnSM - 每个定位器)

  • 确定定位器如何移动以及移动到哪里

2)绝对/相对(.PnAR - 每个定位器)

  • 决定如何写定位器位置

3)定位器延迟(.PDLY - 影响所有定位器)

  • 在定位器稳定过程中,在结束它们的移动后的延时

4)在扫描后的移动(.PASM - 影响所有定位器)

  • 确定在扫描结束时,对定位器做什么(如果有)。

5) SCAN模式(.PnSM - 每个定位器)

a) LINERA:算术地计算等间隔位置

你通过设置以下任意三个指定定位器位置

EPICS synApps SSCAN模块

sscan记录记录调整未设置参数。

EPICS synApps SSCAN模块

b) TABLE:定位器位置被包含在.PnPA数组中。

  • 这个数组必须包含至少.NPTS个值
  • 在启动扫描前,你必须安排这个数组要包含所需的位置
  • .PnPA数组一定不能被sscan记录重写

EPICS synApps SSCAN模块

c) FLY:在定位器移动过程中,将采集数据。

通过设置START,END,定位器速度以及探测器采集时间,你指定在哪个位置采集数据。

执行以下算法:

  • 定位器移动到START;报告结束
  • 探测器被触发;报告结束
  • 采集第一个数据点
  • 定位器移动到END
  • 对以下进行NPTS-1次迭代:i) 探测器触发;报告结束;ii) 采集数据点

数据点的计时受控于探测器的采集时间

飞行定位器不报告结束(定位器在移动结束后可能仍然在运行。)

注意:从一个飞行模式定位器的回读计时是不准确的

EPICS synApps SSCAN模块

 d) 混合扫描模式是可以的:

EPICS synApps SSCAN模块

e) 不要被已有定位器模式限制

  • 一个定位器是你可以写入的任何东西
  • 可以使用calcout或transform,算术地指定位置,例如:采样轮
  • 可以通过插值表写入定位器:使用一个备用定位器回读来获取实际定位器到数据文件

EPICS synApps SSCAN模块

 f) 绝对/相对(.PnAR - 每个定位器)

  • 如果.PnAR == "ABSOLUTE"(0),定位完全按指定来移动。
  • 如果.PnAR == "RELATIVE(1)",位置在被发送到定位器前,它被加到前次扫描位置。

g) 稳定时间(Settling) (.PDLY:影响所有定位器)

i) 如果指定了任何定位器PV,接着在所有定位器报告结束后,在进入sscan下个阶段前,sscan记录等待.PDLY秒。

  • 对在结束移动后,"响铃"的定位器有用。
  • 作为不能报告结束的定位器的解决办法

ii) 如果没有定位器,则忽略稳定时间。

iii) 调整稳定时间为系统时钟周期的最小整数倍。

h) 扫描后移动(.PASM - 影响所有定位器)

  • START:定位器只是被留在它们结束的位置。
  • START POS:定位器被移动到START位置。
  • PRIOR POS:定位器被移动到它们扫描前的位置。
  • PEAK POS:检测来自参考探测器的数据(由.REFD字段指定的编号,范围在[1..70]中)。如果找到峰位,定位器被移动到采集此峰位的位置。
  • VALLEY POS:类似,但是谷位替代峰位。
  • +EDGE POS:参考数据的导数峰位。
  • -EDGE POS:参考数据的导数谷位。
  • CNTR OF MASS:参考探测器数据的质心。如果多于一个定位器是活动的,在计算中将使用来自最小编号的活动定位器的数据。结果将应用于所有活动定位器。

7、探测器触发器

EPICS synApps SSCAN模块

1)9-4个探测器触发器(.TnPV),用于启动数据采集。

2)类似于定位器,但发送的值(.TnCD)是常数。

3)在所有定位器结束后,以及在所有定位器稳定时间用完后,触发器执行。

4)在所有探测器触发器报告结束后,探测器稳定时间开始。

5)如果没有触发器,则忽略稳定时间。

6)在扫描过程中要被采集的PV’s

EPICS synApps SSCAN模块

7)0-70个探测器(.D01PV - .D70PV)

8) 探测器选项

a) 采集类型(.ACQT)

i) SCALAR:

  • 在每个定位器位置,被采集的标量PV's
  • 在扫描结束,被采集的数组PV's(.NPTS个元素)

ii) 1D ARRAY:

  • 仅在所有探测器是数组值,才使用这种模式。
  • 定位器仅被移动到它们的START位置。
  • 在未来,可能支持数组值的定位器。

9) 采集模式(.ACQM)

a) NORMAL:按采集存储值。

b) ACCUMULATE:从下次扫描开始,加探测器值

c) ADD TO PREV:相同,但从前次扫描开始。

8、客户端等待

1) 在所有探测器触发器报告结束后,并且在采集数据前,sscan记录检查客户端等待。

2)客户端可以通过写1到.WAIT保持在此点的扫描(这增加了wait-count字段.WCNT)。

3)若干客户端可以使用这个字段。

4)当所有客户端完成写'0'到.WAIT,扫描采集数据。

5)如果客户端太慢,而不能写到.WAIT,扫描可以为它们设置.WCNT为这个值.AWCT。

6)在.AWCT个客户端完成写'0'到.WAIT前,扫描将暂停。

7)'客户端'包含用户,通过MEDM。

EPICS synApps SSCAN模块

 9、数组触发器/等待

1) 在所有数据点已经被采集后,扫描可以触发为采集准备数组PVs的软件(例如:从硬件读取)

2) 当数组触发器声明结束时,采集数组PVs。

EPICS synApps SSCAN模块

 10、扫描控制

1) SCAN

  • 写'1':启动这个sscan记录。
  • 写'0':停止这个sscan记录。(但对提供的数据库,总是使用'ABORT'按钮停止。)

2)GO/PAUSE

  • 暂停是立即的,在延时后,GO发生。

3) ABORT

a) 写'1'到'xxx:allstop.VAL',这应该停止电机。

b) 发送'stop'消息给在提供的数据库中所有sscan记录。

  • 第一个‘Abort’在待完成回调出现,以及数据存储客户端释放了先前的扫描数据数组后,尝试终止扫描。
  • 第二个'Abort'尝试仅等待数据存储客户端。
  • 第三个连续的'Abort'尝试杀死扫描,不关注后果。

11、一次点击扫描

scanparm记录执行编程好的线性扫描

1)为一个定位器保持扫描参数

2)写参数到一个特定的sscan记录。

3)可选地执行这个sscan记录

4)对位置对齐有用。

EPICS synApps SSCAN模块

 12、数据存储

1) saveData监视sscan记录并且写它们地数据到被编号地文件。

2)握手允许流水式操作。

3)saveData地启动时init可以指定用每次扫描数据要写地PV‘s列表。

4)saveData写'MDA'文件。

  • 多维存档
  • 二进制,跨平台(XRD)格式
  • 为运行时访问优化了格式
  • 格式允许文件在每个写集合后被关闭。

5) 自动文件编号

  • 例如:'xxx_0123.mda', 'xxx_0124.mda'
  • 处理重叠:'xxx_0123.mda_01'

EPICS synApps SSCAN模块

 6) 数据文件地位置

a) 'File System' + 'subdirectory'

b) vxWorks:

  • 文件系统是NFS挂载点
  • 要求:'//<hostname>'

c) Linux, Solaris

  • saveData不挂载这个文件系统(系统管理员做这件事)
  • 如果出现,'//<hostname>'被忽略

7) 在一个扫描进行中时(见'LOCK' PV),不能写到’File system‘或者'subdirectory'。

8)不要删除或者重命名saveData正在写入地目录。

9)只在注释PV’s在saveData.req中被命名时,才保存注释PV's。

13、saveData.req init文件

EPICS synApps SSCAN模块

 

14、MDA文件格式

EPICS synApps SSCAN模块

EPICS synApps SSCAN模块

EPICS synApps SSCAN模块

EPICS synApps SSCAN模块

 也见:在sscan模块文档目录中'saveData_fileFormant.txt'。

14、其它数据采集相关的软件

1) 用于与synApps一起使用的数据可视化工具

  • 运行时查看扫描数据
  • 用于数据文件操作的离线工具
  • 支持1-3维数据
  • 分布式独立于ioc软件
  • 见课程"数据可视化"

2)CCD数据采集工具

a) CCD模块

b) 基于CCD支持的可移植的CA服务器,以及相关软件

  • 这两个方法允许一个EPICS CA客户端驱动数据采集
  • 这两个方法支持ca_put_callback(),根据sscan记录需要。

3) 读取.mda文件的Python软件,绘制1D扫描(过时)

15、结束报告

1) 用于被单个IOC包含数据库的方法

  • 在执行链中仅使用PP链接和转发链接

2) 数据库操作跨多个IOC:

用put_callback链接使用记录跨iocs

  • 带异步设备支持的calcout
  • sscan,swait(即:一个synApps "userCalc")
  • sseq或sCalcout(.WAIT*="Wait")

3) 在一个CA客户端执行这个操作的组成部分的情况中:

  • 数据库通过PP或put_callback链接设置一个busy记录
  • 当操作结束时,CA客户端清除这个busy记录

4) 在这个操作的组成部分是由一个CP链接驱动的情况中:

  • 与以上没有不同;一个CP链接时一个CA客户端

5)在执行链中仅使用PP链接和转发链接

EPICS synApps SSCAN模块

6)与前相同,但对一个异步记录

EPICS synApps SSCAN模块

 

7)提前"Done"报告,因为CA-链接执行不被跟踪

EPICS synApps SSCAN模块

8)用PUT_CALLBACK链接修复了提前的DONE问题

EPICS synApps SSCAN模块

 9)因为CA客户端运行不被跟踪,提前的"DONE":

EPICS synApps SSCAN模块

 10)用"BUSY"记录修复了提前的"DONE"问题

EPICS synApps SSCAN模块文章来源地址https://www.toymoban.com/news/detail-410244.html

到了这里,关于EPICS synApps SSCAN模块的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 电力物联网是什么?在智能配电系统中有什么作用?

    摘要 :在社会经济和科学技术不断发展中,配电网实现了角色转变,传统的单向供电服务形式已经被双向能流服务形式取代,社会多样化的用电需求也得以有效满足。随着物联网技术的发展,泛在电力物联网开始应用于当今的电力系统。本文分析泛在电力物联网在智能配电系

    2024年02月03日
    浏览(39)
  • Java中有了equals(),为什么还有“==“

    背景:Java中“一切皆是对象”,为什么还有非对象的“==”? 在Java语言假设我们只进行OOP,所以Java代码都是由一个接着一个的类组成的。那么,对象之间比较,用equals()就可以了。 可为什么“==”在代码随处可见呢? Java是基于C++的,相比与C++,Java是一种更“纯粹”的面向

    2023年04月20日
    浏览(55)
  • java中有哪些流?各自的区别是什么?

    java中的流可以按操作类型划分为: 字节流和字符流 字节流 操作的类型是字节,可以操作计算机中任何类型的数据 字符流 操作单位是字符,只能操作文字 还可以按照流向进行划分:分 为输入流和输出流 输入流 指的是将文件中的数据读取到程序中(向程序中读入数据) 输

    2024年02月05日
    浏览(47)
  • 路由器在网络连接中有什么作用

    所谓路由就是指通过相互连接的网络把信息从源地点移动到目标地点的活动。一般来说,在路由过程中,信息至少会经过一个或多个中间节点。通常,人们会把路由和交换进行对比,这主要是因为在普通用户看来两者所实现的功能是完全一样的。其实,路由和交换之间的主要

    2024年02月05日
    浏览(49)
  • 深度学习中有哪些超参数,都有什么作用

    深度学习中有许多超参数需要设置,它们会对模型的性能和训练过程产生重要影响。以下是一些常见的超参数及其作用: 学习率(Learning Rate):控制参数更新的步长。较小的学习率可以使模型收敛更稳定,但可能需要更多的训练时间;较大的学习率可以加快收敛速度,但可

    2024年02月10日
    浏览(53)
  • 功能键F4在Microsoft Excel中有什么用

    的确,许多 Excel 用户发现使用键盘快捷键对他们来说更有效。事实上,键盘快捷键可能是使用鼠标的最佳选择,因为使用 Excel 时使用触摸屏可能不是视力障碍者的最佳选择。 使用功能键,如 Excel 中的 F4 以及 F2 可能是非常必要的。在这篇文章中,我们将研究功能键 F4 及其在

    2024年02月11日
    浏览(29)
  • 多模态是什么意思,在生活工业中有哪些应用?

    问题描述:多模态是什么意思,在生活工业中有哪些应用? 问题解答: 多模态(Multimodal)指的是同时利用多种不同模式或传感器的情境、系统或技术。在不同领域,多模态可以涉及到多种感官或信息源的综合利用,以获得更全面、准确的信息。这可以包括视觉、听觉、触觉

    2024年01月21日
    浏览(47)
  • Java 中有了基本类型为什么还需要包装类?

    Java 中有8种基本数据类型,这些基本类型又都有对应的包装类。 分类 基本数据类型 包装类 布尔型 boolean Boolean 整型 byte Byte short Short int Integer long Long 字符型 char Character 浮点型 float Float double Double 因为 Java 是一种面向对象语言,很多地方都需要使用对象而不是基本数据类型。

    2024年02月14日
    浏览(42)
  • 什么是POTDR?POTDR在光缆线路维护中有哪些应用

    OTDR (Optical Time Domain Reflectometer,光时域反射仪)是光缆线路工程及维护中的常用仪表,是利用光信号在光纤中传输时的 瑞利散射 和 菲涅尔 反射,通过反射曲线来了解光纤沿长度的损耗分布情况,可测量光纤的长度、线路的衰减、接头衰耗等项目,还能进行光纤故障点的定

    2024年02月02日
    浏览(46)
  • IntelliJ IDEA 中有什么让你相见恨晚的技巧

    循环中经常用到这个技巧,比如:遍历1个大List的过程中,想让断点停在某个特定值。 参考上图,在断点的位置,右击断点旁边的小红点,会出来一个界面,在Condition这里填入断点条件即可,这样调试时,就会自动停在i=10的位置 作者:黑马程序员 链接:https://www.zhihu.com/qu

    2024年02月04日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包