增强型选择 (ESEL)

此信息适用于
CompactLogix
5370、
ControlLogix
5570、
Compact GuardLogix
5370、
GuardLogix
5570、
Compact GuardLogix
5380、
CompactLogix
5380、
ControlLogix
5580、
GuardLogix
5580 和 ControlLogix 5590 控制器。
增强型选择 (ESEL) 指令用于在多达六路输入中选择一路输入。选项包括:
  • 手动选择(由操作员或程序选择)
  • 最大值选择
  • 最小值选择
  • 中位数选择
  • 平均值(平均数)选择
可用语言
梯形图
此指令不可用于梯形图逻辑中。
功能块
ESEL_FBD_avail_v31
结构化文本
ESEL(ESEL_tag);
操作数
功能块
操作数
类型
格式
说明
ESEL 标签
SELECT_ENHANCED
结构
ESEL 结构
SELECT_ENHANCED 结构
输入参数
数据类型
说明
EnableIn
BOOL
启用输入。如果为假,指令不会执行,也不会更新输出。
默认值为真。
In1
REAL
指令的第一个模拟信号输入。
有效值 = 任意浮点值
默认值 = 0.0
In2
REAL
指令的第二个模拟信号输入。
有效值 = 任意浮点值
默认值 = 0.0
In3
REAL
指令的第三个模拟信号输入。
有效值 = 任意浮点值
默认值 = 0.0
In4
REAL
指令的第四个模拟信号输入。
有效值 = 任意浮点值
默认值 = 0.0
In5
REAL
指令的第五个模拟信号输入。
有效值 = 任意浮点值
默认值 = 0.0
In6
REAL
指令的第六个模拟信号输入。
有效值 = 任意浮点值
默认值 = 0.0
In1Fault
BOOL
In1 不良状况指示器。如果 In1 从模拟输入读取,则 In1Fault 通常由模拟输入的故障状态控制。如果所有 InnFault 输入均为真,指令会将 Status 中的相应位置位,不执行控制算法,并且不会更新 Out。
默认值 = 假
In2Fault
BOOL
In2 不良状况指示器。如果 In2 从模拟输入读取,则 In2Fault 通常由模拟输入的故障状态控制。如果所有 InnFault 输入均为真,指令会将 Status 中的相应位置位,不执行控制算法,并且不会更新 Out。
默认值 = 假
In3Fault
BOOL
In3 不良状况指示器。如果 In3 从模拟输入读取,则 In3Fault 通常由模拟输入的故障状态控制。如果所有 InnFault 输入均为真,指令会将 Status 中的相应位置位,不执行控制算法,并且不会更新 Out。
默认值 = 假
In4Fault
BOOL
In4 不良状况指示器。如果 In4 从模拟输入读取,则 In4Fault 通常由模拟输入的故障状态控制。如果所有 InnFault 输入均为真,指令会将 Status 中的相应位置位,不执行控制算法,并且不会更新 Out。
默认值 = 假
In5Fault
BOOL
In5 不良状况指示器。如果 In5 从模拟输入读取,则 In5Fault 通常由模拟输入的故障状态控制。如果所有 InnFault 输入均为真,指令会将 Status 中的相应位置位,不执行控制算法,并且不会更新 Out。
默认值 = 假
In6Fault
BOOL
In6 不良状况指示器。如果 In6 从模拟输入读取,则 In6Fault 通常由模拟输入的故障状态控制。如果所有 InnFault 输入均为真,指令会将 Status 中的相应位置位,不执行控制算法,并且不会更新 Out。
默认值 = 假
InsUsed
DINT
使用的输入数。此参数定义指令使用的输入数。在最大值选择、最小值选择、中位数选择和平均值选择模式下,指令仅考虑 In1 到 In
InsUsed
。如果该值无效,指令会将 Status 中的相应位置位。如果 InsUsed 无效、指令未处于手动选择模式并且 Override 清零,指令不会更新 Out。
有效值 = 1 至 6
默认值 = 1
Selector Mode
DINT
选择器模式输入。该值将决定指令的操作。
0 = 手动选择
1 = 最大值选择
2 = 最小值选择
3 = 中位数选择
4 = 平均值选择
如果该值无效,指令会将 Status 中的相应位置位,并且不更新 Out。
有效值 = 0 至 4
默认值 = 0
ProgSelector
DINT
程序模式下的选择器输入。选择器模式为手动选择并且指令处于程序控制模式时,由 ProgSelector 决定将哪路输入 (In1-In6) 送入 Out。如果 ProgSelector = 0,指令将不更新 Out。如果 ProgSelector 无效,指令会将 Status 中的相应位置位。如果该参数无效且指令处于程序控制模式,并且选择器模式为手动选择或者 Override 已置位,则指令不会更新。Out。
有效值 = 0 至 6
默认值 = 0
OperSelector
DINT
操作员模式下的选择器输入。选择器模式为手动选择并且指令处于操作员控制模式时,由 OperSelector 决定将哪路输入 (In1-In6) 送入 Out。如果 OperSelector = 0,指令将不更新 Out。如果 OperSelector 无效,指令会将 Status 中的相应位置位。如果该参数无效且指令处于操作员控制模式,并且选择器模式为手动选择或者 Override 已置位,则指令不会更新 Out。
有效值 = 0 至 6
默认值 = 0
ProgProgReq
BOOL
程序发出的程序控制请求。由用户程序设置为真可请求程序控制模式。如果 ProgOperReq 为真,则忽略该值。若此参数保持为真,并且 ProgOperReq 保持为假,会将指令锁定在程序控制模式。
默认值为假。
ProgOperReq
BOOL
程序发出的操作员控制请求。由用户程序设置为真可请求操作员控制模式。若将此参数保持为真,会将该指令锁定在操作员控制模式。
默认值为假。
ProgOverrideReq
BOOL
程序超控模式请求。由用户程序设置为真可请求进入超控模式。在超控模式下,指令将起到手动选择的作用。
默认值为假。
OperProgReq
BOOL
操作员发出的程序控制请求。由操作员界面设置为真以请求程序控制模式。指令将该输入设置为假。
默认值为假。
OperOperReq
BOOL
操作员发出的操作员控制请求。由操作员界面设置为真可请求操作员控制模式。指令将该输入设置为假。
默认值为假。
ProgValueReset
BOOL
将程序控制值复位。该值为真时,每次执行指令时,所有程序请求输入都将设置为假。
默认值为假。
输出参数
数据类型
说明
EnableOut
BOOL
指示指令是否处于启用状态。如果 Out 溢出,则设置为假。
Out
REAL
计算所得的算法输出。
SelectedIn
DINT
所选输入的编号。指令使用该值指示当前送入输出的是哪路输入。如果选择器模式为平均值选择,指令会设置 SelectedIn = 0。
ProgOper
BOOL
程序/操作员控制指示器。在程序控制模式下设置为真。在操作员控制模式下清除为 false。
覆盖
BOOL
超控模式。指令处于超控模式时设置为真。
状态
DINT
功能块的状态。
InstructFault (Status.0)
BOOL
该指令检测到以下执行错误之一。这不是轻微或严重的控制器错误。检查其他状态位以确定发生的情况。
InsFaulted (Status.1)
BOOL
所有使用的 Inn 输入的 InnFault 输入均为真。
InsUsedInv (Status.2)
BOOL
InsUsed 值无效。
SelectorModeInv (Status.3)
BOOL
SelectorMode 值无效。
ProgSelectorInv (Status.4)
BOOL
ProgSelector 值无效。
OperSelectorInv (Status.5)
BOOL
OperSelector 值无效。
结构化文本
操作数
类型
格式
说明
ESEL 标签
SELECT_ENHANCED
结构
ESEL 结构
有关结构化文本中表达式语法的详细信息,请参见“结构化文本语法”部分。
说明
ESEL 指令的工作方式如下:
条件
Action
SelectorMode = 0 (手动选择) 或
Override 为真、ProgOper 为假,且 OperSelector 不等于 0
Out = In[OperSelector]
SelectedIn = OperSelector
SelectorMode = 0 (手动选择) 或
Override 为真、ProgOper 为真,且 ProgSelector 不等于 0
Out = In[ProgSelector]
SelectedIn = ProgSelector
SelectorMode = 1(最大值选择)且
Override 为 false
Out = In[InsUsed] 的最大值
SelectedIn = 最大输入值对应的索引
SelectorMode = 2(最小值选择)且
Override 为 false
Out = In[InsUsed] 的最小值
SelectedIn = 最小输入值对应的索引
SelectorMode = 3(中位数选择)且
Override 为 false
Out = In[InsUsed] 的中位数
SelectedIn = 输入值中位数对应的索引
SelectorMode = 4(平均值选择)且
Override 为 false
Out = In[InsUsed] 的平均值
SelectedIn = 0
当 SelectorMode 为 1 到 4 之间的值时,如果任何输入出现不良状况,选择时将会忽略该不良输入。例如,如果 SelectorMode = 1(最大值选择),并且 In6 的值最大但状况不良,则指令会将状况良好的次最大输入值送入输出。
对于最大值或最小值选择模式,如果两路输入相等且同为最大值或最小值,则指令会输出找到的第一路输入。对于中位数选择模式,中位数始终代表从可用输入中选择的值。如果多路输入的值为中位数,则指令会输出找到的第一路输入。
在程序控制与操作员控制之间切换
下图显示了 ESEL 指令在程序 (program) 控制与操作员控制模式之间进行切换的方式。
ESEL Switch between program and operator control
(1) ProgOperReq 保持为真时,指令锁定为操作员控制模式。
(2) ProgProgReq 保持为真且 ProgOperReq 为假时,指令锁定为程序控制模式。
影响数学状态标志
严重/轻微故障
如果启用该功能并检测到溢出,将发生轻微故障(故障类型:4,故障代码:4)。
执行
功能块
条件/状态
执行的操作
预扫描
EnableIn 和 EnableOut 位设置为假。
Tag.EnableIn 为假
EnableIn 和 EnableOut 位设置为假。
Tag.EnableIn 为真
EnableIn 和 EnableOut 位设置为真。
指令执行
指令首次运行
指令设置为操作员控制模式。
指令首次扫描
不适用
后扫描
EnableIn 和 EnableOut 位设置为假。
结构化文本
条件/状态
执行的操作
预扫描
请参见“功能块”表中的“预扫描”行。
正常执行
请参见“功能块”表中的“Tag.EnableIn 为真”行。
后扫描
请参见“功能块”表中的“后扫描”行。
示例
该 ESEL 指令根据 SelectorMode 选择 In1、In2 或 In3。在本示例中,SelectorMode = 1,表示最大值选择。指令将找到最大的输入值,并将 Out 值设置为最大 In 值。
功能块
ESEL_FBD_ex_v31
结构化文本
ESEL_01.In1 := analog_input1;
ESEL_01.In2 := analog_input2;
ESEL_01.In3 := analog_input3;
ESEL_01.SelectorMode := 1;
ESEL(ESEL_01);
selected_value := ESEL_01.Out;
提供反馈
对本文档有问题或反馈吗? 请在这里提交您的反馈
Normal