过程模拟输出 (PAO)
此信息适用于 CompactLogix 5380P、ControlLogix 5580P 和 ControlLogix 5590P 控制器。
过程模拟输出 (Process Analog Output, PAO) 指令驱动模拟输出并检查报警条件。PAO 指令用于模拟输出模块的通道。PAO 指令可与任何模拟 (REAL) 信号配合使用。
PAO 指令:
- 监控一个模拟输出通道是否有输入/输出 (I/O) 故障输入,并在发生输入/输出 (I/O) 故障时发出报警。
- 在手控、停用、维护、覆盖、程序和操作符模式下工作。
- 提供操作员和程序命令,用于将模拟控制变量(CV 或输出)设置为特定值。输入的 CV 从工程单位缩放为原始(输出模块)单位。
- 监控可绕过和不可绕过的互锁,这些互锁将模拟输出强制设置为特定的已配置(安全)值或保持当前值(可配置)。小贴士: 当互锁导致模拟输出 CV 发生变化时,将引发报警。PAO 指令允许绕过互锁。
- 允许在覆盖模式下覆盖 CV。
- 允许使用可配置的变化率限值进行模拟输出过渡。
- 读取回接输入 (REAL) 和手控模式请求输入 (BOOL)。当置为手控模式时,CV 被强制服从回接值。
- 在程序模式下以及正常运行时,提供可用状态,供高级自动化逻辑用来确定
- 逻辑能否处理模拟输出。
可用语言
梯形图

功能块图

结构化文本
PAO(PAO tag, BusObj);
操作数
重要提示:
以下情况下会导致运行出现意外:
- 输出标签操作数被覆盖。
- 结构操作数的成员被覆盖。
- 除非另外指定,否则结构操作数由多条指令共用。
指令中混用数据类型时,需遵从相关的数据转换规则。请参阅“数据转换”部分。
配置操作数
操作数 | 类型 | 格式 | 说明 |
|---|---|---|---|
PlantPAx Control | P_ANALOG_OUTPUT | 标签 | 指令正确运行所需的数据结构。 |
BusObj | BUS_OBJ | 标签 | 总线组件 |
P_ANALOG_OUTPUT 结构
公共成员是可通过编程方式访问的标准可见标签成员。专用或隐藏成员用于 HMI 面板中,无法通过编程方式访问。专用成员在公共成员后面的单独表中列出。
公共输入成员 | 数据类型 | 说明 |
|---|---|---|
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_OpenedFdbkData | BOOL | 来自设备的“已打开”限位开关的反馈。1 = 确认设备已打开。 默认值为假。 |
Inp_ClosedFdbkData | BOOL | 来自设备的“已关闭”限位开关的反馈。1 = 确认设备已关闭。 默认值为假。 |
Inp_PosFdbk | REAL | 来自实际设备位置 PV 的反馈(CV 工程单位)。任意浮点数均有效。 默认值为 0.0。 |
Inp_HandFdbk | REAL | 手控源中使用的 CV 反馈(CV 工程单位)。任意浮点数均有效。 默认值为 0.0。 |
Inp_IntlkOK | BOOL | 1 = 可绕过和不可绕过互锁正常 (OK),可设置模拟输出。 默认值为真。 |
Inp_NBIntlkOK | BOOL | 1 = 不可绕过互锁正常 (OK),如果绕过可绕过的互锁,则可设置模拟输出。 默认值为真。 |
Inp_IntlkAvailable | BOOL | 1 = 互锁可用性正常 (OK)。 默认值为假。 |
Inp_IntlkTripInh | BOOL | 1 = 禁用互锁脱扣状态。 默认值为假。 |
Inp_SmartDvcSts | DINT | SMART 设备在 Inp_PosFdbk 上提供的当前代码。代码复制到 Out_SmartDvcSts,允许用户在 HMI 上监控设备状态以进行诊断查找。有效值 = 0 到最大正数。 默认值为 0。 |
Inp_SmartDvcDiagAvailable | BOOL | 1 = SMART 设备诊断可用。通常用于指示需要采取措施来保持设备按预期运行。 默认值为假。 |
Inp_IOFault | BOOL | 表示输入/输出 (IO) 数据不准确。 0 = 输入/输出 (IO) 数据良好, 1 = 输入/输出 (IO) 数据不良,导致故障。 如果设备不是虚拟设备,此输入会置位 Sts_IOFault,这会引发 IOFault 报警。 默认值为假。 |
Inp_DeviceFault | BOOL | 表示设备故障(过载等)。 0 = 设备良好, 1 = 设备不良,导致故障。 此输入会置位 Sts_DeviceFault(如果设备非虚拟),这会引发设备报警(如果设备不是虚拟设备)。 默认值为假。 |
Inp_Hand | BOOL | 1 = 获取手控(通常永久设置为本地), 0 = 释放手控。 默认值为假。 |
Inp_Ovrd | BOOL | 1 = 获取覆盖(较高优先级程序逻辑), 0 = 释放覆盖。 默认值为假。 |
Inp_OvrdCV | REAL | 覆盖下的 CV 目标(工程单位)。任意浮点数均有效。 默认值为 0.0。 |
Inp_ExtInh | BOOL | 1 = 禁止外部获取, 0 = 允许外部获取。 默认值为假。 |
Inp_RdyReset | BOOL | 1 = 通过该对象重置的相关对象已准备好重置。 默认值为假。 |
Inp_Reset | BOOL | 1 = 重置已去除锁定和已清除报警。 默认值为假。 |
Cfg_AllowDisable | BOOL | 1 = 允许维护人员禁用报警。 默认值为真。 |
Cfg_AllowShelve | BOOL | 1 = 允许操作员延迟报警。 默认值为真。 |
Cfg_StuckTime | REAL | 输入位置无变化(来自限位开关“已关闭”或“已打开”的反馈均未开启)到出现粘滞状态的时间(秒)。有效值 = 0.0 到 2147483.0 秒。 默认值为 60.0。 |
Cfg_HasSmartDvc | BOOL | 1 = 在 HMI 上启用可用于调出 SMART 设备面板(诊断)的按钮。 默认值为假。 |
Cfg_SetTrack | BOOL | 1 = 当宿主为程序时,操作员设置跟踪程序设置。当宿主为“操作员”时,程序 (program) 设置会跟踪操作员设置,虚拟输入与输出值匹配(转换 (transition) 无干扰), 0 = 不跟踪。 默认值为真。 |
Cfg_ShedHold | BOOL | 1 = 互锁时保持输出。 0 = 互锁时转到 Cfg_CVIntlk。 默认值为假。 |
Cfg_SkipRoCLim | BOOL | 1 = 互锁时跳过维护或覆盖的变化率限制。 默认值为假。 |
Cfg_SetTrackOvrdHand | BOOL | 1 = 程序/操作员设置跟踪覆盖/手控 CV。 默认值为假。 |
Cfg_FdbkFail | BOOL | 1 = 如果设置了两个反馈输入,则限位开关的反馈无效。 0 = 如果清除了两个反馈输入,则限位开关的反馈无效。 默认值为真。 |
Cfg_HasOpenedFdbk | BOOL | 1 = 设备提供“已打开”反馈信号。 默认值为假。 |
Cfg_HasClosedFdbk | BOOL | 1 = 设备提供“已关闭”反馈信号。 默认值为假。 |
Cfg_HasPosFdbk | BOOL | 1 = 设备提供位置 PV 反馈信号。 默认值为真。 |
Cfg_UseOpenedFdbk | BOOL | 1 = 使用设备“已打开”反馈进行故障检查。 默认值为假。 |
Cfg_UseClosedFdbk | BOOL | 1 = 使用设备“已关闭”反馈进行故障检查。 默认值为假。 |
Cfg_UsePosFdbk | BOOL | 1 = 使用设备位置 PV 反馈信号。 默认值为真。 |
Cfg_HasCombinedFdbk | BOOL | 1 = 设备提供已打开、已关闭和位置反馈信号以供使用。 默认值为假。 |
Cfg_UseCombinedFdbk | BOOL | 1 = 使用设备的已打开、已关闭和位置反馈信号来确定打开和关闭状态。组合信号将用于位置状态。 默认值为假。 |
Cfg_HasPulseOut | BOOL | 1 = 设备提供脉冲输出(打开,关闭)。 默认值为假。 |
Cfg_HasOutNav | BOOL | 1 = 通知 HMI 允许导航到所连接的输出对象。 默认值为假。 |
Cfg_OvrdIntlk | BOOL | 1 = 覆盖绕过(忽略)可绕过的互锁。 0 = 覆盖符合所有互锁条件。 默认值为假。 |
Cfg_ShedOnDeviceFault | BOOL | 1 = 发生设备故障时将输出设置为互锁 CV 并发出报警。0 = 发生设备故障时仅发出报警。 默认值为真。 |
Cfg_ShedOnIOFault | BOOL | 1 = 发生输入/输出 (I/O) 故障时将输出设置为互锁 CV 并发出报警。 0 = 发生输入/输出 (I/O) 故障时仅发出报警。 默认值为真。 |
Cfg_CVLoLim | REAL | 限制的最小 CV(工程单位)。有效值为任何小于或等于 Cfg_CVHiLim 的浮点数。 默认值为 0.0。 |
Cfg_CVHiLim | REAL | 限制的最大 CV(工程单位)。有效值为任何大于或等于 Cfg_CVLoLim 的浮点数。 默认值为 100.0。 |
Cfg_CVRoCIncrLim | REAL | 允许的 CV 最大变化率增加值(CVEU/秒)。如果 Cfg_CVRoCIncrLim = 0.0,则 CV 的变化率在增加时没有限制。有效值 = 0.0 到最大正浮点数。 默认值为 100.0。 |
Cfg_CVRoCDecrLim | REAL | 最大允许 CV 变化率减少值(工程单位/秒)。如果 Cfg_CVRoCDecrLim = 0.0,则 CV 的变化率在减少时没有限制。有效值 = 0.0 到最大正浮点数。 默认值为 100.0。 |
Cfg_CVIntlk | REAL | 若非 Cfg_ShedHold,互锁时的 CV 目标(工程单位)。任意浮点数均有效。 默认值为 0.0。 |
Cfg_CVEUMin | REAL | 缩放的 CV 最小值(工程单位)。有效值 = 任何不等于 Cfg_CVEUMax 的浮点数。 默认值为 0.0。 |
Cfg_CVEUMax | REAL | 缩放的 CV 最大值(工程单位)。有效值 = 任何不等于 Cfg_CVEUMin 的浮点数。 默认值为 100.0。 |
Cfg_CVRawMin | REAL | 缩放的 CV 最小值(输入/输出 (I/O) 原始单位)。有效值 = 任何不等于 Cfg_CVRawMax 的浮点数。 默认值为 0.0。 |
Cfg_CVRawMax | REAL | 缩放的 CV 最大值(输入/输出 (I/O) 原始单位)。有效值 = 任何不等于 Cfg_CVRawMin 的浮点数。 默认值为 20.0。 |
Cfg_MaxInactiveCV | REAL | 如果 Val_CVOut 大于此值(采用 CV 工程单位),则 Sts_Active 置位(用于 HMI)。任意浮点数均有效。 默认值为 0.0。 |
Cfg_HiDevLim | REAL | 上限偏差(实际位置减去目标位置)状态阈值(工程单位)。有效值 = 0.0 到最大正浮点数。 默认值为 1.50E+38。 |
Cfg_LoDevLim | REAL | 下限偏差(实际位置减去目标位置)状态阈值(工程单位)。有效值 = -(最大浮点值)到 0.0。 默认值为 -1.50E+38。 |
Cfg_DevDly | REAL | 偏差值高于上限 (Cfg_HiDevLim) 或低于该状态下限 (Cfg_LoDevLim) 达到此时间后(秒),将设置状态 Sts_Dev。打开延迟时间用于避免在偏差仅暂时高于 Cfg_HiDevLim 或低于 Cfg_LoDevLim 的情况下发出不必要的报警。有效值 = 0.0 到 2147483.0 秒。 默认值为 0.0。 |
Cfg_CycleTime | REAL | 开关脉冲输出总周期(秒)。有效值 = 0.0 到 2147483.0 秒。 默认值为 10.0。 |
Cfg_OpenRate | REAL | 打开时的设备移动速率(工程单位/秒)。有效值 = 0.0 到最大正浮点数。 默认值为 1.0。 |
Cfg_CloseRate | REAL | 关闭时的设备移动速率(工程单位/秒)。有效值 = 0.0 到最大正浮点数。 默认值为 1.0。 |
Cfg_MaxOnTime | REAL | 开关脉冲输出最长接通时间(秒)。有效值 = 0.0 到 2147483.0 秒。 默认值为 5.0。 |
Cfg_MinOnTime | REAL | 开关脉冲输出最短接通时间(秒)。有效值 = 0.0 到 2147483.0 秒。 默认值为 1.0。 |
Cfg_BumpTime | REAL | 干扰设备打开或关闭的时间(秒),用于设备位置 (PV) 反馈不可用时。有效值 = 0.0 到 2147483.0 秒。 默认值为 0.0。 |
Cfg_DeadTime | REAL | 停止或改变方向后首个脉冲的附加时间。用来克服设备摩擦力的附加脉冲时间(秒)。设备改变方向或停止后,打开时间或关闭时间将加上空载时间。有效值 = 0.0 到 Cfg_MaxOnTime 秒。 默认值为 0.0。 |
Cfg_MaxClosedPos | REAL | 假定在未使用来自“已打开”限位开关的反馈时,若高于该位置值(PV 值),则设备(阀)打开。有效值为任何大于 Cfg_CVEUMin 且小于 Cfg_CVEUMax 的浮点数。 默认值为 0.0。 |
Cfg_HasIntlkObj | BOOL | 1 = 通知 HMI 将一个互锁对象(例如,P_Intlk)用于 Inp_IntlkOK,并允许导航到互锁对象面板。
重要提示:
控制器中互锁对象的名称必须为此 PAO 对象的名称加上后缀 _Intlk。例如,如果 PAO 指令的名称为 PAOut123,则其互锁对象必须命名为 PAOut123_Intlk。
默认值为假。 |
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 = 释放)。 默认值为假。 |
Cfg_CVDecPlcs | SINT | 用于显示控制变量的小数位数。有效值 = 0 到 6。 默认值为 2。 |
Cfg_CnfrmReqd | SINT | 需要操作员确认命令。表示需要命令确认的类型。 0 = 无, 1 = 需要命令确认, 2 = 需要执行者电子签名,3 = 需要执行者和审批者电子签名。 默认值为 0。 |
Cfg_CVPwrUpSel | SINT | 加电 CV 选项。 0 = 使用Cfg_CVPwrUp, 1 = 无变化(从上次断电开始), 2 = 使用 Inp_PosFdbk(如果可用)(否则使用Cfg_CVPwrUp)。 默认值为 0。 |
Cfg_CVPwrUp | REAL | 加电时使用的 CV 初始值(工程单位)任意浮点数均有效。 默认值为 0.0。 |
Cfg_HasMoreObj | BOOL | 1 = 通知 HMI 有包含较多信息的对象可用。 默认值为假。 |
Cfg_HasPosFdbkNav | BOOL | 1 = 通知 HMI 允许导航到所连接的正反馈对象。 默认值为假。 |
Cfg_HasHistTrend | SINT | 有历史趋势。可以从 HMI 导航到设备历史趋势面板。 0 = 无外部历史趋势, 1 = 目录历史趋势, 2 = Historian 历史趋势。 默认值为 0。 |
PSet_CV | REAL | 受控变量(输出)的程序设置(工程单位)。任意浮点数均有效。 默认值为 0.0。 |
PSet_Owner | DINT | 程序宿主请求 ID(非零)或释放(零)。 默认值为 0。 |
PCmd_Oper | BOOL | 用于选择操作员的程序命令(程序到操作员)。该指令自动清除该操作数。 默认值为假。 |
PCmd_Prog | BOOL | 用于选择程序的程序命令(操作员到程序)。该指令自动清除该操作数。 默认值为假。 |
PCmd_Lock | BOOL | 用于锁定程序的程序命令(不允许操作员)。如果 Cfg_PCmdLockAsLevel = 0,则指令会自动清除此操作数。 默认值为假。 |
PCmd_Unlock | BOOL | 用于解锁程序的程序命令(允许操作员获取)。该指令自动清除该操作数。 默认值为假。 |
PCmd_Normal | BOOL | 用于选择正常命令源的程序命令(操作员或程序)。该指令自动清除该操作数。 默认值为假。 |
PCmd_Reset | BOOL | 用于重置需要重置的所有报警和锁定去除条件的程序命令。该指令自动清除该操作数。 默认值为假。 |
PCmd_Physical | BOOL | 用于选择物理(非仿真)设备操作的程序命令。该指令自动清除该操作数。 默认值为假。 |
PCmd_Virtual | BOOL | 用于选择虚拟(仿真)设备操作的程序命令。该指令自动清除该操作数。 默认值为假。 |
XSet_CV | REAL | 受控变量(输出)的外部设置(工程单位)。 默认值为 0.0。 |
XCmd_Acq | BOOL | 用于获取所有权的外部命令(操作员/程序/覆盖/维护到外部)。如果 Cfg_ExtAcqAsLevel = 0,则指令会自动清除此操作数。 默认值为假。 |
XCmd_BumpClose | BOOL | 用于干扰设备关闭的外部命令(当设备位置反馈不可用时使用)。 默认值为假。 |
XCmd_BumpOpen | BOOL | 用于干扰设备打开的外部命令(当设备位置反馈不可用时使用)。 默认值为假。 |
XCmd_Rel | BOOL | Cfg_ExtAcqAsLevel = 0 时用于释放所有权的外部命令(外部到操作员/程序/覆盖/维护)。该指令自动清除该操作数。 默认值为假。 |
XCmd_Reset | BOOL | 用于重置所有报警和锁定去除条件的外部命令。该指令自动清除该操作数。 默认值为假。 |
XCmd_ResetAckAll | BOOL | 用于确认和重置所有报警和锁定去除条件的外部命令。该指令自动清除该操作数。 默认值为假。 |
公共输出成员 | 数据类型 | 说明 |
|---|---|---|
EnableOut | BOOL | 启用输出。此输出状态始终反映 EnableIn 输入状态。 |
Out_CVData | REAL | 以原始(输入/输出 (I/O) 卡)单位表示的 CV 输出。 该成员的扩展属性: 工程单位 - 用于模拟输出的原始单位(文本)。 |
Out_CVOpenData | BOOL | 1 = 驱动设备打开的脉冲输出。 |
Out_CVCloseData | BOOL | 1 = 驱动设备关闭的脉冲输出。 |
Val_Dev | REAL | 计算得到的偏差值(实际位置减去目标位置)(工程单位)。 |
Val_Pos | REAL | 来自反馈的设备实际位置 (PV)(以工程单位表示)。 |
Val_CVSet | REAL | 速率限制前的选定 CV 设置值(以工程单位表示)。 |
Val_CVOut | REAL | 可选速率限制后的 CV 输出值(以工程单位表示)。 该成员的扩展属性: 工程单位 - 用于模拟输出的工程单位(文本)。 |
Val_CVEUMin | REAL | 以工程单位表示的最小缩放范围 = MIN (Cfg_CVEUMin, Cfg_CVEUMax)。 |
Val_CVEUMax | REAL | 以工程单位表示的最大缩放范围 = MAX (Cfg_CVEUMin, Cfg_CVEUMax)。 |
Out_SmartDvcSts | DINT | Inp_SmartDvcSts 提供的 SMART 设备状态代码。Out_SmartDevSts 是 Inp_SmartDvcSts 的副本。 |
Out_OwnerSts | DINT | 命令源状态、宿主命令握手和就绪状态。 0 = 无, Out_OwnerSts.10 = 操作员锁定, Out_OwnerSts.11 = 操作员解锁, Out_OwnerSts.12 = 程序锁定, Out_OwnerSts.13 = 程序解锁, Out_OwnerSts.14 = 获取维护, Out_OwnerSts.15 = 释放维护, Out_OwnerSts.16 = 获取外部, Out_OwnerSts.17 = 释放外部, Out_OwnerSts.18 = 具有维护, Out_OwnerSts.19 = 外部覆盖锁定, Out_OwnerSts.20 = 具有外部, Out_OwnerSts.21 = 具有操作员, Out_OwnerSts.22 = 具有程序, Out_OwnerSts.30 = 未就绪。 |
Sts_Initialized | BOOL | 1 = 指令已初始化。 使用 Inp_InitializeReq 重新初始化。 |
Sts_SmartDvcDiagAvailable | BOOL | 1 = 当前可以使用 SMART 设备诊断。通常用于指示需要采取措施来保持设备按预期运行。Sts_SmartDvcDiagAvailable 是 Inp_SmartDvcDiagAvailable 的副本。 |
Sts_CVInfNaN | BOOL | 1 = 选定的 CV 无穷大或非数字(1.$、1.#NaN)。 |
Sts_PosInfNaN | BOOL | 1 = Inp_PosFdbk 无穷大或非数字(1.$、1.#NaN)。 |
Sts_BumpOpen | BOOL | 1 = 干扰打开已请求或者处于活动状态。 |
Sts_BumpClose | BOOL | 1 = 干扰关闭已请求或者处于活动状态。 |
Sts_PosStuck | BOOL | 1 = 当来自限位开关“已关闭”或“已打开”的反馈均未开启时,位置会粘滞(不变)。 |
Sts_Ramping | BOOL | 1 = CV 正在向目标斜升。 |
Sts_Clamped | BOOL | 1 = CV 设置为限制在下限或上限。 |
Sts_WindupHi | BOOL | 1 = 模拟输出积分饱和上限,达到主控制器的 Inp_WindupHi。 |
Sts_WindupLo | BOOL | 1 = 模拟输出积分饱和下限,达到主控制器的 Inp_WindupLo。 |
Sts_SkipRoCLim | BOOL | 1 = 变化率限制跳过此扫描(维护、覆盖、互锁、手控)。 |
Sts_Active | BOOL | 1 = CV 大于 Cfg_MaxInactiveCV,显示图形符号处于活动状态。 |
Sts_FdbkFail | BOOL | 1 = 反馈处于无效状态。 |
Sts_Virtual | BOOL | 1 = 该指令将设备视为虚拟设备。该指令运行正常,但输出保持断电状态 (Out_CVData = 0)。 0 = 该指令正常操作设备。 Sts_Virtual 是 Inp_Virtual 的副本。 |
SrcQ_IO | SINT | 主输入或输出的源和质量(枚举): 0 = 良好,畅通,确认良好, 1 = 良好,畅通,假定良好, 2 = 良好,无反馈,假定良好, 8 = 测试,虚拟化, 9 = 测试,回路, 10 = 测试,手动输入, 16 = 不确定,畅通,不合格, 17 = 不确定,在设备或总线端替代, 18 = 不确定,在指令端替代, 19 = 不确定,使用最后一个已知良好值, 20 = 不确定,使用替代值, 32 = 不良,信号故障, 33 = 不良,通道故障, 34 = 不良,模块或通信故障, 35 = 不良,配置无效。 |
SrcQ | SINT | 主值或状态的源和质量(枚举): 0 = 良好,畅通,确认良好, 1 = 良好,畅通,假定良好, 2 = 良好,无反馈,假定良好, 8 = 测试,虚拟化, 9 = 测试,回路, 10 = 测试,手动输入, 16 = 不确定,畅通,不合格, 17 = 不确定,在设备或总线端替代, 18 = 不确定,在指令端替代, 19 = 不确定,使用最后一个已知良好值, 20 = 不确定,使用替代值, 32 = 不良,信号故障, 33 = 不良,通道故障, 34 = 不良,模块或通信故障, 35 = 不良,配置无效。 |
Sts_bFdbk | SINT | 设备反馈: 0 = 无, Sts_bFdbk.0:正在运动, Sts_bFdbk.1:已关闭, Sts_bFdbk.2:已打开, Sts_bFdbk.3:故障, Sts_bFdbk.4:粘滞。 |
Sts_bSts | SINT | 设备状态: 0 = 达到目标, Sts_bSts.0: 斜降, Sts_bSts.1:斜升, Sts_bSts.2:钳位在最小值, Sts_bSts.3:钳位在最大值, Sts_bSts.4:停用, Sts_bSts.5:干扰打开, Sts_bSts.6:干扰关闭。 |
Sts_bFault | SINT | 设备故障状态: 0 = 无, Sts_bFault.0:反馈故障, Sts_bFault.1:输入/输出 (IO) 故障, Sts_bFault.2:设备故障, Sts_bFault.3:配置错误。 |
Sts_eNotify | SINT | 报警状态枚举值: 0 = 未处于报警中,已确认, 1 = 未处于报警中,未确认或需要重置, 2 = 低严重性报警,已确认, 3 = 低严重性报警,未确认, 4 = 中等严重性报警,已确认, 5 = 中等严重性报警,未确认, 6 = 高严重性报警,已确认, 7 = 高严重性报警,未确认, 8 = 紧急严重性报警,已确认, 9 = 紧急严重性报警,未确认。 |
Sts_eNotifyAll | SINT | 报警状态枚举值(包括相关对象): 0 = 未处于报警中,已确认, 1 = 未处于报警中,未确认或需要重置, 2 = 低严重性报警,已确认, 3 = 低严重性报警,未确认, 4 = 中等严重性报警,已确认, 5 = 中等严重性报警,未确认, 6 = 高严重性报警,已确认, 7 = 高严重性报警,未确认, 8 = 紧急严重性报警,已确认, 9 = 紧急严重性报警,未确认。 |
Sts_eNotifyIOFault | SINT | IOFault 报警状态枚举值: 0 = 未处于报警中,已确认, 1 = 未处于报警中,未确认或需要重置, 2 = 低严重性报警,已确认, 3 = 低严重性报警,未确认, 4 = 中等严重性报警,已确认, 5 = 中等严重性报警,未确认, 6 = 高严重性报警,已确认, 7 = 高严重性报警,未确认, 8 = 紧急严重性报警,已确认, 9 = 紧急严重性报警,未确认。 |
Sts_eNotifyDeviceFault | SINT | DeviceFault 报警状态枚举值: 0 = 未处于报警中,已确认, 1 = 未处于报警中,未确认或需要重置, 2 = 低严重性报警,已确认, 3 = 低严重性报警,未确认, 4 = 中等严重性报警,已确认, 5 = 中等严重性报警,未确认, 6 = 高严重性报警,已确认, 7 = 高严重性报警,未确认, 8 = 紧急严重性报警,已确认, 9 = 紧急严重性报警,未确认。 |
Sts_eNotifyDev | SINT | 偏差报警状态枚举值: 0 = 未处于报警中,已确认, 1 = 未处于报警中,未确认或需要重置, 2 = 低严重性报警,已确认, 3 = 低严重性报警,未确认, 4 = 中等严重性报警,已确认, 5 = 中等严重性报警,未确认, 6 = 高严重性报警,已确认, 7 = 高严重性报警,未确认, 8 = 紧急严重性报警,已确认, 9 = 紧急严重性报警,未确认。 |
Sts_eNotifyIntlkTrip | SINT | IntlkTrip 报警状态枚举值: 0 = 未处于报警中,已确认, 1 = 未处于报警中,未确认或需要重置, 2 = 低严重性报警,已确认, 3 = 低严重性报警,未确认, 4 = 中等严重性报警,已确认, 5 = 中等严重性报警,未确认, 6 = 高严重性报警,已确认, 7 = 高严重性报警,未确认, 8 = 紧急严重性报警,已确认, 9 = 紧急严重性报警,未确认。 |
Sts_UnackAlmCount | DINT | 未确认报警计数。 |
Sts_eSrc | INT | 当前命令源枚举值: 0 = 未使用逻辑, 4 = 手控, 8 = 维护, 16 = 覆盖, 32 = 程序, 33 = 程序已锁定, 34 = 程序默认值(正常), 64 = 操作员, 65 = 操作员已锁定, 66 = 操作员默认值(正常), 128 = 维护停用, 129 = 程序停用(梯级为假), 256 = 外部。 |
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_Available | BOOL | 1 = 模拟输出可用于自动化控制(程序)。 |
Sts_Bypass | BOOL | 1 = 绕过可绕过的互锁。 |
Sts_BypActive | BOOL | 1 = 互锁绕过处于活动状态(已绕过或维护中)。 |
Sts_MaintByp | BOOL | 1 = 设备有一个维护绕过功能处于活动状态。 |
Sts_NotRdy | BOOL | 1 = 设备未就绪,请参阅明细位 (Sts_Nrdyxxx) 以查找原因。 |
Sts_NrdyOoS | BOOL | 1 = 设备未就绪:维护禁用设备。 |
Sts_NrdyCfgErr | BOOL | 1 = 设备未就绪:配置错误。 |
Sts_NrdyIntlk | BOOL | 1 = 设备未就绪:互锁不正常 (OK)。 |
Sts_NrdyIOFault | BOOL | 1 = 设备未就绪:输入/输出 (IO) 故障(去除需要重置)。 |
Sts_Err | BOOL | 1 = 配置出错:请参阅明细位 (Sts_Errxxx) 以查找原因。 |
Sts_ErrCVRaw | BOOL | 1 = 配置出错:原始输出缩放最小值 = 最大值。 |
Sts_ErrCVEU | BOOL | 1 = 配置出错:Cfg_CVEUMax <= Cfg_CVEUMin. |
Sts_ErrCVRoCDecrLim | BOOL | 1 = 配置出错:递减变化率无效。 |
Sts_ErrCVRoCIncrLim | BOOL | 1 = 配置出错:递增变化率无效。 |
Sts_ErrLimit | BOOL | 1 = 配置出错:CV 上限 < CV 下限。 |
Sts_ErrHiDevLim | BOOL | 1 = 配置出错:Cfg_HiDevLim. |
Sts_ErrLoDevLim | BOOL | 1 = 配置出错:Cfg_LoDevLim. |
Sts_ErrDevDly | BOOL | 1 = 计时器预设值无效(使用 0.0 到 2147483.0)。 |
Sts_ErrCycleTime | BOOL | 1 = 计时器预设值无效(使用 0.0 到 2147483.0)。 |
Sts_ErrOpenRate | BOOL | 1 = 计时器预设值无效(使用 0.0 到 2147483.0)。 |
Sts_ErrCloseRate | BOOL | 1 = 计时器预设值无效(使用 0.0 到 2147483.0)。 |
Sts_ErrStuckTime | BOOL | 1 = 计时器预设值无效(使用 0.0 到 2147483.0)。 |
Sts_ErrMaxOnTime | BOOL | 1 = 计时器预设值无效(使用 0.0 到 2147483.0)。 |
Sts_ErrMinOnTime | BOOL | 1 = 计时器预设值无效(使用 0.0 到 2147483.0)。 |
Sts_ErrBumpTime | BOOL | 1 = 计时器预设值无效(使用 0.0 到 2147483.0)。 |
Sts_ErrDeadTime | BOOL | 1 = 计时器预设值无效(使用 0.0 到 2147483.0)。 |
Sts_ErrCmdCnfrmTimeOutTime | BOOL | 1 = 配置出错:命令确认计时器预设值(使用 0.0 到 2147483.0)。 |
Sts_ErrAlm | BOOL | 1 = 基于 Logix 标签的报警设置中存在错误。 |
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 = 维护获取命令接收到此扫描。 |
Sts_Alm | BOOL | 1 = 报警处于活动状态。 |
Sts_AlmInh | BOOL | 1 = 报警已延迟或已禁用。 |
Sts_IOFault | BOOL | 1 = 输入/输出 (IO) 故障状态不良。 0 = 正常 (OK)。 存在一个基于离散 Logix 标签的预定义默认报警指示状态。设置基于离散 Logix 标签的报警的标准配置成员。以此格式访问报警元素: PAOTag.@Alarms.Alm_IOFault.AlarmElement |
Sts_DeviceFault | BOOL | 设备故障状态: 1 = 不良, 0 = 正常 (OK)。 存在一个基于离散 Logix 标签的预定义默认报警指示状态。设置基于离散 Logix 标签的报警的标准配置成员。以此格式访问报警元素: PAOTag.@Alarms.Alm_DeviceFault.AlarmElement |
Sts_Dev | BOOL | 1 = 偏差(实际位置减去目标)超出限值, 0 = 偏差在限制范围内。 存在一个基于离散标签的预定义默认报警指示状态。设置基于离散标签的报警的标准配置成员。以此格式访问报警元素: PAOTag.@Alarms.Alm_Dev.AlarmElement |
Sts_IntlkTrip | BOOL | 1 = 状态:CV 因互锁不正常 (NOT OK) 而保留或强制。 存在一个基于离散 Logix 标签的预定义默认报警指示状态。设置基于离散 Logix 标签的报警的标准配置成员。以此格式访问报警元素: PAOTag.@Alarms.Alm_IntlkTrip.AlarmElement |
Sts_CnfrmOperCmdReq | BOOL | 1 = 操作员命令请求正在等待确认。 |
Sts_CnfrmOperSPReq | BOOL | 1 = 操作员设定值请求正在等待确认。 |
Sts_RdyAck | BOOL | 1 = 报警待确认。 |
Sts_RdyReset | BOOL | 1 = 锁定的报警或解除条件待重置。 |
XRdy_Acq | BOOL | 1 = XCmd_Acq 就绪,启用 HMI 按钮。 |
XRdy_Rel | BOOL | 1 = XCmd_Rel 就绪,启用 HMI 按钮。 |
XRdy_Reset | BOOL | 1 = XCmd_Reset 就绪,启用 HMI 按钮。 |
XRdy_ResetAckAll | BOOL | 1 = XCmd_ResetAckAll 就绪,启用 HMI 按钮。 |
Val_Owner | DINT | 当前对象宿主 ID(0 = 未拥有)。 |
专用输入成员 | 数据类型 | 说明 |
|---|---|---|
CmdSrc | P_COMMAND_SOURCE | 控制/命令源选择 |
OSet_CV | REAL | 受控变量(输出)的操作员设置(工程单位)。 默认值 = 0。 |
MCmd_Bypass | BOOL | 用于绕过所有可绕过互锁的维护命令。该指令自动清除该操作数。 默认值为假。 |
MCmd_Check | BOOL | 用于检查(而不是绕过)所有互锁的维护命令。该指令自动清除该操作数。 默认值为假。 |
MCmd_OoS | BOOL | 用于选择“停用”的维护命令。该指令自动清除该操作数。 默认值为假。 |
MCmd_IS | BOOL | 用于选择“服务中”的维护命令。该指令自动清除该操作数。 默认值为假。 |
MCmd_Acq | BOOL | 用于获取所有权(操作员/程序/外部/覆盖到维护)的维护命令。该指令自动清除该操作数。 默认值为假。 |
MCmd_Rel | BOOL | 用于释放所有权(维护到操作员/程序/外部/覆盖)的维护命令。该指令自动清除该操作数。 默认值为假。 |
OCmd_BumpClose | BOOL | 用于干扰设备关闭的操作员命令(当设备位置反馈不可用时使用)。 |
OCmd_BumpOpen | BOOL | 用于干扰设备打开的操作员命令(当设备位置反馈不可用时使用)。 |
OCmd_Oper | BOOL | 用于选择操作员(程序到操作员)的操作员命令。该指令自动清除该操作数。 默认值为假。 |
OCmd_Prog | BOOL | 用于选择程序(操作员到程序)的操作员命令。该指令自动清除该操作数。 默认值为假。 |
OCmd_Lock | BOOL | 用于锁定操作员的操作员命令(不允许程序)。该指令自动清除该操作数。 默认值为假。 |
OCmd_Unlock | BOOL | 用于解锁或释放(允许程序获取)所有权的操作员命令。该指令自动清除该操作数。 默认值为假。 |
OCmd_Normal | BOOL | 用于选择正常(操作员或程序)的操作员命令。该指令自动清除该操作数。 默认值为假。 |
OCmd_Reset | BOOL | 用于重置所有报警和锁定去除条件的操作员命令。该指令自动清除该操作数。 默认值为假。 |
OCmd_ResetAckAll | BOOL | 用于确认和重置所有报警和锁定去除条件的操作员命令。OCmd_ResetAckAll 的使用仅限于 HMI。该指令自动清除该操作数。 默认值为假。 |
OCmd_CmdCncl | BOOL | 用于取消命令请求的操作员命令。该指令自动清除该操作数。 默认值为假。 |
OCmd_CmdCnfrm | BOOL | 用于确认命令请求的操作员命令。该指令自动清除该操作数。 默认值为假。 |
专用输出成员 | 数据类型 | 说明 |
|---|---|---|
HMI_BusObjIndex | DINT | HMI 总线对象索引。 |
MRdy_Bypass | BOOL | 1 = 准备好接收 MCmd_Bypass,启用数据输入字段。 |
MRdy_Check | BOOL | 1 = 准备好接收 MCmd_Check,启用数据输入字段。 |
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 按钮。 |
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 按钮。 |
ORdy_BumpClose | BOOL | 1 = OCmd_BumpClose 就绪,启用 HMI 按钮。 |
ORdy_BumpOpen | BOOL | 1 = OCmd_BumpOpen 就绪,启用 HMI 按钮。 |
ORdy_CV | BOOL | 1 = 准备好接收 OSet_CV(启用数据输入字段)。 |
ORdy_Reset | BOOL | 1 = 至少一个报警或去除条件需要重置。 |
ORdy_ResetAckAll | BOOL | 1 = 至少一个报警或锁定去除条件需要重置或确认。 |
公共 InOut 成员 | 数据类型 | 用途 | 说明 |
|---|---|---|---|
BusObj | BUS_OBJ | InOut | 总线组件。 |
BUS_OBJ 结构
BUS_OBJ 结构用于将模拟输出指令链接到复杂控制策略中的其他设备和指令,通常采用层级结构。总线对象将状态和报警信息从较低级别的设备汇总到较高级别的控件,并将命令从较高级别的控件扇出到较低级别的设备。通过引用与总线相关的 BUS_OBJ 数组的单个成员来将项链接到总线。
此参数将指令链接到外部标签,该外部标签包含指令运行所需的数据。外部标签必须为所显示的数据类型,也可以为 NULL。如果为 NULL,则此指令的总线功能不可用。
成员 | 数据类型 | 说明 |
|---|---|---|
Inp_Cmd | DINT | 用于声明命令的输入 |
Out_Cmd | DINT | 产生的命令 |
Inp_CmdLLH | DINT | 水平常高命令的输入 |
Out_CmdLLH | DINT | 产生的线路水平高命令 |
Inp_Sts | DINT | 用于声明状态的输入 |
Out_Sts | DINT | 产生的状态 |
Inp_CmdAck | DINT | 用于声明命令确认的输入 |
Out_CmdAck | DINT | 产生的命令确认 |
Inp_SeverityMax | DINT | 输入:最大报警严重性 |
Out_SeverityMax | DINT | 最大报警严重性的产生 |
Cfg_CmdMask | DINT | 命令的传播掩码 |
Cfg_CmdLLHMask | DINT | 线路水平高命令的传播掩码 |
Cfg_StsMask | DINT | 状态的传播掩码 |
Ref_Index | DINT | 总线数组索引 |
报警
为以下成员定义基于离散 Logix 标签的报警。
成员 | 报警名称 | 说明 |
|---|---|---|
Sts_IOFault | Alm_IOFault | 输入/输出 (IO) 故障。 当 Inp_IOFault 输入为真时引发。此输入用于向指令指示与模块的连接有故障。此输入还指示模块是否报告其输入/输出 (I/O) 发生现场断电/没有负载/短路。如果输入/输出 (I/O) 故障配置为去除故障,则设备受控关闭,在重置前无法被控制到其他状态。在虚拟模式下,不会引发报警条件。 |
Sts_DeviceFault | Alm_DeviceFault | 设备已确认故障。 当 Inp_DeviceFault 输入为真时引发。在虚拟模式下,不会引发设备故障报警条件。 |
Sts_Dev | Alm_Dev | 偏差报警。 当所需设备位置与实际设备位置之差大于上限或小于下限时引发。即,在以下情况为真时引发: ((Val_CVOut-Val_Pos) > Cfg_HiDevLim) OR ((Val_CVOut-Val_Pos) < Cfg_LoDevLim) |
Sts_IntlkTrip | Alm_IntlkTrip | 互锁脱扣报警。 当互锁非正常 (OK) 状态导致设备从“开启”状态或脉冲状态转换为“关闭”状态时引发。 如果互锁未被绕过,则可绕过互锁或不可绕过互锁的非正常 (OK) 状态将引发互锁脱扣。如果互锁被绕过,则只有不可绕过互锁非正常 (OK) 状态将引发互锁脱扣。 |
将报警标记为已使用或未使用,并设置基于离散 Logix 标签的报警的标准配置成员。以此格式访问报警元素:
PAOTag.@Alarms.AlarmName.AlarmElement
每个报警的程序命令让用户能够确认、抑制、取消抑制和取消延迟报警。这些命令将传播到基于标签的报警的相应命令(ProgAck、ProgSuppress、ProgUnsupress、ProgUnshelve)。
此外还有程序命令允许用户同时确认、重置、抑制和取消抑制指令的所有报警或报警集。

操作
下图展示了 PAO 指令的功能:

下图解释了互锁脱扣状态的逻辑:

下图展示了 PAO 指令对于脉冲设备的功能:

虚拟化
虚拟化处于活动状态时,模拟输出的输出保持为零,并忽略输入/输出 (I/O) 故障。操作指令时,就像存在正在运行的模拟输出一样。此操作用于进行指令测试和操作员培训。将 Inp_Virtual 操作数设置为 1 以启用虚拟化。完成虚拟化后,将 Inp_Virtual 操作数设置为 0 以恢复正常操作。
HMI 字符串配置
配置 HMI 面板(如
FactoryTalk View
所示)和 Logix Designer
配置对话框的字符串。字符串将设置为标签项的扩展属性。只能在 Logix Designer
应用程序中配置字符串。- 说明
- 图形符号的标签
- 标签名称
- 用于 HMI 面板调用的显示库
- 指令名称
- 区域名称
- URL 链接
- CV 原始单位 - 来自 Out_CVData 标签的 EngineeringUnit 信息
- CV 工程单位 - 来自 Val_CVOut 标签的 EngineeringUnit 信息
- 包含更多信息的对象的路径 - 来自 P_ANALOG_INPUT 结构的 Cfg_HasMoreObj 成员的导航信息,Cfg_HasMoreObj.@Navigation
- 包含输出 CV 信息的对象的路径 - 来自 P_ANALOG_INPUT 结构的 Val_CVOut 成员的导航信息,Val_CVOut.@Navigation
- 包含输出数据信息的对象的路径 - 来自 P_ANALOG_INPUT 结构的 Inp_PosFdbk 成员的导航信息,Inp_PosFdbk.@Navigation
命令源
指令使用以下命令源。命令源在下表中从高到低的优先级顺序排序。
命令源 | 说明 |
|---|---|
手控 | 指令之外的逻辑拥有对设备的控制权。该指令会跟踪设备的状态,以便平滑过渡回其他命令源之一。 (优先级最高的命令源) |
停用 | 指令被禁用且没有宿主。 |
维护 | 维护拥有对设备的控制权,取代操作员控制、程序控制和覆盖控制。接受来自 HMI 的操作员命令和设置。绕过可绕过的互锁和许可,未处理设备超时检查。 |
覆盖 | 优先级逻辑拥有对设备的控制权,取代操作员和程序控制。接受覆盖输入 (Inp_OvrdCmd)。如果进行这样的配置,则绕过可绕过的互锁和许可。 |
程序已锁定 | 程序逻辑拥有对设备的控制权。接受程序命令 (PCmd_)。操作员无法从程序获取控制权。覆盖无法从程序获取控制权,除非 Cfg_OvrdOverLock = 1。 |
程序 | 程序逻辑拥有对设备的控制权。接受程序命令 (PCmd_)。 |
操作员已锁定 | 操作员拥有对设备的控制权。接受来自 HMI 的操作员命令 (OCmd_)。程序无法从操作员获取控制权。覆盖无法从操作员获取控制权,除非 Cfg_OvrdOverLock = 1。 |
运算符 | 操作员拥有对设备的控制权。接受来自 HMI 的操作员命令 (OCmd_)。 (最低优先级命令源) |
该指令能够启用/禁用以下操作:
- 存在维护停用
- 存在维护
- 存在外部
- 存在程序(已解锁)
- 存在程序(已锁定)
- 存在操作员(已解锁)
- 存在操作员(已锁定)
- PCmd_Lock 用作级别(1 = 锁定,0 = 解锁)
指令会检查控制权的无效配置,强制设置最接近的有效配置。
核心控制模型专门处理接收功能当前接受的命令和参数源的仲裁。更确切地说,源是否为:
- 可编程实体(完全驻留于处理环境中),或
- 外部接口实体(在处理环境外部并异步发出命令和参数)。
这些源分别称为 Prog(程序)和 Oper(操作员)控制。
需要一个用来锁定控制源的可选功能,以确保设计人员想要阻止的控制源无法获取权限。
核心命令源模型
核心控制模型由以下控制源组成:Oper、OperLocked、Prog、ProgLocked。控制模型默认为该配置。其他控制源在模型中也可能存在,但充当覆盖控制源,独立于基本操作员/程序状态机运行。
按照配置启用控制源
用户可以启用或禁用各个控制源。默认配置将使用整个基本模型。不同之处是,在处理环境加电后,控制源将为指定的默认设置。不允许已启用控制源的某些组合,因为它们不是必需的,或者可能会造成意外的更改。
Prog 加电
此配置允许用户指定是将操作员还是程序作为加电默认设置。
Prog 优先级
此配置允许用户指定在同时声明操作员命令和程序命令时,哪个命令获得成功。
自动重置命令
所有命令都被视为“单触发锁定”。这意味着,当指令执行并处理所有命令时,将自动清除所有命令。
更改目标状态
在某些配置下,某些命令的目标命令源可能会发生更改。这符合命令意图。示例:如果 Prog 处于禁用状态,则 OCmd_Prog 命令的目标将定向到 ProgLocked 状态,而不是 Prog 状态。这样做是为了保持 OCmd_Prog 命令的意图:操作员实体希望将该函数置于程序的控制下。如果该命令被删除,则将无法完成此操作。此操作仅在不会引发冲突或竞争状况的配置中完成。但保留尽可能多的用户功能是切实可行的。
优先级较高的命令源
在模型中独立工作的优先级较高的命令源:覆盖、维护、停用、服务中和手控。
监控 PAO 指令
使用 PlantPAx 过程对象库中的操作员面板进行监控。
影响数学状态标志
编号
严重/轻微故障
没有特定于此指令的故障。请参见“数组索引编制”,了解关于数组索引故障的信息。
执行
梯形图
条件/状态 | 执行的操作 |
|---|---|
预扫描 | 梯级输出条件设置为假。 将 Sts_eSrc 设置为 0。将 Sts_bSrc 设置为 1(从不扫描)。 |
指令首次运行 | 每次执行时自动清除的所有命令都将被清除并忽略。 根据配置 (Cfg_ProgPwrUp) 设置程序/操作员选择。 程序或操作员锁定选择设置为未锁定。 维护获取/释放状态不作修改,并且会通过控制器加电或程序 (PROG) 到运行 (RUN) 的转换继续保持不变。 PSet_Owner 和 Sts_Owner 设为 0。 |
梯级输入条件为假 | 如果 Inp_Hand=0,指令将停用。输出已断电。将清除所有报警。 命令源选择处理正常进行,但所有权状态位(Sts_Maint、Sts_Ovrd、Sts_Prog 和 Sts_Oper)全部清零。仍将收到维护、操作员和程序的命令,并进行幕后处理,如同在手控模式下一样。 |
梯级输入条件为真 | 将梯级输出条件设置为梯级输入条件。 指令执行。 |
后扫描 | 梯级输出条件设置为假。 |
功能块图
条件/状态 | 执行的操作 |
|---|---|
预扫描 | 请参阅“梯形图”表中的“预扫描”行。 |
指令首次运行 | 请参阅“梯形图”表中的“指令首次运行”行。 |
指令首次扫描 | 请参阅“梯形图”表中的“指令首次运行”行。 |
EnableIn 为假 | 请参阅“梯形图”表中的“梯级输入条件为假”。 |
EnableIn 为真 | 请参见“梯形图”表中的“梯级输入条件为真”行。 |
后扫描 | EnableIn 和 EnableOut 位设置为假。 |
结构化文本
在结构化文本中,EnableIn 在普通扫描期间始终为真。因此,如果指令处于由逻辑激活的控制路径中,指令将会执行。
条件/状态 | 执行的操作 |
|---|---|
预扫描 | 请参阅“梯形图”表中的“预扫描”行。 |
指令首次运行 | 请参阅“梯形图”表中的“指令首次运行”行。 |
EnableIn 为真 | 请参见“梯形图”表中的“梯级输入条件为真”行。 |
后扫描 | EnableIn 和 EnableOut 位设置为假。 |
示例 1:模拟阀
以下示例演示了如何使用 PAO 指令对阀进行控制。在正常操作期间,操作员通过 HMI 面板使用 PAO 设置阀的位置。本示例还包括 PAI 指令输出提供的温度下下限和上上限互锁条件。互锁条件由 PAO 用作输入,用于将阀 (Local:0:O.Ch0Data = Out_CVData) 设置到互锁位置(例如关闭)。可以通过将 PAO 配置参数 Cfg_Intlk 设为 0 来完成此操作。
梯形图

功能块图

结构化文本
FCV_103.Inp_NBIntlkOK := NOT(TT_103.Sts_HiHi OR LT_103.Sts_LoLo);
FCV_103.Inp_IOFault := Local:0:I.Ch0Fault;
PAO(FCV_103, 0);
Local:1:O.Ch0Data := FCV_103.Out_CVData;
示例 2:手动加载站
本示例使用 PAO 指令针对压力控制阀(该阀用于调节过程的气体供给)实施手动加载站。本示例中的控制阀已打开和关闭限位开关和位置反馈。操作员通过 HMI 面板提供所需的阀位置。
位置反馈、打开的限位开关和关闭的限位开关的字段输入连接到指令输入 Inp_PosFdbk、Inp_OpenedFdbkData 和 Inp_ClosedFdbkData。Out_CVData 连接到进入阀的字段输出。
Cfg_HasOpenedFdbk 和 Cfg_HasClosedFdbk 参数均设为 1,因此指令知道该字段可以提供打开的和关闭的限位开关。Cfg_UseOpenedFdbk 和 Cfg_UseClosedFdbk 参数设置为 1,从而使用这些限位开关来确定设备状态。
模拟输出卡预期输出的单位为 4...20 mA;但是,面板会以 0...100% 打开的形式显示值。因此,缩放参数的设置如下所示。Cfg_CVEUMin=0、Cfg_CVEUMax=100、Cfg_CVRawMin=4、Cfg_CVRawMax=20。
通过 PAI 指令提供阀位置反馈,以 CV 工程单位(特定情况下采用百分比)表示。
梯形图

功能块图

结构化文本
PCV_110812.Inp_OpenedFdbkData := I_PSO110812;
PCV_110812.Inp_ClosedFdbkData := I_PSC110812;
PCV_110812.Inp_PosFdbk := I_PZV110812.Val;
PAO(PCV_110812, 0);
O_PV110812 := PCV_103.Out_CVData;
示例 3:棘齿阀
本示例使用 PAO 指令,通过使用两个离散输出控制流量,自动驱动棘齿阀的打开或关闭。本示例中的流量阀具有位置反馈。所需的阀位置由逻辑中其他位置的控制算法输出提供。
在本示例中,位置反馈的字段输入连接到指令输入 Inp_PosFdbk。Out_CVOpenData 和 Out_CVCloseData 连接到进入阀的字段输出。用于设置阀位置的指令输入连接到 PSet_CV。Cfg_ProgNormal 设置为 1,因此指令默认为程序模式。
不使用模拟输出;但是,面板会以 0...100% 打开的形式显示 Val_CVOut 的值(以 CV 工程单位表示)。因此,缩放参数的设置如下所示。Cfg_CVEUMin=0、Cfg_CVEUMax=100、Cfg_CVRawMin=0(默认值)、Cfg_CVRawMax=100(默认值)
通过 PAI 指令提供反馈信号(以 CV 工程单位表示),该指令将信号从反馈原始单位缩放为 CV 工程单位。
在本例中,要调整棘齿控制阀,应将打开或关闭阀命令循环一段时间,该时间段与阀移动量成比例。Cfg_CycleTime 设置为 10 以定义总体循环周期,用于对打开或关闭输出进行循环开关。Cfg_OpenRate 和 Cfg_CloseRate 均设置为 1,这表示每出现 1% 的目标位置与反馈提供的实际位置之差,就将所需的阀输出接通 1 秒。
Cfg_MaxOnTime 设置为 5 时,输出在 10 秒循环时间的 5 秒内接通以允许阀移动,并在下一个周期之前验证反馈。Cfg_MinOnTime 设置为 1 时,如果计算出的脉冲时间小于 1 秒,输出不会生成脉冲。
梯形图

功能块图

结构化文本
FCV_110813.PSet_CV := FIC_110813_Out;
FCV_110813.Inp_PosFdbk := I_FVZ110813;
PAO(FCV_110813, 0);
O_FYO110813 := FCV_110813.Out_CVOpenData;
O_FYC110813 := FCV_110813.Out_CVCloseData;
提供反馈