概要
本文档描述EPICS scanparm记录,以及构建和使用它所需的相关EPICS软件。此版本的记录兼容EPICS 3.14.8.2,而不兼容任何EPICS 3.13.x版本。
scanparm记录存储了为了将它们写入到EPICS sscan记录的参数,并且项EPICS终端用户提供了一种装载那些参数到sscan记录并且引起sscan记录执行扫描的便捷方式。想法是允许使用者用一次鼠标电极来配置和执行一个预定义的扫描。
顺便说一下,在EPICS中,词scan,通常指的是一个记录的执行,而部分指的是选择通过哪种方法执行一个记录。在本文中,scan将不再有那个含义。在此,一个scan是sscan记录做什么:
- 移动一个定位器到某个位置,并且等待它到达
- 触发一个探测器,并且等待它结束采集
- 读取和存储来自定位器和探测器的数据。
- 重复
有关扫描更多的,见sscan记录文档。
在最简单和最常用中,在启动时关联一个scanparm记录和一个特定的定位器(例如:电机)并且目标定为配置和运行一个特定的sscan记录。在运行时,使用者一般写启动和终止位置,以及要采集的数据点数目到一个scanparm记录,并且从那以后,可以以一次写入这个scanparm记录运行那个扫描。用多个scanparm记录关联一个定位器是可能的,并且组合scanparm记录在一起到数据库中是可能的,这个数据库存储了包含多个定位器和多个sscan记录的扫描的参数。
scanparm记录包含了它写参数的字段,它读取参数的字段以及它从使用者接收命令并且可以转发给另外记录的参数的字段。
字段描述
除了所有记录类型都具有的字段外,scanparm记录有以下描述的字段。
记录相关字段的字母顺序列表
| 名称 | 类型 | DCT提示 | 访问 | DCT | 
| ACT | DBF_SHORT | ScanActive | R | No | 
| AFT | DBF_MENU(sscanPASM) | After | R/W | Yes | 
| AR | DBF_MENU(sscanP1AR) | absRel | R/W | Yes | 
| AQT | DBF_DOUBLE | 采集时间 | R/W* | Yes | 
| DPV | DBF_STRING | DetPVName | R/W | Yes | 
| EP | DBF_DOUBLE | EndPos | R/W* | Yes | 
| GO | DBF_SHORT | Go | R/W* | Yes | 
| IACT | DBF_INLINK | InLink | R | Yes | 
| IMP | DBF_INLINK | MP InLink | R | Yes | 
| LOAD | DBF_SHORT | Load | R/W* | Yes | 
| LSTP | DBF_DOUBLE | Last stepSize | R | No | 
| MP | DBF_LONG | MaxPts | R | No | 
| NP | DBF_LONG | nPts | R/W* | Yes | 
| OAFT | DBF_OUTLINK | AFT OutLink | R | Yes | 
| OAQT | DBF_OUTLINK | AQT OutLink | R | Yes | 
| OAR | DBF_OUTLINK | AR OutLink | R | Yes | 
| ODPV | DBF_OUTLINK | D1PV OutLink | R | Yes | 
| OEP | DBF_OUTLINK | EP OutLink | R | Yes | 
| OPPV | DBF_OUTLINK | P1PV OutLink | R | Yes | 
| OPRE | DBF_OUTLINK | PRE-write OutLink | R | Yes | 
| ORPV | DBF_OUTLINK | R1PV OutLink | R | Yes | 
| OSC | DBF_OUTLINK | SC OutLink | R | Yes | 
| OSM | DBF_OUTLINK | SM OutLink | R | Yes | 
| OSP | DBF_OUTLINK | SP OutLink | R | Yes | 
| OTPV | DBF_OUTLINK | T1PV OutLink | R | Yes | 
| PPV | DBF_STRING | PositionerPVName | P/W | Yes | 
| PRE | DBF_SHORT | PRE-write命令 | R/W* | Yes | 
| PREC | DBF_SHORT | 显示精度 | R/W | Yes | 
| RPV | DBF_STRING | ReadbackPVName | R/W | Yes | 
| SC | DBF_SHORT | StartCmd | R/W | Yes | 
| SM | DBF_MENU(sscanP1SM) | StepMode | R/W | Yes | 
| SP | DBF_DOUBLE | StepPos | R/W* | Yes | 
| STEP | DBF_DOUBLE | StepSize | R | No | 
| TPV | DBF_STRING | TrigPVName | R/W | Yes | 
| VAL | DBF_DOBULE | Result | R | No | 
| VERS | DBF_FLOAT | 代码版本 | R | No | 
注意:本表中热链接只带你到详细描述链接项所在的部分。你可能必须向下翻页找到实际的项。
注意:在以上访问列中:
- R:只读。
- R/W:允许读和写。
- N:不能访问。
如果记录的SCAN字段设为"Passive"时,一个通道访问写触发记录运行。
在向外发送信息中包含的字段
| 值字段 | 类型 | 输出链接 | 目标字段 | 目的 | 
| PRE | DBF_SHORT | OPRE | .CMND | 清除老的定位器配置 | 
| SM | DBF_MENU (sscanP1SM) | OSM | .P1SM | 定位器扫描模式 (例如:线性,表格,飞行) | 
| AR | DBF_MENU (sscanP1AR) | OAR | .P1AR | 定位器绝对/相对 | 
| AFT | DBF_MENU (sscanPASM) | OAFT | .PASM | 定位器扫描后模式 (例如,stay, go to start pos, ...) | 
| PPV | DBF_STRING | OPPV | .P1PV | 定位器驱动PV名称 | 
| RPV | DBF_STRING | ORPV | .T1PV | 探测器触发器PV名称 | 
| DPV | DBF_STRING | ODPV | .D01PV | 探测器PV名称 | 
| SP | DBF_DOUBLE | OSP | .P1SP | 定位器起点 | 
| EP | DBF_DOUBLE | OEP | .P1EP | 定位器终点 | 
| NP | DBF_LONG | ONP | .NPTS | 要采集的数据点数目 | 
| SC | DBF_SHORT | OSC | .EXSC | 启动扫描 | 
| AQT | DBF_DOUBLE | OAQT | .TP | 采集时间 | 
在采集信息中涉及的字段
| 输入链接 | 值字段 | 代表性目标字段 | 目的 | 
| IMP | MP | .MPTS | 获取最大允许的数据点数目 | 
| IACT | ACT | .BUSY | 确定目标sscann记录是否在运行 | 
在管理执行中涉及的字段
| 输入链接 | 值字段 | 代表性目标字段 | 目的 | 
| LOAD | OLOAD | .LOAD | 引起scanparm记录写参数到sscan记录。如果需要多个scanparm记录定义一个扫描(例如,为一个多定位器扫描,或者一个多维扫描),OLOAD字段应该链接到下个scanparm记录。 | 
| GO | OGO | .GO | 引起scanparm记录写参数到sscan记录并且也引起sscan记录开始扫描。如果需要多个scanparm记录定义一个扫描(例如,用于一个多定位器扫描,或者一个多维扫描),OGO字段应该链接到下个scanparm记录,并且最后的要执行的scanparm记录应该使用它的OGO链接来使得它的sscan记录开始扫描。 | 
文件
以下表格简要地描述了实现和使用scanparm记录所需地文件。
源代码
| scanparmRecord.c | scanparm记录的记录支持 | 
| 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