这部分包含了一段对所有记录类型都有的字段的描述。这些字段在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 hour
0.5 hours
15 minutes
3 seconds
1 second
2 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 |