EPICS AI记录
模拟输入记录
1 介绍
这个记录类型的一般用法是从硬件获取一个模拟值并且接着将其转成工程单位。大部分设备支持模块从硬件获取值。这个记录支持警报限制,转换称工程单位,平滑和图形和控制限制。
提供两个软设备模块软通道和原始软通道通过数据库或者通道访问链接或dPutField或dbPutLink请求来获取输入。软通道模块直接读取值到VAL,原始软通道读取值到RVAL。像从硬件支持模块获取的值一样,这些值接着被转换。如果选择了带有一个常数INP链接的软设备支持,则可以通过dbPuts修改这个VAL。
这些字段被划分称一下参数组:
1、扫描参数
2、读取和转换参数
3、操作和显示参数
4、警报参数
5、监视参数
6、运行时参数
2 扫描参数
这个模拟输入记录有用于指定这个记录在什么情况下运行的标准字段。这些字段在扫描字段中被列出了。此外,扫描格式章节解释了如何使用这些字段。注意:只有那些中断的板卡类型才支持I/O事件扫描。
3 读取和转换参数
这些参数确定这个记录从何处获取它的输入以及它如何转换原始信号为工程单位。对于从设备或者使用原始软通道设备支持获取输入的记录,设备支持程序将返回这个设备的值到RVAL字段。除非LINR转换字段指定了NO CONVERSION,否则将执行合适的转换算法,并且产生的值将被放入VAL字段。
3.1 输入格式
如在本章介绍中所述,在模拟输入记录的INP中输入什么确定它的运行时行为。对于从硬件获取其值的模拟输入记录,在INP字段中必须出现I/板卡的地址,并且设备支持模块的名称必须出现在设备类型字段(DTYP)。更多有关硬件地址格式的信息见地址格式。注意:不同板卡类型之间的格式不同。
INP字段也可以指定一个常数值,一个通道访问链接或一个数据库链接。当用一个常数值配置时,用赋给这个字段的值初始化这个记录的VAL字段并且可以通过dbPuts更改VAL字段。有关数据库和通道访问链接的信息见地址格式。
当INP是一个常数,或者一个两个软设备支持模块之一的通道访问链接,在DTYP字段中必须指定Raw Soft Channel或Soft Channel。
3.2 转换相关的字段
LINR字段确定是否执行一次转换以及使用哪种转换算法转换原始值(RVAL)。如果使用软通道设备支持模块,不执行转换。对于使用其它设备支持模块的其它记录,LINR字段确定对原始值进行什么调整或者转换。LINR字段指定LINR, NO CONVERSION或者一个断点表名称,诸如typeKdegC。LINEAR指定一个线性转换;NO CONVERSION,完全不转换;而一个断点表,一个断点转换。注意:当指定一个断点表或者NO CONVERSION时,不使用EGUF,EGUL和ESLO字段。
ROFF | 由设备支持程序计算。由除了使用软通道外的所有记录使用。 |
EGUF | 在配置这个数据库时,使用者必须计算这些字段。它们被用于计算ESLO的值。有关如何计算这些字段的信息,见转换格式。只在LINR指定LINEAR时,才使用它们。 |
EGUL | |
AOFF | 由使用者配置,由除了软通道记录外的所有记录使用。 |
ASLO | |
ESLO | 由设备支持使用EGUF和EGUL计算。只在LINR使用LINEAR时才使用。 |
SMOO | 一个由使用者使用,介于1和0之间的一个值,其中0表示不平滑以及1表示最大平滑(实际上,数据值将不再变化)。有关这个字段做什么的更多信息见转换格式。它用于除软通道记录外所有记录。 |
记录运行程序为除了使用软通道设备支持程序的记录外的所有记录执行以下算法。注意:只在记录指定LINEAR时,才执行第三步。
1、Val = RVAL + ROFF
2、Val = Val * ASLO + AOFF
如果转换算法是LINEAR时,通过这个等式计算原始值:
3、Val = val * ESLO + EGUL
如果转换是通过一个断点表,获取这个新值。
4、如果SMOO是0或INIT是True,VAL=val
5、否则VAL=val*(1-SMOO)+Previous_value*SMOO
由于现在定义了VAL,最后一步是设置UDF为FALSE。
有关转换参数的完整解释,见转换说明。
4 操作显示参数
这些参数用于向操作者显示有意义数据。它们以文本或者图形显示这个模拟输入的值和其它参数。EGU是一个描述这个模拟输入记录测量单位的最长16个字符的字符串。通过get_units记录支持获取它。
HOPR和LOPR字段为VAL,HIHI,HIGH,LOW和LOLO字段设置上下显示限制。get_graph_double和get_control_double记录支持程序获取这些字段。
PREC字段确定了浮点精度,用其显示.VAL。当调用get_precision记录支持程序时,使用它。
见所有记录类型共有的字段,更多有关记录名(NAME)和描述(DESC)字段。
5 警报字段
对于模拟输入记录的可能警报状态是SCAN,READ和limit警报。SCAN和READ警报被记录或设置支持程序调用。
limit警报是由用户使用数值在HIHI,LOLO,HIGH和LOW字段中配置。对于这些字段中每个字段,有一个相应的严重性字段,其可以是NO_ALARM, MINOR或MAJOR。
6 监视参数
这些参数用于确定何时发送放置在VAL字段的监视器。当值字段超过上次受监视字段合适的死区时,发送监视。如果这些字段有一个0值,这个值每次变化时,将触发一个监视;如果它们有一个-1值时,每次扫描这个记录,触发监视。ADEL字段被存档监视使用,MDEL字段多于所有其它类型的监视。
7 运行时参数和仿真模式参数
这些参数由运行时代码使用,用于运行这个模拟输入记录。它们不是由使用者配置的,但在初始化后很多可以被修改。它们代表这个模拟输入记录的当前状态。它们中很多被用于更高效地运行这个模拟输入记录。
ORAW字段用于确定在对应VAL的监视被触发时是否应该触发对应RVAL的监视。LALM, MLST和ALST字段用于实现对应在VAL字段上的回滞因子。
PBRK字段包含一个指针,其指向在LINR字段(如果存在)被指定的断点表。LBRK字段指示上个被使用的断点表的名称(如果存在)。
以下字段用于在仿真模式中操作模拟输入记录。
8 记录运行程序
以下是记录支持程序,它们是一个应用程序开发者感兴趣的。其它程序是get_units, get_precisioin, get_graphic_double和get_control_double,它们都是用于监视参数。
init_record:z如果SIML类型是常数链接,这个程序用SIML初始化SIMM,或者如果SIML类型是一个PV_LINK,创建一个通道访问链接。根据SIOL是常数或者PV_LINK,同样初始化SVAL。
这个程序接着检查设备支持是否可用以及一个设备支持read_ai()程序是否被定义。如果其中一个不存在,发出一个错误信息并且终止运行。
接着INIT被设置称TRUE。如果设备支持包括init_record,调用它。
process:见下一部分。
special:对模拟输入记录的唯一特殊处理是SPC_LINCONV,当LINR,EGUF,EGUL或ROFF字段中任意一个字段变化时,被调用。
如果设备支持程序special_linconv存在,调用它。
INIT被设置称TRUE。这使得PBRK, LBRK和平滑被重新初始化。
get_value:填入结构体valueDes的值,使得它们指向VAL。
get_alarm_double:设置以下值:
upper_alarm_limit=HIHI
upper_warning_limit=HIGH
lower_warning_limit=LOW
lower_alarm_limit=LOLO
9 记录运行
程序process实现以下算法:
1、检查合适的设备支持模块是否存在。如果它不存在,发出一个错误并且用PACT字段设置为TRUE终止运行。这确保将不再调用对应这个记录的processes。因而将不发生错误风暴。
2、调用readValue。
3、如果PACT已经被更改为TRUE,设置支持读取程序已经开始,但还未完成写这个新值。在这种情况下,这次运行仅返回,保留PACT为TRUE。
4、接着设置PACT为TRUE,TIME被设置成tslocaltime并且检查readValue的状态值,并且检查readValue的返回状态值。只在状态是0时,才调用convert。如果状态是2,则不调用convert,但状态被重置为0。
5、如果需要执行转换:在转换后(如果有),UDF被置为FALSE。
6、检查警报:这个程序检查新VAL是否产生警报状态和严重性变化。如果这样,设置NSEV, NSTA和LALM。它也遵守警报回滞因子(HYST)。因而,在警报状态和严重性降低前,这个值变化必须多于HYST。
7、检查是否调用监视:
1)如果警报状态或严重性变化了,调用警报监视。
2)如果满足ADEL和MDEL,调用存档和值变化监视。
3)当调用其它监视时,检查对应RVAL的监视
4)重置NSEV和NSTA为0。
8、如果需要扫描转发链接,设置PACT和INIT为FALSE,并且返回。
10 设备支持
10.1 设备支持有关的字段
每个模拟输入记录必须有一个相关联的设备支持程序集合。设备支持程序的主要责任是在read_ai被调用时获取一个新的原始模拟输入值。设备支持程序主要对以下字段有兴趣:
名称 | 概要 | 描述 |
PACT | 运行有效 | 这些字段的详细解释见所有记录类型共有的字段 |
DPVT | 设备私有 | |
UDF | VAL未定义 | |
NSEV | 新警报严重性 | |
NSTA | 新警报状态 | |
VAL | 值 | 只在设备支持获取了一个已经被转成工程单位的一个值时,才由设备支持使用这个字段。 |
INP | 输入链接 | 这个字段由设备支持程序使用来定位它的输入。 |
EGUF | 工程单位上限 | 这些字段用于计算ESLO。注意:这些字段对应了高低硬件限制。 |
EGUL | 工程单位下限 | |
ESLO | 斜率 | 这些字段用于从原始值到工程单位的线性转换。除非设备支持程序获取已为工程单位的值,否则设备支持程序必须计算这些字段。 |
ROFF | 原始补偿 | |
RVAL | 原始值 | 传给这个字段一个值是设备支持程序的责任。如果设备支持程序获取一个以是工程单位的值,它应该放置这个值在VAL中并且返回一个2值。 |
10.2 设备支持程序
设备支持由以下程序组成:
report:report(FILE fp, paddr) 当前未使用。
init_record:init_record(precord) 这个程序是可选的。如果提供了,由记录支持init_record程序调用它。
get_ioint_info:get_ioint_info(int cmd, struct dbCommon * precord, IOSCANPVT **ppvt) 这个程序由ioEventScan系统在每次添加这个记录到一个I/O事件扫描列表或者从一个I/O事件扫描列表删除这个事件时被调用。cmd有值(0,1),对应这个记录被添加到一个I/O事件列表或者被从一个I/O事件扫描列表删除。必须未任何可以使用ioEvent扫描器的任何设备提供它。
read_ai :read_ai(precrod) 这个程序必须提供一个新值。异步设备支持程序将用PACT设置成TRUE返回。如果PACT是TRUE,这个process程序将仅返回并且不继续运行。当异步程序结束时,它可以调用process,其将再次调用read_ai。
因为PACT仍然为TRUE,read_ai知道这是一个获取由先前调用得到的数据的请求。当结束时,read_ai应该设置PACT为FALSE,并且返回以下值之一:
- 0:成功。一个原始值被放置在了RVAL。将调用convert。
- 成功,但不调用convert。如果read_ai获取一个已经被转成工程单位的值,以及遇到探测到硬件故障时,这是有用的。
- 其它。错误。
special_linconv:special_linconv(precord, after) 当LINR,EGUF, EGUL或ROFF字段中任何一个被更改时,调用这个程序。
10.3 对应软记录的设备支持
提供了两个软设备支持模块Soft Channel和Raw Soft Channel用于不与实际硬件设备相关联的输入记录。INP链接类型必须是CONSTANT, DB_LINK或CA_LINK。
Soft Channel
这个模块直接放置一个值在VAL中。read_ai总是返回一个2值,其表示将不要尝试转换。
如果INP链接类型是常数,则这个常数值由init_record存入VAL,并且UDF被设置成FALSE。如果INP链接类型是PV_LINK,则由init_record调用dbCaAddInlink。
如果recGblLinkValue返回状态时0,则read_ai设置UDF为FALSE。返回recGblGetLinkValue的状态。如果选择了软支持,以下字段变得没有意义:LINR, EGUF, EGUL, ESLO, ROFF, AOFF, ASLO和SMOO。read_ai程序总是返回一个表示不转换的2值。
Raw Soft Channel:这个模块除了放置其值在RVAL并且read_ai返回一个0值外,其它同Soft Channel。因而,这个记录运行程序将用正常方式转换这个raw值。
如果选择了raw soft channel,字段EGUF和EGUL变得没有意义。ESLO和ROFF总是有它们的默认值1和0。
EPICS AI记录相关推荐
- EPICS -- asynRecord记录使用示例
这个示例演示了如何使用asynRecord记录 1.硬件准备工作 在这里准备了一个型号为NPort 5650-8-DT的Moxa串口服务器,用于一根交叉DB9双母头线缆连接设备上端口2和端口3,使之可 ...
- EPICS Scaler记录和相关软件
内容 一.概要 scaler记录提供对最多64个由常见start/stop机制控制的32-bit计数器的支持.如果硬件能够预置计数器操作,这个记录根据每个通道的门空字段(Gn)划分scaler通道为两 ...
- pyepics Device:PVs的集合
概要 device模块提供了对一个PVs集合的一个简单接口.这里,一个epics device.Device是一个保存了一个PVs集合的对象,所有都共享一个前缀,但有很多attributes.很多PV ...
- EPICS记录参考--模拟输入记录(ai)
这个记录类型通常用于从硬件输入获取一个模拟值并且转换它为工程单位.这个记录支持到工程单位的线性转换和断点转换,平滑,警报限制,警报过滤以及图形和控制限制. 参数字段 在下面描述记录专用字段,按功能分组 ...
- EPICS记录参考1--EPICS概要
EPICS是什么? 实验物理和工业控制系统(EPICS)由一个可以用于创建分布式控制系统的软件组件和工具组成.EPICS提供了期望来自一个分布式系统的代表性功能: 设施设备的远程控制和监控 自动化的操 ...
- EPICS记录参考2--EPICS过程数据库概念
EPICS过程数据库 一个基于EPICS的控制系统包含一个或多个输入输出控制器,IOCs.每个IOC装载一个或多个数据库.一个数据库是各种类型记录的集合. 一个记录是一个对象,有: 一个唯一名称 有其 ...
- EPICS S7nodave手册
有关s7nodave EPICS的s7nodave时基于asyn和libnodave的设备支持,它与S7(或兼容)PLCs进行通信.不同于S7 PLCs的其它EPICS设备支持,此设备支持不要求在PL ...
- EPICS -- pyDevice
pyDevice是一个用于Python解释器的EPICS设备支持.它允许把EPICS数据库记录连接Python代码. 这个项目的目的是为Python开发者提供非常容易地接口把Python代码集成到EP ...
- EPICS设备支持的简单示例
描述 这是一个非常简单的设备支持示例.这个EPICS设备支持提供了实时时钟的"秒"部分(00-59).EPICS记录数据库提供了两个记录,"秒"值的十分之一和& ...
最新文章
- R语言dplyr包使用mutate函数生成新的数据列(不改变原数据列)实战
- 新思路保障网络安全 基于平台的网络安全架构体系
- 各大网站CSS代码初始化集合
- 史上卖得最多的芯片......原来是这个!
- python基本类型
- andriod studio 启动service失败_惊呆了!女儿拿着小天才电话手表,问我Android启动流程!...
- 优秀linux系统设计,Linux系统下设计优秀实用程序的艺术
- 《JAVA与模式》之解释器模式
- AIX下内存泄漏的监控
- 人狠话不多,细说大牛直播SDK之RTMP播放器和RTSP播放器
- python获取B站单个视频的封面
- Python中调用Linux命令之os.system、os.popen
- 基于CS16312控制芯片的VFD显示屏STC51单片机驱动程序
- PHP通过微信网页授权获取用户基本信息
- 分享105个NET源码ASP源码,总有一款适合您
- 毒舌陆琪那些能让人少奋斗十年的语录![转载]
- TL431应用和原理,TL431应用的注意事项
- 日语 计算机知识,「日语知识」日语输入法电脑-必读-问答
- Linux内核内存相关问题,这一篇让你彻底了解
- 使用parted命令为磁盘扩容
热门文章
- Map的某种创建方式
- 北京市车管所及车管分所办公电话
- 极客日报:《英雄联盟》回应服务器崩了:官方直接回退了旧版本;Deno 1.19 发布|极客头条
- 学习笔记(19):零基础搞定Python数据分析与挖掘-常用的正则符号(二)
- mac控制台关闭指定端口
- vue3 出现 Component inside <Transition> renders non-element root node that cannot be animated.
- 熟练的“猎手”使用新的脉冲波 DDoS 攻击来打击多个目标
- JavaScript 日期操作我不知道的事情
- 接口技术七段数码管c语言,031 实例7-七段数码管绘制
- [RF] 安装好Robot Framework之后怎样让启动的界面后面不带命令行窗口,且图片以机器人显示...