所有输入记录都有的字段
输入和值字段
INP字段指定一个输入链接。设备支持例程使用它获取输入。对于软模拟输入记录,它可以是常数,数据库链接或者通道访问链接。
DTYP字段指定将输入值的设备支持模块的名称。每种记录类型有它自己的设备支持例程集合。如果一个记录类型没有任何相关的设备支持,DTYP是无意义的。
RVAL字段(可能时)包含从硬件或者从相关联的设备驱动获取的完全相同的原始数据并且再它经历任何转换前。软通过设备支持模块直接读取值到VAL,绕过这个字段。
VAL字段包含这个记录的最终值,在已经执行了任何所需的转换后。
设备输入
设备输入例程通常返回以下值之一到它相关联的记录支持例程:
- 0:成功并且转换。输入值在RVAL中。记录支持模块将从RVAL计算VAL。
- 2:成功,但不转换。如果设备支持模块不想要任何转换,它可以指定这个值。它由于两个原因会做这件事:1) 探测到硬件故障(在这种情况中,它也应该产生一个警报状况);2)设备支持例程把值直接读取到VAL字段并且接着设置UDF为FALSE。由于某些记录类型,设备支持例程可能必须也进行其它记录特定的运行,诸如对工程单位值使用一个平滑滤波器。
对应软记录的设备支持
在大部分情况中,提供两个软输出设备支持模块:软通道和原始软通道。两者都允许INP是一个常数,数据库链接或者通道访问链接。软通道设备支持模块把值直接读入VAL字段并且指定不应该执行值转换。这允许记录以其VAL字段的数据类型存储值。注意:对于软通道输入,不使用RVAL字段。原始软通道支持模块把值读入到RVAL并且表明执行任何指定的单位转换。
设备支持取读例程通常调用dbGetLink(),其从链接获取一个值。
如果由链接返回一个值,UDF字段被设置成FALSAE。设备支持读取例程通常从dbGetLink()返回状态。
输入仿真字段
SIMM字段控制仿真模式。通过设置这个字段为YES或RAW,能够切换这个记录到操作仿真模式。在处于仿真模式时,将从SIOL而不是INP获取输入。
SIML字段指定仿真模式位置。这个字段可以是常数,数据库链接,或者通道访问链接。如果SIML是一个数据库或通道访问链接,从SIML读取SIMM。如果SIML是一个常数链接,用这个常数值初始化SIMM,但能够通过数据库或通道访问puts更改它。
SVAL字段包含仿真值。当切换这个记录为仿真模式时,这是这个记录的输入值,以工程单位,即是:SIMM设置成YES或RAW。如果记录类型支持转换,设置SIMM为RAW使得SVAL被写到了RVAL并且进行转换。
SIOL字段时一个链接,其用于获取仿真值。链接可以是常数,数据库链接或者通道访问链接。如果SIOL是数据库链接或者通道访问链接,则从SIOL读取SVAL。如果SIOL是一个常数链接,则用这个常数初始化SVAL,但通过数据库或者通道访问puts能够更改它。
SIMS字段字段指定仿真模式警报严重性。当这个字段设置成一个除了NO_ALARM的值,并且记录处于仿真模式,将置成这类严重性和状态SIMM_ALARM的警报。
SDLY字段指定一个在仿真模式中实现异步运行的延时(秒为单位)。一个正的SDLY值将在仿真模式中用作第一阶段和第二阶段运行之间的延时。一个负值(默认)指定同步运行。
SSCN字段指定在仿真模式中指定使用SCAN机制。这对'I/O Intr'扫描的记录尤其有用,否则在仿真模式中它将不被扫描。
对应输入记录的仿真模式
通过设置SIMM为YES或RAW,能够切换一个输入记录为操作仿真模式。在仿真过程中,记录将被置入SIMS严重性和SIMM_ALARM状态的警报。
如果SIMM设成YES,输入值(工程单位)将从SIOL而不是INP获取,并且被直接写入到VAL字段。如果SIMM设成RAW,通过SIOL读取的值将被截断并且写入到RVAL字段,接着通过常规的原始值转换。当记录处于仿真模式,当运行这个记录时将不对设备支持调用。
在仿真模式中,如果SIOL包含一个链接,通过从SIOL指向的记录获取时间戳,遵守一个"来自设备的时间“(-2)的TSE设置。
通常输入记录包含一个私有的readValue()例程,其执行以下步骤:
- 如果PACT为TRUE,调用设备支持读取例程,状态被设置成其返回代码,并且readValue返回
- 调用dbGetLink()从SIML为SIMM获取一个新值。
- 检查SIMM的值。
- 如果SIMM是NO,则调用设备支持读取例程,设置状态为其返回值,并且返回。
- 如果SIMM是YES或RAW,则:1)如果SIMS大于0,设置警报状态为SIMM_ALARM和严重性SIMS;2)如果记录仿真运行是同步的(SDLY<0),或者记录处于一个异步运行的第二个阶段,调用dbGetLink()从SIOL读取输入值到SVAL。设置状态为从dbGetLink()返回的代码。如果调用成功并且SIMM是YES,写这个值到VAL并且设置状态为2(不转换),如果SIMM是RAW并且记录类型支持转换,转换这个值成RVAL并且保持状态为0(转换)。否则(记录处于异步转换的第一个阶段),用在SDLY中指定的延时设置一个回调运行。
- 如果SIMM不是YES,NO或RAW,产生一个严重性INVALID的严重性的SOFT警报,并且返回状态设置为-1。
所有输出记录都有的字段
这部分描述在很多输出记录类型中找到的字段。这些字段通常在使用它们时有相同含义。
输出和值字段
OUT字段指定一个输出链接。它被设备支持用于设备支持例程来决定发送输出到哪里。对于软记录支持,它可以是常数,数据库链接或者通道访问链接。如果链接是常数,结果没有输出。
DTYP字段指定设备支持模块的名称。每个记录类型有它自己的设备支持例程集合。如果一个记录类型没有相关联的设备支持,DTYP没有意义。
VAL字段包含在执行任何到原始输出的转换前的所需值。
OVAL字段用于决定何时调用监控。如果OVAL不等于VAL,调用归档和值变化监控。如果一个记录类型需要做调整,OVAL用于在转换所需值到一个原始值前,执行变化最大速率限制。
RVAL字段包含(可能时)发送到硬件自身或者相关联设备驱动的实际值。
RBV字段包含(可能时)从硬件自身或者从相关联设备驱动获取实际回读值。
对应软记录的设备支持
通常提供了两个软输出设备支持模块。软通道和原始软通道。二者都通过输出链接OUT写一个值。软通道模块从与OVAL或VAL(如果OVAL不存在)相关联的值写输出。原始软通道支持模块在执行转换后写与RVAL字段相关联的字段。
设备支持写例程通常调用dbPutLink(),其通过OUT链接写一个值,并且从那个调用返回状态。
输入模式选择字段
DOL字段是一个链接,从其获取所需输出的值。DOL可以是常数,数据库链接或者通道访问链接。如果DOL是一个数据库或者通道访问链接,并且OMSL闭环,则从DOL获取VAL。
OSML字段选择输出模式。这个字段有值supervisory或closed_loop。DOL只在OMSL有值closed_loop时才用于获取VAL。通过设置这个字段,一个记录能够在操作监管和闭环模式之间切换。当处于闭环模式,不能通过dbPuts设置VAL字段。
输出模式选择
字段DOL和OMSL用于允许输出记录称为一个闭环控制算法的部分。OMSL只在DOL引用数据库或者通道访问链接时才有意义。它可以有值supervisory或closed_loop。如果这个模式是supervisory,则对VAL什么也没做。如果模式是closed_loop,并且记录类型不包含一个OIF字段,则每次运行这个记录,VAL被设置成从由DOL引用的位置获取的值。如果模式在带有OIF字段并且OIF为FULL的记录类型中是closed_loop,VAL被设置成从DOL引用的位置获取的值;如果OIF是增量的,VAL增加从DOL获取的值。
无效的输出动作字段
IOVA字段为这个记录被置入INVALID警报严重性的情况指定输出动作。IVOA能够是以下动作之一:
- Contiune normally
- Don't drive outputs
- Set output to IVOC
IVOV字段用工程单位为IOVA动作Set output to IVOV设置值。如果新严重性被设置为INVALID,并且IVOA是Set output to IVOV,则VAL字段被设置成IVOV并且在调用设备支持前转换成RVAL。
无效的警报输出动作
当一个输出记录被置成INVALID警报严重性,IVOA指定一个要采取的动作。用于每个输出记录的记录支持process例程包含执行以下步骤的代码:
- 如果新的严重性少于INVALID,则调用writeValue()
- 否则,做以下事情:1) 如果IVOA是Contiune normally, 则调用writeValue(); 2) 如果IVOA是Don't drive outputs, 则不写输出; 3) 如果IVOA是Set output to IVOV, 则设置VAL为IVOV,如果需要,调用convert(),并且接着调用writeValue(); 如果IVOA不是以上值之一,产生一条错误消息。
输出仿真字段
SIMM字段包含仿真模式。有值YES或NO。通过设置这个值为YES,能够切换成运行仿真模式。当在仿真模式中,输出将通过SIOL而不是OUT被转发。
SIML字段指定仿真模式的位置。这个字段可以是常数,数据库链接或者通道访问链接。如果SIML是一个数据库或者通道访问链接,则从SIML读取SIMM。如果SIML是一个常数,则用这个常数值初始化SIMM,但能够通过数据库或通道访问puts初始化SIMM。
SIOL字段:当这个记录处于仿真模式时,SIOL是一个输出值被写到的链接。
SIMS字段指定仿真模式警报严重性。当这个字段设置成除了NO_ALARM外的其它值并且这个记录处于仿真模式,它将被置入这个严重性并且状态SIMM_ALARM的警报。
SDLY字段指定一个在仿真模式中实现异步运行的延时(秒)。一个正SDLY值将被用作在仿真模式中第一个和第二个阶段运行之间的延时。一个负值(默认)指定异步运行。
SSCN字段指定在仿真模式中要使用的SCAN机制。这对'I/O Intr'扫描的记录尤其有用,否则其在仿真模式中从不被扫描。
用于输出记录的仿真模式
通过设置SIMM为YES,能够切换一个输出记录为操作仿真模式。在仿真过程中,记录将被置入一个SIMS严重性和SIMM_ALARM状态的警报。在仿真模式中,输出值(工程单位)将被写到SIOL而不是OUT。但输出值不被转换。当记录处于仿真模式时,在记录运行中,没有对设备支持的调用。
通常输出记录包含一个私有writeValue(),它执行以下步骤:
- 如果PACT为TRUE,调用设备支持写例程,状态被设成了它的返回代码,并且writeValue()返回。
- 如果SIML是DB_LINK或者CA_LINK,调用dbGetLink()为SIMM获取一个新值。
- 检查SIMM的值。
- 如果SIMM是NO,则调用设备支持写例程,设置状态为它的返回代码,并且返回。
- 如果SIMM是YES,则1)如果SIMS大于0,设置警报状态为SIMM_ALARM和严重性为SIMS;2)如果记录仿真运行是同步的(SDLY<0),或者记录处于异步运行的第二个阶段,调用dbPutLink()来从VAL或OVAL写输出值到SIOL;否则(记录处于一个异步运行的第一个阶段),用在SDLY中指定的延时设置一个回调运行;3) 设置状态为从dbPutLink()的返回代码并且返回。
- 如果SIMM不是YES或NO,产生一个严重性INVALID的SOFT警报,并且返回状态被设成-1。