过程超前/滞后/备用电机组 (PLLS)

此信息适用于 CompactLogix 5380P、ControlLogix 5580P 和 ControlLogix 5590P 控制器。
过程超前滞后待机电机组 (Process Lead Lag Standby Motor Group, PLLS) 指令控制并联电机组,如具有公共吸入源和排放目标的一组泵。要运行的电机数量取决于系统的需求。可将组配置为包含最少两台或最多 30 台电机。可将最小需求设置为 0,以便所有电机均在达到最小需求时停止。最大需求可设为组中泵数量的上限。
PLLS 指令用于:
  • 控制和监控一组 2 到 30 台电机。
  • 使用操作员、程序和覆盖功能启动和停止组。
  • 允许操作员或程序输入要求(要运行的电机数)。
  • 配置最大需求(1 到组中的电机数)。
  • 配置最小需求(0 到最大需求)。
  • 配置停止最后启动的电机或第一个启动的电机(先开后关或后开后关)。
  • 配置开始的延迟,并配置停止的延迟。
  • 使用启动和停止命令,将电机作为一个组启动或停止。可以配置启动或停止的延迟以对电机进行排序。
  • 根据需要启动或停止电机,以满足输入的需求。
  • 当没有足够的电机可供启动(在程序模式下且准备运行)以满足给定要求时进行标识(可选报警)。
  • 当没有足够的电机可供停止(在程序模式下且准备停止)以满足给定要求时进行标识(可选报警)。
  • 能够旋转电机列表(降级超前,升级其他电机)。
  • 监控用于允许启动电机组的许可条件。
  • 监控用于停止或防止启动电机组的互锁条件。
  • 如果互锁条件导致组停止,则报警。
  • 对“报警已禁用”、“不良配置”、“未就绪”和“维护绕过处于活动状态”使用 HMI 浏览路径记录。
  • 在自动化逻辑中使用“可用”状态来确定电机组是否可由其他对象控制。
可用语言
梯形图
PLLS_available_ladder
功能块图
PLLS_available_FBD
结构化文本
PLLS (PLLS tag, Ref_Motors tag, BusObj tag);
操作数
重要提示: 以下情况下会导致运行出现意外:
  • 输出标签操作数被覆盖。
  • 结构操作数的成员被覆盖。
  • 除非另外指定,否则结构操作数由多条指令共用。
指令中混用数据类型时,需遵从相关的数据转换规则。请参阅 数据转换
配置操作数
下表描述了 PLLS 配置操作数。
操作数
类型
格式
说明
PlantPAx Control
P_LEAD_LAG_STANDBY
标签
指令正确运行所需的数据结构。
Ref_Motors
P_LEAD_LAG_STANDBY_MOTOR
标签
电机接口数组。
BusObj
BUS_OBJ
标签
总线组件。
P_LEAD_LAG_STANDBY 结构
InOut 参数用于将指令链接到外部标签,这些外部标签包含指令运行所需的数据。这些外部标签必须为所显示的数据类型。
公共成员是可通过编程方式访问的标准可见标签成员。专用隐藏成员用于 HMI 面板中,无法通过编程方式访问。专用成员在公共成员后面的单独表中列出。
公共输入成员
数据类型
FBD 默认可见性
需要 FBD 接线
用途
说明
EnableIn
BOOL
不可见
不需要
输入
启用输入。梯形图。对应于梯级输入条件。
默认值为真。
Inp_InitializeReq
BOOL
不可见
不需要
输入
1 = 请求初始化指令。指令通常在首次运行时进行初始化。需要重新初始化时使用此请求。该指令自动清除该操作数。
默认值为真。
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 = 释放外部。
默认值为 0。
Inp_PermOK
BOOL
可见
不需要
输入
1 = 启动许可正常 (OK),组可以启动。
默认值为真。
Inp_NBPermOK
BOOL
可见
不需要
输入
1 = 不可绕过启动许可正常 (OK),组可以启动。
默认值为真。
Inp_IntlkOK
BOOL
可见
不需要
输入
1 = 互锁正常 (OK),组可以启动/运行。
默认值为真。
Inp_NBIntlkOK
BOOL
可见
不需要
输入
1 = 不可绕过互锁正常 (OK),组可以启动/运行。
默认值为真。
Inp_IntlkAvailable
BOOL
可见
不需要
输入
1 = 互锁可用性正常 (OK)。
默认值为假。
Inp_IntlkTripInh
BOOL
可见
不需要
输入
1 = 禁用互锁脱扣状态。
默认值为假。
Inp_RdyReset
BOOL
可见
不需要
输入
1 = 通过该对象重置的相关对象已准备好重置。
默认值为假。
Inp_Hand
BOOL
不可见
不需要
输入
控制/命令源选择。
默认值为假。
Inp_Ovrd
BOOL
不可见
不需要
输入
控制/命令源选择。
默认值为假。
Inp_OvrdDemand
DINT
可见
不需要
输入
电机运行数量的覆盖模式设置 (MinDemand..MaxDemand)。
默认值为 0。
Inp_OvrdCmd
DINT
可见
不需要
输入
覆盖模式命令:0 = 无,1 = 停止组,2 = 启动组,3 = 轮换分配。
默认值为 0。
Inp_ExtInh
BOOL
可见
不需要
输入
控制/命令源选择。
默认值为假。
Inp_Reset
BOOL
不可见
不需要
输入
1 = 重置所有故障条件和锁定的报警。
默认值为假。
Cfg_AllowDisable
BOOL
不可见
不需要
输入
1 = 允许维护人员禁用报警。
默认值为真。
Cfg_AllowShelve
BOOL
不可见
不需要
输入
1 = 允许操作员延迟报警。
默认值为真。
Cfg_NumMotors
DINT
不可见
不需要
输入
此超前/滞后/备用组中的电机数量。有效值 = 2 至 30。
默认值为 3。
Cfg_MaxDemand
DINT
不可见
不需要
输入
待运行的电机最大数量。有效值 = 1 到 Cfg_NumMotors。
默认值为 2。
Cfg_MinDemand
DINT
不可见
不需要
输入
待运行的电机最小数量。有效值 = 0 到 Cfg_MaxDemand。
默认值为 0。
Cfg_StartDly
REAL
不可见
不需要
输入
启动或停止后到允许下一次启动的时间(秒)(0..2M 秒)。有效值 = 0.0 至 2147483.0。
默认值为 10.0。
Cfg_StopDly
REAL
不可见
不需要
输入
启动或停止后到允许下一次停止的时间(秒)(0..2M 秒)。有效值 = 0.0 至 2147483.0。
默认值为 10.0。
Cfg_FirstOnFirstOff
BOOL
不可见
不需要
输入
1 =先启动先停止,0 = 先启动后停止。
默认值为假。
Cfg_AllowRotate
BOOL
不可见
不需要
输入
1 = 允许轮换(循环超前电机)命令轮换电机分配。
默认值为真。
Cfg_RotateOnStop
BOOL
不可见
不需要
输入
1 = 停止所有电机时轮换(将超前电机循环到列表末尾)。
默认值为真。
Cfg_HasPermObj
BOOL
不可见
不需要
输入
1 = 通知 HMI 已将对象连接到许可输入。
默认值为假。
Cfg_HasIntlkObj
BOOL
不可见
不需要
输入
1 = 通知 HMI 已将对象连接到互锁输入。
默认值为假。
Cfg_HasMoreObj
BOOL
不可见
不需要
输入
1 = 通知 HMI 可使用包含更多信息的对象。
默认值为假。
Cfg_HasNav01
BOOL
不可见
不需要
输入
1 = 启用 HMI 上的按钮,该按钮用于调用电机 #1 的面板。
默认值为假。
Cfg_HasNav02
BOOL
不可见
不需要
输入
1 = 启用 HMI 上的按钮,该按钮用于调用电机 #2 的面板。
默认值为假。
Cfg_HasNav03
BOOL
不可见
不需要
输入
1 = 启用 HMI 上的按钮,该按钮用于调用电机 #3 的面板。
默认值为假。
Cfg_HasNav04
BOOL
不可见
不需要
输入
1 = 启用 HMI 上的按钮,该按钮用于调用电机 #4 的面板。
默认值为假。
Cfg_HasNav05
BOOL
不可见
不需要
输入
1 = 启用 HMI 上的按钮,该按钮用于调用电机 #5 的面板。
默认值为假。
Cfg_HasNav06
BOOL
不可见
不需要
输入
1 = 启用 HMI 上的按钮,该按钮用于调用电机 #6 的面板。
默认值为假。
Cfg_HasNav07
BOOL
不可见
不需要
输入
1 = 启用 HMI 上的按钮,该按钮用于调用电机 #7 的面板。
默认值为假。
Cfg_HasNav08
BOOL
不可见
不需要
输入
1 = 启用 HMI 上的按钮,该按钮用于调用电机 #8 的面板。
默认值为假。
Cfg_HasNav09
BOOL
不可见
不需要
输入
1 = 启用 HMI 上的按钮,该按钮用于调用电机 #9 的面板。
默认值为假。
Cfg_HasNav10
BOOL
不可见
不需要
输入
1 = 启用 HMI 上的按钮,该按钮用于调用电机 #10 的面板。
默认值为假。
Cfg_HasNav11
BOOL
不可见
不需要
输入
1 = 启用 HMI 上的按钮,该按钮用于调用电机 #11 的面板。
默认值为假。
Cfg_HasNav12
BOOL
不可见
不需要
输入
1 = 启用 HMI 上的按钮,该按钮用于调用电机 #12 的面板。
默认值为假。
Cfg_HasNav13
BOOL
不可见
不需要
输入
1 = 启用 HMI 上的按钮,该按钮用于调用电机 #13 的面板。
默认值为假。
Cfg_HasNav14
BOOL
不可见
不需要
输入
1 = 启用 HMI 上的按钮,该按钮用于调用电机 #14 的面板。
默认值为假。
Cfg_HasNav15
BOOL
不可见
不需要
输入
1 = 启用 HMI 上的按钮,该按钮用于调用电机 #15 的面板。
默认值为假。
Cfg_HasNav16
BOOL
不可见
不需要
输入
1 = 启用 HMI 上的按钮,该按钮用于调用电机 #16 的面板。
默认值为假。
Cfg_HasNav17
BOOL
不可见
不需要
输入
1 = 启用 HMI 上的按钮,该按钮用于调用电机 #17 的面板。
默认值为假。
Cfg_HasNav18
BOOL
不可见
不需要
输入
1 = 启用 HMI 上的按钮,该按钮用于调用电机 #18 的面板。
默认值为假。
Cfg_HasNav19
BOOL
不可见
不需要
输入
1 = 启用 HMI 上的按钮,该按钮用于调用电机 #19 的面板。
默认值为假。
Cfg_HasNav20
BOOL
不可见
不需要
输入
1 = 启用 HMI 上的按钮,该按钮用于调用电机 #20 的面板。
默认值为假。
Cfg_HasNav21
BOOL
不可见
不需要
输入
1 = 启用 HMI 上的按钮,该按钮用于调用电机 #21 的面板。
默认值为假。
Cfg_HasNav22
BOOL
不可见
不需要
输入
1 = 启用 HMI 上的按钮,该按钮用于调用电机 #22 的面板。
默认值为假。
Cfg_HasNav23
BOOL
不可见
不需要
输入
1 = 启用 HMI 上的按钮,该按钮用于调用电机 #23 的面板。
默认值为假。
Cfg_HasNav24
BOOL
不可见
不需要
输入
1 = 启用 HMI 上的按钮,该按钮用于调用电机 #24 的面板。
默认值为假。
Cfg_HasNav25
BOOL
不可见
不需要
输入
1 = 启用 HMI 上的按钮,该按钮用于调用电机 #25 的面板。
默认值为假。
Cfg_HasNav26
BOOL
不可见
不需要
输入
1 = 启用 HMI 上的按钮,该按钮用于调用电机 #26 的面板。
默认值为假。
Cfg_HasNav27
BOOL
不可见
不需要
输入
1 = 启用 HMI 上的按钮,该按钮用于调用电机 #27 的面板。
默认值为假。
Cfg_HasNav28
BOOL
不可见
不需要
输入
1 = 启用 HMI 上的按钮,该按钮用于调用电机 #28 的面板。
默认值为假。
Cfg_HasNav29
BOOL
不可见
不需要
输入
1 = 启用 HMI 上的按钮,该按钮用于调用电机 #29 的面板。
默认值为假。
Cfg_HasNav30
BOOL
不可见
不需要
输入
1 = 启用 HMI 上的按钮,该按钮用于调用电机 #30 的面板。
默认值为假。
Cfg_SetTrack
BOOL
不可见
不需要
输入
1 = 当宿主为程序时,操作符设置跟踪程序设置。当宿主为“操作符”时,程序设置会跟踪操作员设置,虚拟输入与输出值匹配(转换无干扰),0 = 不跟踪。
默认值为假。
Cfg_SetTrackOvrdHand
BOOL
不可见
不需要
输入
1 = 程序/操作员设置跟踪覆盖/手控速度参考。
默认值为假。
Cfg_OperStopPrio
BOOL
不可见
不需要
输入
1 = OCmd_Stop 随时执行,0 = OCmd_Stop 只有在选择了操作符时执行。
默认值为假。
Cfg_ExtStopPrio
BOOL
不可见
不需要
输入
1 = XCmd_Stop 随时执行,0 = XCmd_Stop 只有在选择了外部时执行。
默认值为假。
Cfg_OCmdResets
BOOL
不可见
不需要
输入
1 = 新组 OCmd 重置已去除锁定和已清除报警;0 = 需要 OCmdReset。
默认值为假。
Cfg_XCmdResets
BOOL
不可见
不需要
输入
1 = 新组 XCmd 重置已去除锁定和已清除报警;0 = 需要 OCmdReset。
默认值为假。
Cfg_OvrdPermIntlk
BOOL
不可见
不需要
输入
1 = 覆盖忽略可绕过的许可/互锁,0 = 始终使用许可/互锁。
默认值为假。
Cfg_CnfrmReqd
SINT
不可见
不需要
输入
需要操作员确认命令。表示需要命令确认的类型。
0 = 无,
1 = 需要命令确认,
2 = 需要执行者电子签名,
3 = 需要执行者和审批者电子签名。
默认值为 0。
PSet_Demand
DINT
不可见
不需要
输入
电机运行数量的程序设置 (MinDemand...MaxDemand)。
默认值为 0。
PSet_Owner
DINT
不可见
不需要
输入
程序宿主请求 ID(非零)或释放(零)。
默认值为 0。
XSet_Demand
DINT
不可见
不需要
输入
电机运行数量的外部设置 (MinDemand...MaxDemand)。
默认值为 0。
PCmd_Start
BOOL
不可见
不需要
输入
用于启动电机组的程序命令。
默认值为假。
PCmd_Stop
BOOL
不可见
不需要
输入
用于停止电机组的程序命令。
默认值为假。
PCmd_Rotate
BOOL
不可见
不需要
输入
用于轮换分配的程序命令(循环超前至列表末尾)。
默认值为假。
PCmd_Prog
BOOL
不可见
不需要
输入
控制/命令源选择。
默认值为假。
PCmd_Oper
BOOL
不可见
不需要
输入
控制/命令源选择。
默认值为假。
PCmd_Lock
BOOL
不可见
不需要
输入
控制/命令源选择。
默认值为假。
PCmd_Unlock
BOOL
不可见
不需要
输入
控制/命令源选择。
默认值为假。
PCmd_Normal
BOOL
不可见
不需要
输入
控制/命令源选择。
默认值为假。
PCmd_Reset
BOOL
不可见
不需要
输入
用于重置需要重置的所有报警的程序命令。
默认值为假。
XCmd_Start
BOOL
不可见
不需要
输入
用于启动电机组的外部命令。
默认值为假。
XCmd_Stop
BOOL
不可见
不需要
输入
用于停止电机组的外部命令。
默认值为假。
XCmd_Rotate
BOOL
不可见
不需要
输入
用于轮换分配的外部命令(循环超前至列表末尾)。
默认值为假。
XCmd_Reset
BOOL
不可见
不需要
输入
用于重置需要重置的所有报警的外部命令。该指令自动清除该操作数。
默认值为假。
XCmd_ResetAckAll
BOOL
不可见
不需要
输入
用于确认和重置所有报警和锁定去除条件的外部命令。该指令自动清除该操作数。
默认值为假。
Cfg_HasOper
BOOL
不可见
不需要
输入
控制/命令源选择。
默认值为真。
Cfg_HasOperLocked
BOOL
不可见
不需要
输入
控制/命令源选择。
默认值为真。
Cfg_HasProg
BOOL
不可见
不需要
输入
控制/命令源选择。
默认值为真。
Cfg_HasProgLocked
BOOL
不可见
不需要
输入
控制/命令源选择。
默认值为真。
Cfg_HasExt
BOOL
不可见
不需要
输入
控制/命令源选择。
默认值为假。
Cfg_HasMaint
BOOL
不可见
不需要
输入
控制/命令源选择。
默认值为真。
Cfg_HasMaintOoS
BOOL
不可见
不需要
输入
控制/命令源选择。
默认值为真。
Cfg_OvrdOverLock
BOOL
不可见
不需要
输入
控制/命令源选择。
默认值为真。
Cfg_ExtOverLock
BOOL
不可见
不需要
输入
控制/命令源选择。
默认值为假。
Cfg_ProgPwrUp
BOOL
不可见
不需要
输入
控制/命令源选择。
默认值为假。
Cfg_ProgNormal
BOOL
不可见
不需要
输入
控制/命令源选择。
默认值为假。
Cfg_PCmdPriority
BOOL
不可见
不需要
输入
控制/命令源选择。
默认值为假。
Cfg_PCmdProgAsLevel
BOOL
不可见
不需要
输入
控制/命令源选择。
默认值为假。
Cfg_PCmdLockAsLevel
BOOL
不可见
不需要
输入
控制/命令源选择。
默认值为假。
Cfg_ExtAcqAsLevel
BOOL
不可见
不需要
输入
控制/命令源选择。
默认值为假。
XCmd_Acq
BOOL
不可见
不需要
输入
控制/命令源选择。
默认值为假。
XCmd_Rel
BOOL
不可见
不需要
输入
控制/命令源选择。
默认值为假。
公共输出成员
数据类型
FBD 默认可见性
需要 FBD 接线
用途
说明
EnableOut
BOOL
不可见
不需要
输出
启用输出。此输出状态始终反映 EnableIn 输入状态。
Val_Demand
DINT
可见
不需要
输出
请求运行的电机数量。
Val_RotateRank
DINT
不可见
不需要
输出
轮换时将降级的电机等级(0 = 超前等)。
Val_RotateID
DINT
不可见
不需要
输出
轮换时将降级的电机数。
Sts_eCmd
SINT
不可见
不需要
输出
组命令 0 = 无,1 = 停止,2 = 启动。
Sts_Fdbk
SINT
不可见
不需要
输出
组反馈 0...31 = 实际运行的电机数量。
Sts_eSts
INT
不可见
不需要
输出
组确认状态:0 = ?,
1 = 已停止,
2 = 正在运行,
3 = 正在停止,
4 = 正在减少,
5 = 正在增加。
Sts_eFault
INT
不可见
不需要
输出
组故障状态:
0 = 无,
1 = 配置错误,
12 = 启动失败,
13 = 停止失败。
Sts_eNotifyAll
SINT
不可见
不需要
输出
该对象 + 电机(枚举)的最高报警优先级和确认状态。
Sts_Initialized
BOOL
不可见
不需要
输出
1 = 指令已初始化。使用 Inp_InitializeReq 重新初始化。
Sts_Stopped
BOOL
可见
不需要
输出
1 = 电机组请求停止,并且所有电机确认已停止。
Sts_Running
BOOL
可见
不需要
输出
1 = 电机组请求运行。
Sts_Stopping
BOOL
可见
不需要
输出
1 = 电机组请求停止,并非所有电机确认已停止。
Sts_Incr
BOOL
可见
不需要
输出
1 = 组按要求的顺序启动电机。
Sts_Decr
BOOL
可见
不需要
输出
1 = 组按要求的顺序停止电机。
Sts_Available
BOOL
不可见
不需要
输出
1 = 组可用于自动化控制(程序)。
Sts_IntlkAvailable
BOOL
不可见
不需要
输出
1 = 设备可以通过程序获取,并且在互锁正常 (OK) 时可用于启动/停止控制。
Sts_Bypass
BOOL
不可见
不需要
输出
1 = 已绕过可绕过的互锁和许可。
Sts_BypActive
BOOL
不可见
不需要
输出
1 = 互锁绕过处于活动状态(已绕过或维护中)。
Sts_NotRdy
BOOL
不可见
不需要
输出
1 = 组未就绪,对于 HMI,请使用隐藏的明细位 (Sts_Nrdyxxx) 查找原因。
Sts_NrdyCfgErr
BOOL
不可见
不需要
输出
1 = 组未就绪:配置错误。
Sts_NrdyIntlk
BOOL
不可见
不需要
输出
1 = 组未就绪:互锁不正常 (OK)。
Sts_NrdyOoS
BOOL
不可见
不需要
输出
1 = 组未就绪:组停用。
Sts_NrdyPrioStop
BOOL
不可见
不需要
输出
1 = 组未就绪:操作员/外部优先级停止需要重置。
Sts_NrdyPerm
BOOL
不可见
不需要
输出
1 = 组未就绪:许可不正常 (OK)。
Sts_MaintByp
BOOL
不可见
不需要
输出
1 = 维护绕过功能处于活动状态。
Sts_Alm
BOOL
不可见
不需要
输出
1 = 报警处于活动状态。
Sts_AlmInh
BOOL
不可见
不需要
输出
1 = 一个或多个报警被延迟、禁用或抑制。
Sts_Err
BOOL
可见
不需要
输出
1 = 配置出错:请参阅明细位 (Sts_Errxxx) 以查找原因。
Sts_ErrStartDly
BOOL
不可见
不需要
输出
1 = 配置出错:启动检查计时器预设值(使用 0.0 到 2147483.0)。
Sts_ErrStopDly
BOOL
不可见
不需要
输出
1 = 配置出错:停止检查计时器预设值(使用 0.0 到 2147483.0)。
Sts_ErrAlm
BOOL
不可见
不需要
输出
1 = 配置出错:报警节流阀时间或严重性。
Val_Owner
DINT
不可见
不需要
输出
当前对象宿主 ID(0 = 未拥有)。
Sts_MotorAvailable
DINT
不可见
不需要
输出
设置位指示哪些电机可用于程序控制。
Sts_MotorStopped
DINT
不可见
不需要
输出
设置位指示哪些电机确认已停止。
Sts_MotorStarting
DINT
不可见
不需要
输出
设置位指示哪些电机正在启动。
Sts_MotorRunning
DINT
不可见
不需要
输出
设置位指示哪些电机确认正在运行。
Sts_MotorStopping
DINT
不可见
不需要
输出
设置位指示哪些电机确认已停止。
Sts_Hand
BOOL
可见
不需要
输出
控制/命令源选择。
Sts_OoS
BOOL
可见
不需要
输出
控制/命令源选择。
Sts_Maint
BOOL
可见
不需要
输出
控制/命令源选择。
Sts_Ovrd
BOOL
可见
不需要
输出
控制/命令源选择。
Sts_Ext
BOOL
可见
不需要
输出
控制/命令源选择。
Sts_Prog
BOOL
可见
不需要
输出
控制/命令源选择。
Sts_ProgLocked
BOOL
不可见
不需要
输出
控制/命令源选择。
Sts_Oper
BOOL
可见
不需要
输出
控制/命令源选择。
Sts_OperLocked
BOOL
不可见
不需要
输出
控制/命令源选择。
Sts_Normal
BOOL
不可见
不需要
输出
控制/命令源选择。
Sts_ExtReqInh
BOOL
不可见
不需要
输出
控制/命令源选择。
Sts_ProgReqInh
BOOL
不可见
不需要
输出
控制/命令源选择。
Sts_MAcqRcvd
BOOL
不可见
不需要
输出
控制/命令源选择。
Sts_CantStart
BOOL
不可见
不需要
输出
1 = 电机启动失败(单触发)。
Sts_CantStop
BOOL
不可见
不需要
输出
1 = 电机停止失败。
Sts_IntlkTrip
BOOL
不可见
不需要
输出
1 = 组已停止,互锁不正常 (NOT OK)(单触发)。
Sts_RdyReset
BOOL
不可见
不需要
输出
1 = 锁定的报警或解除条件待重置。
Sts_RdyAck
BOOL
不可见
不需要
输出
1 = 报警待确认。
Sts_UnackAlmCount
DINT
不可见
不需要
输出
未确认报警计数。
Out_Reset
BOOL
不可见
不需要
输出
1 = 已收到并接受重置命令。
Out_OwnerSts
DINT
不可见
不需要
输出
命令源状态、宿主命令握手和就绪状态。0 = 无,
.10 = 操作员锁定,
.11 = 操作员解锁,
.12 = 程序锁定,
.13 = 程序解锁,
.14 = 获取维护,
.15 = 释放维护,
.16 = 获取外部,
.17 = 释放外部,
.18 = 具有维护,
.19 = 外部覆盖锁定,
.20 = 具有外部,
.21 = 具有操作员,
.22 = 具有程序,
.30 = 未就绪。
Sts_eSrc
INT
不可见
不需要
输出
当前命令源枚举值:
0 = 未使用逻辑,
4 = 手控,
8 = 维护,
16 = 覆盖,
32 = 程序,
33 = 程序已锁定,
34 = 程序默认值(正常),
64 = 操作员,
65 = 操作员已锁定,
66 = 操作员默认值(正常),
128 = 维护停用,
129 = 程序停用(梯级为假),
256 = 外部。
Sts_bSrc
INT
不可见
不需要
输出
控制/命令源选择。
Sts_ProgOperSel
BOOL
不可见
不需要
输出
控制/命令源选择。
Sts_ProgOperLock
BOOL
可见
不需要
输出
控制/命令源选择。
XRdy_Acq
BOOL
不可见
不需要
输出
控制/命令源选择。
XRdy_Rel
BOOL
不可见
不需要
输出
控制/命令源选择。
XRdy_Reset
BOOL
不可见
不需要
输出
1 = XCmd_Reset 就绪,启用 HMI 按钮。
XRdy_ResetAckAll
BOOL
不可见
不需要
输出
1 = XCmd_ResetAckAll 就绪,启用 HMI 按钮。
XRdy_Stop
BOOL
不可见
不需要
输出
1 = XCmd_Stop 就绪,启用 HMI 按钮。
XRdy_Start
BOOL
不可见
不需要
输出
1 = XCmd_Start 就绪,启用 HMI 按钮。
XRdy_Rotate
BOOL
不可见
不需要
输出
1 = XCmd_Rotate 就绪,启用 HMI 按钮。
专用输入成员
数据类型
说明
CmdSrc
P_COMMAND_SOURCE
控制或命令源选择。
MCmd_Acq
BOOL
用于获取所有权(操作员/程序/外部/覆盖到维护)的维护命令。该指令自动清除该操作数。
默认值为假。
MCmd_Bypass
BOOL
用于绕过所有可绕过的互锁和许可的维护命令。
默认值为假。
MCmd_Check
BOOL
用于检查(而不是绕过)所有互锁和许可的维护命令。
默认值为假。
MCmd_IS
BOOL
用于选择“服务中”的维护命令。该指令自动清除该操作数。
默认值为假。
MCmd_OoS
BOOL
用于选择“停用”的维护命令。该指令自动清除该操作数。
默认值为假。
MCmd_Rel
BOOL
用于释放所有权(维护到操作员/程序/外部/覆盖)的维护命令。该指令自动清除该操作数。
默认值为假。
MSet_MotorOoS
DINT
设置位指示维护已停用哪些电机。
默认值为 2#0000_0000_0000_0000_0000_0000_0000_0000。
OCmd_CmdCncl
BOOL
用于取消命令请求的操作员命令。该指令自动清除该操作数。
默认值为假。
OCmd_Lock
BOOL
用于锁定操作员的操作员命令(不允许程序)。该指令自动清除该操作数。
默认值为假。
OCmd_Normal
BOOL
用于选择正常(操作员或程序)的操作员命令。该指令自动清除该操作数。
默认值为假。
OCmd_Oper
BOOL
用于选择操作员(程序到操作员)的操作员命令。该指令自动清除该操作数。
默认值为假。
OCmd_Prog
BOOL
用于选择程序(操作员到程序)的操作员命令。该指令自动清除该操作数。
默认值为假。
OCmd_Reset
BOOL
用于重置需要重置的所有报警的操作员命令。
默认值为假。
OCmd_ResetAckAll
BOOL
用于重置所有报警和锁定去除条件的操作员命令。
默认值为假。
OCmd_ResetPrefs
BOOL
用于将所有电机首选项重置为 0 的操作员命令。
默认值为假。
OCmd_Rotate
BOOL
用于轮换分配的操作员命令(将超前电机循环到列表末尾)。
默认值为假。
OCmd_SetPrefs
BOOL
用于设置电机首选项的操作员命令。
默认值为假。
OCmd_Start
BOOL
用于启动电机组的操作员命令。
默认值为假。
OCmd_Stop
BOOL
用于停止电机组的操作员命令。
默认值为假。
OCmd_Unlock
BOOL
用于解锁/释放(允许程序获取)所有权的操作员命令。该指令自动清除该操作数。
默认值为假。
OSet_Demand
DINT
电机运行数量的操作员设置 (MinDemand..MaxDemand)。
默认值为 0。
专用输出成员
数据类型
说明
HMI_BusObjIndex
DINT
HMI 总线对象索引。
默认值为 0。
MRdy_Acq
BOOL
1 = MCmd_Acq 就绪,启用 HMI 按钮。
MRdy_Bypass
BOOL
1 = MCmd_Bypass 就绪(启用 HMI 按钮)。
MRdy_Check
BOOL
1 = MCmd_Check 就绪(启用 HMI 按钮)。
MRdy_IS
BOOL
1 = MCmd_IS 就绪,启用 HMI 按钮。
MRdy_OoS
BOOL
1 = MCmd_OoS 就绪,启用 HMI 按钮。
MRdy_Rel
BOOL
1 = MCmd_Rel 就绪,启用 HMI 按钮。
ORdy_Demand
BOOL
1 = OSet_Demand 就绪(启用数字输入)。
ORdy_Lock
BOOL
1 = OCmd_Lock 就绪,启用 HMI 按钮。
ORdy_Normal
BOOL
1 = OCmd_Normal 就绪,启用 HMI 按钮。
ORdy_Oper
BOOL
1 = OCmd_Oper 就绪,启用 HMI 按钮。
ORdy_Prog
BOOL
1 = OCmd_Prog 就绪,启用 HMI 按钮。
ORdy_Reset
BOOL
1 = OCmd_Reset 就绪(启用 HMI 按钮)。
ORdy_ResetAckAll
BOOL
1 = OCmd_ResetAckAll 就绪(启用 HMI 按钮)。
ORdy_Rotate
BOOL
1 = OCmd_Rotate 就绪(启用 HMI 按钮)。
ORdy_Start
BOOL
1 = OCmd_Start 就绪(启用 HMI 按钮)。
ORdy_Stop
BOOL
1 = OCmd_Stop 就绪(启用 HMI 按钮)。
ORdy_Unlock
BOOL
1 = OCmd_Unlock 就绪,启用 HMI 按钮。
Sts_bStsList
SINT[32]
电机状态的排级列表:
[0] = 超前,
[1] = 滞后等;
.0 = 可用,
.1 = 已停止,
.2 = 正在启动,
.3 = 正在运行,
.4 = 正在停止,
.5 = 停用 (Maint)。
Sts_eNotify
SINT
当前报警级别和确认(枚举)。
Sts_eNotifyCantStart
SINT
当前报警级别和确认(枚举)。
Sts_eNotifyCantStop
SINT
当前报警级别和确认(枚举)。
Sts_eNotifyIntlkTrip
SINT
当前报警级别和确认(枚举)。
Val_PrefList
SINT[32]
电机首选项的排级列表:[0] = 超前,[1] = 滞后等...
Val_PrioList
SINT[32]
电机优先级的排级列表:[0] = 超前,[1] = 滞后等...
Val_RankList
SINT[32]
电机编号的排级列表:[0] = 超前,[1] = 滞后等...
Val_UsrList
INT[32]
用户排序条件的排级列表:[0] = 超前,[1] = 滞后等...
公共 InOut 成员
数据类型
FBD 默认可见性
需要 FBD 接线
用途
说明
Ref_Motors
P_LEAD_LAG_STANDBY_MOTOR[30]
可见
必需
InOut
电机接口数组(链接到 2 至 30 个电机)。
BusObj
BUS_OBJ
可见
可选
InOut
总线组件。
报警
为以下成员定义基于离散标签的报警。
成员
报警名称
说明
Sts_CantStart
Alm_CantStart
电机无法启动报警。
当没有足够的电机可供启动以满足输入的要求时引发。在程序之外的模式下,发生故障或停止的电机过多。
Sts_CantStop
Alm_CantStop
电机无法停止报警。
当没有足够的电机可供停止以满足输入的要求时引发。在程序之外的模式下,正在运行的电机过多。
Sts_IntlkTrip
Alm_IntlkTrip
互锁脱扣报警。
当电机正在运行且互锁非正常 (OK) 状况导致电机停止时引发。
如果互锁未被绕过,则可绕过互锁或不可绕过互锁的非正常 (OK) 状态将引发互锁脱扣。如果互锁被绕过,则只有不可绕过互锁非正常 (OK) 状态将引发互锁脱扣。
将报警标记为已使用或未使用,并设置基于离散标签的报警的标准配置成员。使用此格式访问报警元素:
Tag.@Alarms.AlarmName.AlarmElement
每个报警都有程序命令可用于确认、抑制、取消抑制和取消延迟报警。这些命令将传播到基于标签的报警的相应命令(ProgAck、ProgSuppress、ProgUnsupress、ProgUnshelve)。
提供程序、操作员和外部命令,用于同时确认、重置、抑制和解除抑制指令的所有报警(报警集)。
PLLS_alarmfunction
操作
下图展示了 PLLS 指令的功能:
PLLS_Operation_v34
HMI 字符串配置
配置 HMI 面板 (
FactoryTalk View
) 和
Logix Designer
配置对话框的字符串。字符串将设置为标签项的扩展属性。
  • 说明
  • 图形符号的标签
  • 用于 HMI 面板调用的显示库
  • 指令名称
  • 区域名称
  • URL 链接
  • 更多信息
实现
操作员或其他逻辑决定了对电机的需求。PLLS 指令确定要运行哪些电机以满足需求。要使 PLLS 指令启动和停止组中的电机,这些电机必须可用。当电机无故障且处于程序模式时可用。
PLLS 指令使用排序算法处理不可用的电机。如果电机正在运行且不可用(可能在操作员模式下运行),电机将被强制到排序顶部。如果电机已停止且不可用(可能出现故障),电机将被强制到排序底部。可启动和停止的电机可根据需要进行控制。如果因电机不可用而无法满足需求,则会提供状态/报警。
PLLS 指令使用类型为 P_LEAD_LAG_STANDBY_Motor 的结构数组来连接电机。数组中的每个接口元素都提供了 PLLS 指令和一个电机之间所需的信号。此外,数组中还提供了电机的配置数据。此数据包括可用于影响电机排序的优先级和首选项值。此外还包括一个“维护停用”标志,用于将电机从排序中移除。该接口还包括一个用户排序值,该值可用于根据累积运行时或其他条件将电机排序上移或下移。
P_LEAD_LAG_STANDBY_MOTOR 数组成员内容
下表介绍了数组成员。
成员
数据类型
说明
Inp_OtherSel
DINT
其他电机选择条件 (0...255)(PLLS 输入)。
Inp_Demote
BOOL
将此电机降级到列表底部(例如,在高运行时)(PLLS 输入)。
Cfg_Prio
DINT
列表中的电机优先级(0...31 -- 如果未使用,则设置为 0)。
OSet_Pref
DINT
列表中电机首选项的操作员设置(0 到 31),所有其他均相等。
PCmd_Start
BOOL
用于启动电机的程序命令(PLLS 输出)。
PCmd_Stop
BOOL
用于停止电机的程序命令(PLLS 输出)。
PCmd_Lock
BOOL
用于在程序中获取和锁定电机的命令(PLLS 输出)。
PCmd_Unlock
BOOL
用于从程序解锁电机的命令(PLLS 的输出)。
Sts_Available
BOOL
电机处于程序模式且准备运行(PLLS 输入)。
Sts_Stopped
BOOL
电机当前已确认停止(PLLS 输入)。
Sts_Starting
BOOL
电机当前正在启动(PLLS 输入)。
Sts_Running
BOOL
电机当前已确认正在运行(PLLS 输入)。
Sts_Stopping
BOOL
电机当前正在停止(PLLS 输入)。
Val_Pref
DINT
此电机在列表中的当前首选项(1 = 超前,2 = 滞后,...)。
Val_Rank
DINT
此电机在列表中的当前排级(1 = 超前,2 = 滞后,...)
下图显示了 PLLS 指令、Ref_Motors(接口)和 PMTR 指令之间的关系。
PLLS_PMTR_relationship
这些图显示了为一个电机传输命令和电机状态的梯形图逻辑示例。
转发每个命令(PCmd_Lock、PCmd_Unlock、PCmd_Start 和 PCmd_Stop)的过程包括:
  • 测试接口中的相应位,查看该位是否已设置。
  • 如果该位已设置,则该位将清零,并设置电机上的相应程序命令。
PLLS_transfercommands1
  • 执行 PLLS 以选择要运行的电机。
PLLS_transfercommands2
  • 然后,执行电机逻辑。电机逻辑使用程序命令来控制物理电机。电机逻辑也从电机接收反馈。
PLLS_transfercommands3
  • 状态(可用、已停止、正在启动、正在运行和正在停止)从电机读取并写入接口。
PLLS_transfercommands4
监控 PLLS 指令
使用 PlantPAx 过程对象库中的操作员面板进行监控。
影响数学状态标志
编号
严重/轻微故障
没有特定于此指令的故障。请参见“数组索引编制”,了解关于数组索引故障的信息。
执行
梯形图
条件/状态
执行的操作
预扫描
放弃首次扫描前收到的任何命令。电机断电,并被视为已受控停止。
指令首次运行
放弃首次扫描前收到的任何命令。电机断电,并被视为已受控停止。
梯级输入条件为假
处理方式与通过命令禁用组时相同。电机输出断电,组在 HMI 上显示为禁用状态。该模式显示为“无”模式。将清除所有报警。
梯级输入条件为真
将梯级输出条件设置为梯级输入条件。
指令执行。
后扫描
梯级输出条件设置为假。
功能块图
条件/状态
执行的操作
预扫描
放弃首次扫描前收到的任何命令。电机断电,并被视为已受控停止。
指令首次运行
放弃首次扫描前收到的任何命令。电机断电,并被视为已受控停止。
指令首次扫描
请参阅“功能块图”表中的“指令首次运行”行。
EnableIn 为假
处理方式与通过命令禁用组时相同。电机输出断电,组在 HMI 上显示为禁用状态。该模式显示为“无”模式。将清除所有报警。
EnableIn 为真
EnableOut 设置为真。
指令执行。
后扫描
EnableIn 和 EnableOut 位设置为假。
结构化文本
在结构化文本中,EnableIn 在普通扫描期间始终为真。因此,如果指令处于由逻辑激活的控制路径中,指令将会执行。
条件/状态
执行的操作
预扫描
放弃首次扫描前收到的任何命令。电机断电,并被视为已受控停止。
指令首次运行
放弃首次扫描前收到的任何命令。电机断电,并被视为已受控停止。
EnableIn 为真
EnableOut 设置为真。
指令执行。
后扫描
EnableIn 和 EnableOut 位设置为假。
示例
该示例显示了用于控制三个过程电机的 PLLS 指令。
梯形图
PLLS_LadderEx1
PLLS_LadderEx4 PLLS_LadderEx2
PLLS_LadderEx3
PLLS_LadderEx5
PLLS_LadderEx6
功能块图
The PLLS instruction requires four function block diagram routines to execute properly:
  • PLLS_FBD_1_Motors routine
  • PLLS_FBD_2_PLLS
  • PLLS_FBD_3_ForwardCmds
  • PLLS_FBD_4_ClearCmds
PLLS_FBDex1
PLLS_FBD_1_Motors routine:
PLLS_FBD1MotorsEx_1
PLLS_FBD1MotorsEx_2
PLLS_FBD1MotorsEx_3
PLLS_FBD_2_PLLS routine:
PLLS_FBD2Ex_1
PLLS_FBD_3_ForwardCmds routine:
PLLS_FBD3Ex_1
PLLS_FBD3Ex_2
PLLS_FBD3Ex_3
PLLS_FBD_4_ClearCmds routine:
PLLS_FBD4Ex_1
PLLS_FBD4Ex_2
PLLS_FBD4Ex_3
结构化文本
/* First, execute the individual motors */
/* Execute the Motor 01 logic: get run feedback input, execute PMTR, send output to starter */
MyNG_PLLS_Motor01.Inp_1RunFdbkData := Motor01_RunFdbk;
PMTR (MyNG_PLLS_Motor01, 0, 0, 0, 0, 0);
Motor01_Starter := MyNG_PLLS_Motor01.Out_Run1Data;
/* Execute the Motor 02 logic: get run feedback input, execute PMTR, send output to starter */
MyNG_PLLS_Motor02.Inp_1RunFdbkData := Motor02_RunFdbk;
PMTR (MyNG_PLLS_Motor02, 0, 0, 0, 0, 0);
Motor02_Starter := MyNG_PLLS_Motor02.Out_Run1Data;
/* Execute the Motor 03 logic: get run feedback input, execute PMTR, send output to starter */
MyNG_PLLS_Motor03.Inp_1RunFdbkData := Motor03_RunFdbk;
PMTR (MyNG_PLLS_Motor03, 0, 0, 0, 0, 0);
Motor03_Starter := MyNG_PLLS_Motor03.Out_Run1Data;
/* Copy the Motor 01 Status to the PLLS array [0] */
MyNG_PLLS_Motors[0].Sts_Available := MyNG_PLLS_Motor01.Sts_Available;
MyNG_PLLS_Motors[0].Sts_Stopped := MyNG_PLLS_Motor01.Sts_Stopped;
MyNG_PLLS_Motors[0].Sts_Starting := MyNG_PLLS_Motor01.Sts_Starting1;
MyNG_PLLS_Motors[0].Sts_Running := MyNG_PLLS_Motor01.Sts_Running1;
MyNG_PLLS_Motors[0].Sts_Stopping := MyNG_PLLS_Motor01.Sts_Stopping;
/* Copy the Motor 02 Status to the PLLS array [1] */
MyNG_PLLS_Motors[1].Sts_Available := MyNG_PLLS_Motor02.Sts_Available;
MyNG_PLLS_Motors[1].Sts_Stopped := MyNG_PLLS_Motor02.Sts_Stopped;
MyNG_PLLS_Motors[1].Sts_Starting := MyNG_PLLS_Motor02.Sts_Starting1;
MyNG_PLLS_Motors[1].Sts_Running := MyNG_PLLS_Motor02.Sts_Running1;
MyNG_PLLS_Motors[1].Sts_Stopping := MyNG_PLLS_Motor02.Sts_Stopping;
/* Copy the Motor 03 Status to the PLLS array [2] */
MyNG_PLLS_Motors[2].Sts_Available := MyNG_PLLS_Motor03.Sts_Available;
MyNG_PLLS_Motors[2].Sts_Stopped := MyNG_PLLS_Motor03.Sts_Stopped;
MyNG_PLLS_Motors[2].Sts_Starting := MyNG_PLLS_Motor03.Sts_Starting1;
MyNG_PLLS_Motors[2].Sts_Running := MyNG_PLLS_Motor03.Sts_Running1;
MyNG_PLLS_Motors[2].Sts_Stopping := MyNG_PLLS_Motor03.Sts_Stopping;
/* Now execute the Lead / Lag / Standby instruction */
PLLS (MyNG_PLLS, MyNG_PLLS_Motors, 0);
/* Now take the commands coming out of PLLS and forward them to the PMTR instances */
/* Program commands to Motor 01: */
/* Forward the Program Lock command: */
if (MyNG_PLLS_Motors[0].PCmd_Lock)
则:
MyNG_PLLS_Motors[0].PCmd_Lock := 0;
MyNG_PLLS_Motor01.PCmd_Lock := 1;
end_if;
/* Forward the Program Unlock command: */
if (MyNG_PLLS_Motors[0].PCmd_Unlock)
则:
MyNG_PLLS_Motors[0].PCmd_Unlock := 0;
MyNG_PLLS_Motor01.PCmd_Unlock := 1;
end_if;
/* Forward the Program Start command: */
if (MyNG_PLLS_Motors[0].PCmd_Start)
则:
MyNG_PLLS_Motors[0].PCmd_Start := 0;
MyNG_PLLS_Motor01.PCmd_Start1 := 1;
end_if;
/* Forward the Program Stop command: */
if (MyNG_PLLS_Motors[0].PCmd_Stop)
则:
MyNG_PLLS_Motors[0].PCmd_Stop := 0;
MyNG_PLLS_Motor01.PCmd_Stop := 1;
end_if;
/* Program commands to Motor 02: */
/* Forward the Program Lock command: */
if (MyNG_PLLS_Motors[1].PCmd_Lock)
则:
MyNG_PLLS_Motors[1].PCmd_Lock := 0;
MyNG_PLLS_Motor02.PCmd_Lock := 1;
end_if;
/* Forward the Program Unlock command: */
if (MyNG_PLLS_Motors[1].PCmd_Unlock)
则:
MyNG_PLLS_Motors[1].PCmd_Unlock := 0;
MyNG_PLLS_Motor02.PCmd_Unlock := 1;
end_if;
/* Forward the Program Start command: */
if (MyNG_PLLS_Motors[1].PCmd_Start)
则:
MyNG_PLLS_Motors[1].PCmd_Start := 0;
MyNG_PLLS_Motor02.PCmd_Start1 := 1;
end_if;
/* Forward the Program Stop command: */
if (MyNG_PLLS_Motors[1].PCmd_Stop)
则:
MyNG_PLLS_Motors[1].PCmd_Stop := 0;
MyNG_PLLS_Motor02.PCmd_Stop := 1;
end_if;
/* Program commands to Motor 03: */
/* Forward the Program Lock command: */
if (MyNG_PLLS_Motors[2].PCmd_Lock)
则:
MyNG_PLLS_Motors[2].PCmd_Lock := 0;
MyNG_PLLS_Motor03.PCmd_Lock := 1;
end_if;
/* Forward the Program Unlock command: */
if (MyNG_PLLS_Motors[2].PCmd_Unlock)
则:
MyNG_PLLS_Motors[2].PCmd_Unlock := 0;
MyNG_PLLS_Motor03.PCmd_Unlock := 1;
end_if;
/* Forward the Program Start command: */
if (MyNG_PLLS_Motors[2].PCmd_Start)
则:
MyNG_PLLS_Motors[2].PCmd_Start := 0;
MyNG_PLLS_Motor03.PCmd_Start1 := 1;
end_if;
/* Forward the Program Stop command: */
if (MyNG_PLLS_Motors[2].PCmd_Stop)
则:
MyNG_PLLS_Motors[2].PCmd_Stop := 0;
MyNG_PLLS_Motor03.PCmd_Stop := 1;
end_if;
提供反馈
对本文档有问题或反馈吗? 请在这里提交您的反馈
Normal