EPICS记录参考3 -- 所有记录都有的字段
这部分包含了一段对所有记录类型都有的字段的描述。这些字段在dbCommon.dbd中定义。
操作显示参数
NAME字段包含了记录名称,它在一个EPICS通道访问名称空间中必须唯一。由程序开发者提供这个名称并且是区分一个特定记录的方式。名称最长60个字符并且只使用这些有限字符:
a-z A-Z 0-9 _ - : [ ] < > ;
DESC字段可以被设成对这个记录目的的有意义描述。最长是40个字符。
Field | Summary | Type | DCT | Default | Read | Write | CA PP |
---|---|---|---|---|---|---|---|
NAME | 记录名称 | STRING [61] | No | Yes | No | No | |
DESC | 描述 | STRING [41] | Yes | Yes | Yes | No |
扫描字段
这些字段包含与一个记录何时以及如何运行相关的信息。一些记录有也有影响它们如何运行的唯一字段。在这部分位每个记录列出这些字段并解释。
SCAN字段为周期记录指定扫描周期或者为非周期扫描记录指定扫描类型。在menuScan.dbd中能够找到SCAN字段的默认集。
由这个菜单提供的选项是:
- passive对应被其它记录或者通道访问触发的记录
- Event对应事件驱动扫描
- I/O Intr对应中断驱动扫描
- 一个周期扫描间隔集
通过本地复制menuScan.dbd并且根据需要添加更多选项,能够为各自的IOCs定义更多的周期扫描率。通常应该在其它扫描类型之后按顺序定义周期扫描率。最长周期首先出现。能够用一个second/seconds, minute/minutes, hour/hours或Hertz/Hz的单位字符串指定扫描周期。如果在选项字符串中包含单位,使用秒。例如,这些速率都有效:
1 hour0.5 hours15 minutes3 seconds1 second2 Hertz
PINI字段指定在初始化时记录运行。如果在数据库配置中设置它为YES,(在启动正常的扫描任务前)在IOC初始化时运行这个记录一次。
PHAS字段对在一个特定SCAN组中排序记录。对于被动记录着没有意义。指定的phase的所有记录在有更高phase数值的记录前运行。使用链接的被动记录实现运行顺序而不是一个phase数值是更好的习惯。
EVNT字段指定一个事件号。如果SCAN字段设置为Event,使用事件号。当为EVNT进行一个post_event调用时,将运行扫描类型Event并且相同EVNT值得所有记录。对post_event得调用:post_event(short event_number)。
PRIO字段为运行SCAN=I/O Event的集以及异步记录完成任务指定调度优先级。
DISV字段指定一个"disable value"。当这个字段的值等于DISA字段的值。记录运行不能开始,意味着这个记录被禁用了。注意:通过数据库或者通道访问puts能够更改一个记录那个字段值,即使这个记录被禁用。
DISA字段包含与DISV比较的值,决定这个记录是否被禁用。在IOC尝试运行这个记录前,从SDIS链接为DISA字段获取一个值。如果SDIS未被设置,可能通过某些其它方法设置DISA来启动或者禁用这个记录。
DISS字段定义这个记录的"disable severity"。如果这个字段不是NO_ALARM并且这个记录被禁用,这个记录将被置入状态为DISABLE_ALARM和这个严重性的警报。
PROC字段:一个记录的这个字段被写入,运行这个记录。
LSET字段包含这个记录所属的锁集。用通过输入,输出或者转发数据库链接的任何方式链接一起的所有记录属于一个相同的锁集。在IOC初始化时确定了锁集,并且在添加、移除或者更改数据库链接时被更新。
LCNT字段计算在连续扫描过程中dbProcess发现这个记录活跃的次数,即使:PACT为TRUE。如果dbProcess发现这个记录活跃MAX_LOCK次(当前设成10),它产生一个SCAN_ALARM。
PACT字段:当记录活跃时(运行),这个字段为真。位于异步记录,从记录运行启动时到异步完成发生,PACT能够是真。只要PACT为真,dbProcess将不调用这个记录运行例程。有关PACT的用法见程序开发指导。
FLNK字段是一个指向另一个记录(“目标”记录)的链接。只要提供的目标记录的SCAN字段被设成Passive,运行一个设置了FLNK字段的记录将在第一个记录运行末尾(但在PACT被清除前)后触发目标记录运行。如果FLNK字段是一个通道访问链接,它必须指向目标记录的PROC字段。
SPVT字段为了被扫描系统内部使用。
Field | Summary | Type | DCT | Default | Read | Write | CA PP |
---|---|---|---|---|---|---|---|
SCAN | 扫描机制 | MENU | Yes | Yes | Yes | No | |
PINI | 在iocInit时运行 | MENU | Yes | Yes | Yes | No | |
PHAS | 扫描 Phase | SHORT | Yes | Yes | Yes | No | |
EVNT | 事件名 | STRING [40] | Yes | Yes | Yes | No | |
PRIO | 调度优先级 | MENU | Yes | Yes | Yes | No | |
DISV | Disable值 | SHORT | Yes | 1 | Yes | Yes | No |
DISA | Disable | SHORT | No | Yes | Yes | No | |
SDIS | Scanning Disable | INLINK | Yes | Yes | Yes | No | |
PROC | 强制运行 | UCHAR | No | Yes | Yes | Yes | |
DISS | Disable Alarm Sevrty | MENU | Yes | Yes | Yes | No | |
LCNT | 锁计数 | UCHAR | No | Yes | No | No | |
PACT | 记录活跃 | UCHAR | No | Yes | No | No | |
FLNK | 转发运行链接 | FWDLINK | Yes | Yes | Yes | No | |
SPVT | 扫描私有 | NOACCESS | No | No | No | No |
警报字段
STAT字段包含当前警报状态。
SEVR字段包含当前警报严重性。
AMSG字符串字段可能包含有关这个警报的更详细信息。
STAT, SEVR和AMSG字段保存如数据库之外所见的警报信息。NSTA,NSEV和NAMSG字段在记录运行期间被数据库访问,记录支持和设备支持例程用于设置警报状态和严重性值和消息文本。当任何软件组件发现一个警报状况,它调用这些例程之一注册这个警报:
recGblSetSevr(precord, new_status, new_severity);recGblSetSevrMsg(precord, new_status, new_severity, "Message", ...);
这些例程检查当前警报严重性并且如果合适更新NSTA,NSEV和NAMSG,因此在记录运行期间到目前,它们总是与最高严重性警报关联。文件alarm.h定义了可用的警报状态和严重性值。在记录运行即将结束之际,这些字段被复制到了STAT,SEVR和AMSG字段并且警报监控被触发。
ACKS字段包含最高未确认的警报严重性。
ACKT字段指定确认瞬态警报是否必要。
UDF字段表明这个记录的值是否是未定义的。这一般由设备支持中故障引起,实际:这个记录从未被运行,或者VAL字段当前包含一个NaN(非数值)或者Inf(无限)值。UDF默认TRUE,但能够在数据库文件中被设置。写到VAL字段的记录和设备支持例程一般负责设置和清除UDF。
Field | Summary | Type | DCT | Default | Read | Write | CA PP |
---|---|---|---|---|---|---|---|
STAT | 警报状态 | MENU (menuAlarmStat) | No | UDF | Yes | No | No |
SEVR | 警报严重性 | MENU (menuAlarmSver) | No | Yes | No | No | |
AMSG | 警报消息 | STRING [40] | No | Yes | No | No | |
NSTA | 新警报状态 | MENU (menuAlarmStat) | No | Yes | No | No | |
NSEV | 新警报严重性 | MENU (menuAlarmSver) | No | Yes | No | No | |
NAMSG | 新警报消息 | STRING [40] | No | Yes | No | No | |
ACKS | Alarm Ack Severity | MENU (menuAlarmSver) | No | Yes | No | No | |
ACKT | Alarm Ack Transient | MENU(menuYesNo) | Yes | YES | Yes | No | No |
UDF | 未定义 | UCHAR | Yes | 1 | Yes | Yes | Yes |
设备字段
RSET字段包含记录支持入口表的地址。
DSET字段设备支持入口表的地址。这个字段的值是在IOC初始化时被确定。记录支持例程使用这个字段来寻找它们的设备支持例程。
DPVT字段用于设备支持模块私用。
Field | Summary | Type | DCT | Default | Read | Write | CA PP |
---|---|---|---|---|---|---|---|
RSET | RSET的地址 | NOACCESS | No | No | No | No | |
DSET | DSET地址 | NOACCESS | No | No | No | No | |
DPVT | Device私有 | NOACCESS | No | No | No | No |
调试字段
TPRO字段可以用于跟踪记录运行。当这个字段是非零并且记录被运行,将为这个记录以及在相同锁集中由来自这个记录的数据库链接触发的任何其它记录打印跟踪消息。跟踪消息包含进行运行的线程名,以及被运行的记录名。
BKPT字段表明在这个记录中有一个断点设置。这支持在记录运行中设置一个调试断点。使用这个能够支持STEP通过数据库运行。
Field | Summary | Type | DCT | Default | Read | Write | CA PP |
---|---|---|---|---|---|---|---|
TPRO | T追踪运行 | UCHAR | No | Yes | Yes | No | |
BKPT | 断点 | NOACCESS | No | No | No | No |
其它字段
ASG字符串字段设置用于这个记录的访问安全组的名称。如果留空,这个记录被放在组DEFAULT。
ASP字段为用于访问安全系统私有。
DISP字段控制来自IOC外部的puts是否完全被允许修改这个记录的字段。如果字段设置为TRUE,除了对字段DISP自身的puts外,忽略直接对这个记录的所有puts。
DTYP字段为记录指定设备类型。大多数记录类型有它们自己的设备类型集合,再IOC的数据库定义文件中指定它们。如果一个记录类型不调用任何设备支持例程,不使用DTYP和DSET字段。
MLOK字段包含一个互斥锁,当对应这个记录的监控列表被访问时,它被在dbEvent.c中的监控例程上锁。
MLIS字段保存一张连接到这个记录的客户监控的链表。每个记录支持模块负责为由于记录运行发生变化的任何字段触发监控。
PPN字段包含一个putNotify callback的地址。
PPNR字段为PutNotify包含下一个记录。
PUTF字段如果dbPutField引起当前记录运行,其被设置成True。
RDES字段包含dbRecordType的地址。
RPRO字段指定当前运行结束时这个记录再次运行。
TIME字段保存上次运行这个记录的时间戳。
UTAG字段用于保存一个站点特定的64位用户标签只,其与记录的时间戳有关。
TSE字段指定用来获取时间戳的机制。'0':像前面一样调用get time。‘-1’:调用时间戳驱动斌并且使用最佳可用源。‘-2’:设备支持来自硬件的时间戳和可选的用户标签。再1-255之间的指请求generalTime事件的上次发生时间。
TSEL字段包含一个用于获取时间戳的输入链接。如果这个链接指向一个记录的TIME字段,则那个记录的时间戳和用户标签被直接复制到这个记录(通道访问链接只能复制这个时间戳)。如果链接指向任何其它字段,那个字段的值被读取并且存储到TSE字段,其接着用于获取一个时间戳。
Field | Summary | Type | DCT | Default | Read | Write | CA PP |
---|---|---|---|---|---|---|---|
ASG | 访安全组问 | STRING [29] | Yes | Yes | Yes | No | |
ASP | 访问安全Pvt | NOACCESS | No | No | No | No | |
DISP | 禁用putField | UCHAR | No | Yes | Yes | No | |
DTYP | 设备类型 | DEVICE | Yes | Yes | Yes | No | |
MLOK | 监控锁 | NOACCESS | No | No | No | No | |
MLIS | 监控列表 | NOACCESS | No | No | No | No | |
PPN | pprocessNotify | NOACCESS | No | No | No | No | |
PPNR | pprocessNotifyRecord | NOACCESS | No | No | No | No | |
PUTF | dbPutField过程 | UCHAR | No | Yes | No | No | |
RDES | dbRecordType的地址 | NOACCESS | No | No | No | No | |
RPRO | Reprocess | UCHAR | No | Yes | No | No | |
TIME | 时间 | NOACCESS | No | No | No | No | |
UTAG | 事件标签 | UINT64 | No | Yes | No | No | |
TSE | 时间戳事件 | SHORT | Yes | Yes | Yes | No | |
TSEL | 时间戳链接 | INLINK | Yes | Yes | Yes | No |
EPICS记录参考3 -- 所有记录都有的字段相关推荐
- EPICS记录参考--计算输出记录(calcout)
计算输出或"Calcout"记录类似于Calc记录,其增加了能够输出的特性(一个"output link"和一个"output event" ...
- EPICS记录参考5 -- 数组模拟输入记录Array Analog Input (aai)
static long process(aaiRecord *prec) 数组模拟输入记录类型用于读取数组数据.数组数据能够包含任何可支持的数据类型.这个记录在很多方面类似于waveform记录.它允 ...
- EPICS记录参考4--所有输入记录都有的字段和所有输出记录都有的字段
所有输入记录都有的字段 输入和值字段 INP字段指定一个输入链接.设备支持例程使用它获取输入.对于软模拟输入记录,它可以是常数,数据库链接或者通道访问链接. DTYP字段指定将输入值的设备支持模块的名 ...
- EPICS记录参考1--EPICS概要
EPICS是什么? 实验物理和工业控制系统(EPICS)由一个可以用于创建分布式控制系统的软件组件和工具组成.EPICS提供了期望来自一个分布式系统的代表性功能: 设施设备的远程控制和监控 自动化的操 ...
- EPICS记录参考2--EPICS过程数据库概念
EPICS过程数据库 一个基于EPICS的控制系统包含一个或多个输入输出控制器,IOCs.每个IOC装载一个或多个数据库.一个数据库是各种类型记录的集合. 一个记录是一个对象,有: 一个唯一名称 有其 ...
- EPICS记录参考--Sequence记录(seq)
Sequence记录用于触发最多16个其它记录运行并且发送这些值到那些记录.除了它将获取一个输入值并且写一个输出值而不是仅仅运行一个forward链接的集合外,它类似于fanout记录.它也能够指定若 ...
- EPICS记录参考--sub-Array记录(subArray)
subArray记录类型的一般用法是从waveform记录获取子数组.设置元素数目(NELM)或索引(INDX)字段使得这个记录再被运行依次,因此使用标准EPICS操作接口工具能够实现这样的应用程序, ...
- EPICS记录参考--Select记录(sel)
这个select记录根据获最多获取自12个位置的输入计算一个值.选择算法可以是以下之一:Specified, High Signal, Low Signal, Median Signal.每个输入可以 ...
- EPICS记录参考--Fanout记录(fanout)
fanout记录使用若干转发运行链接强制多个被动记录进行扫描.当多个基类由于一个基类被运行而需要被扫描时,那个基类的转发链接可以执行一个fanout记录.fanout记录可以最多指定16个其它记录运行 ...
最新文章
- pgpool-II的性能缺陷(二)
- JavaCore/HeapDump文件及其分析方法
- C#中的String和string有什么区别?还有ref关键字怎么用?
- HTML表单input类型有哪些,HTML表单之input元素的23种type类型
- maya导入abc动画_三维文件格式知多少 | abc、glTF、fbx、obj、dae、stl、3ds...
- 设计模式之策略模式和状态模式
- python随机数模块_python 随机数模块 -- random
- (转)对D3DXVec3Project 和D3DXVec3UnProject的认识
- java代码内创建mysql索引_点评阿里JAVA手册之MySQL数据库 (建表规约、索引规约、SQL语句、ORM映射)...
- AJAX Accordion:可折叠面板的集合
- windows下搭建ffmpeg环境
- 函数式编程可以配合装饰器使用
- 云队友丨带不好人,就只能自己干到死
- 西游记中托塔李天王的三个儿子,一个女儿和一个干女儿
- android 日语输入法,Android日语输入法Simeji使用示例
- 需求分析挑战之旅(疯狂的订餐系统)(4)——没完没了的“新需求”
- 小保养多,大保养少 别克英朗保养详解
- 清除浮动影响的几种方法
- React:input输入框只能输入英文和特殊字符(可以自定义限制)
- 计算机科学与技术考研双非,这几所双非院校,考研难度堪比985,211!
热门文章
- 这10个超厉害的工具堪称神器,却很少人知道!
- 为Excel工作表单元格命名的两种方法
- 计算机455端口,455端口怎么关闭-455端口关闭的方法 - 河东软件园
- (Tekla Structures二次开发)自动标注尺寸展示
- 五则运算c语言程序,C语言算术运算示例程序
- python引入op模块 实现游戏后台挂机 阴阳师
- 迁移学习笔记3: TCA, Finetune, 与Triplet Network(元学习)
- 【故障检测问题】基于matlab免疫算法求解故障检测问题【含Matlab源码 196期】
- (Scikit-Learn)线性回归 基函数的含义详解
- 小米note2鸿蒙ROM,小米最新刷机包rom下载_奇兔rom市场