当前位置:首页 > ControlSystem > EPICS > 正文内容

EPICS-----模拟输入记录(ai)

新手程序猿小贺8个月前 (08-21)EPICS475

最近在使用通过StreamDevice来发送和接受字符串从而实现控制设备,对于里面的参数做一些记录。


这个字段下面有这几个参数:

  1. 扫描参数      2.读取并转换参数     3. 操作器显示参数     4.报警参数     5. 监控参数    6. 运行时参数


一、SCAN扫描决定了记录的处理时间。当记录处理其数据并执行与该数据相关的任何操作时,记录即被处理每个记录都需要设定这个它一共有三种方式:1.定期的 2.事件 3.被动的。

1. 定期扫描按照设定的时间间隔进行。

2. 事件扫描发生在 I/O 中断事件或用户定义事件上。

3. 当扫描链接到被动记录的记录时,或者当通过数据库访问例程将值“放入”被动记录中时,就会发生被动扫描。

对于定期或事件扫描,用户还可以使用该PHASE机制控制一组记录的处理顺序。对于事件扫描,用户可以控制记录处理的优先级。除了扫描和阶段机制外,还有数据链接和正向处理链接可用于引起其他记录的处理。

1.1  定期的

按照一定的时间间隔来读取数据,常用的是这么设置 1 second、.1 second等等。

menu(menuScan) {
choice(menuScanPassive,"Passive")
choice(menuScanEvent,"Event")
choice(menuScanI_O_Intr,"I/O Intr")
choice(menuScan10_second,"10 second")
choice(menuScan5_second,"5 second")
choice(menuScan2_second,"2 second")
choice(menuScan1_second,"1 second")
choice(menuScan_5_second,".5 second")
choice(menuScan_2_second,".2 second")
choice(menuScan_1_second,".1 second")
}

在.dbd后缀文件里面的menu下面你还可以自己设置其他时间间隔,官网文档里面建议不要删除上面的选项,并且添加时间间隔最好按照顺序添加,比如添加 .11  second最好在 .1 second后面添加。


1.2  事件

分为  I/O Intr和用户定义事件,对于这两种类型事件,用户可以使用 PRIO 或优先级字段指定事件的调度优先级。调度优先级是指事件在堆栈上相对于其他正在运行的任务的优先级。有三种可能的选择:LOWMEDIUMHIGH。低优先级事件的优先级略高于通道访问。中等优先级事件的优先级大约等于定期扫描任务的中位数。高优先级事件的优先级等于事件扫描任务。


1.3  被动的


1.4 PHAS

用来给记录排序,从而实现以相同的时间间隔或者优先级定期扫描记录,但是使用这个字段的前提是扫描不能是被动的。


1.5 FLNK

在第一条记录的字段设置第二条记录的地址,就会导致处理完第一条记录后处理第二条记录。


二、扫描字段

SCAN扫描字段这可以是周期(.1 second.2 second.5 second1 second2 second ,或5 second)、  I/O Intr、  Passive
PINI初始化过程如果字段设置为True,在启动正常扫描任务之前处理一次记录。
PHAS扫描相位数对记录进行优先级排序,对于scan字段是passive无效,并且官方不推荐使用这个进行排序,更推荐使用flnk字段
EVNT活动编号
PRIO优先级处理I/O事件扫描记录和异步记录完成任务的调度优先级。
DISV禁用值如果 DISV=DISA,则该记录将被禁用,即 dbProcess 将不会处理该记录。
DISA扫描禁用输入链接值这是与 DISV 进行比较以确定记录是否被禁用的值。如果 SDIS 是数据库或通道访问链接,则通过 SDIS 获取其值。如果 SDIS 不是数据库或通道访问链接,则可以通过 dbPutField 或 dbPutLink 设置 DISA。
SDIS扫描禁用输入链接一个输入链接,用于获取 DISA 的值。除非是数据库链接或通道访问链接,否则将忽略此字段。如果是数据库或通道访问链接,dbProcess 会调用 dbGetLink 来获取 DISA 的值,然后再决定调用处理例程。
PROC
流程记录每当 dbPutField 指向该字段时,就会处理一条记录。
DISS禁用警报严重性当此记录被禁用时,它将进入此严重程度的警报状态,状态为 DISABLE_ALARM。
LSET锁设置此记录所属的锁集。通过输入、输出或正向数据库链接以任何方式链接的所有记录都属于同一锁集。唯一的例外是非进程被动输入链接不会强制链接的记录位于同一锁集中。锁集在 IOC 初始化时确定。
LCNT锁计数dbProcess 连续发现记录处于活动状态的次数,即 PACT 为 TRUE。如果 dbProcess 连续发现记录处于活动状态 MAX_LOCK(当前设置为 10)次,则会引发 SCAN_ALARM。
FLNK前向链接如果指定了 FLNK,则处理此记录将强制处理扫描被动前向链接记录。


三、读取并转换字段

这些参数决定记录从何处获取输入以及如何将原始信号转换为工程单位。对于从设备获取输入或使用设备 Raw Soft Channel 支持的记录,设备支持例程会将此设备的值返回到 RVAL 字段。除非 LINR 转换字段指定 NO CONVERSION,否则将执行正确的转换算法,并将结果值放置在 VAL 字段中。

VAL值字段
这是在执行所有必要的转换之后记录的最终值。
INP输入链接对于从硬件获取其值的模拟记录,I/O 的地址必须出现在 INP 字段中
DTYP设备类型设备支持模块的名称必须出现在设备类型字段 (DTYP) 中
LINR转换类型模拟记录是否执行线性转换、断点转换或根本不进行转换取决于记录的 LINR 字段的配置方式。
RVAL原始值只要有可能,此字段就包含从硬件或相关设备驱动程序获得的原始数据值,并且是在进行任何转换之前。Soft Channel设备支持模块会直接将值读入 VAL,从而绕过此字段。
ROFF原始值偏移Val= RVAL + ROFF
EGUF单位完整EGUF 和 EGUL 字段的值分别对应于传感器的最大值和最小值。因此,这些字段的值取决于设备。例如,如果传感器的范围为 -10 至 +10 伏,则 EGUF 字段应为 10,EGUL 字段应为 -10。
EGUL单位最低EGUF 和 EGUL 字段的值分别对应于传感器的最大值和最小值。因此,这些字段的值取决于设备。例如,如果传感器的范围为 -10 至 +10 伏,则 EGUF 字段应为 10,EGUL 字段应为 -10。
AOFF调整偏移
ASLO调整斜率Val = Val * ASLO + AOFF
SMOO
平滑因子平滑可用于过滤噪声信号。平滑参数是 0 到 1 之间的常数,在 SMOO 字段中指定
ESLO线性转换的斜率


四、操作器显示参数

这些参数用于向操作员呈现有意义的数据。它们以文本或图形方式显示模拟输入的值和其他参数。

EGU 是一个最多 16 个字符的字符串,描述模拟输入测量的单位。

HOPR 和 LOPR 字段设置 VAL、HIHI、HIGH、LOW 和 LOLO 字段的显示上限和下限

PREC 字段确定显示 VAL 的浮点精度。


五、报警参数

模拟输入的可能报警状态为扫描、读取和极限报警。扫描和读取报警由记录或设备支持程序调用。

HIHIHihi 报警限值
LOLOlolo报警限值
HIGH高报警限值
LOW低报警限值
HHSVHIHI警报严重程度
LLSVLOLO警报严重程度
HSV高警报严重程度
LSV低警报严重程度
HYST报警死区







扫描二维码推送至手机访问。

版权声明:本文由控制系统发布,如需转载请注明出处。

本文链接:http://cim-cs.com/?id=18

分享给朋友:

“EPICS-----模拟输入记录(ai)” 的相关文章

Ubuntu 22.04 EPICS 环境搭建

本次示例安装在 Ubuntu 22.04 虚拟机上,真机安装系统时需要注意 BIOS 设置及硬盘分区。此外搭建环境过程中需要接入外网,方便在线安装相关依赖。一、安装准备1、新建Ubuntu 22.04虚拟机,具体安装步骤略,注意配置虚拟机网络连接;2、设置root用户密码,开启ssh远程连接;设置r...

EPICS集成AutoSave模块实现参数初始化

EPICS synApps是用于开发基于EPICS的输运线控制系统的软件工具集,其子模块之一的 AutoSave 可用于保存PV的值并在EPICS启动时初始化上次保存的值。阅读本文建设你已经完成EPICS环境的安装(可参考 Ubuntu 22.04 EPICS 环境搭建 )。一、AutoSave的编...

EPICS-----模拟输出(ao)

1. 介绍这个记录是将值输出到数模转换器,然后输出到硬件,这个记录支持报警限值,工程单位转换以及图形和控制限值。这个字段分为以下几个类别:扫描参数所需输出参数转换和写参数操作员显示参数警报参数2.扫描参数同ai记录3.所需输出参数模拟输出...