EPICS scanparm记录和相关软件

概要

本文档描述EPICS scanparm记录,以及构建和使用它所需的相关EPICS软件。此版本的记录兼容EPICS 3.14.8.2,而不兼容任何EPICS 3.13.x版本。

scanparm记录存储了为了将它们写入到EPICS sscan记录的参数,并且项EPICS终端用户提供了一种装载那些参数到sscan记录并且引起sscan记录执行扫描的便捷方式。想法是允许使用者用一次鼠标电极来配置和执行一个预定义的扫描。

顺便说一下,在EPICS中,词scan,通常指的是一个记录的执行,而部分指的是选择通过哪种方法执行一个记录。在本文中,scan将不再有那个含义。在此,一个scan是sscan记录做什么:

  1. 移动一个定位器到某个位置,并且等待它到达
  2. 触发一个探测器,并且等待它结束采集
  3. 读取和存储来自定位器和探测器的数据。
  4. 重复

有关扫描更多的,见sscan记录文档。

在最简单和最常用中,在启动时关联一个scanparm记录和一个特定的定位器(例如:电机)并且目标定为配置和运行一个特定的sscan记录。在运行时,使用者一般写启动和终止位置,以及要采集的数据点数目到一个scanparm记录,并且从那以后,可以以一次写入这个scanparm记录运行那个扫描。用多个scanparm记录关联一个定位器是可能的,并且组合scanparm记录在一起到数据库中是可能的,这个数据库存储了包含多个定位器和多个sscan记录的扫描的参数。

scanparm记录包含了它写参数的字段,它读取参数的字段以及它从使用者接收命令并且可以转发给另外记录的参数的字段。

字段描述

除了所有记录类型都具有的字段外,scanparm记录有以下描述的字段。

记录相关字段的字母顺序列表

名称类型DCT提示访问DCT
ACTDBF_SHORTScanActiveRNo
AFTDBF_MENU(sscanPASM)AfterR/WYes
ARDBF_MENU(sscanP1AR)absRelR/WYes
AQTDBF_DOUBLE采集时间R/W*Yes
DPVDBF_STRINGDetPVNameR/WYes
EPDBF_DOUBLEEndPosR/W*Yes
GODBF_SHORTGoR/W*Yes
IACTDBF_INLINKInLinkRYes
IMPDBF_INLINKMP InLinkRYes
LOADDBF_SHORTLoadR/W*Yes
LSTPDBF_DOUBLELast stepSizeRNo
MPDBF_LONGMaxPtsRNo
NPDBF_LONGnPtsR/W*Yes
OAFTDBF_OUTLINKAFT OutLinkRYes
OAQTDBF_OUTLINKAQT OutLinkRYes
OARDBF_OUTLINKAR OutLinkRYes
ODPVDBF_OUTLINKD1PV OutLinkRYes
OEPDBF_OUTLINKEP OutLinkRYes
OPPVDBF_OUTLINKP1PV OutLinkRYes
OPREDBF_OUTLINKPRE-write OutLinkRYes
ORPVDBF_OUTLINKR1PV OutLinkRYes
OSCDBF_OUTLINKSC OutLinkRYes
OSMDBF_OUTLINKSM OutLinkRYes
OSPDBF_OUTLINKSP OutLinkRYes
OTPVDBF_OUTLINKT1PV OutLinkRYes
PPVDBF_STRINGPositionerPVNameP/WYes
PREDBF_SHORTPRE-write命令R/W*Yes
PRECDBF_SHORT显示精度R/WYes
RPVDBF_STRINGReadbackPVNameR/WYes
SCDBF_SHORTStartCmdR/WYes
SMDBF_MENU(sscanP1SM)StepModeR/WYes
SPDBF_DOUBLEStepPosR/W*Yes
STEPDBF_DOUBLEStepSizeRNo
TPVDBF_STRINGTrigPVNameR/WYes
VALDBF_DOBULEResultRNo
VERSDBF_FLOAT代码版本RNo

注意:本表中热链接只带你到详细描述链接项所在的部分。你可能必须向下翻页找到实际的项。

注意:在以上访问列中:

  • R:只读。
  • R/W:允许读和写。
  • N:不能访问。

如果记录的SCAN字段设为"Passive"时,一个通道访问写触发记录运行。

在向外发送信息中包含的字段

值字段类型输出链接目标字段目的
PREDBF_SHORTOPRE.CMND清除老的定位器配置
SM

DBF_MENU

(sscanP1SM)

OSM.P1SM

定位器扫描模式

(例如:线性,表格,飞行)

AR

DBF_MENU

(sscanP1AR)

OAR.P1AR

定位器绝对/相对

AFT

DBF_MENU

(sscanPASM)

OAFT.PASM

定位器扫描后模式

(例如,stay, go to start pos, ...)

PPVDBF_STRINGOPPV.P1PV定位器驱动PV名称
RPVDBF_STRINGORPV.T1PV探测器触发器PV名称
DPVDBF_STRINGODPV.D01PV探测器PV名称
SPDBF_DOUBLEOSP.P1SP定位器起点
EPDBF_DOUBLEOEP.P1EP定位器终点
NPDBF_LONGONP.NPTS要采集的数据点数目
SCDBF_SHORTOSC.EXSC启动扫描
AQTDBF_DOUBLEOAQT.TP采集时间

在采集信息中涉及的字段

输入链接值字段代表性目标字段目的
IMPMP.MPTS获取最大允许的数据点数目
IACTACT.BUSY确定目标sscann记录是否在运行

在管理执行中涉及的字段

输入链接值字段代表性目标字段目的
LOADOLOAD.LOAD引起scanparm记录写参数到sscan记录。如果需要多个scanparm记录定义一个扫描(例如,为一个多定位器扫描,或者一个多维扫描),OLOAD字段应该链接到下个scanparm记录。
GOOGO.GO引起scanparm记录写参数到sscan记录并且也引起sscan记录开始扫描。如果需要多个scanparm记录定义一个扫描(例如,用于一个多定位器扫描,或者一个多维扫描),OGO字段应该链接到下个scanparm记录,并且最后的要执行的scanparm记录应该使用它的OGO链接来使得它的sscan记录开始扫描。

文件

以下表格简要地描述了实现和使用scanparm记录所需地文件。

源代码

scanparmRecord.cscanparm记录的记录支持
scanparmRecord.dbd这个文件定义了用于scanparm记录的所有字段菜单等。

数据库和AUTOSAVE-REQUEST文件

scanParms.db当sscan记录和scanparm记录有相同前缀时,用于一维,一定位器扫描的数据库。
scanParmsRemote.db当sscan记录和scanParm记录有不同前缀时,用于一维,一定位器扫描的数据库。
scanParms2Pos.db用于一维,二定位器扫描的数据库。
scanParms2D.db用于二维扫描的数据库。

MEDM显示文件

scanParms.adl
scanParmsRemote.adl
scanParmsCustom.adl
scanParms2Pos.adl
scanParms2D.adl

这些文件构建medm窗口来访问scanparm记录和相关联的过程变量。要从命令行使用它们之一,输入,例如:

medm -x -macro "P=xxx:,Q=m1,PV=m1" scanParms.adl 
medm -x -macro "P=xxx:,Q=yyy:m1,PV=yyy:m1" scanParmsRemote.adl 
medm -x -macro "P=xxx:,Q=m1,EGU=,NAME=,DESC=" scanParmsCustom.adl 
medm -x -macro "P=xxx:,Q=device,PV1=xxx:m1,PV2=xxx:m2,SCAN=yyy:scan1" scanParms2Pos.adl 
medm -x -macro "P=xxx:,Q=device,DESC=,EGU1=,NAME1=,EGU2=,NAME2=" scanParms2D.adl 

EPICS启动文件

st.cmd启动脚本

 这个文件步包含在发行包中。这是一个支持scanparms的启动文件 的注释摘要:

####################################################################### 
# vxWorks startup script to load and execute system (iocCore) software. 
# Tell EPICS all about the record types, device-support modules, drivers, 
# etc. in the software we just loaded (xxxApp) 
dbLoadDatabase("dbd/xxxApp.dbd")  
dbLoadTemplate("scanParms.substitutions")   

AUTOSAVE REQUEST文件

scanParms_Settings.req:在auto_settings.req中包含的示例请求文件来保存一个scanParms.db数据库的使用者修改的设置。要使用这个文件,在auto_settings.req中为每个scanParm数据库添加以下格式的一行:

file scanParms_settings.req P=xxx: M=m1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/609726.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Tomcat服务实例部署

目录 **Tomcat 由一系列的组件构成,其中核心的组件有三个:** 什么是 servlet? 什么是 JSP? Tomcat 功能组件结构: Container 结构分析: Tomcat 请求过程: ## Tomcat 服务部署 1.关闭防火墙&#xf…

golang学习-流程控制

if else 建议条件不用()包裹,if{}不能省略,{}中的{必须紧靠着条件 go语言中没有while循环,可以通过for 代替 age : 30if age > 18 {fmt.Println("我是大人")}//另一种写法if age : 99; age > 18 {fmt.Printf("年龄是%v&…

一、数据结构

一、 数组 1.1 数组 定义 遍历 // 遍历数组 传递指针 func traverse() {var b [...]int{1, 2, 3} //长度为3 元素为 1 2 3var ptr &b //ptr是指向数组的指针fmt.Println(b[0], b[1]) // 打印数组的前 2 个元素fmt.Println(ptr[0], ptr[1]) // 通…

UDS统一诊断服务读取DTC信息0X19服务

概念 UDS(Unified Diagnostic Services)统一诊断服务中的0x19服务是用于读取诊断故障代码(DTC,Diagnostic Trouble Code)信息的服务。DTC是车辆故障诊断系统中的重要部分,当车辆发生故障时,相应的DTC会被存储在ECU(电子控制单元)的故障代码存储器中。 0x19服务包含了…

CMake入门教程【核心篇】导出项目库

概述 CMake是一个跨平台的自动化构建系统,它使用配置文件(CMakeLists.txt)来管理软件构建过程。如何使用CMake导出静态库(.a)和动态库(.so/.dll)。 #mermaid-svg-cnd9qfr6rFQgQRNR {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fil…

解读MyabtisPlus中的R类(通用响应包装类)

目录 前言1. 概念2. 源码解读3. Demo 前言 大部分R类可以自已手写一个适配的,但MybatisPlus中有专门的R类,于是就使用封装好的类即可 1. 概念 通用R类是一种用于处理API响应的通用响应包装类。 概念含义作用示例用途1.R类是一个泛型类,可…

C/C++汇编学习(六)——数据结构汇编实例:链表、树、图。

我们继续开展 目录 一、链表 1. C代码 2. 链表部分转为汇编并注释 二、树 1. C代码 2. 链表部分转为汇编并注释 3. 汇编伪代码 三、图 1. C代码 2. 汇编伪代码 四、总结 一、链表 1. C代码 #include <iostream>struct ListNode {int data;ListNode* next;…

vue 前端等比例压缩图片(再转换成文件后上传后端)

前端压缩图片总的来说还是转base64 然后等比例放小宽和高 这个是上次压缩图片的一个扩展 压缩完之后 再将base64 转成blob再转成文件然后再上传 一生要强的前端崽子&#xff08;后端不支持base64上传&#xff09; 自己改吧改吧 // 图片上传async changePic(e) {this.isshang…

【Docker】Docker基础

文章目录 安装使用帮助启动命令镜像命令容器命令 安装 # 卸载旧版本 sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine # 设置存储库 sudo yum install -y yum-utils …

关于git使用的tips

前言 这里是一些git指令使用的tips&#xff0c;如果你作为初学者的话&#xff0c;我认为它将对你有所帮助。 常见指令 常见问题处理 1、使用git clone下载【huggingface.co】资源超时或无法请求问题 绝大多数情况是网络问题&#xff0c;首先如果是比较大的资源&#xff0c;你需…

数据库:如何取消mysql的密码

因为调试MySQL数据接口&#xff0c;总是需要输入密码很烦&#xff0c;所以决定取消mysql的root密码&#xff0c; 网上推荐的有两种方法&#xff1a; 1、mysql命令 SET PASSWORD FOR rootlocalhostPASSWORD(); 2、运行 mysqladmin 命令 mysqladmin -u root -p password …

C# 错误: 集合已修改,可能无法执行枚举操作

出错原因是使用了RemoveAt()函数移除了数据中的某一个数&#xff0c;导致数据发生了错位&#xff08;参考链接一&#xff09; 解决方案&#xff1a; 第一种解决方法&#xff1a;使用for循环 第二种解决方法&#xff1a;调用ToArray()方法&#xff0c;然后再进行foreach循环 …

vue设置height:100vh导致页面超出屏幕可以上下滑动

刚开始设置的height:100vh&#xff0c;就会出现如图的效果&#xff0c;会出现上下滚动 <template><view class"container">......</view> </template><style lang"scss">.container {height: 100vh;} </style> 解决方…

精确掌控并发:分布式环境下并发流量控制的设计与实现(一)

这是《百图解码支付系统设计与实现》专栏系列文章中的第&#xff08;10&#xff09;篇。 本篇主要讲清楚常用的并发流量控制方案&#xff0c;包括固定窗口、滑动窗口、漏桶、令牌桶、分布式消息中间件等&#xff0c;以及各种方案在支付系统不同场景下的应用。 在非支付场景&a…

故事机手机平板等智能硬件DVT阶段可靠性测试方法

DVT是什么 DVT是设计样品验证测试评审阶段&#xff0c;这个阶段要进行全面的&#xff0c;客观的测试&#xff0c; 主要测试项目包括&#xff1a;功能测试&#xff0c;安规测试&#xff0c;性能测试&#xff0c;合规测试&#xff08;兼容性&#xff09;&#xff0c;机械测试&am…

QT上位机开发(树形控件在地图软件中的应用)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 树形控件还是非常有用的&#xff0c;比如在选择文件的时候、选择目录的时候、以及选择同类型数据中某一个特定选项的时候。当然&#xff0c;对于ca…

JVM工作原理与实战(十一):双亲委派机制

专栏导航 JVM工作原理与实战 RabbitMQ入门指南 从零开始了解大数据 目录 专栏导航 前言 一、双亲委派机制 1.双亲委派机制详解 2.父类加载器 3.双亲委派机制的主要作用 二、双亲委派机制常见问题 总结 前言 ​JVM作为Java程序的运行环境&#xff0c;其负责解释和执行字…

STM32的FMC独立管理和控制外部存储器

在STM32中&#xff0c;FMC&#xff08;Flexible Memory Controller&#xff09;是一个功能强大的外部存储器控制器&#xff0c;用于管理和控制外部存储器设备&#xff0c;如SRAM、SDRAM、NOR Flash等。FMC允许将多个存储器设备连接到微控制器&#xff0c;并通过不同的片选线进行…

LLM之长度外推(一)| 基于位置编码的长度外推研究综述

论文&#xff1a;Length Extrapolation of Transformers: A Survey from the Perspective of Position Encoding地址&#xff1a;https://arxiv.org/abs/2312.17044 Transformer自诞生以来就席卷了NLP领域&#xff0c;因为它具有对序列中复杂依赖关系进行建模的优越能力。尽管基…

001 Golang-channel-practice

最近在练习并发编程。加上最近也在用Golang写代码&#xff0c;所以记录一下练习的题目。 第一道题目是用10个协程打印100条信息&#xff0c;创建10个协程。每个协程都会有自己的编号。每个协程都会被打印10次。 package mainimport ("fmt""strconv" )func …