过程命令源 (PCMDSRC)

此信息适用于 CompactLogix 5380P、ControlLogix 5580P 和 ControlLogix 5590P 控制器。
过程命令源 (Process Command Source, PCMDSRC) 指令用于选择设备的命令源。
该指令包括以下命令源:
  • 手控
  • 停用
  • 维护
  • 覆盖
  • 外部
  • 程序已锁定
  • 程序
  • 操作员已锁定
  • 运算符
可用语言
梯形图
PCMDSRC_ladder
功能块图
PCMDSRC_FBD
结构化文本
PCMDSRC (PCMDSRC tag);
操作数
重要提示: 以下情况下会导致运行出现意外:
  • 输出标签操作数被覆盖。
  • 结构操作数的成员被覆盖。
  • 除非另外指定,否则结构操作数由多条指令共用。
指令中混用数据类型时,需遵从相关的数据转换规则。请参阅 数据转换
配置操作数
操作数
类型
格式
说明
PlantPAx Control
P_COMMAND_SOURCE
标签
指令正确运行所需的数据结构。
P_COMMAND_SOURCE 结构
输入成员
数据类型
说明
EnableIn
BOOL
启用输入。
梯形图:
对应于梯级条件。
默认值为真。
Inp_OwnerCmd
DINT
宿主设备命令:
0 = 无,
Inp_OwnerCmd.10 = 操作员锁定,
Inp_OwnerCmd.11 = 操作员解锁,
Inp_OwnerCmd.12 = 程序锁定,
Inp_OwnerCmd.13 = 程序解锁,
Inp_OwnerCmd.14 = 获取维护,
Inp_OwnerCmd.15 = 释放维护,
Inp_OwnerCmd.16 = 获取外部,
Inp_OwnerCmd.17 = 释放外部,
Inp_OwnerCmd.29 = 回波。
默认值为 0。
Inp_InitializeReq
BOOL
1 = 请求初始化指令。指令通常在首次运行时进行初始化。需要重新初始化时使用此请求。该指令自动清除该操作数。
默认值为真。
Inp_Hand
BOOL
1 = 获取手控(通常永久设置为本地),
0 = 释放手控。
默认值为假。
Inp_Ovrd
BOOL
1 = 获取覆盖(较高优先级程序逻辑),
0 = 释放覆盖。
默认值为假。
Inp_ExtInh
BOOL
1 = 禁止外部获取,
0 = 允许外部获取。
默认值为真。
Cfg_HasOper
BOOL
1 = 存在操作符(未锁定),可选择。
默认值为真。
Cfg_HasOperLocked
BOOL
1 = 存在锁定的操作符,可选择。
默认值为真。
Cfg_HasProg
BOOL
1 = 存在程序(未锁定),可选择。
默认值为真。
Cfg_HasProgLocked
BOOL
1 = 存在锁定的程序,可选择。
默认值为真。
Cfg_HasExt
BOOL
1 = 存在外部,可选择。
默认值为假。
Cfg_HasMaint
BOOL
1 = 存在维护,可选择。
默认值为真。
Cfg_HasMaintOoS
BOOL
1 = 存在维护停用,可选择。
默认值为真。
Cfg_OvrdOverLock
BOOL
1 = 覆盖取代程序/操作员锁定,
0 = 不覆盖锁定。
默认值为真。
Cfg_ExtOverLock
BOOL
1 = 外部取代程序/操作员锁定,
0 = 不覆盖锁定。
默认值为假。
Cfg_ProgPwrUp
BOOL
1 = 为程序加电,
0 = 为操作员加电。
默认值为假。
Cfg_ProgNormal
BOOL
正常源:
1 = 如果无请求则为程序,
0 = 如果无请求则为操作员。
默认值为假。
Cfg_PCmdPriority
BOOL
命令优先级。
1 = 程序命令优先,
0 = 操作员命令优先。
默认值为假。
Cfg_PCmdProgAsLevel
BOOL
1 = PCmd_Prog 用作级别。
默认值为假。
Cfg_PCmdLockAsLevel
BOOL
1 = PCmd_Lock 用作级别(1 = 锁定,0 = 解锁)。
默认值为假。
Cfg_ExtAcqAsLevel
BOOL
1 = XCmd_Acq 用作级别(1 = 获取,0 = 释放)。
默认值为假。
PCmd_Oper
BOOL
用于选择操作员的程序命令(程序到操作员)。该指令自动清除该操作数。
默认值为假。
PCmd_Prog
BOOL
用于选择程序的程序命令(操作员到程序)。该指令自动清除该操作数。
默认值为假。
PCmd_Lock
BOOL
用于锁定程序的程序命令(不允许操作员)。如果 Cfg_PCmdLockAsLevel = 0,则指令会自动清除此参数。
默认值为假。
PCmd_Unlock
BOOL
用于解锁程序的程序命令(允许操作员获取)。该指令自动清除该操作数。
默认值为假。
PCmd_Normal
BOOL
用于选择正常(操作员或程序)的程序命令。该指令自动清除该操作数。
默认值为假。
MCmd_OoS
BOOL
用于选择“停用”的维护命令。该指令自动清除该操作数。
默认值为假。
MCmd_IS
BOOL
用于选择“服务中”的维护命令。该指令自动清除该操作数。
默认值为假。
MCmd_Acq
BOOL
用于获取所有权(操作员/程序/外部/覆盖到维护)的维护命令。该指令自动清除该操作数。
默认值为假。
MCmd_Rel
BOOL
用于释放所有权(维护到操作员/程序/外部/覆盖)的维护命令。该指令自动清除该操作数。
默认值为假。
XCmd_Acq
BOOL
用于获取所有权的外部命令(操作员/程序/覆盖/维护到外部)。如果 Cfg_ExtAcqAsLevel = 0,则指令会自动清除此操作数。
默认值为假。
XCmd_Rel
BOOL
Cfg_ExtAcqAsLevel = 0 时用于释放所有权的外部命令(外部到操作员/程序/覆盖/维护)。该指令自动清除该操作数。
默认值为假。
OCmd_Oper
BOOL
用于选择操作员(程序到操作员)的操作员命令。该指令自动清除该操作数。
默认值为假。
OCmd_Prog
BOOL
用于选择程序(操作员到程序)的操作员命令。该指令自动清除该操作数。
默认值为假。
OCmd_Lock
BOOL
用于锁定操作员的操作员命令(不允许程序)。该指令自动清除该操作数。
默认值为假。
OCmd_Unlock
BOOL
用于解锁/释放(允许程序获取)所有权的操作员命令。该指令自动清除该操作数。
默认值为假。
OCmd_Normal
BOOL
用于选择正常(操作员或程序)的操作员命令。该指令自动清除该操作数。
默认值为假。
输出成员
数据类型
说明
EnableOut
BOOL
启用输出。此输出状态始终反映 EnableIn 输入状态。
Sts_Initialized
BOOL
1 = 指令已初始化。使用 Inp_InitializeReq 重新初始化。
Sts_eSrc
INT
当前命令源显示时带状态位:
Sts_eSrc.0:锁定,
Sts_eSrc.1:正常,
Sts_eSrc.2:手控,
Sts_eSrc.3:维护,
Sts_eSrc.4:覆盖,
Sts_eSrc.5:程序,
Sts_eSrc.6:操作员,
Sts_eSrc.7:停用,
Sts_eSrc.8:外部。
Sts_bSrc
INT
活动选项位图(针对带命令源请求选项的 HMI 图腾柱)
Sts_bSrc.0:手控,
Sts_bSrc.1:程序停用(梯级为假),
Sts_bSrc.2:维护停用,
Sts_bSrc.3:维护,
Sts_bSrc.4:覆盖,
Sts_bSrc.5:外部,
Sts_bSrc.6:程序已锁定,
Sts_bSrc.7:程序,
Sts_bSrc.8:操作员已锁定,
Sts_bSrc.9:操作员。
Sts_Hand
BOOL
1 = 选择手控(取代 OoS、维护、覆盖、外部、程序、操作员)。
Sts_OoS
BOOL
1 = 选择停用(取代维护、覆盖、外部、程序、操作符)。
Sts_Maint
BOOL
1 = 选择维护(取代覆盖、外部、程序、操作符)。
Sts_Ovrd
BOOL
1 = 选择覆盖(取代外部、程序、操作员)。
Sts_Ext
BOOL
1 = 选择外部(取代程序、操作员)。
Sts_Prog
BOOL
1 = 选择程序。
Sts_ProgLocked
BOOL
1 = 选择并锁定程序。
Sts_Oper
BOOL
1 = 选择操作员。
Sts_OperLocked
BOOL
1 = 选择并锁定操作员。
Sts_ProgOperSel
BOOL
程序/操作员选择(锁定)状态:1 = 程序,0 = 操作员。
Sts_ProgOperLock
BOOL
程序/操作员锁定状态,1 = 锁定,0 = 解锁。
Sts_Normal
BOOL
1 = 选择等于正常(程序或操作员)。
Sts_ExtReqInh
BOOL
1 = 禁用外部请求,无法从当前状态进入外部。
Sts_ProgReqInh
BOOL
1 = 禁用程序请求,无法从当前状态进入程序。
Sts_MAcqRcvd
BOOL
1 = 维护获取命令接收到此扫描。
MRdy_OoS
BOOL
1 = MCmd_OoS 就绪,启用 HMI 按钮。
MRdy_IS
BOOL
1 = MCmd_IS 就绪,启用 HMI 按钮。
MRdy_Acq
BOOL
1 = MCmd_Acq 就绪,启用 HMI 按钮。
MRdy_Rel
BOOL
1 = MCmd_Rel 就绪,启用 HMI 按钮。
XRdy_Acq
BOOL
1 = XCmd_Acq 就绪,启用 HMI 按钮。
XRdy_Rel
BOOL
1 = XCmd_Rel 就绪,启用 HMI 按钮。
ORdy_Oper
BOOL
1 = OCmd_Oper 就绪,启用 HMI 按钮。
ORdy_Prog
BOOL
1 = OCmd_Prog 就绪,启用 HMI 按钮。
ORdy_Lock
BOOL
1 = OCmd_Lock 就绪,启用 HMI 按钮。
ORdy_Unlock
BOOL
1 = OCmd_Unlock 就绪,启用 HMI 按钮。
ORdy_Normal
BOOL
1 = OCmd_Normal 就绪,启用 HMI 按钮。
Out_OwnerSts
DINT
命令源状态、宿主命令握手和就绪状态:
0 = 无,
.10 = 操作员锁定,
.11 = 操作员解锁,
.12 = 程序锁定,
.13 = 程序解锁,
.14 = 获取维护,
.15 = 释放维护,
.16 = 获取外部,
.17 = 释放外部,
.18 = 具有维护,
.19 = 外部覆盖锁定,
.20 = 具有外部,
.21 = 具有操作员,
.22 = 操作员已锁定,
.23 = 具有程序,
.24 = 程序已锁定,
.29 = 回波,
.30 = 未就绪
操作
指令使用以下命令源。命令源在下表中从高到低的优先级顺序排序。
命令源
说明
手控
硬接线逻辑或指令之外的其他逻辑用于控制设备。该指令会跟踪设备的状态,以便平滑过渡回其他命令源之一。
(优先级最高的命令源)
停用
指令被禁用且没有宿主。
维护
维护对设备进行控制,取代操作员、程序、外部和覆盖控制。接受来自 HMI 的操作员命令和设置。
覆盖
优先级逻辑对设备进行控制,取代操作员、程序和外部控制。接受覆盖输入 (Inp_Ovrd)。
外部
外部逻辑(例如现场导向控制或上游 SCADA)对设备进行控制。接受外部命令 (XCmd_)。
程序已锁定
程序逻辑对设备进行控制。接受程序命令 (PCmd_)。操作员无法从程序获取控制权。覆盖无法从程序获取控制权,除非 Cfg_OvrdOverLock = 1。
程序
程序逻辑对设备进行控制。接受程序命令 (PCmd_)。
操作员已锁定
操作员对设备进行控制。接受来自 HMI 的操作员命令 (OCmd_)。程序无法从操作员获取控制权。覆盖无法从操作员获取控制权,除非 Cfg_OvrdOverLock = 1。
运算符
操作员对设备进行控制。接受来自 HMI 的操作员命令 (OCmd_)。
(最低优先级命令源)
该指令启用或禁用以下操作:
  • 存在维护停用
  • 存在维护
  • 存在外部
  • 存在程序(已解锁)
  • 存在程序(已锁定)
  • 存在操作员(已解锁)
  • 存在操作员(已锁定)
  • PCmd_Lock 用作级别(1 = 锁定,0 = 解锁)
指令会检查控制权的无效配置,强制设置最接近的有效配置。
核心控制模型仲裁接收功能所接受的命令和参数的源。核心控制模型确定源是否为:
  • 可编程实体(完全驻留于处理环境中),或
  • 外部接口实体(在处理环境外部并异步发出命令和参数)。
锁定命令源会阻止其他命令源获取权限。
核心命令源模型
核心控制模型包含以下命令源:
  • Oper
  • OperLocked
  • Prog
  • ProgLocked
控制模型默认为该配置。其他命令源在模型中也可能存在,但充当覆盖命令源,独立于基本操作员/程序状态机运行。
按照配置启用命令源
用户可以启用或禁用各个命令源。默认配置使用整个基本模型;处理环境加电后,命令源将为指定的默认值。不允许已启用命令源的某些组合,因为它们不是必需的,或者可能会造成意外的更改。
Prog 加电
此配置允许用户指定是将操作员还是程序作为加电默认设置。
Prog 优先级
此配置允许用户指定在同时声明操作员命令和程序命令时,哪个命令取得优先。
自动重置命令
所有命令都被视为“单触发锁定”。这意味着,当指令执行并处理所有命令时,将自动清除所有命令。
更改目标状态
在某些配置下,某些命令的目标命令源可能会发生更改。这符合命令意图。例如,如果 Prog 处于禁用状态,则 OCmd_Prog 命令的目标将定向到 ProgLocked 状态,而不是 Prog 状态。这是为了保持 OCmd_Prog 命令的意图:操作员实体希望将该函数置于程序的控制下。如果该命令被删除,则将无法完成此操作。这仅在不会引发冲突或竞争状况的配置中完成,但保留尽可能多的用户功能是切实可行的。
优先级较高的命令源
以下优先级较高的命令源在模型中独立工作:
  • 外部
  • 覆盖
  • 维护
  • 停用
  • 服务中
  • 手控
初始化
指令通常在首次运行时进行初始化。可随时通过设置 Inp_InitializeReq = 1 来请求重新初始化。为了进行正确的初始化,如果在执行代码的联机编辑时添加指令,请确保默认值 Inp_InitializeReq = 1。
监控 PCMDSRC 指令
使用 PlantPAx 过程对象库中的操作员面板进行监控。
影响数学状态标志
编号
严重/轻微故障
没有特定于此指令的故障。请参见“数组索引编制”,了解关于数组索引故障的信息。
执行
梯形图
条件/状态
执行的操作
预扫描
梯级输出条件设置为假。
将 Sts_eSrc 设置为 0。将 Sts_bSrc 设置为 0。
指令首次运行
每次执行时自动清除的所有命令都将被清除和忽略。
根据配置 (Cfg_ProgPwrUp) 设置程序/操作员选择。
程序或操作员锁定选择设置为未锁定。
维护获取/释放状态不作修改,并且会通过控制器加电或程序 (PROG) 到运行 (RUN) 的转换继续保持不变。
梯级输入条件为假
如果 Inp_Hand=0,指令将停用。输出已断电。
命令源选择处理正常进行,但忽略和清除程序和操作员命令,并将所有权状态位(Sts_Maint、Sts_Ovrd、Sts_Ext、Sts_Prog 和 Sts_Oper)全部清零。当梯级输入条件变为真时,程序/操作员选择会根据配置 (Cfg_ProgPwrUp) 进行设置。
梯级输入条件为真
将梯级输出条件设置为梯级输入条件。
指令执行。
后扫描
梯级输出条件设置为假。
功能块图
条件/状态
执行的操作
预扫描
EnableOut 设置为假。
将 Sts_eSrc 设置为 0。将 Sts_bSrc 设置为 0。
指令首次运行
每次执行时自动清除的所有命令都将被清除和忽略。
根据配置 (Cfg_ProgPwrUp) 设置程序/操作员选择。
程序或操作员锁定选择设置为未锁定。
维护获取/释放状态不作修改,并且会通过控制器加电或程序 (PROG) 到运行 (RUN) 的转换继续保持不变。
指令首次扫描
请参阅“功能块图”表中的“指令首次运行”行。
EnableIn 为假
EnableOut 设置为假。
如果 Inp_Hand=0,指令将停用。输出已断电。
命令源选择处理正常进行,但忽略和清除程序和操作员命令,并将所有权状态位(Sts_Maint、Sts_Ovrd、Sts_Ext、Sts_Prog 和 Sts_Oper)全部清零。当梯级输入条件变为真时,程序/操作员选择会根据配置 (Cfg_ProgPwrUp) 进行设置。
EnableIn 为真
EnableOut 设置为真。
指令执行。
后扫描
EnableIn 和 EnableOut 位设置为假。
结构化文本
在结构化文本中,EnableIn 在普通扫描期间始终为真。因此,如果指令处于由逻辑激活的控制路径中,指令将会执行。
条件/状态
执行的操作
预扫描
请参阅“梯形图”表中的“预扫描”行。
指令首次运行
请参阅“梯形图”表中的“指令首次运行”行。
EnableIn 为真
请参见“梯形图”表中的“梯级输入条件为真”行。
后扫描
EnableIn 和 EnableOut 位设置为假。
提供反馈
对本文档有问题或反馈吗? 请在这里提交您的反馈
Normal