过程命令源 (PCMDSRC)
此信息适用于 CompactLogix 5380P、ControlLogix 5580P 和 ControlLogix 5590P 控制器。
过程命令源 (Process Command Source, PCMDSRC) 指令用于选择设备的命令源。
该指令包括以下命令源:
- 手控
- 停用
- 维护
- 覆盖
- 外部
- 程序已锁定
- 程序
- 操作员已锁定
- 运算符
可用语言
梯形图

功能块图

结构化文本
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 位设置为假。 |
提供反馈