过程比例 + 积分 + 微分 (PPID)
此信息适用于 CompactLogix 5380P、ControlLogix 5580P 和 ControlLogix 5590 控制器。
过程比例 + 积分 + 微分 (PPID) 指令用于在监管控制回路中处理控制变量 (CV),以响应过程变量 (PV) 读数和设定值(SP,目标 PV)设置。
CV 通常用作次级控制回路或内部控制回路的级联设定值,或者发送到输入/输出 (IO) 卡上的模拟输出通道。
PPID 指令将现有 PID、PIDE 以及 P_PIDE AOI 的功能集成到单个内置指令中,并添加其他功能。
PPID 指令:
- 使用 PID 算法计算 CV。速度算法也称为增量算法。速度算法通过先前执行的指令对DPTerm、DITerm、DDTerm、DFF 和 CV 求和来计算 CV 值。当设置 Inp_UseCVPrev 时,前一 CV 设置为等于 Inp_CVPrev。当设置 Inp_UseFFPrev 时,前一 FF 设置为等于 Inp_FFPrev。这样便可以在计算输出 CV 值(CV = 前一 CV +DPTerm +DITerm +DDTerm +DFF)之前将 CV 预设为指定值。PID 算法的速度形式支持参数变化的平滑转换。
- 提供一个选项来抑制增益变化的平滑转换。如果选择此选项,PID 计算将作为一种位置 PID 算法,其中控制操作随回路误差而变化,而非误差变化。
- 使用两个自由度 PID 公式计算 CV(比例 PTerm 操作派生自加权 SP 与 PV 的差 (b*SP-PV)、积分 ITerm 操作派生自控制误差,微分 DTerm 操作派生自加权 SP 与 PV 之差 (c*SP-PV) 的变化)。运行时加权设置的变化是平滑的。
- 当误差增大时,将误差平方(选项)算法与 CV 一起使用更为有效。误差平方的使用仅限 PTerm。
- 提供直接/反向操作(选项)。当 CV 随 PV 增大而增大 (Cfg_CtrlAction=1) 时,为直接操作。当 CV 随 PV 增大而减小 (Cfg_CtrlAction=0) 时,为反向操作。
- 允许偏差死区。处于零误差左右的区域内时,CV 对回路误差变化不敏感。配置的区域级别允许额外的滞后。接近 SP 的 PV (Cfg_DevDBEnter) 的死区级别可以设置为低于远离 SP 的 PV (Cfg_DevDB) 的死区级别。在死区内为 PV 设置活动死区状态。在死区 (Cfg_UseIntegDevDB) 中,提供一个用于停止 CV 移动或者只是停止积分而使比例和微分操作保持实时状态的选项。
- 在Logix Designer应用程序界面上显示工程单位。SP 和 PV 值以 PV 工程单位显示和输入。CV 目标的 Val_CVSet 和 CV 输出的 Val_CVOut 以 CV 工程单位显示和输入。PID 算法在内部使用所有缩放为量程百分比的变量,这些值还可用作输出 Val_PVPercent、Val_SPPercent、Val_EPercent 和 Val_CVPercent。
- 可针对独立增益和相关增益进行配置。PGain、IGain 和 DGain 标签中存储的值的解释取决于指令配置。
- 独立增益配置:PGain = Kp...比例增益,IGain = Ki...积分增益 [1/分钟],DGain = Kd...微分增益 [分钟]。
- 相关增益配置:PGain = K...控制器增益,IGain = Ti...重置时间 [分钟],DGain = Td...速率时间 [分钟]。如果希望比例项、积分项和微分项的三个增益独立工作,则使用独立增益。如果希望控制器总体增益影响全部三项(P、I 和 D),则使用相关增益。
- 提供可选微分平滑(高频下的微分限制)。纯微分可以很大地放大测量噪声。可以将相关和独立 PID 算法配置为在高频下限制微分项增益。
- 保证抗积分饱和。PID 算法配有积分(重置)和积分饱和防护(重置反馈)。当自动处理 CV 饱和时,内部积分饱和。如果正在使用输入,还会处理由 Inp_WindupHi 或 Inp_WindupLo 指示的内回路外部积分饱和。
- 允许外部 CV 跟踪(选项)。当 Cfg_UseCVTrack 设置或内回路不适用于 PPID 指令(Inp_InnerAvailable 为假)时,CV 跟踪 Inp_CVTrack 值。当级联中的内(次级)回路不能遵循由该外(主)回路 PID 计算的 CV 值,并且 Inp_WindupHi 或 Inp_WindupLo 未被使用或不为真时,该选项十分有用。当在 Cfg_CVTrackGain 中指定了配置的动态值时,允许跟踪。CVTrackGain 被视为独立增益的跟踪增益 Kt(1/分钟),或相关增益的跟踪时间常数 Tt(分钟)。
- 提供配置的 SP 钳位和过渡:在指定的限值(单独的变化率增大限值和减小限值)下设定值的钳位(以 PVEU 计)和过渡(以 PVEU/秒计)。
- 提供配置的 CV 钳位和过渡:在指定的限值(单独的变化率增大限值和减小限值)下 CV 的钳位(以 CVEU 计)和过渡(以 CVEU/秒计)。
- 启用 CV 手控反馈。
- 支持来自以下命令源的操作:来自外部、程序和操作员的手控、维护、覆盖和全回路控制(级联、带设定值的自动、带 CV 的手动)。
- 支持三种自动(自动、级联、级联/比率)回路模式和一种手动(手动)回路模式。
- 在自动回路模式下,从程序、操作员、覆盖或外部条目中读取以工程单位 (PVEU) 计的设定值 (SP)。还可以输入设定值目标(以 PV 工程单位 PVEU 计)和过渡时间(以秒计),并使用命令触发内置设定值过渡。
- 在手动回路模式下,从程序、操作员、覆盖或外部条目中读取以工程单位计的 CV。
- 监控导致输出 CV 和 SP 去除的互锁条件。可将 CV 去除配置为保留上一个良好的 CV 值,或者使用配置的安全值。通过去除将 SP 设置为当前 PV。
- 监控输入/输出 (I/O) 通信故障。
- 支持加电和初始化操作。在加电模式下,SP、CV 和回路模式设置为所配置的值。
- 监控互锁脱扣、回路故障、与设定值的上上限偏差、上限偏差、下限偏差和下下限偏差的报警条件。
- 当设定值与过程变量之差(计算公式为 PV-SP)超出配置的阈值时,引发上上限偏差状态。
- 当设定值与过程变量之差(计算公式为 PV-SP)超出配置的阈值时,引发上限偏差状态。
- 当设定值与过程变量之差(计算公式为 PV-SP)超出配置的阈值时,引发下限偏差状态。
- 当设定值与过程变量之差(计算公式为 PV-SP)超出配置的阈值时,引发下下限偏差状态。
- 当 PPID 指示严重的配置错误(如无效的钳位限值、缩放限值和死区)时,引发回路故障状态。当 PV 质量不足以使 PID 回路正常工作且输入/输出 (I/O) 故障输入/状态为真时,也会引发此状态。当手控反馈输入报告手控不良时,也会引发此状态。
- 当互锁非正常 (OK ) 条件导致输出 CV 更改为配置的互锁 CV 值或保持在其上一个值时,引发互锁脱扣状态。如果互锁未被绕过,则可绕过互锁或不可绕过互锁的非正常 (OK) 状态将引发互锁脱扣。如果互锁被绕过,则只有不可绕过互锁非正常 (OK) 状态将引发互锁脱扣。
可用语言
梯形图

功能块图

结构化文本
PPID(PPID tag, BusObj);
操作数
重要提示:
以下情况下会导致运行出现意外:
- 输出标签操作数被覆盖。
- 结构操作数的成员被覆盖。
- 除非另外指定,否则结构操作数由多条指令共用。
指令中混用数据类型时,需遵从相关的数据转换规则。请参阅“数据转换”部分。
配置操作数
操作数 | 类型 | 格式 | 说明 |
|---|---|---|---|
PlantPAx Control | P_PID | 标签 | 指令正确运行所需的数据结构。 |
BusObj | BUS_OBJ | 标签 | 总线组件。可以为 null。 |
P_PID 结构
公共成员是可通过编程方式访问的标准可见标签成员。专用或隐藏成员用于 HMI 面板中,无法通过编程方式访问。专用成员在公共成员后面的单独表中列出。
公共输入成员 | 数据类型 | 默认值 | 说明 |
|---|---|---|---|
EnableIn | BOOL | 真 | 启用输入。 梯形图: 对应于梯级条件。 默认值为真。 |
Inp_InitializeReq | BOOL | 真 | 1 = 请求初始化指令。指令通常在首次运行时进行初始化。使用此请求重新初始化。当 Inp_InitializeReq = 1 时,将使用加电配置值。该指令自动清除该操作数。 默认值为真。 |
Inp_OwnerCmd | DINT | 0 | 宿主设备命令: 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_PV | REAL | 0.0 | 过程变量 (PVEU)。 任意浮点数均有效。 默认值为 0.0。 |
Inp_CascSP | REAL | 0.0 | 级联回路模式下的 SP,比率回路模式下的独立 PV (PVEU)。 任意浮点数均有效。 默认值为 0.0。 |
Inp_FF | REAL | 0.0 | 前馈项 (CVEU)。 有效值 = -(Cfg_CVEUMax-Cfg_CVEUMin) 和 (Cfg_CVEUMax-Cfg_CVEUMin) 之间的任意浮点数。 默认值为 0.0。 |
Inp_FFPrev | REAL | 0.0 | 当 Inp_UseFFPrev = 1 时,上一次扫描前馈 (CVEU)。 有效值 = -(Cfg_CVEUMax-Cfg_CVEUMin) 和 (Cfg_CVEUMax-Cfg_CVEUMin) 之间的任意浮点数。 默认值为 0.0。 |
Inp_CVTrack | REAL | 0.0 | 如果 Cfg_UseCVTrack = 1 或 Inp_InnerAvailable = 0 (CVEU),则跟踪 CV。 任意浮点数均有效。 默认值为 0.0。 |
Inp_CVInitialVal | REAL | 0.0 | 根据请求 Inp_UseCVInitialVal = 1 (CVEU) 初始化 CV 的值。 任意浮点数均有效。 默认值为 0.0。 |
Inp_CVPrev | REAL | 0.0 | 上一次扫描 CV,Val_CVOut (CVEU)。 有效值 = Cfg_CVEUMin 和 Cfg_CVEUMax 之间的任意浮点数。 默认值为 0.0。 |
Inp_UseFFPrev | BOOL | 假 | 1 = 使用 Inp_FFPrev 作为上一个 FF 值, 0 = 使用上一次扫描的 Inp_FF 值作为上一个 FF 值。 默认值为假。 |
Inp_UseCVInitialVal | BOOL | 假 | 1 = 将 CV 初始化为 Inp_CVInitialVal。 默认值为假。 |
Inp_UseCVPrev | BOOL | 假 | 1 = 使用 Inp_CVPrev 作为上一个 CV 值, 0 = 使用上次扫描值。 默认值为假。 |
Inp_WindupHi | BOOL | 假 | 积分饱和上限信号。为真时,CV 无法沿正向积分。该信号通常从内回路的积分饱和上限输出获得。 默认值为假。 |
Inp_WindupLo | BOOL | 假 | 积分饱和下限信号。为真时,CV 无法沿负向积分。该信号通常从内回路的积分饱和下限输出获得。 默认值为假。 |
Inp_InnerAvailable | BOOL | 真 | 1 = 内回路可用。 0 = 内回路不可用,PPID 跟踪 Inp_CVTrack,通常为内回路 SP 或传动装置位置。 默认值为真。 |
Inp_IntlkOK | BOOL | 真 | 1 = 可绕过互锁正常 (OK),可以设置 CV。 默认值为真。 |
Inp_NBIntlkOK | BOOL | 真 | 1 = 不可绕过互锁正常 (OK),可以设置 CV。 默认值为真。 |
Inp_IntlkAvailable | BOOL | 假 | 1 = 互锁可用性正常 (OK)。 默认值为假。 |
Inp_IntlkTripInh | BOOL | 假 | 1 = 禁用互锁脱扣状态。 默认值为假。 |
Inp_RdyReset | BOOL | 假 | 1 = 通过该对象重置的相关对象已准备好重置。ORdy_Reset 就绪,启用 HMI 按钮。 默认值为假。 |
Inp_CVIOFault | BOOL | 假 | 1 = CV 输入/输出 (I/O) 通信状态不良, 0 = 正常 (OK)。 默认值为假。 |
Inp_PVBad | BOOL | 假 | 1 = PV 质量或 PV 输入/输出 (I/O) 通信状态不良, 0 = 正常 (OK)。 默认值为假。 |
Inp_PVUncertain | BOOL | 假 | 1 = PV 值不可靠, 0 = 正常 (OK)。 默认值为假。 |
Inp_PVSrcQ | SINT | 0 | Inp_PV 源状态和质量: 0 = 良好,畅通,确认良好, 1 = 良好,畅通,假定良好, 2 = 良好,无反馈,假定良好, 8 = 测试,仿真, 9 = 测试,回路, 10 = 测试,手动输入, 16 = 不确定,畅通,不合格, 17 = 不确定,在设备端替代, 18 = 不确定,在指令端替代, 19 = 不确定,使用最后一个已知良好值, 20 = 不确定,使用替代值, 32 = 不良,信号故障, 33 = 不良,通道故障, 34 = 不良,模块/通信故障, 35 = 不良,配置无效。 默认值为 0。 |
Inp_PVNotify | SINT | 0 | 相关 PV 对象报警优先级和确认状态: 0 = 未处于报警中,已确认, 1 = 未处于报警中,未确认或需要重置, 2 = 低严重性报警,已确认, 3 = 低严重性报警,未确认, 4 = 中等严重性报警,已确认, 5 = 中等严重性报警,未确认, 6 = 高严重性报警,已确认, 7 = 高严重性报警,未确认, 8 = 紧急严重性报警,已确认, 9 = 紧急严重性报警,未确认。 默认值为 0。 |
Inp_CVNotify | SINT | 0 | 相关 CV 对象报警优先级和确认状态: 0 = 未处于报警中,已确认, 1 = 未处于报警中,未确认或需要重置, 2 = 低严重性报警,已确认, 3 = 低严重性报警,未确认, 4 = 中等严重性报警,已确认, 5 = 中等严重性报警,未确认, 6 = 高严重性报警,已确认, 7 = 高严重性报警,未确认, 8 = 紧急严重性报警,已确认, 9 = 紧急严重性报警,未确认。 默认值为 0。 |
Inp_CascSPNotify | SINT | 0 | 相关级联 SP 对象报警优先级和确认状态: 0 = 未处于报警中,已确认, 1 = 未处于报警中,未确认或需要重置, 2 = 低严重性报警,已确认, 3 = 低严重性报警,未确认, 4 = 中等严重性报警,已确认, 5 = 中等严重性报警,未确认, 6 = 高严重性报警,已确认, 7 = 高严重性报警,未确认, 8 = 紧急严重性报警,已确认, 9 = 紧急严重性报警,未确认。 默认值为 0。 |
Inp_HiHiDevGate | BOOL | 真 | 用于上上限偏差状态检测的选通输入: 1 = 启用相应的模拟输入阈值监控, 0 = 禁用检测并强制关闭相应的状态输出。 默认值为真。 |
Inp_HiDevGate | BOOL | 真 | 用于上限偏差状态检测的门输入: 1 = 启用相应的模拟输入阈值监控, 0 = 禁用检测并强制关闭相应的状态输出。 默认值为真。 |
Inp_LoDevGate | BOOL | 真 | 用于下限偏差状态检测的门输入: 1 = 启用相应的模拟输入阈值监控, 0 = 禁用检测并强制关闭相应的状态输出。 默认值为真。 |
Inp_LoLoDevGate | BOOL | 真 | 用于下下限偏差状态检测的门输入: 1 = 启用相应的模拟输入阈值监控, 0 = 禁用检测并强制关闭相应的状态输出。 默认值为真。 |
Inp_Hand | BOOL | 假 | 1 = 获取手控, 0 = 释放手控。 默认值为假。 |
Inp_HandFdbk | REAL | 0.0 | 宿主为手控 (CVEU) 时使用 CV 反馈。 任意浮点数均有效。 默认值为 0.0。 |
Inp_HandFdbkBad | BOOL | 假 | 1 = CV 手动反馈质量或 CV 手动反馈输入/输出 (I/O) 通信状态不良, 0 = 正常 (OK)。 默认值为假。 |
Inp_Ovrd | BOOL | 假 | 1 = 获取覆盖(较高优先级程序逻辑), 0 = 释放覆盖。 默认值为假。 |
Inp_OvrdCmd | SINT | 0 | 覆盖中的回路模式命令: 0 = 无, 1 = 手动, 2 = 自动, 3 = 级联, 4 = 正常, 5 = 启动 SP 过渡, 6 = 停止 SP 过渡。 默认值为 0。 |
Inp_OvrdSP | REAL | 0.0 | 覆盖中的回路自动 SP(PVEU)。 任意浮点数均有效。 默认值为 0.0。 |
Inp_OvrdSPTarget | REAL | 0.0 | 过渡向导中 SP 目标的覆盖设置 (PVEU)。 任意浮点数均有效。 默认值为 0.0。 |
Inp_OvrdSPRampTime | REAL | 0.0 | 过渡向导中到达 SP 目标的时间的覆盖设置(秒)。 有效值 = 0.0 至 28,800.0 秒。 默认值为 0.0。 |
Inp_OvrdRatio | REAL | 1.0 | 覆盖中的回路比率(无单位)。 有效值 = 0.0 到最大正浮点数。 默认值为 1.0。 |
Inp_OvrdCV | REAL | 0.0 | 覆盖中的回路手动 CV (CVEU)。 任意浮点数均有效。 默认值为 0.0。 |
Inp_ExtInh | BOOL | 假 | 1 = 禁止外部获取, 0 = 允许外部获取。 默认值为假。 |
Inp_Reset | BOOL | 假 | 1 = 重置状态已恢复正常的已去除锁定和锁定报警。 默认值为假。 |
Cfg_AllowDisable | BOOL | 真 | 1 = 允许维护人员禁用报警。 默认值为真。 |
Cfg_AllowShelve | BOOL | 真 | 1 = 允许操作员延迟报警。 |
Cfg_HasRatio | BOOL | 假 | 1 = 级联回路模式为比率, 0 = 级联回路模式为级联。 默认值为假。 |
Cfg_HasCasc | BOOL | 假 | 1 = 将回路置于级联/比率模式。 默认值为假。 |
Cfg_HasAuto | BOOL | 真 | 1 = 将回路置于自动模式。 默认值为真。 |
Cfg_HasMan | BOOL | 真 | 1 = 将回路置于手动模式。 默认值为真。 |
Cfg_HasSPRamp | BOOL | 假 | 1 = 启用 SP 过渡向导功能。 默认值为假。 |
Cfg_ExecTime | REAL | 0.0 | PID 算法的执行周期(秒)。 配置指令,用于执行周期为 0.0(默认),或短于指令扫描时间的周期不起作用,并且每次扫描均执行 PID 算法。对于实际执行周期,请检查 Val_ExecTime。 有效值 = 0.0 到 2147483.0 秒。 默认值为 0.0。 |
Cfg_PGain | REAL | 0.0 | 独立增益的比例增益 Kp,或相关增益的回路增益 Kc(无单位)。 有效值 = 0.0 到最大正浮点数。 默认值为 0.0。 |
Cfg_IGain | REAL | 0.0 | 独立增益的积分增益 Ki(1/分钟),或相关增益的重置时间 Ti(分钟/重复)。 有效值 = 0.0 到最大正浮点数。 默认值为 0.0。 |
Cfg_DGain | REAL | 0.0 | 独立增益的微分增益 Kd(分钟),或相关增益的速率时间 Td(分钟)。 有效值 = 0.0 到最大正浮点数。 默认值为 0.0。 |
Cfg_CVTrackGain | REAL | 0.0 | 如果 Cfg_UseCVTrack = 1,则 CV 跟踪 Inp_CVTrack 时,独立增益的跟踪增益 Kt(1/分钟)或相关增益的跟踪时间常数 Tt(分钟)。 有效值 = 0.0 到最大正浮点数。 默认值为 0.0。 |
Cfg_UseCVTrack | BOOL | 假 | 1 = 在跟踪中使用 Inp_CVTrack 重置反馈,例如,如果 PPID 输出明显快于传动装置或内回路或处于覆盖选择控制中。 |
Cfg_PSPWeight | REAL | 1.0 | 2DOF PID 比例项中 SP 的权重,beta 增益。 有效值 = 0.0 至 1.5。 默认值为 1.0。 |
Cfg_DSPWeight | REAL | 0.0 | 2DOF PID 微分项中 SP 的权重,伽马增益。 有效值 = 0.0 至 1.5。 默认值为 0.0。 |
Cfg_PVTrack | BOOL | 假 | 1 = 在手动模式下 SP 跟踪 PV, 0 = 无 PV 跟踪。 默认值为假。 |
Cfg_GainBumpless | BOOL | 真 | 1 = CV 对 PGain 和 DGain 变化的响应平滑, 0 = CV 对 PGain 和 DGain 变化的响应并非平滑(类似于位置算法)。 默认值为真。 |
Cfg_PositionBump | BOOL | 假 | 1 = PD 算法的位置形式,没有从手动到自动或级联的平滑转换。仅在 Cfg_IGain = 0 时启用。比例增益的变化并非平滑。 0 = PID 算法的速度形式,从手动到自动或级联的平滑过渡。 默认值为假。 |
Cfg_UseESquared | BOOL | 假 | 1 = 在比例操作中使用误差平方。 默认值为假。 |
Cfg_CtrlAction | BOOL | 假 | 1 = 对 E = PV-SP 的控制操作,正向操作 0 = 对 E = SP-PV 控制操作,反向操作。 默认值为假。 |
Cfg_Dependent | BOOL | 假 | 1 = 关联增益方程, 0 = 独立增益方程。 默认值为假。 |
Cfg_UseDSmoothing | BOOL | 假 | 1 = 使用微分平滑。 默认值为假。 |
Cfg_DevDB | REAL | 0.0 | PV 偏离 SP (PVEU) 的 PV 偏差死区。 有效值 = 0.0 到最大正浮点数。 |
Cfg_DevDBEnter | REAL | 0.0 | PV 接近 SP (PVEU) 的 PV 偏差死区。 有效值 = 0.0 到 Cfg_DevDB。 |
Cfg_UseIntegDevDB | BOOL | 假 | 1 = 当 PV 偏差死区状态有效时,仅积分项暂停,比例项和微分项保持运行, 0 = 当 PV 偏差死区状态有效时,所有 PID 项均被暂停且 CV 不移动。 默认值为假。 |
Cfg_SkipCVManLim | BOOL | 真 | 1 = 对于去除的 CV 和在手动循环模式下跳过 CV 钳位, 0 = 始终应用 CV 钳位。 |
Cfg_SkipCVManRoC | BOOL | 真 | 1 = 对于去除的 CV 和在手动循环模式下跳过 CV 变化率限制, 0 = 始终应用 CV 变化率限制。 |
Cfg_InitializeToMan | BOOL | 假 | 1 =当请求初始化时转至手动回路模式 (Inp_UseCVInitialVal=1)。 默认值为假。 |
Cfg_SetTrack | BOOL | 真 | 1 = 程序/操作员/外部设置跟踪, 0 = 无跟踪设置。 默认值为真。 |
Cfg_SetTrackOvrdHand | BOOL | 假 | 1 = 程序/操作员/外部设置跟踪覆盖/手控输入(CV、SP、比率)。 默认值为假。 |
Cfg_HasIntlkObj | BOOL | 假 | 1 = 通知 HMI 已将互锁对象 (PINTLK) 连接到 Inp_IntlkOK、InpNBIntlkOK、Inp_IntlkAvailable、Inp_IntlkTripInh 和 Inp_RdyReset。 默认值为假。 |
Cfg_HasMoreObj | BOOL | 假 | 1 = 通知 HMI 有包含较多信息的对象可用。 默认值为假。 |
Cfg_HasHistTrend | SINT | 0 | 有历史趋势。可以从 HMI 导航到设备历史趋势面板。 0 = 无外部历史趋势, 1 = 目录历史趋势, 2 = Historian 历史趋势。 默认值为 0。 |
Cfg_HasCascSPNav | BOOL | 假 | 1 = 通知 HMI 允许导航到所连接的级联 SP 对象。 默认值为假。 |
Cfg_HasPVNav | BOOL | 假 | 1 = 通知 HMI 启用到所连接 PV 对象的导航。 默认值为假。 |
Cfg_HasCVNav | BOOL | 假 | 1 = 通知 HMI 允许导航到所连接的 CV 对象。 默认值为假。 |
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_eKeepLM | SINT | 0 | 回路模式所有权: 0 = 遵循命令源, 1 = 操作员, 2 = 程序, 3 = 外部。 默认值为 0。 |
Cfg_eKeepCV | SINT | 0 | CV 所有权: 0 = 遵循命令源, 1 = 操作员, 2 = 程序, 3 = 外部。 默认值为 0。 |
Cfg_eKeepSP | SINT | 0 | SP 所有权: 0 = 遵循命令源, 1 = 操作员, 2 = 程序, 3 = 外部。 默认值为 0。 |
Cfg_eKeepRatio | SINT | 0 | 比率所有权: 0 = 遵循命令源, 1 = 操作员, 2 = 程序, 3 = 外部。 默认值为 0。 |
Cfg_ProgPwrUp | BOOL | 假 | 1 = 为程序加电, 0 = 为操作员加电。 默认值为假。 |
Cfg_ProgNormal | BOOL | 假 | 正常源: 1 = 如果无请求则为程序, 0 = 如果无请求则为操作员。 默认值为假。 |
Cfg_PCmdPriority | BOOL | 假 | 命令优先级: 1 = 程序命令优先, 0 = 操作员命令优先。 默认值为假。 |
Cfg_PCmdProgAsLevel | BOOL | 假 | 1 = PCmd_Prog 用作级别(1 = Prog,0 = Oper)。 默认值为假。 |
Cfg_PCmdLockAsLevel | BOOL | 假 | 1 = .PCmd_Lock 用作级别(1 = 锁定,0 = 解锁)。 默认值为假。 |
Cfg_ExtAcqAsLevel | BOOL | 假 | 1 = XCmd_Acq 用作级别(XCmd_Acq = 1 获取外部命令,XCmd_Acq = 0 释放外部命令)。 默认值为假。 |
Cfg_OvrdIntlk | BOOL | 假 | 1 = 覆盖绕过(忽略)可绕过的互锁。 0 = 覆盖符合所有互锁条件。 默认值为假。 |
Cfg_SPFailLatch | BOOL | 假 | 1 = 锁定 SP 故障去除操作,直到重置, 0 = 当 SP 良好时返回。 默认值为假。 |
Cfg_PVFailLatch | BOOL | 假 | 1 = 锁定 PV 故障去除操作,直到重置, 0 = PV 良好时返回。 默认值为假。 |
Cfg_CVFailLatch | BOOL | 假 | 1 = 锁定 CV 故障去除操作,直到重置, 0 = CV 良好时返回。 默认值为假。 |
Cfg_LockLM | BOOL | 假 | 锁定回路模式: 1 = 回路模式中的锁定配置为“正常”(请参阅 Cfg_NormLM), 0 = 未锁定。 默认值为假。 |
Cfg_NormLM | SINT | 1 | 回路模式定义为正常: 0 = 禁用正常选择, 1 = 手动, 2 = 自动, 3 = 级联。 默认值为 1。 |
Cfg_PwrUpLM | SINT | 4 | 回路模式定义为加电: 0 = 无更改 - 回路模式,使用上次的(断电)值初始化 CV 和 SP, 1 = 手动, 2 = 自动, 3 = 级联, 4 = 正常。 默认值为 4。 |
Cfg_PVFailTrigger | SINT | 1 | 针对 PV 质量的 PV 故障状态响应: 0 = Inp_PVBad 或 Inp_PVSrcQ >= 32 时的 PV 故障响应(PV 不良), 1 = Inp_PVBad 或 Inp_PVSrcQ >= 17 和 Inp_PVSrcQ <> 18 的 PV 故障响应, 2 = Inp_PVBad 或 Inp_PVUncertain 或 Inp_PVSrcQ >= 16 且 Inp_PVSrcQ <> 18 时的 PV 故障响应。 默认值为 1。 |
Cfg_IntlkTripSPAction | SINT | 0 | 互锁脱扣 SP 操作: 0 = 无, 1 = 保持上一个良好, 2 = 使用Cfg_SPIntlk, 3 = 将 SP 设置为当前 PV。 默认值为 0。 |
Cfg_SPFailSPAction | SINT | 1 | SP 故障 SP 操作: 1 = 保持上一个良好, 2 = 使用Cfg_SPIntlk, 3 = 将 SP 设置为当前 PV。 默认值为 1。 |
Cfg_PVFailSPAction | SINT | 0 | PV 故障 SP 操作: 0 = 无, 1 = 保持上一个良好, 2 = 使用Cfg_SPIntlk。 默认值为 0。 |
Cfg_CVFailSPAction | SINT | 0 | CV 故障 SP 操作: 0 = 无, 1 = 保持上一个良好, 2 = 使用Cfg_SPIntlk, 3 = 将 SP 设置为当前 PV。 默认值为 0。 |
Cfg_IntlkTripCVAction | SINT | 2 | 互锁脱扣 CV 操作: 0 = 无, 1 = 保持上一个良好, 2 = 使用Cfg_CVIntlk。 默认值为 2。 |
Cfg_SPFailCVAction | SINT | 1 | SP 故障 CV 操作: 0 = 无, 1 = 保持上一个良好, 2 = 使用Cfg_CVIntlk。 默认值为 1。 |
Cfg_PVFailCVAction | SINT | 1 | PV 故障 CV 操作: 1 = 保持上一个 CV, 2 = 使用Cfg_CVIntlk。 默认值为 1。 |
Cfg_CVFailCVAction | SINT | 1 | CV 故障 CV 操作: 1 = 保持上一个良好, 2 = 使用Cfg_CVIntlk。 默认值为 1。 |
Cfg_IntlkTripLMAction | SINT | 0 | 互锁脱扣回路模式操作: 0 = 无, 1 = 仅手动, 2 = 仅自动或手动。 默认值为 0。 |
Cfg_SPFailLMAction | SINT | 0 | SP 故障回路模式操作: 0 = 无, 1 = 仅手动, 2 = 仅自动或手动。 默认值为 0。 |
Cfg_PVFailLMAction | SINT | 0 | PV 故障回路模式操作: 0 = 无, 1 = 仅手动, 2 = 仅自动或手动。 默认值为 0。 |
Cfg_CVFailLMAction | SINT | 0 | CV 故障回路模式操作: 0 = 无, 1 = 仅手动, 2 = 仅自动或手动。 默认值为 0。 |
Cfg_PVDecPlcs | SINT | 2 | 显示 PV/SP 的小数位数(最多六个)。 默认值为 2。 |
Cfg_CVDecPlcs | SINT | 2 | 显示 CV 的小数位数(最多六个)。 默认值为 2。 |
Cfg_RatioDecPlcs | SINT | 2 | 显示比率的小数位数(最多六个)。 默认值为 2。 |
Cfg_RatioLoLim | REAL | 0.0 | 允许的最小比率值(无单位)。 有效值为任何小于或等于 Cfg_RatioHiLim 的浮点数。 默认值为 0.0。 |
Cfg_RatioHiLim | REAL | 1.0 | 允许的最大比率值(无单位)。 有效值为任何大于或等于 Cfg_RatioLoLim 的浮点数。 默认值为 1.0。 |
Cfg_SPLoLim | REAL | 0.0 | 允许的 SP 最小值 (PVEU)。 有效值为任何小于或等于 Cfg_SPHiLim 且大于或等于 Cfg_PVEUMin 的浮点数。 默认值为 0.0。 |
Cfg_SPHiLim | REAL | 100.0 | 允许的 SP 最大值 (PVEU)。 有效值为任何大于或等于 Cfg_SPLoLim 且小于或等于 Cfg_PVEUMax 的浮点数。 默认值为 100.0。 |
Cfg_SPRoCIncrLim | REAL | 0.0 | 最大允许 SP 变化率增加值(PVEU/秒)。如果 Cfg_SPRoCIncrLim = 0.0,则 SP 变化率在增加时没有限制。 有效值 = 0.0 到最大正浮点数。 默认值为 0.0。 |
Cfg_SPRoCDecrLim | REAL | 0.0 | 允许的 SP 最大变化率减小值(PVEU/秒)。如果 Cfg_SPRoCDecrLim = 0.0,则 SP 变化率在减小时没有限制。 有效值 = 0.0 到最大正浮点数。 默认值为 0.0。 |
Cfg_SkipSPRoCLim | BOOL | 假 | 1 = 跳过互锁、维护和覆盖模式中的设定值 RoC 限制。 默认值为假。 |
Cfg_SPRampMaxDev | REAL | 100.0 | 如果偏差的绝对值超过此值,则暂停 SP 过渡,0.0 = 永不暂停 (PVEU)。 有效值 = 0.0 到最大正浮点数。 默认值为 100.0。 |
Cfg_PVEUMin | REAL | 0.0 | 从工程单位缩放到 % 的 PV 最小值,PV 为 0% (PVEU)。 有效值 = 任何小于 Cfg_PVEUMax 的浮点数。 默认值为 0.0。 |
Cfg_PVEUMax | REAL | 100.0 | 从工程单位缩放到 % 的 PV 最大值,PV 为 100% (PVEU)。 有效值 = 任何大于 Cfg_PVEUMin 的浮点数。 默认值为 100.0。 |
Cfg_CVEUMin | REAL | 0.0 | 从 % 缩放到工程单位 (CVEU) 的 CV 最小值。 有效值 = 任何小于 Cfg_CVEUMax 的浮点数。 默认值为 0.0。 |
Cfg_CVEUMax | REAL | 100.0 | 从 % 缩放到工程单位 (CVEU) 的 CV 最大值。 有效值 = 任何大于 Cfg_CVEUMin 的浮点数。 |
Cfg_CVLoLim | REAL | 0.0 | 允许的 CV 最小值 (CVEU)。 有效值为任何小于或等于 Cfg_CVHiLim 且大于或等于 Cfg_CVEUMin 的浮点数。 默认值为 0.0。 |
Cfg_CVHiLim | REAL | 100.0 | 允许的 CV 最大值 (CVEU)。 有效值为任何大于或等于 Cfg_CVLoLim 且小于或等于 Cfg_CVEUMax 的浮点数。 默认值为 100.0。 |
Cfg_CVRoCIncrLim | REAL | 0.0 | 允许的 CV 最大变化率增加值(CVEU/秒)。如果 Cfg_CVRoCIncrLim = 0.0,则 CV 的变化率在增加时没有限制。 有效值 = 0.0 到最大正浮点数。 默认值为 0.0。 |
Cfg_CVRoCDecrLim | REAL | 0.0 | 最大允许 CV 变化率减小值(CVEU/秒)。如果 Cfg_CVRoCDecrLim = 0.0,则 CV 的变化率在减少时没有限制。 有效值 = 0.0 到最大正浮点数。 默认值为 0.0。 |
Cfg_MaxInactiveCV | REAL | 0.0 | 当 Val_CVOut 大于此值时,为 HMI (CVEU) 设置 Sts_Active。 任意浮点数均有效。 默认值为 0.0。 |
Cfg_SPIntlk | REAL | 0.0 | 与互锁/不良值 SP 操作 (PVEU) 一起使用的 SP 值。有效值 = Cfg_PVEUMin 和 Cfg_PVEUMax 之间的任意浮点数。 |
Cfg_CVIntlk | REAL | 0.0 | 与互锁/错误值 CV 操作 (CVEU) 一起使用的 CV 值。有效值 = Cfg_CVEUMin 和 Cfg_CVEUMax 之间的任意浮点数。 |
Cfg_SPPwrUp | REAL | 0.0 | Cfg_PwrUpLM 不等于 0 时使用加电回路 SP (PVEU)。该值被限制在 SP 范围(Cfg_SPLoLim,Cfg_SPHiLim)内。 有效值 = Cfg_PVEUMin 和 Cfg_PVEUMax 之间的任意浮点数。 |
Cfg_CVPwrUp | REAL | 0.0 | Cfg_PwrUpLM 不等于 0 时使用加电回路 CV (CVEU)。该值可以在级联或自动和手动(如果进行了这样的配置)模式中被限制为已配置的限值(Cfg_CVLoLim,CfgHiLim)。 有效值 = Cfg_CVEUMin 和 Cfg_CVEUMax 之间的任意浮点数。 |
Cfg_CVPwrUpSel | SINT | 0 | 在自动或级联中选择加电(首次运行)CV。 0 = 忽略 Inp_InnerAvailable,并始终使用 Cfg_CVPwrUp 或最后的(掉电)CV(如果 Cfg_PwrpUpLM = 0), 1 = 处理 Inp_InnerAvailable。 默认值为假。 |
Cfg_HiHiDevLim | REAL | 1.5e+38 | PV 上上限偏差状态阈值 (PVEU)。 有效值 = 0.0 到最大正浮点数。 默认值为 1.5e+38。 |
Cfg_HiHiDevDB | REAL | 0.0 | PV 上上限偏差状态死区 (PVEU)。 有效值 = 0.0 到 Cfg_HiHiDevLim。 默认值为 0.0。 |
Cfg_HiHiDevGateDly | REAL | 0.0 | PV 上上限偏差状态门延迟(秒)。 有效值 = 0.0 到 2147483.0 秒。 默认值为 0.0。 |
Cfg_HiDevLim | REAL | 1.5e+38 | PV 上限偏差状态阈值 (PVEU)。 有效值 = 0.0 到最大正浮点数。 默认值为 1.5e+38。 |
Cfg_HiDevDB | REAL | 0.0 | PV 上限偏差状态死区 (PVEU)。 有效值 = 0.0 到 Cfg_HiDevLim。 默认值为 0.0。 |
Cfg_HiDevGateDly | REAL | 0.0 | PV 上限偏差状态门延迟(秒)。 有效值 = 0.0 到 2147483.0 秒。 默认值为 0.0。 |
Cfg_LoDevLim | REAL | -1.5e+38 | PV 下限偏差状态阈值 (PVEU)。 有效值 = -最大正浮点数到 0.0。 默认值为 -1.5e+38。 |
Cfg_LoDevDB | REAL | 0.0 | PV 下限偏差状态死区 (PVEU)。 有效值 = 0.0 到 abs(Cfg_LoDevLim)。 默认值为 0.0。 |
Cfg_LoDevGateDly | REAL | 0.0 | PV 下限偏差状态门延迟(秒)。 有效值 = 0.0 到 2147483.0 秒。 默认值为 0.0。 |
Cfg_LoLoDevLim | REAL | -1.5e+38 | PV 下下限偏差状态阈值 (PVEU)。 有效值 = -最大正浮点数到 0.0。 默认值为 -1.5e+38。 |
Cfg_LoLoDevDB | REAL | 0.0 | PV 下下限偏差状态死区 (PVEU)。 有效值 = 0.0 到 abs(Cfg_LoLoDevLim)。 默认值为 0.0。 |
Cfg_LoLoDevGateDly | REAL | 0.0 | PV 下下限偏差状态门延迟(秒)。 有效值 = 0.0 到 2147483.0 秒。 默认值为 0.0。 |
Cfg_CnfrmReqd | SINT | 0 | 需要操作员确认命令。表示需要命令确认的类型。 0 = 无, 1 = 需要命令确认, 2 = 需要执行者电子签名, 3 = 需要执行者和审批者电子签名。 默认值为 0。 |
PSet_Ratio | REAL | 1.0 | 比率、回路模式级联/比率和比率启用的程序设置(无单位)。 有效值 = 0.0 到最大正浮点数。 默认值为 1.0。 |
PSet_SP | REAL | 0.0 | 回路模式为自动 (PVEU) 时,SP 的程序设置。 任意浮点数均有效。 默认值为 0.0。 |
PSet_SPTarget | REAL | 0.0 | 过渡向导中 SP 目标的程序设置 (PVEU)。 任意浮点数均有效。 默认值为 0.0。 |
PSet_SPRampTime | REAL | 0.0 | 过渡向导中到达 SP 目标的时间的程序设置(秒)。 有效值 = 0.0 至 28,800.0 秒。 默认值为 0.0。 |
PSet_CV | REAL | 0.0 | 回路模式为手动 (CVEU) 时,CV 的程序设置。 任意浮点数均有效。 默认值为 0.0。 |
PSet_Owner | DINT | 0 | 程序宿主请求 ID(非零)或释放(零)。 默认值为 0。 |
XSet_Ratio | REAL | 1.0 | 比率、回路模式级联/比率和比率启用的外部设置(无单位)。 有效值 = 0.0 到最大正浮点数。 默认值为 1.0。 |
XSet_SP | REAL | 0.0 | 回路模式为自动 (PVEU) 时,SP 的外部设置。 任意浮点数均有效。 默认值为 0.0。 |
XSet_SPTarget | REAL | 0.0 | 过渡向导中 SP 目标的外部设置 (PVEU)。 任意浮点数均有效。 默认值为 0.0。 |
XSet_SPRampTime | REAL | 0.0 | 过渡向导中到达 SP 目标的时间的外部设置(秒)。 有效值 = 0.0 至 28,800.0 秒。 默认值为 0.0。 |
XSet_CV | REAL | 0.0 | 回路模式为手动 (CVEU) 时,CV 的外部设置。 任意浮点数均有效。 默认值为 0.0。 |
PCmd_Casc | BOOL | 假 | 用于选择级联/比率回路模式的程序命令。该指令自动清除该操作数。 默认值为假。 |
PCmd_Auto | BOOL | 假 | 用于选择自动回路模式的程序命令。该指令自动清除该操作数。 默认值为假。 |
PCmd_Man | BOOL | 假 | 用于选择手动回路模式的程序命令。该指令自动清除该操作数。 默认值为假。 |
PCmd_NormLM | BOOL | 假 | 用于选择定义为“正常”的回路模式的程序命令,请参阅 Cfg_NormLM。该指令自动清除该操作数。 默认值为假。 |
PCmd_SPRampStart | BOOL | 假 | 用于启动 SP 过渡的程序命令。该指令自动清除该操作数。 默认值为假。 |
PCmd_SPRampStop | BOOL | 假 | 用于停止 SP 过渡的程序命令。该指令自动清除该操作数。 默认值为假。 |
PCmd_Oper | BOOL | 假 | 用于选择操作员的程序命令(程序到操作员)。该指令自动清除该操作数。 默认值为假。 |
PCmd_Prog | BOOL | 假 | 用于选择程序的程序命令(操作员到程序)。该指令自动清除该操作数。 默认值为假。 |
PCmd_Lock | BOOL | 假 | 用于锁定程序的程序命令(不允许操作员)。如果 Cfg_PCmdLockAsLevel = 0,则指令会自动清除此操作数。 默认值为假。 |
PCmd_Unlock | BOOL | 假 | 用于解锁程序的程序命令(允许操作员获取)。该指令自动清除该操作数。 默认值为假。 |
PCmd_Normal | BOOL | 假 | 用于选择正常命令源的程序命令(操作员或程序)。该指令自动清除该操作数。 默认值为假。 |
PCmd_Reset | BOOL | 假 | 用于重置需要重置的所有报警和锁定去除条件的程序命令。该指令自动清除该操作数。 默认值为假。 |
XCmd_Casc | BOOL | 假 | 用于选择级联/比率回路模式的外部命令。该指令自动清除该操作数。 默认值为假。 |
XCmd_Auto | BOOL | 假 | 用于选择自动回路模式的外部命令。该指令自动清除该操作数。 默认值为假。 |
XCmd_Man | BOOL | 假 | 用于选择手动回路模式的外部命令。该指令自动清除该操作数。 默认值为假。 |
XCmd_NormLM | BOOL | 假 | 用于选择定义为“正常”的回路模式的外部命令,请参阅 Cfg_NormLM。该指令自动清除该操作数。 默认值为假。 |
XCmd_SPRampStart | BOOL | 假 | 用于启动 SP 过渡的外部命令。该指令自动清除该操作数。 默认值为假。 |
XCmd_SPRampStop | BOOL | 假 | 用于停止 SP 过渡的外部命令。该指令自动清除该操作数。 默认值为假。 |
XCmd_Acq | BOOL | 假 | 用于获取所有权的外部命令(操作员/程序/覆盖/维护到外部)。如果 Cfg_ExtAcqAsLevel = 0,则指令会自动清除此操作数。 默认值为假。 |
XCmd_Rel | BOOL | 假 | Cfg_ExtAcqAsLevel = 0 时用于释放所有权的外部命令(外部到操作员/程序/覆盖/维护)。该指令自动清除该操作数。 默认值为假。 |
XCmd_Reset | BOOL | 假 | 用于重置所有报警和锁定去除条件的外部命令。该指令自动清除该操作数。 默认值为假。 |
XCmd_ResetAckAll | BOOL | 假 | 用于确认和重置所有报警和锁定去除条件的外部命令。该指令自动清除该操作数。 默认值为假。 |
公共输出成员 | 数据类型 | 说明 |
|---|---|---|
EnableOut | BOOL | 启用输出。此输出状态始终反映 EnableIn 输入状态。 |
Val_PV | REAL | 回路 PV 的值 (PVEU)。 |
Val_Ratio | REAL | 回路比率的值(无单位)。 |
Val_SPSet | REAL | 钳位后和过渡前所选 SP 的值 (PVEU)。 |
Val_SP | REAL | 钳位和过渡后使用的 SP 值 (PVEU)。 |
Val_SPTarget | REAL | SP 过渡目标的可接受设置,过渡向导的端点 (PVEU)。 |
Val_SPRampTime | REAL | SP 过渡时间的可接受设置,过渡向导中达到目标的时间(秒)。 |
Val_SPRampRoC | REAL | 过渡向导中 SP 过渡变化率的计算值(PVEU/秒)。 |
Val_SPRoCIncr | REAL | SP 变化率限制增加的当前值(PVEU/秒)。0.0 = 变化率不受限制。 |
Val_SPRoCDecr | REAL | SP 变化率限制减少的当前值(PVEU/秒)。0.0 = 变化率不受限制。 |
Val_E | REAL | 回路误差,SP-PV 用于反向操作 Cfg_CtrlAction = 0,PV-SP 用于直接操作 Cfg_CtrlAction = 1 (PVEU)。 |
Val_CVSet | REAL | 钳位后和过渡前的回路 CV (CVEU)。 |
Val_CVOut | REAL | 钳位和过渡后的回路 CV (CVEU)。 |
Val_PVPercent | REAL | 回路 PV(量程百分比)。 |
Val_SPPercent | REAL | 回路 SP(百分比形式)。 |
Val_EPercent | REAL | 回路误差,SP-PV 用于反向操作 Cfg_CtrlAction = 0,PV-SP 用于直接操作 Cfg_CtrlAction = 1(量程百分比)。 |
Val_CVOutPercent | REAL | 钳位和过渡后的回路 CV(量程百分比)。 |
Val_ExecTime | REAL | 实际 PID 算法执行周期(秒)。 |
Out_Reset | BOOL | 1 = 已收到并接受重置命令。 |
Out_OwnerSts | DINT | 命令源状态、宿主命令握手和就绪状态: 0 = 无, .10 = 操作员锁定, .11 = 操作员解锁, .12 = 程序锁定, .13 = 程序解锁, .14 = 获取维护, .15 = 释放维护, .16 = 获取外部, .17 = 释放外部, .18 = 具有维护, .19 = 外部覆盖锁定, .20 = 具有外部, .21 = 具有操作员, .22 = 操作员已锁定, .23 = 具有程序, .24 = 程序已锁定, .29 = 回波, .30 = 未就绪。 |
Sts_Initialized | BOOL | 1 = 指令已初始化。使用 Inp_InitializeReq 重新初始化。 |
SrcQ_IO | SINT | 主输入/输出 (I/O) PV 质量的源和质量(枚举): 0 = 良好,畅通,确认良好, 1 = 良好,畅通,假定良好, 2 = 良好,无反馈,假定良好, 8 = 测试,虚拟化, 9 = 测试,回路, 10 = 测试,手动输入, 16 = 不确定,畅通,不合格, 17 = 不确定,在设备或总线端替代, 18 = 不确定,在指令端替代, 19 = 不确定,使用最后一个已知良好值, 20 = 不确定,使用替代值, 32 = 不良,信号故障, 33 = 不良,通道故障, 34 = 不良,模块或通信故障, 35 = 不良,配置无效。 |
SrcQ | SINT | 主 PV 和 CV 值或状态的源和质量(枚举): 0 = 良好,畅通,确认良好 1 = 良好,畅通,假定良好 2 = 良好,无反馈,假定良好 8 = 测试,虚拟化 9 = 测试,回路 10 = 测试,手动输入 16 = 不确定,畅通,不合格 17 = 不确定,在设备或总线端替代 18 = 不确定,在指令端替代 19 = 不确定,使用最后一个已知良好值 20 = 不确定,使用替代值 32 = 不良,信号故障 33 = 不良,通道故障 34 = 不良,模块或通信故障 35 = 不良,配置无效 |
Sts_eSts | SINT | 回路模式: 0 = 未知, 1 = 手动, 2 = 自动, 3 = 级联(无比率), 4 = 比率。 |
Sts_eFault | SINT | 回路故障: 0 = 无, 1 = PV 不确定, 2 = PV 偏差下限, 3 = PV 偏差上限, 4 = PV 偏差下下限, 5 = PV 偏差上上限, 6 = 已替代 PV, 7 = 互锁脱扣, 8 = SP 故障, 9 = PV 故障, 10 = CV 故障, 11 = 配置错误。 |
Sts_eState | SINT | 用于在面板上显示状态图动画的内部逻辑状态。 0 = 手动, 1 = PV 偏差位于死区中, 2 = PV 偏差不在死区中, 3 = SP 过渡, 4 = CV 过渡, 5 = 比率已钳位, 6 = SP 钳位, 7 = CV 已钳位, 8 = 积分饱和下限, 9 = 积分饱和上限, 10 = SP 保持, 11 = SP 设置为 IntlkSP, 12 = CV 保持, 13 = CV 设置为 IntlkCV, 14 = 手控, 15 = 正在初始化。 |
Sts_eNotify | SINT | 最高严重性报警状态。所有报警状态枚举值: 0 = 未处于报警中,已确认, 1 = 未处于报警中,未确认或需要重置, 2 = 低严重性报警,已确认, 3 = 低严重性报警,未确认, 4 = 中等严重性报警,已确认, 5 = 中等严重性报警,未确认, 6 = 高严重性报警,已确认, 7 = 高严重性报警,未确认, 8 = 紧急严重性报警,已确认, 9 = 紧急严重性报警,未确认。 |
Sts_eNotifyAll | SINT | 最高严重性报警状态。所有报警状态枚举值,包括 CV、PV、SP 和 CascSP 的相关对象: 0 = 未处于报警中,已确认, 1 = 未处于报警中,未确认或需要重置, 2 = 低严重性报警,已确认, 3 = 低严重性报警,未确认, 4 = 中等严重性报警,已确认, 5 = 中等严重性报警,未确认, 6 = 高严重性报警,已确认, 7 = 高严重性报警,未确认, 8 = 紧急严重性报警,已确认, 9 = 紧急严重性报警,未确认。 |
Sts_eNotifyHiHiDev | SINT | PV 偏差上上限报警状态枚举值: 0 = 未处于报警中,已确认, 1 = 未处于报警中,未确认或需要重置, 2 = 低严重性报警,已确认, 3 = 低严重性报警,未确认, 4 = 中等严重性报警,已确认, 5 = 中等严重性报警,未确认, 6 = 高严重性报警,已确认, 7 = 高严重性报警,未确认, 8 = 紧急严重性报警,已确认, 9 = 紧急严重性报警,未确认。 |
Sts_eNotifyHiDev | SINT | PV 偏差上限报警状态枚举值: 0 = 未处于报警中,已确认, 1 = 未处于报警中,未确认或需要重置, 2 = 低严重性报警,已确认, 3 = 低严重性报警,未确认, 4 = 中等严重性报警,已确认, 5 = 中等严重性报警,未确认, 6 = 高严重性报警,已确认, 7 = 高严重性报警,未确认, 8 = 紧急严重性报警,已确认, 9 = 紧急严重性报警,未确认。 |
Sts_eNotifyLoDev | SINT | PV 偏差下限报警状态枚举值: 0 = 未处于报警中,已确认, 1 = 未处于报警中,未确认或需要重置, 2 = 低严重性报警,已确认, 3 = 低严重性报警,未确认, 4 = 中等严重性报警,已确认, 5 = 中等严重性报警,未确认, 6 = 高严重性报警,已确认, 7 = 高严重性报警,未确认, 8 = 紧急严重性报警,已确认, 9 = 紧急严重性报警,未确认。 |
Sts_eNotifyLoLoDev | SINT | PV 偏差下下限报警状态枚举值: 0 = 未处于报警中,已确认, 1 = 未处于报警中,未确认或需要重置, 2 = 低严重性报警,已确认, 3 = 低严重性报警,未确认, 4 = 中等严重性报警,已确认, 5 = 中等严重性报警,未确认, 6 = 高严重性报警,已确认, 7 = 高严重性报警,未确认, 8 = 紧急严重性报警,已确认, 9 = 紧急严重性报警,未确认。 |
Sts_eNotifyFail | SINT | 失败报警状态枚举值: 0 = 未处于报警中,已确认, 1 = 未处于报警中,未确认或需要重置, 2 = 低严重性报警,已确认, 3 = 低严重性报警,未确认, 4 = 中等严重性报警,已确认, 5 = 中等严重性报警,未确认, 6 = 高严重性报警,已确认, 7 = 高严重性报警,未确认, 8 = 紧急严重性报警,已确认, 9 = 紧急严重性报警,未确认。 |
Sts_eNotifyIntlkTrip | SINT | 互锁脱扣报警状态枚举值: 0 = 未处于报警中,已确认, 1 = 未处于报警中,未确认或需要重置, 2 = 低严重性报警,已确认, 3 = 低严重性报警,未确认, 4 = 中等严重性报警,已确认, 5 = 中等严重性报警,未确认, 6 = 高严重性报警,已确认, 7 = 高严重性报警,未确认, 8 = 紧急严重性报警,已确认, 9 = 紧急严重性报警,未确认。 |
Sts_UnackAlmCount | DINT | 未确认报警计数。 |
Sts_Casc | BOOL | 1 = 回路处于级联/比率模式。 |
Sts_Auto | BOOL | 1 = 回路处于自动模式。 |
Sts_Man | BOOL | 1 = 回路处于手动模式。 |
Sts_NormLM | BOOL | 1 = 回路处于 Cfg_NormLM 中配置的正常回路模式。 |
Sts_Initializing | BOOL | 1 = 由于请求 Inp_UseCVInitialVal 或 Inp_InnerAvailable = 0 时,CV 正在初始化。 |
Sts_WindupHi | BOOL | 1 = 该回路为积分饱和上限,通常连接到外回路的 Inp_WindupHi。 |
Sts_WindupLo | BOOL | 1 = 该回路为积分饱和下限,通常连接到外回路的 Inp_WindupLo。 |
Sts_RatioClamped | BOOL | 1 = 选定的比率已钳位,用于面板动画。 |
Sts_IntlkSP | BOOL | 1 = 通过去除将 SP 值设置为互锁 SP。 |
Sts_SPHeld | BOOL | 1 = 通过去除将 SP 值设置为保持上一个良好 SP。 |
Sts_SPShedPV | BOOL | 1 = 通过去除将 SP 值设置为当前 PV。 |
Sts_SPShed | BOOL | 1 = 去除的 SP 值,0 = 程序、操作员、覆盖(自动)、级联 SP 输入(级联)或 PV 跟踪(手动)的 SP。 |
Sts_SPTrackPV | BOOL | 1 = 在手动回路模式下通过 PV 跟踪设置 SP 值。 |
Sts_SPHiClamped | BOOL | 1 = 选定的 SP 在上限被钳位。 |
Sts_SPLoClamped | BOOL | 1 = 选定的 SP 在下限被钳位。 |
Sts_SPClamped | BOOL | 1 = 选定的 SP 已钳位,用于面板动画。 |
Sts_SPRampingUp | BOOL | 1 = SP 正在向 Val_SPSet 斜升。 |
Sts_SPRampingDown | BOOL | 1 = SP 正在向 Val_SPSet 斜降。 |
Sts_SPRamping | BOOL | 1 = SP 正在向 Val_SPSet 过渡,0 = 过渡已完成。 |
Sts_SPRampWizardInProgress | BOOL | 1 = SP 正在向宿主在过渡向导中设置的 SP 目标过渡,0 = 过渡已完成。 |
Sts_SkipSPRoCLim | BOOL | 1 = 跳过 SP 速率限制,用于面板动画。 |
Sts_DevDBAct | BOOL | 1 = PV 偏差死区有效。 |
Sts_PVUncertain | BOOL | 1 = PV 输入值质量不确定。 |
Sts_PVBad | BOOL | 1 = PV 输入值、通信、质量或工程单位 (EU) 限值不良。 |
Sts_SPBad | BOOL | 1 = 级联 SP 输入值质量不良。 |
Sts_FFBad | BOOL | 1 = 前馈项 Inp_FF 值无效。 |
Sts_FFPrevBad | BOOL | 1 = 前馈项 Inp_FFPrev 值无效。 |
Sts_CVInfNaN | BOOL | 1 = CV 值等于 +/- 无穷大或检测到 NaN。 |
Sts_CVBad | BOOL | 1 = CV 值质量不良、无效或 CV 通信故障。 |
Sts_CVPrevBad | BOOL | 1 = Inp_CVPrev 值无效。 |
Sts_HandFdbkBad | BOOL | 1 = 手控 FB(回接)值质量不良、无效或通信故障。 |
Sts_IntlkCV | BOOL | 1 = 通过解除互锁 CV 来设置 CV 值。 |
Sts_CVHeld | BOOL | 1 = 通过解除保持上一个良好 CV 来设置 CV 值。 |
Sts_CVShed | BOOL | 1 = 去除的 CV,0 = 程序、操作员、覆盖(手动)或 PID(自动、级联)的 CV。 |
Sts_CVHiClamped | BOOL | 1 = CV 在上限被钳位。 |
Sts_CVLoClamped | BOOL | 1 = CV 在下限被钳位。 |
Sts_CVClamped | BOOL | 1 = 选定的 CV 已钳位,用于面板动画。 |
Sts_CVRampingUp | BOOL | 1 = CV 正在向 Val_CVSet 斜升。 |
Sts_CVRampingDown | BOOL | 1 = CV 正在向 Val_CVSet 斜降。 |
Sts_CVRamping | BOOL | 1 = CV 正在向 Val_CVSet 过渡,0 = 过渡已完成。 |
Sts_Active | BOOL | 1 = CV 大于 Cfg_MaxInactiveCV,显示图形符号处于活动状态。 |
Sts_Available | BOOL | 1 = 可以通过程序获取 PID 回路,并且可以用于控制。 |
Sts_CascAvailable | BOOL | 1 = PID 内回路可用于带外回路的级联控制。0 = PID 内回路不可用,将外回路初始化为 Val_SP。 |
Sts_ExtAvailable | BOOL | 1 = PID 可用于外部控制。0 = PID 不可用,将外回路初始化为 Val_SP。 |
Sts_IntlkAvailable | BOOL | 1 = 互锁可用性正常 (OK)。设备可以通过程序获取,并且在互锁正常 (OK) 时可用于控制。 |
Sts_Bypass | BOOL | 1 = 绕过可绕过的互锁。 |
Sts_BypActive | BOOL | 1 = 互锁绕过处于活动状态(已绕过或维护中)。 |
Sts_NotRdy | BOOL | 1 = PPID 未就绪,请参阅明细位以查找原因。 |
Sts_NrdyCfgErr | BOOL | 1 = PPID 未就绪:配置错误。 |
Sts_NrdyInit | BOOL | 1 = 初始化 CV (Inp_UseCVInitVal = 1) 时 PPID 未准备好。 |
Sts_NrdyIntlk | BOOL | 1 = PPID 未就绪:互锁不正常 (OK)(去除需要重置)。 |
Sts_NrdyFail | BOOL | 1 = PPID 未就绪:出现故障状态(去除需要重置)。 |
Sts_NrdyCVFail | BOOL | 1 = PPID 未就绪:CV 故障(去除需要重置)。 |
Sts_NrdyPVFail | BOOL | 1 = PPID 未就绪:PV 故障(解除需要重置)。 |
Sts_NrdySPFail | BOOL | 1 = PPID 未就绪:SP 故障(解除需要重置)。 |
Sts_NrdyOoS | BOOL | 1 = PPID 未就绪:停用。 |
Sts_MaintByp | BOOL | 1 = 设备有一个维护绕过功能处于活动状态。 |
Sts_NrdyInner | BOOL | 1 = 此 PPID 的内回路对象不可用 (Inp_InnerAvailable = 0)。 |
Sts_Err | BOOL | 1 = PPID 配置出错,请参阅明细错误位以查找原因。 |
Sts_ErrRatioLim | BOOL | 1 = PPID 配置出错:比率钳位限值无效。 Cfg_RatioLoLim > Cfg_RatioHiLim。 |
Sts_ErrSPLim | BOOL | 1 = PPID 配置出错:SP 钳位限值无效。 Cfg_SPLoLim < Cfg_PVEUMin 或 Cfg_SPHiLim > Cfg_PVEUMax 或 Cfg_SPLoLim > Cfg_SPHiLim。 |
Sts_ErrCVLim | BOOL | 1 = PPID 配置出错:CV 钳位限值无效。 Cfg_CVLoLim < Cfg_CVEUMin 或 Cfg_CVHiLim > Cfg_CVEUMax 或 Cfg_CVLoLim > Cfg_CVHiLim。 |
Sts_ErrPVEU | BOOL | 1 = PPID 配置出错:PV 缩放限值无效。Cfg_PVEUMin >= Cfg_PVEUMax 或 Cfg_PVEUMin 为 +-Inf。 |
Sts_ErrCVEU | BOOL | 1 = PPID 配置出错:CV 缩放限制无效。Cfg_CVEUMin >= Cfg_CVEUMax 或 Cfg_CVEUMin 为 +-Inf。 |
Sts_ErrDevDB | BOOL | 1 = PPID 配置出错:PV 偏差死区无效。Cfg_DevDBEnter > Cfg_DevDB 或 Cfg_DevDB < 0 或 Cfg_DevDBEnter < 0。 |
Sts_ErrExecTime | BOOL | 1 = PPID 配置出错:执行时间无效,Cfg_ExecTime <0.0 或 Cfg_ExecTime > 2147483.0 秒。 |
Sts_ErrPGain | BOOL | 1 = PPID 配置出错:PGain 无效,Cfg_PGain < 0。 |
Sts_ErrIGain | BOOL | 1 = PPID 配置出错:IGain 无效,Cfg_IGain < 0。 |
Sts_ErrDGain | BOOL | 1 = PPID 配置出错:DGain 无效,Cfg_DGain < 0。 |
Sts_ErrCVTrackGain | BOOL | 1 = PPID 配置出错:CV TrackGain 无效,Cfg_CVTrackGain < 0。 |
Sts_ErrPSPWeight | BOOL | 1 = PPID 配置出错:比例项中的 SP 权重无效,Cfg_PSPWeight < 0 或 Cfg_PSPWeight > 1.5。 |
Sts_ErrDSPWeight | BOOL | 1 = PPID 配置出错:微分项中的 SP 权重无效,Cfg_DSPWeight < 0 或 Cfg_DSPWeight > 1.5。 |
Sts_ErrSPRoCIncrLim | BOOL | 1 = PPID 配置出错:允许的 SP 最大变化率增加值无效,Cfg_SPRoCIncrLim < 0。 |
Sts_ErrSPRoCDecrLim | BOOL | 1 = PPID 配置出错:允许的 SP 最大变化率减小值无效,Cfg_SPRoCDecrLim < 0。 |
Sts_ErrCVRoCIncrLim | BOOL | 1 = PPID 配置出错:允许的 CV 最大变化率增加值无效,Cfg_CVRoCIncrLim < 0。 |
Sts_ErrCVRoCDecrLim | BOOL | 1 = PPID 配置出错:允许的 CV 最大变化率减小值无效,Cfg_CVRoCDecrLim < 0。 |
Sts_ErrSPIntlk | BOOL | 1 = PPID 配置出错:与互锁一起使用的 SP 值或不良 SP 操作无效,值超出范围,Cfg_SPIntlk > Cfg_PVEUMax 或 < Cfg_PVEUMin。 |
Sts_ErrCVIntlk | BOOL | 1 = PPID 配置出错:与互锁一起使用的 CV 值或不良 CV 操作值无效,值超出范围,Cfg_CVIntlk > Cfg_CVEUMax 或< Cfg_CVEUMin。 |
Sts_ErrSPPwrUp | BOOL | 1 = PPID 配置出错:在加电中使用的 SP 值无效,值超出范围,Cfg_SPPwrUp > Cfg_PVEUMax 或 < Cfg_PVEUMin。 |
Sts_ErrCVPwrUp | BOOL | 1 = PPID 配置出错:在加电中使用的 CV 值无效,值超出范围,Cfg_CVIntlk > Cfg_CVEUMax 或 < Cfg_CVEUMin。 |
Sts_ErrAlm | BOOL | 1 = PPID 配置出错:至少一个基于 Logix 标签的报警存在无效的设置。 |
Sts_ErrHiHiDevLim | BOOL | 1 = PPID 配置出错:PV 上上限偏差阈值无效,Cfg_HiHiDevLim < 0。 |
Sts_ErrHiHiDevGateDly | BOOL | 1 = PPID 配置出错:预设的 PV 上上限偏差门延迟计时器无效(使用 0.0 到 2147483.0)。 |
Sts_ErrHiHiDevDB | BOOL | 1 = PPID 配置出错:PV 上上限偏差死区无效,Cfg_HiHiDevDB < 0 或 Cfg_HiHiDevDB > Cfg_HiHiDevLim。 |
Sts_ErrHiDevLim | BOOL | 1 = PPID 配置出错:PV 上限偏差阈值无效,Cfg_HiDevLim < 0.0。 |
Sts_ErrHiDevGateDly | BOOL | 1 = PPID 配置出错:预设的 PV 上限偏差门延迟计时器无效(使用 0.0 到 2147483.0)。 |
Sts_ErrHiDevDB | BOOL | 1 = PPID 配置出错:PV 上限偏差死区无效,Cfg_HiDevDB < 0 或 Cfg_HiDevDB > Cfg_HiDevLim。 |
Sts_ErrLoDevLim | BOOL | 1 = PPID 配置出错:PV 下限偏差阈值无效,Cfg_LoDevLim > 0。 |
Sts_ErrLoDevGateDly | BOOL | 1 = PPID 配置出错:预设的 PV 下限偏差门延迟计时器无效(使用 0.0 到 2147483.0)。 |
Sts_ErrLoDevDB | BOOL | 1 = PPID 配置出错:PV 下限偏差死区无效,Cfg_LoDevDB < 0 或 > -Cfg_LoDevLim。 |
Sts_ErrLoLoDevLim | BOOL | 1 = PPID 配置出错:PV 下下限偏差阈值无效,Cfg_LoLoDevLim > 0.0。 |
Sts_ErrLoLoDevGateDly | BOOL | 1 = PPID 配置出错:预设的 PV 下下限偏差门延迟计时器无效(使用 0.0 到 2147483.0)。 |
Sts_ErrLoLoDevDB | BOOL | 1 = PPID 配置出错:PV 下下限偏差死区无效,Cfg_LoLoDevDB < 0 或 > -Cfg_LoLoDevLim。 |
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_Hand | BOOL | 1 = 选择手控,取代 OoS、Maint、Ovrd、Ext、Prog、Oper。 |
Sts_OoS | BOOL | 1 = 选择停用,取代 Maint、Ovrd、Ext、Prog、Oper。 |
Sts_Maint | BOOL | 1 = 选择维护,取代 Ovrd、Ext、Prog、Oper。 |
Sts_Ovrd | BOOL | 1 = 选择覆盖,取代 Ext、Prog、Oper。 |
Sts_Ext | BOOL | 1 = 选择外部,取代 Prog、Oper。 |
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 = 宿主选择等于配置为“正常”的参数(Prog 或 Oper)。 |
Sts_ExtReqInh | BOOL | 1 = 禁用外部请求。 |
Sts_ProgReqInh | BOOL | 1 = 禁用程序请求,无法从当前宿主进入程序。 |
Sts_MAcqRcvd | BOOL | 1 = 维护获取命令接收到此扫描。 |
Sts_Alm | BOOL | 1 = 报警处于活动状态。 |
Sts_AlmInh | BOOL | 1 = 报警已延迟或已禁用。 |
Sts_HiHiDevCmp | BOOL | 1 = PV 偏差超出上上限,(Val_PV-Val_SP)>Cfg_HiHiDevLim。 |
Sts_HiHiDevGate | BOOL | 1 = PV 上上限偏差门打开。 |
Sts_HiHiDev | BOOL | 1 = PV 偏差超出上上限,即(Val_PV-Val_SP)>Cfg_HiHiDevLim,用于门已打开。 存在一个基于离散标签的预定义默认报警指示状态。设置基于离散标签的报警的标准配置成员。以此格式访问报警元素: PPIDTag.@Alarms.Alm_HiHiDev.AlarmElement |
Sts_HiDevCmp | BOOL | 1 = PV 偏差超出上限,(Val_PV-Val_SP)>Cfg_HiDevLim。 |
Sts_HiDevGate | BOOL | 1 = PV 上限偏差门打开。 |
Sts_HiDev | BOOL | 1 = PV 偏差超出上限,即(Val_PV-Val_SP)>Cfg_HiDevLim,用于门已打开。 存在一个基于离散标签的预定义默认报警指示状态。设置基于离散标签的报警的标准配置成员。以此格式访问报警元素: PPIDTag.@Alarms.Alm_HiDev.AlarmElement |
Sts_LoDevCmp | BOOL | 1 = PV 偏差低于下限,(Val_PV-Val_SP)<Cfg_LoDevLim。 |
Sts_LoDevGate | BOOL | 1 = PV 下限偏差门打开。 |
Sts_LoDev | BOOL | 1 = PV 偏差(回路误差)低于下限,即(Val_PV-Val_SP)<Cfg_LoDevLim,用于门已打开。 存在一个基于离散标签的预定义默认报警指示状态。设置基于离散标签的报警的标准配置成员。以此格式访问报警元素: PPIDTag.@Alarms.Alm_LoDev.AlarmElement |
Sts_LoLoDevCmp | BOOL | 1 = PV 偏差低于下下限,(Val_PV-Val_SP)<Cfg_LoLoDevLim。 |
Sts_LoLoDevGate | BOOL | 1 = PV 下下限偏差门打开。 |
Sts_LoLoDev | BOOL | 1 = PV 偏差(回路误差)低于下下限,即(Val_PV-Val_SP)<Cfg_LoLoDevLim,用于门已打开。 存在一个基于离散标签的预定义默认报警指示状态。设置基于离散标签的报警的标准配置成员。以此格式访问报警元素: PPIDTag.@Alarms.Alm_LoLoDev.AlarmElement |
Sts_Fail | BOOL | 1 = 回路故障:PV 不良、SP 不良、CV 不良或手控反馈不良状态开启或锁定而未重置。存在一个基于离散标签的预定义默认报警指示状态。设置基于离散标签的报警的标准配置成员。以此格式访问报警元素: PPIDTag.@Alarms.Alm_Fail.AlarmElement |
Sts_IntlkTrip | BOOL | 1 =互锁不正常 (OK) 导致回路输出保持或更改。存在一个基于离散标签的预定义默认报警指示状态。设置基于离散标签的报警的标准配置成员。以此格式访问报警元素: PPIDTag.@Alarms.Alm_IntlkTrip.AlarmElement |
Sts_RdyReset | BOOL | 1 = 锁定的报警或解除条件待重置。 |
Sts_RdyAck | BOOL | 1 = 报警待确认。 |
XRdy_Acq | BOOL | 1 = XCmd_Acq 就绪,启用 HMI 按钮。 |
XRdy_Rel | BOOL | 1 = XCmd_Rel 就绪,启用 HMI 按钮。 |
XRdy_Casc | BOOL | 1 = XCmd_Casc 就绪,启用 HMI 按钮。 |
XRdy_Auto | BOOL | 1 = XCmd_Auto 就绪,启用 HMI 按钮。 |
XRdy_Man | BOOL | 1 = XCmd_Man 就绪,启用 HMI 按钮。 |
XRdy_NormLM | BOOL | 1 = XCmd_NormLM 就绪,启用 HMI 按钮。 |
XRdy_SPRampStart | BOOL | 1 = XCmd_SPRampStart 就绪,启用 HMI 按钮。 |
XRdy_SPRampStop | BOOL | 1 = XCmd_SPRampStop 就绪,启用 HMI 按钮。 |
XRdy_Reset | BOOL | 1 = XCmd_Reset 就绪,启用 HMI 按钮。 |
XRdy_ResetAckAll | BOOL | 1 = XCmd_ResetAckAll 就绪,启用 HMI 按钮。 |
Val_Owner | DINT | 当前对象宿主 ID,0 = 未拥有。 |
专用输入成员 | 数据类型 | 默认值 | 说明 |
|---|---|---|---|
CmdSrc | P_COMMAND_SOURCE | 控制或命令源选择。 | |
OCmd_SPRampStart | BOOL | 0 | 用于启动 SP 过渡的操作员命令。该指令自动清除该操作数。 默认值为 0。 |
OCmd_SPRampStop | BOOL | 0 | 用于停止 SP 过渡的操作员命令。该指令自动清除该操作数。 默认值为 0。 |
OSet_Ratio | REAL | 1.0 | 比率、回路模式级联/比率和比率启用的操作员设置(无单位)。 有效值 = 0.0 到最大正浮点数。 默认值为 1.0。 |
OSet_SP | REAL | 0.0 | 回路模式为自动 (PVEU) 时,设定值的操作员设置。 任意浮点数均有效。 默认值为 0.0。 |
OSet_SPTarget | REAL | 0.0 | 设定值过渡目标的操作员设置,过渡向导的端点 (PVEU)。 任意浮点数均有效。 默认值为 0.0。 |
OSet_SPRampTime | REAL | 0.0 | 设定值过渡时间的操作员设置,过渡向导中达到目标的时间(秒)。 有效值 = 0.0 至 28,800.0 秒。 默认值为 0.0。 |
OSet_CV | REAL | 0.0 | 回路模式为手动 (CVEU) 时,CV 的操作员设置。 任意浮点数均有效。 默认值为 0.0。 |
MCmd_Bypass | BOOL | 0 | 用于绕过所有可绕过互锁的维护命令。该指令自动清除该操作数。 默认值为 0。 |
MCmd_Check | BOOL | 0 | 用于检查(而不是绕过)所有互锁的维护命令。该指令自动清除该操作数。 默认值为 0。 |
MCmd_OoS | BOOL | 0 | 用于选择“停用”的维护命令。该指令自动清除该操作数。 默认值为 0。 |
MCmd_IS | BOOL | 0 | 用于选择“服务中”的维护命令。该指令自动清除该操作数。 默认值为 0。 |
MCmd_Acq | BOOL | 0 | 用于获取所有权(操作员/程序/外部/覆盖到维护)的维护命令。该指令自动清除该操作数。 默认值为 0。 |
MCmd_Rel | BOOL | 0 | 用于释放所有权(维护到操作员/程序/外部/覆盖)的维护命令。该指令自动清除该操作数。 默认值为 0。 |
OCmd_Oper | BOOL | 0 | 用于选择操作员(程序到操作员)的操作员命令。该指令自动清除该操作数。 默认值为 0。 |
OCmd_Prog | BOOL | 0 | 用于选择程序(操作员到程序)的操作员命令。该指令自动清除该操作数。 默认值为 0。 |
OCmd_Lock | BOOL | 0 | 用于锁定操作员的操作员命令(不允许程序)。该指令自动清除该操作数。 默认值为 0。 |
OCmd_Unlock | BOOL | 0 | 用于解锁或释放(允许程序获取)所有权的操作员命令。该指令自动清除该操作数。 默认值为 0。 |
OCmd_Normal | BOOL | 0 | 用于选择正常(操作员或程序)的操作员命令。该指令自动清除该操作数。 默认值为 0。 |
OCmd_Auto | BOOL | 0 | 用于选择自动回路模式的操作员命令。该指令自动清除该操作数。 默认值为 0。 |
OCmd_Casc | BOOL | 0 | 用于选择级联/比率回路模式的操作员命令。该指令自动清除该操作数。 默认值为 0。 |
OCmd_Man | BOOL | 0 | 用于选择手动回路模式的操作员命令。该指令自动清除该操作数。 默认值为 0。 |
OCmd_NormLM | BOOL | 0 | 用于选择配置为“正常”的回路模式的操作员命令(请参阅 Cfg_NormLM)。该指令自动清除该操作数。 默认值为 0。 |
OCmd_Reset | BOOL | 0 | 用于重置所有报警和锁定去除条件的操作员命令。该指令自动清除该操作数。 默认值为 0。 |
OCmd_ResetAckAll | BOOL | 0 | 用于确认和重置所有报警和锁定去除条件的操作员命令。OCmd_ResetAckAll 的使用仅限于 HMI。该指令自动清除该操作数。 默认值为 0。 |
专用输出成员 | 数据类型 | 说明 |
|---|---|---|
HMI_BusObjIndex | DINT | HMI 总线对象索引。 默认值为 0。 |
MRdy_Bypass | BOOL | 1 = MCmd_Bypass 就绪,启用 HMI 按钮。 |
MRdy_Check | BOOL | 1 = MCmd_Check 就绪,启用 HMI 按钮。 |
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_Auto | BOOL | 1 = OCmd_Auto 就绪,启用 HMI 按钮。 |
ORdy_Casc | BOOL | 1 = OCmd_Casc 就绪,启用 HMI 按钮。 |
ORdy_CV | BOOL | 1 = OSet_CV 就绪,启用数据输入字段。 |
ORdy_Man | BOOL | 1 = OCmd_Man 就绪,启用 HMI 按钮。 |
ORdy_NormLM | BOOL | 1 = OCmd_NormLM 就绪,启用 HMI 按钮。 |
ORdy_Ratio | BOOL | 1 = OSet_Ratio 就绪,启用数据输入字段。 |
ORdy_SP | BOOL | 1 = OSet_SP 就绪,启用数据输入字段。 |
ORdy_SPRampStart | BOOL | 1 = OCmd_SPRampStart 就绪,启用 HMI 按钮。 |
ORdy_SPRampStop | BOOL | 1 = OCmd_SPRampStop 就绪,启用 HMI 按钮。 |
ORdy_SPTarget | BOOL | 1 = OSet_SPTarget 就绪,启用数据输入字段。 |
ORdy_SPRampTime | BOOL | 1 = OSet_SPRampTime 就绪,启用数据输入字段。 |
ORdy_Reset | BOOL | 1 = OCmd_Reset 就绪,启用 HMI 按钮。 |
ORdy_ResetAckAll | BOOL | 1 = 至少一个报警或锁定去除条件需要重置或确认。 |
公共 InOut 成员 | 数据类型 | 说明 |
|---|---|---|
BusObj | BUS_OBJ | 总线组件 |
BUS_OBJ 结构
BUS_OBJ 结构用于将过程 PID 指令链接到复杂控制策略中的其他指令,通常采用层级结构。总线对象将状态和报警信息从较低级别的设备汇总到较高级别的控件,并将命令从较高级别的控件扇出到较低级别的指令。通过引用与总线相关的 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 | 总线数组索引 |
报警
为以下成员定义基于离散标签的报警。
成员 | 报警名称 | 说明 |
|---|---|---|
Sts_Fail | Alm_Fail | 指令故障。 PPID 指令报告指令故障时引发。在以下任一情况下报告故障:
|
Sts_IntlkTrip | Alm_IntlkTrip | 互锁脱扣报警。 当不可绕过的互锁不正常 (OK),或者可绕过的互锁不正常 (OK) 且未被绕过时引发。NAND(Inp_NBIntlkOK,(OR(Inp_IntlkOK,Stst_BypActive))). |
Sts_HiHiDev | Alm_HiHiDev | 上上限偏差。 当 PV 超出设定值或参考值的量大于上上限偏差阈值时引发。阈值、死区、门和计时在配置中进行设置。 |
Sts_HiDev | Alm_HiDev | 上限偏差。 当 PV 超出设定值或参考值的量大于上限偏差阈值时引发。阈值、死区、门和计时在配置中进行设置。 |
Sts_LoDev | Alm_LoDev | 下限偏差。 当 PV 超出设定值或参考值的量低于下限偏差阈值时引发。(由于阈值为负数,因此该读数是 PV 低于设定值或参考值的量。)阈值、死区、门和计时在配置中进行设置。 |
Sts_LoLoDev | Alm_LoLoDev | 下下限偏差。 当 PV 超出设定值或参考值的量低于下下限偏差阈值时引发。(由于阈值为负数,因此该读数是 PV 低于设定值或参考值的量。)阈值、死区、门和计时在配置中进行设置。 |
将报警标记为已使用或未使用,并设置基于离散标签的报警的标准配置成员。以此格式访问报警元素:PPIDTag.@Alarms.AlarmName.AlarmElement。
提供程序、操作员和外部命令,用于同时重置以及重置并确认指令的所有报警(报警集)。下图显示了报警条件与报警命令的交互方式。

下图说明了如何导出报警条件上上限偏差、上限偏差、下限偏差、下下限偏差、互锁脱扣和故障。






操作
原则上,PID 核心算法使用为相关增益配置的公式计算 CV,

其中 K 是控制器增益 [-],Ti 是重置时间 [分钟],Td 是速率时间 [分钟]。或者,为独立增益配置指令,

其中 K
P
是比例增益 [-],KI
是积分增益 [1/分钟],KD
是微分增益 [分钟]。如果希望比例项、积分项和微分项的三个增益独立工作,则使用独立增益。以下规则图展示了附加的配置选项,其中包含输入比例项和微分项的误差计算中使用的微分平滑和加权设定值,以及比例项和 CV 跟踪中的平方误差:

以下部分使用了来自 P_PID 结构的精确标签名称。不含前缀的变量(如 SP、PV、CVPrev、CVTrack、FF、FFPrev 和 CtrlAction)是计算中使用的内部变量。数据类型为 REAL 的带有前缀 Inp_、Val_ 的变量采用工程单位。数据类型为 REAL 的不带前缀的变量采用量程百分比。
Ts [秒] 是 PID 算法执行的当前周期,即从 PPID 指令的上次扫描以来经过的时间。
d 是一次扫描延迟操作符。例如:

输入 PID 公式的变量必须以量程百分比表示,因此 PID 增益不取决于 PV 和 CV 所使用的工程单位。按 Perc=min(100,max(0,(EU-EUMin)/(EUMax-EUMin)*100)) 计算这些参数的缩放。
- Val_SP,
- Inp_PV,
- Inp_CVPrev,
- Inp_CVTrack,
- Cfg_CVHiLim,
- Cfg_LoLim,
- Cfg_CVRoCIncrLim,
- Cfg_CVRoCDecrLim
按 Perc=min(100,max(-100,(EU-EUMin)/(EUMax-EUMin)*100)) 计算 Inp_FF 和 Inp_FFPrev 的缩放。
反向/直接控制操作会影响将在进一步计算中使用的回路误差符号:

回路误差计算:

速度 PID 算法
此速度 PID 算法图描述了 CV 的计算方法。此部分的其他明细图描述了所有 PPID 配置选项。



微分项的计算:
修改的误差计算:
E
c
(k)
= Cfg_DSPCoef(k) * SP(k)
– PV(k)
E
c
(k)
= Cfg_DSPCoef(k) * SP(k
–1)
– PV(k
–1)
∆E
c
(k)
= E
c
(k)
– E
c
(k
–1)
= (Cfg_DSPCoef(k) * (Cfg_DSPCoef(k) *
SP(k)
– PV(k))
–SP(k
–1)
– PV(k
–1))
∆E
c
(k
–1) = E
c
(k
–1)
– E
c
(k
–2)
=
(Cfg_DSPCoef(k) * SP(k
–1)
– PV(k
–1))
–SP(k
–2)
– PV(k
–2))
微分项的影响(如果 Cfg_UseDSmooting=0、Cfg_Dependent=1 且 Cfg_GainBumpless=1)。
dD(k)
= Cfg_PGain(k) * Cfg_DGain(k) * (∆E
c
(k)
– ∆E
c
(k
–1))
微分项的影响(如果 Cfg_UseDSmooting=0、Cfg_Dependent=1 且 Cfg_GainBumpless=0)。
dD(k)
= Cfg_PGain(k) * Cfg_DGain(k) * ∆E
c
(k)
– Cfg_PGain(k–1) * Cfg_DGain(k–1) * ∆E
c
(k
–1)
微分项的影响(如果 Cfg_UseDSmooting=0、Cfg_Dependent=0 且 Cfg_GainBumpless=1)。
dD(k)
= Cfg_DGain(k) * (∆Ec(k)
– ∆E
c
(k
–1))
–
微分项的影响(如果 Cfg_UseDSmooting=0、Cfg_Dependent=0 且 Cfg_GainBumpless=0)。
dD(k)
= Cfg_DGain(k) * ∆Ec(k)
– Cfg_DGain(k–1) * ∆Ec(k–1)
如果启用微分滤波器 (Cfg_UseDSmooting=1),则计算如下。
对于相关增益,
DCoef
参数 Cfg_Dependent=1。
对于独立增益,Cfg_Dependent=0。

微分项的影响(如果 Cfg_UseDSmooting=1 和 Cfg_GainBumpless=1)。

微分项的影响(如果 Cfg_UseDSmooting=1 和 Cfg_GainBumpless=0)。

前馈项。



积分饱和防护机制监控内部 CV 值并驱动积分项。积分饱和防护机制使用以下规则:
- 如果内部 CV 高于当前应用的上限,则不要向上积分。
- 如果内部 CV 处于当前应用的限制范围内,则进行积分但不要超出限制。
- 如果内部 CV 低于当前应用的下限,则不要向下积分。

位置 PID 算法
PPID 指令针对 PD 算法的位置形式进行配置,如果 Cfg_PositionBump = 1,则无需从手动模式平滑过渡到自动或级联。当 Cfg_PositionBump = 1 且 Cfg_IGain = 0 时,选择此选项,即使 Cfg_GainBumpless = 1,比例增益的变化也不会平滑。该功能还可应用于速度 PID 算法,使其行为与处理错误而非错误更改时的工作方式相同。
小贴士:
前馈相对于 CVEUMin,但如果 Cfg_PositionBump = 1,控制操作数在内部按 Val_CVOutPercent = Cfg_PGain*Val_EPercent+Inp_FF/(Cfg_CVEUMax-Cfg_CVEUMin)*100 与可选微分项相加进行计算。
偏差死区
处于零误差左右的区域内时,CV 对回路误差变化不敏感。配置的区域级别允许额外的滞后。接近 SP 的 PV (Cfg_DevDBEnter) 的死区级别可以设置为低于远离 SP 的 PV (Cfg_DevDB) 的死区级别。在死区内为 PV 设置活动死区状态 (Sts_DevDBAct)。在死区 (Cfg_UseIntegDevDB) 中,提供一个用于停止 CV 移动或者只是停止积分而使比例和微分操作保持实时状态的选项。

SP 处理
在 SP 值提供给 PID 算法以供处理之前,PPID 指令检查设定值是否有效。在下列状态下,SP 出现故障:
- SP 钳位限值无效 (Sts_ErrSPLim=1),或者
- PV 缩放限值无效 (Sts_ErrPVEU=1),或者
- 回路模式为级联,级联 SP 为 NaN 或 Inf,或者
- 级联为比率 (Cfg_HasRatio=1),并且比率钳位限值无效。
在下列情况下,通过去除将 SP 值 (Val_SPSet) 设置为所配置的设定值 Cfg_SPIntlk,并设置状态标志 (Sts_IntlkSP=1):
- 互锁脱扣,后续操作将 Cfg_SPIntlk 用作设定值 (Cfg_IntlkTripSPAction=2),或者
- SP 出现故障,指令配置为遵循将 Cfg_SPIntlk 用作设定值 (Cfg_SPFailSPAction=2),或者
- PV 出现故障,指令配置为将 Cfg_SPIntlk 用作设定值 (Cfg_PVFailSPAction=2),或者
- CV 出现故障,指令配置为将 Cfg_SPIntlk 用作设定值 (Cfg_CVFailSPAction=2)。

在下列情况下,SP 值会保持,通过去除设置为当前 SP 值,并且设置状态标志 (Sts_SPHeld=1):
- 互锁脱扣,后续操作将使值保持不变 (Cfg_IntlkTripSPAction=1),或者
- SP 出现故障,指令配置为遵循设定值不变 (Cfg_SPFailSPAction=1),或者
- PV 出现故障,指令配置为遵循设定值不变 (Cfg_PVFailSPAction=1),或者
- CV 出现故障,指令配置为遵循设定值不变 (Cfg_CVFailSPAction=1),且未应用更高的去除优先级 (Sts_IntlkSP=0)。

在下列情况下,SP 值设置为当前 PV 值 (Val_SPSet =Val_PV),并置位状态标志 (Sts_SPShedPV=1)
- 互锁脱扣,后续操作将使值保持不变 (Cfg_IntlkTripSPAction=3),或者
- SP 出现故障,指令配置为遵循设定值不变 (Cfg_SPFailSPAction=3),或者
- CV 出现故障,指令配置为遵循设定值不变 (Cfg_CVFailSPAction=3),且未应用更高的去除优先级 (Sts_IntlkSP=0 & Sts_SPHeld=0),PV 良好 (Sts_PVBad=0)。

去除条件优先于自动中(从程序、操作员、覆盖 SP)、级联中(从 CascSP)、手动中(从要跟踪的 PV)进行的其他 SP 选择。
如果 SP 不是来自去除,并且 SP 钳位限值有效,则检查 SP 值的其他来源。
如果回路未处于级联状态且操作员拥有 SP,则使用 OSet_SP。
如果回路未处于级联状态且程序具有 SP,则使用 PSet_SP。
如果回路未处于级联状态且外部具有 SP,则使用 XSet_SP。
如果回路未处于级联状态且选择了覆盖,则使用 Inp_OvrdSP。
对于级联中的回路,使用 Inp_CascSP × Val_Ratio is used。如果级联不是比率 Val_Ratio=1。
在下列情况下,指令准备好从操作员接收新的 SP (ORdy_SP):
- 未启用跟踪 (Cfg_SetTrack=0),或者
- 操作员采用自动回路模式,或者操作员采用手动回路模式,SP 在手动 (Cfg_PVTrack=0) 模式下不跟踪 PV,或者
- 命令源为自动手控,或命令源为手动手控,SP 在手动模式 (Cfg_PVTrack=0) 下不跟踪 PV,或者
- 命令源为覆盖,SP 未配置为以覆盖方式跟踪 (Cfg_SetTrackOvrdHand=0)。
SP 跟踪 PV 值 (Val_PV),在回路模式为手动时设置跟踪状态 Sts_SPTrackPV=1,将指令配置为以手动模式跟踪 (Cfg_PVTrack=1),并且没有 SP 去除条件处于活动状态 (Sts_SPShed=0),PV 没有不良情况 (Sts_PVBad=0)。
SP 钳位在 Cfg_SPHiLim 和 Cfg_SPLoLim,且钳位状态在钳位 (Sts_SPClamped=1) 的情况下进行设置,前提是去除未保持 SP (Sts_SPHeld=0),去除未将 SP 设置为互锁 SP (Sts_IntlkSP=0),且 SP 钳位限值有效 (Sts_ErrSPLim=0)。
SP 过渡向导
SP 过渡向导允许操作员/程序/外部/覆盖在该向导受控启动时输入 SP 目标和达到目标的时间(过渡时间),并计算 SP 在输入的时间内达到输入的目标的移动量。过渡特征由 SP 过渡目标 (SPTarget) 和 SP 过渡时间 (SPRampTime) 定义,如下所示。
在下列情况下,允许 SP 目标和过渡时间输入(ORdy_SPTarget=1,ORdy_SPRampTime=1),且 Val_SPTarget 复制到 Val_SPSet:
- 允许设定值过渡向导 (Cfg_HasSPRamp=1),不跟踪程序/操作员/外部设置 (Cfg_SetTrack=0),或者
- 操作员采用自动 SP 模式,或者命令源为自动回路模式下的手控。


SP 过渡
设定值过渡可以通过消除设定值突然变化来防止出现 CV 尖峰和干扰。虽然设定值过渡具有单回路控制或级联配置的主(外)控制器的优势,但设定值过渡和 PV 比例都不应用于级联回路的次级(内部)控制器,因为这会降低次级回路的响应度。
在以下条件下,跳过 SP 过渡,直接将 SP 目标 (Val_SPSet) 用于最终设定值 (Val_SP),设置跳过状态 Sts_SkipSPRoCLim=1,且过渡报告完成 Sts_SPRamping=0:
- 设定值钳位限值无效,Sts_ErrSPLim=1,或者
- PPID 停用,或者
- PPID 配置为跳过 RoC 限制 Cfg_SkipSPRoCLim=1 且 PPID 处于互锁/维护/覆盖模式,或者
- SP 值在手动回路模式下跟踪 PV 值 (Sts_SPTrackPV=1),或者
- SP 变化率限值增大的当前值为零 (Val_SPRoCIncr=0),并且当前 SP 目标 (Val_SPSet) 高于当前 SP,或者
- SP 变化率限值减小的当前值为零 (Val_SPRoCDecr=0),并且当前 SP 目标 (Val_SPSet) 低于当前 SP。
如果以下要点全部为真,则执行 SP 过渡:
- 未跳过 (Sts_SkipSPRoCLim=0),
- 设定值未达到其目标 Val_SPSet,
- 回路偏差的绝对值 (|Val_E|) 不超出配置的最大过渡偏差,|Val_E|≤ Cfg_SPRampMaxDev。
如果 |Val_E|> Cfg_SPRampMaxDev,则实际 RoC 限值 Val_SPRoCDecr 和 Val_SPRoCIncr 设置为零,SP 不变。


SP 缩放
如果 PV 缩放限值有效 (Sts_ErrPVEU=0),则 SP(采用 PVEU)缩放为 PID 计算中使用的百分比,SP = (SPEU-Cfg_PVEUMin)/(Cfg_PVEUMax-Cfg_PVEUMin)×100。
比率选择和钳位
如果级联回路模式为比率 (Cfg_HasRatio=1),比率钳位限值无效,并且 PPID 指令未配置为跟踪或者操作员已使用比率或手控模式,则 PPID 指令可以让操作员输入比率。
如果 PPID 指令允许级联比率 (Cfg_HasRatio=1),并且比率钳位限值无效,则根据以下命令源选择比率源:
- PSet_Ratio(如果程序具有比率),
- OSet_Ratio(如果操作员具有比率),
- XSet_Ratio(如果外部具有比率),
- Inp_OvrdRatio(如果已选择覆盖)。
如果 PPID 指令允许级联比率 (Cfg_HasRatio=1),并且比率钳位限值无效,则比率钳制在 Cfg_RatioHiLim 和 Cfg_RatioLoLim。如果钳位处于活动状态,则设置 Sts_RatioClamped。
如果回路没有比率或者比率钳位限值无效,则比率设置为 1.0 (Val_Ratio = 1.0)。
用于平滑过渡的 SP 和比率跟踪
Val_SPSet 复制回所有不活动 SP 设置,以允许在 SP 宿主更改时进行平滑转换。
如果为 SP 跟踪配置了 PPID (Cfg_SetTrack=1),并且出现下列情况,则应用 SP 跟踪:
- 回路模式不处于覆盖或手控模式,或者
- 回路模式处于覆盖或手控模式,PPID 配置为在覆盖和手控回路模式 (Cfg_SetTrackOvrdHand=1) 下跟踪,或者
- 回路模式处于级联模式,或者
- 回路模式处于手动模式,Cfg_PVTrack=1。
下图显示了 SP 值输入 PID 公式以计算 CV 之前 SP 处理的主要步骤。

CV 处理
手动模式下的 CV 选择
在手动回路模式下,如果 CV 钳位限值有效,则从活动源(程序/操作员/外部/覆盖)中选择 CV。如果程序具有 CV,则选择 PSet_CV,以此类推。在以下条件下,PPID 指令已准备好 OSet_CV (ORdy_CV=1):操作员输入未配置为在程序/操作员/外部中跟踪 (Cfg_SetTrack=0),或者命令源为手控或覆盖,并且操作员输入未配置为在手控或覆盖中跟踪 (Cfg_SetTrackOvrdHand=0)。
CV 去除
在下列情况下,Val_CVSet 保持上一个良好的 CV 值,并设置 CV 值替代状态 (Sts_CVHeld=1):
- 互锁脱扣,针对上一个良好的 CV 值配置 CV 操作 (Cfg_IntlkTripCVAction=1),或者
- SP 出现故障,针对上一个良好的 CV 值配置 CV 的后续操作 (Cfg_SPFailCVAction=1),并且回路模式为自动或级联,或者 SP 未在上一次扫描(SP 故障上升沿)中出现故障,或者
- PV 出现故障,针对上一个良好的 CV 值配置 CV 的后续操作 (Cfg_PVFailCVAction=1),并且回路模式为自动或级联,或者 PV 未在上一次扫描(PV 故障上升沿)中出现故障,或者
- PV 在 PAI 端 (Inp_PVSrcQ=18) 被替代,并且回路模式为自动或级联,或者
- CV 出现故障,针对上一个良好的 CV 值配置 CV 的后续操作 (Cfg_CVFailCVAction=1),并且回路模式为自动或级联,或者 CV 未在上一次扫描(CV 故障上升沿)中出现故障,或者
对于 Sts_CVHeld=1,CV 不更新。
小贴士:
当 PV、CV 或 SP 出现故障时,上一个良好的 CV 值保持在输出端,但在手动回路模式下仍可覆盖。

在下列情况下,Val_CVSet 设置为 Cfg_CVIntlk,并设置 CV 值替代状态 (Sts_IntlkCV=1):
- 互锁脱扣,针对 Cfg_CVIntlk 配置 CV 操作 (Cfg_IntlkTripCVAction=2),或者
- SP 出现故障,针对 Cfg_CVIntlk 配置 CV 的后续操作 (Cfg_SPFailCVAction=2),并且回路模式为自动或级联,或者 SP 未在上一次扫描(SP 故障上升沿)中出现故障,或者
- PV 出现故障,针对 Cfg_CVIntlk 配置 CV 的后续操作 (Cfg_PVFailCVAction=2),并且回路模式为自动或级联,或者 PV 未在上一次扫描(PV 故障上升沿)中出现故障,或者
- CV 出现故障,针对 Cfg_CVIntlk 配置 CV 的后续操作 (Cfg_CVFailCVAction=2),并且回路模式为自动或级联,或者 CV 未在上一次扫描(CV 故障上升沿)中出现故障,或者
- PPID 停用。小贴士: 当 PV、CV 或 SP 出现故障时,Cfg_CVIntlk 值保持在输出端,但在手动回路模式下仍可覆盖。

如果 CV 值由去除设置为互锁 CV 或保持上一个良好的 CV 值,则 Sts_CVShed=1。
CV 钳位
如果 CV 钳位限值有效 (Sts_ErrCVLim =0),并且回路模式不是手动模式,或者是手动模式但将配置设置为不跳过 CV 钳位 (Cfg_SkipCVManLim=0),则计算出的或设置的 CV (CVSet) 值会钳位在 Cfg_CVHiLim 和 Cfg_CVLoLim。如果 CV 被钳位,将设置相应的状态位(Sts_CVHiClamped、Sts_CVLoClamped 和 Sts_CVClamped)。
CV 变化率限制
如果 PPID 指令未配置为在手动模式下跳过 CV RoC 限制 (Cfg_SkipCVManRoC=0),回路模式为手动,针对 RoC 限制配置了 PPID(Cfg_CVRoCIncrLim>0,Cfg_CVRoCDecrLim>0),并且 CV 的目标值大于 CVOut_previous+Cfg_CVRoCIncrLim*Ts(Ts 为当前 PPID 扫描时间),则 CVOut 计算为 CVOut = CVOut_previous+Cfg_CVRoCIncrLim*Ts。如果 CV 的目标值小于 CVOut_previous-Cfg_CVRoCDecrLim*Ts(Ts 为当前 PPID 扫描时间),则 CVOut = CVOut_previous-Cfg_CVRoCDecrLim*Ts。如果过渡处于活动状态,则设置状态位(Sts_CVRampingUp/Sts_CVRampingDown=1,Sts_CVRamping=1)。如果 CVOut 达到目标值,则清除状态位。如果过渡未处于活动状态,CV 目标将复制到 CVOut。
CV 输出(百分比)
CVOut 以自动/级联方式计算,或者在手动模式下从各种源输入,缩放为百分比并以 Val_CVOutPercent 方式提供。如果 CV 缩放限值无效,则 Val_CVOutPercent=0。
下图显示了 CV 处理的主要步骤。

互锁处理
处理用于绕过或检查可绕过互锁的维护命令。互锁绕过根据请求保持活动状态 (MCmd_Bypass=1)。绕过请求保持活动状态 (Sts_Bypass=1),直至收到用于检查可绕过报警 (MCmd_Check=1) 的维护命令。绕过在以下情况下处于活动状态 (Sts_BypActive=1):根据请求 (Sts_Bypass=1);在维护模式 (Sts_Maint=1) 下;在覆盖模式 (Sts_Ovrd) 下,在覆盖 (Cfg_OvrdIntlk) 中为指令配置了绕过互锁。如果互锁(可绕过或不可绕过)不正常 (NOT OK),并且如果在互锁上配置了任何操作,则去除互锁不正常 (NOT OK) 锁定。
初始化和加电
指令必须进行初始化才能正确执行。通常情况下,指令会在首次运行中(例如加电后)自动初始化。可随时通过设置 Inp_InitializeReq = 1 来请求重新初始化。该操作数在指令中自动清零。为了进行正确的初始化,如果在执行代码的联机编辑时添加指令,请确保默认值 Inp_InitializeReq = 1。初始化中执行的操作:
- 宿主命令设置为“无”,
- 覆盖命令设置为“无”,
- 清除用于绕过和检查互锁的维护命令,
- 清除操作员、程序和外部命令,
- 清除锁定的去除故障,
- 重置所有计时器。
此部分定义了初始化(加电)时针对回路模式、SP 和 CV 的 PPID 操作。
正常加电时的回路模式处理:
- 如果指定为正常的回路模式无效 (Cfg_NormLM<0 | >3),或者正常回路模式设置为级联但指令不允许在配置中级联 (Cfg_HasCasc ≠ 1 & Cfg_NormLM = 3),则禁用正常回路模式 (Cfg_NormLM=0),
- 如果加电的回路模式 (Cfg_PwrUpLM) 为正常,并且正常回路模式为手动,或者加电回路模式为手动,则回路模式设置为手动,
- 如果加电的正常回路模式为正常,并且正常回路模式为自动,或者加电回路模式为自动,则回路模式设置为自动,
- 如果加电的正常回路模式为正常,并且正常回路模式为级联,或者加电回路模式为级联,则回路模式设置为级联。
加电时的级联 SP 处理:
- 如果加电回路模式 (Cfg_PwrUpLM) 明确提供为手动/自动/级联/正常,且级联回路模式不是比率,或者 Val_Ratio = 0,则 Inp_CascSP = Cfg_SPPwrUp,
- 如果加电回路模式明确提供为手动/自动/级联/正常,级联回路模式不是比率,且 Val_Ratio ≠ 0,则 Inp_CascSP = Cfg_SPPwrUp × Val_Ratio,
加电时的 SP 处理。为加电配置的 SP 值将覆盖所有 SP 输入、时间间隔 SP 值和输出 SP 值:
- Cfg_SPPwrUp → PSet_SP、OSet_SP、XSet_SP、Inp_OvrdSP、
- Cfg_SPPwrUp → PSet_SPTarget、OSet_SPTarget、XSet_SPTarget、Inp_OvrdSPTarget、
- Cfg_SPPwrUp → Val_SPTarget、Val_SPSet、Val_SP。

加电时的 CV 处理。为加电配置的 CV 值将覆盖所有 CV 输入、内部 CV 值和输出 CV 值:
- Cfg_CVPwrUp → PSet_CV、OSet_CV、XSet_CV、Inp_OvrdCV、Inp_CVPrev、Val_CVSet、Val_CVOut,
上电 CV、CV 钳位和 CV 变化率限制协同工作。如果将上电 CV 设置为低于最小 CV 钳位限值,则 CV 将从Cfg_CVPwrUp值开始,并在上电时逐渐上升到最小 CV 钳位限值。

处于自动或级联模式时,如果 Inp_InnerAvailable=0 且 Cfg_CVPwrupSel=1,则可通过 Inp_CVTrack 中设置的内回路 CV 来初始化 CV。如果 Cfg_CVPwrupSel=0,则首次运行时会忽略 Inp_InnerAvailable,且 Cfg_CVPwrup 用作初始控 CV。
如果加电回路模式 (Cfg_PwrUpLM) 不为零,并且在内部设置了多个回路模式,则指令将使用以下优先级顺序确保一次仅设置一个回路模式:手动、自动,然后级联。如果加电回路模式为 0,则回路模式、CV 和 SP 将保持最后(断电)状态。初始化完成后,初始化请求被清除,指令报告为已初始化 (Sts_Initialized = 1)。
配置错误报告
在有效性检查中,将检查带有 Cfg_ 前缀且数据类型为 REAL 的所选参数,以防止发生错误操作。如果值无效,则设置特定于特定参数的错误位。如果设置了错误位,则报告全局错误 (Sts_Err),并引发故障报警。

PPID 指令可确保 HMI 中 PV 和 CV 显示的小数位数有效。如果输入的数字无效,则 Cfg_xxDecPlcs = 2。PPID 指令可确保在 SP/PV/CV 出现故障时执行有效操作。对于输入的任何无效数字,Cfg_SPFailSPAction = 1、Cfg_PVFailPVAction = 1、Cfg_CVFailCVAction = 1。PPID 指令可确保 eKeepLM、CV、比率和 SP 上的保持配置有效。如果输入的值无效,则 Cfg_eKeepxx = 0(遵循命令源)。
CV、SP、比率、回路模式所有权
归操作员所有
在下列情况下,CV 归操作员所有:
- 当前命令源为操作员 (Sts_Oper=1),配置设置为遵循命令源 (Cfg_eKeepCV=0),或者
- 命令源为操作员/程序/外部,配置保持操作员的 CV (Cfg_eKeepCV= 1),
- 或者命令源为维护 (Sts_Maint=1)。
在下列情况下,回路模式归操作员所有:
- 当前宿主为操作员 (Sts_Oper=1),配置设置为遵循命令源 (Cfg_eKeepLM=0),或者
- 宿主为操作员/程序/外部,配置保持操作员的回路模式 (Cfg_eKeepLM=1),或者
- 宿主为维护 (Sts_Maint=1)。
在下列情况下,比率归操作员所有:
- 当前宿主为操作员 (Sts_Oper=1),配置设置为遵循命令源 (Cfg_eKeepRatio=0),或者
- 宿主为操作员/程序/外部,配置保持操作员的比率 (Cfg_eKeepRatio=1),或者
- 宿主为维护 (Sts_Maint=1)。
在下列情况下,SP 归操作员所有:
- 当前宿主为操作员 (Sts_Oper=1),配置设置为遵循命令源 (Cfg_eKeepSP=0),或者
- 宿主为操作员/程序/外部,配置保持操作员的 SP (Cfg_eKeepSP=1),或者
- 宿主为维护 (Sts_Maint=1)。
归程序所有
在下列情况下,CV 归程序所有:
- 当前宿主为程序 (Sts_Prog=1),配置设置为遵循命令源 (Cfg_eKeepCV=0),或者
- 宿主为操作员/程序/外部,配置保持操作员的 CV (Cfg_eKeepCV=2)。
在下列情况下,回路模式归程序所有:
- 当前宿主为程序 (Sts_Prog=1),配置设置为遵循命令源 (Cfg_eKeepLM=0),或者
- 宿主为操作员/程序/外部,配置保持程序的回路模式 (Cfg_eKeepLM=2)。
在下列情况下,比率归程序所有:
- 当前宿主为程序 (Sts_Prog=1),配置设置为遵循命令源 (Cfg_eKeepRatio=0),或者
- 宿主为操作员/程序/外部,配置保持程序的比率 (Cfg_eKeepRatio=2)。
在下列情况下,SP 归程序所有:
- 当前宿主为程序 (Sts_Prog=1),配置设置为遵循命令源 (Cfg_eKeepSP=0),或者
- 宿主为操作员/程序/外部,配置保持操作员的 SP (Cfg_eKeepSP=2)。
归外部所有
在下列情况下,CV 归外部所有:
- 当前宿主为外部 (Sts_Ext=1),配置设置为遵循命令源 (Cfg_eKeepCV=0),或者
- 宿主为操作员/程序/外部,配置保持外部的 CV (Cfg_eKeepCV=3)。
在下列情况下,回路模式归外部所有:
- 当前宿主为外部 (Sts_Ext=1),配置设置为遵循命令源 (Cfg_eKeepLM=0),或者
- 宿主为操作员/程序/外部,配置保持外部的回路模式 (Cfg_eKeepLM=3)。
在下列情况下,比率归外部所有:
- 当前宿主为外部 (Sts_Ext=1),配置设置为遵循命令源 (Cfg_eKeepRatio=0),或者
- 宿主为操作员/程序/外部,配置保持外部的比率 (Cfg_eKeepRatio=3)。
在下列情况下,SP 归外部所有:
- 当前宿主为程序 (Sts_Prog=1),配置设置为遵循命令源 (Cfg_eKeepSP=0),或者
- 宿主为操作员/程序/外部,配置保持外部的 SP (Cfg_eKeepSP=3)。
PPID 状态
PV 不良状态
如果 PV 缩放限值无效,过程变量会出现故障,并通过 Inp_PVBad 输入或质量索引 Inp_PVSrcQ 报告 PV 在源处不良。如果源质量不良,则无法在 PID 计算中使用 PV。如果 PV 畅通但报告为不确定或仅不合格,并且 PPID 配置为无法接受这种情况(Cfg_PVFailTrigger=1 或 2),则 PV 也会被视为出现故障。

SP 不良状态
在下列状态下,设定值出现故障:
- SP 钳位限值无效 (Sts_ErrSPLim=1),或者
- 缩放中使用的 PV 限值无效(Sts_ErrPVEU=1,最大值<=最小值)。
出现故障的原因是,当回路模式为比率时 SP 源自 PV,或者当回路模式为比率(Sts_ErrRatioLim=1 & Cfg_HasRatio=1 且回路模式为级联)时比率钳位限值无效。

CV 不良状态
在下列情况下 CV 不良:
- Inp_CVIOFault=1,或者
- CV 钳位限值无效 (Sts_ErrCVLim=1),或者
- CV 缩放限值无效 (Sts_ErrCVEU=1),或者
- 手控反馈不良,PPID 处于手控模式。

回路故障状态
如果 SP、PV 或 CV 出现故障并且故障去除被锁定,则设置回路故障 (Sts_Fail)。如果设置 Sts_Fail,则回路无法正常运行。

积分饱和状态
在下列情况下,设置积分饱和状态上限 (Sts_WindupHi):
- 选定的 SP 在上限被钳位 (Sts_SPHiClamped=1),或者
- 如果针对反向控制操作配置了 PPID (Cfg_CtrlAction=0),则 CV 在上限被钳位 (Sts_CVHiClamped=1),或者
- 如果针对直接控制操作配置了 PPID (Cfg_CtrlAction=1),则 CV 在下限被钳位 (Sts_CVLoClamped=1),或者

在下列情况下,设置积分饱和状态下限 (Sts_WindupLo):
- 选定的 SP 在下限被钳位 (Sts_SPLoClamped=1),或者
- 如果针对反向控制操作配置了 PPID (Cfg_CtrlAction=0),则 CV 在下限被钳位 (Sts_CVLoClamped=1),或者
- 如果针对直接控制操作配置了 PPID (Cfg_CtrlAction=1),则 CV 在上限被钳位 (Sts_CVHiClamped=1)。

活动状态
如果 Val_CVOut 大于 Cfg_MaxInactiveCV,则将状态 CV 设置为活动 (Sts_Active)。对于 Sts_Active=1,将显示 HMI 图形符号(例如阀打开);当 Sts_Active=0 时,将显示不活动的 HMI 图形符号(例如阀关闭)。
未就绪状态
在下列情况下,PPID 指令未就绪 (Sts_NotRdy=1):
- PPID 停用 (Sts_NrdyOoS=1),或者
- 此 PPID 的 CV 正在初始化 (Sts_NrdyInit=1),或者
- PPID 配置错误 (Sts_NRdyCfgErr=1),或者
- 互锁不正常 (Sts_NrdyIntlk=1),或者
- 此 PPID 的内部对象(通常为次级回路的 PID)不可用(Inp_InnerAvailable=0),或者
- 由于 PV/SP/CV 值不良或通信故障或手控反馈值无效,回路出现故障 (Sts_NrdyFail=1)。

可用状态
当处于程序模式下(而不是首次扫描中)时,PPID 指令可用于其他对象 (Sts_Available=1),且通常控制就绪。
当处于级联模式下(而不是首次扫描中)时,内回路可用于级联控制 (Sts_CascAvailable=1),且通常控制就绪。
当处于外部模式下(而不是首次扫描中)时,内回路可用于外部控制 (Sts_ExtAvailable=1),且通常控制就绪。
下图显示了指令通常控制就绪所需的条件。

HMI 字符串配置
配置 HMI 面板(如
FactoryTalk View
中所示)和 Logix Designer
配置对话框的字符串。字符串将设置为标签项的扩展属性。只能在 Logix Designer
应用程序中配置字符串。- 说明
- 图形符号的标签
- 用于 HMI 面板调用的显示库
- 指令名称
- 区域名称
- URL 链接
- 具有更多信息的对象的路径
- 提供级联 SP 的对象的路径
- 提供 PV 的对象的路径
- 使用 CV 的对象的路径
- PV/SP 工程单位
- CV 工程单位
命令源
指令使用以下命令源。命令源在下表中从高到低的优先级顺序排序。
命令源 | 说明 |
|---|---|
手控 | 硬接线逻辑或其他指令之外的逻辑拥有对设备的控制权。该指令会跟踪设备的状态,以便平滑过渡回其他命令源之一。 处于手控模式时,PID 算法不会计算 CV 的变化量。 无论控制模式如何,Val_CVOut = Inp_HandFdbk (Inp_Tieback)。手控模式通常用于指示最终控制元件的控制功能已由现场手控/自动站接管。 设置 Inp_Hand 以请求手控模式。该值通常以数字输入的形式从手控/自动工作站读取。 (优先级最高的命令源) |
停用 | 指令被禁用且没有宿主。 |
维护 | 维护拥有对设备的控制权,取代操作员、程序、外部和覆盖控制。接受来自 HMI 的操作员命令和设置。绕过可绕过的互锁,未处理设备超时检查。 |
覆盖 | 优先级逻辑拥有对设备的控制权,取代操作员、程序和外部控制。接受覆盖输入 (Inp_OvrdCmd)。如果进行这样的配置,则绕过可绕过的互锁。 |
外部 | 外部逻辑拥有对设备的控制权。接受外部命令 (XCmd_)。 |
程序已锁定 | 程序逻辑拥有对设备的控制权。接受程序命令 (PCmd_)。操作员无法从程序获取控制权。覆盖无法从程序获取控制权,除非 Cfg_OvrdOverLock = 1。 |
程序 | 程序逻辑拥有对设备的控制权。接受程序命令 (PCmd_)。 |
操作员已锁定 | 操作员拥有对设备的控制权。接受来自 HMI 的操作员命令 (OCmd_)。程序无法从操作员获取控制权。覆盖无法从操作员获取控制权,除非 Cfg_OvrdOverLock = 1。 |
运算符 | 操作员拥有对设备的控制权。接受来自 HMI 的操作员命令 (OCmd_)。 (最低优先级命令源) |
该指令启用或禁用以下操作:
- 存在维护停用
- 存在维护
- 存在外部
- 存在程序(已解锁)
- 存在程序(已锁定)
- 存在操作员(已解锁)
- 存在操作员(已锁定)
- PCmd_Lock 用作级别(1 = 锁定,0 = 解锁)
- XCmd_Acq 用作级别(1 = 获取外部,0 = 释放外部)
指令会检查控制权的无效配置,强制设置最接近的有效配置。
核心控制模型仲裁接收功能所接受的命令和参数的源。核心控制模型确定源是否为:
- 可编程实体(完全驻留于处理环境中),或
- 外部接口实体(在处理环境外部并异步发出命令和参数)。
锁定控制源会阻止其他控制源获取权限。
核心命令源模型
核心命令源模型由以下控制源组成:
- Oper
- OperLocked
- Prog
- ProgLocked
控制模型默认为该配置。其他控制源在模型中也可能存在,但充当覆盖控制源,独立于基本操作员/程序状态机运行。
在配置中启用控制源
用户可以启用或禁用各个控制源。默认配置使用整个基本模型;处理环境加电后,控制源将为指定的默认值。不允许已启用控制源的某些组合,因为它们不是必需的,或者可能会造成意外的更改。
所有权默认值和优先级
此配置允许用户指定是操作员还是程序将成为加电默认设置,以及在同时声明操作员命令和程序命令时,哪个命令获得成功。
自动重置命令
所有命令都被视为“单触发锁定”。这意味着,当指令执行并处理所有命令时,将自动清除所有命令。
更改目标状态
在某些配置下,某些命令的目标命令源可能会发生更改。这符合命令意图。例如,如果 Prog 处于禁用状态,则 OCmd_Prog 命令的目标将定向到 ProgLocked 状态,而不是 Prog 状态。这是为了保持 OCmd_Prog 命令的意图:操作员实体希望将该函数置于程序的控制下。如果该命令被删除,则将无法完成此操作。这仅在不会引发冲突或竞争状况的配置中完成,但保留尽可能多的用户功能是切实可行的。
优先级较高的命令源
以下优先级较高的命令源在模型中独立工作:外部、覆盖、维护、停用、服务中和手控。
命令源处理和所有权仲裁
维护和操作员命令(MCmd_OoS、MCmd_IS、MCmd_Acq、MCmd_Rel、OCmd_Oper、OCmd_Prog、Ocmd_Lock、OCmd_Unlock、OCmd_Normal)转发到包含的 PCmdSrc 指令。
维护和就绪位(MRdy_OoS、MRdy_IS、MRdy_Acq、MRdy_Rel、ORdy_Oper、ORdy_Prog、ORdy_Lock、ORdy_Unlock、ORdy_Normal)从响应中包含的 PCmdSrc 指令进行复制。
指令根据接收请求的顺序设置所有权 (Val_Owner)。如果请求方提供非零宿主 ID (PSet_Owner),并且当前宿主为无 (Val_Owner = 0),则指令会将所有权分配给请求 ID。
监控 PPID 指令
使用 PlantPAx 过程对象库中的操作员面板进行监控。
影响数学状态标志
编号
严重/轻微故障
没有特定于此指令的故障。请参见“数组索引编制”,了解关于数组索引故障的信息。
执行
PID 算法仅在配置的执行速率 Cfg_ExecTime 进行扫描。为执行周期 = 0.0(默认)或短于指令扫描时间的周期配置指令不起作用,并且每次扫描均执行 PID 算法。对于实际执行周期,请检查 Val_ExecTime。
梯形图
条件/状态 | 执行的操作 |
|---|---|
预扫描 | 梯级输出条件设置为假。 将 Sts_eSrc 设置为 0。将 Sts_bSrc 设置为 0。 |
指令首次运行 | 每次执行时自动清除的所有命令都将被清除并忽略。 根据配置 (Cfg_ProgPwrUp) 设置程序/操作员选择。 程序或操作员锁定选择设置为未锁定。 回路模式根据配置 (Cfg_PwrUpLM) 进行设置。初始值 pf SP 和 CV 根据 Cfg_SPPwrUp 和 Cfg_CVPwrUp 以及选定回路模式进行设置。如果 Cfg_PwrUpLM=0(无变化),SP 和 CV 初始值等于上次扫描(例如断电前)的值。 PSet_Owner 和 Sts_Owner 设为 0。 |
梯级输入条件为假 | 如果 Inp_Hand=0,指令将停用。输出已断电。将清除所有报警。 命令源选择处理正常进行,但所有权状态位(Sts_Maint、Sts_Ovrd、Sts_Ext、Sts_Prog 和 Sts_Oper)全部清零。当梯级输入条件变为真时,该指令将考虑接收到的命令并相应地设置活动命令源。 |
梯级输入条件为真 | 将梯级输出条件设置为梯级输入条件。 指令执行。 |
后扫描 | 梯级输出条件设置为假。 |
功能块图
条件/状态 | 执行的操作 |
|---|---|
预扫描 | 请参阅“梯形图”表中的“预扫描”行。 |
指令首次运行 | 请参阅“梯形图”表中的“指令首次运行”行。 |
指令首次扫描 | 请参阅“功能块图”表中的“指令首次运行”行。 |
EnableIn 为假 | 请参阅“梯形图”表中的“梯级输入条件为假”。 |
EnableIn 为真 | 请参见“梯形图”表中的“梯级输入条件为真”行。 |
后扫描 | EnableIn 和 EnableOut 位设置为假。 |
结构化文本
在结构化文本中,EnableIn 在普通扫描期间始终为真。指令在处于由逻辑激活的控制路径中时执行。
条件/状态 | 执行的操作 |
|---|---|
预扫描 | 请参阅“梯形图”表中的“预扫描”行。 |
指令首次运行 | 请参阅“梯形图”表中的“指令首次运行”行。 |
EnableIn 为真 | 请参见“梯形图”表中的“梯级输入条件为真”行。 |
后扫描 | EnableIn 和 EnableOut 位设置为假。 |
示例
示例 1:PID 反馈控制
本示例演示了如何使用 PPID 指令连接模拟输入和模拟输出指令。
可将压力系统罐液位控制视为使用 PPID 指令连接模拟输入和模拟输出指令的示例。考虑一个带有水站的供水分配系统部分,它将水从收集罐泵到水箱,以便在分配节点处保持系统压力。由于需求变化,水位波动,因此系统压力也会发生变化。PPID 指令通过将水位作为过程变量进行测量和处理,帮助稳定压力。PPID 计算驱动泵的电机的参考速度,以补偿需求变化。实际电机 rpm 经过测量并反馈回控制器。通过此反馈,控制方案能够在服务人员从控制面板(电机处于手控状态)直接接管控制并操作泵时读取实际电机速度。PID 回路的组件应跟踪实际 rpm,并准备好在没有任何干扰的情况下接管控制。
模拟输入模块提供以原始单位表示的液位,以及由 PAI 指令处理的故障信号 (LI_30)。以工程单位表示的液位 (LI_30.Val)、液位信号质量 (LI_30.SrcQ) 和报警通知 (LI_30.Sts_eNotifyAll) 连接到 PPID 的相应输入(LIC_31.Inp_PV、LIC_31.Inp_PVSrcQ、LIC_31.Inp_PVNotify)。对 PPID 进行了配置,以便在液位信号不可靠并且不应输入用于 CV 计算的 PID 公式时发生正确的响应。设置 Cfg_PVFailTrigger 可正确对 PV 源质量进行分类。Cfg_PVFailSPAction、Cfg_PVFailCVAction 和 Cfg_PVFailLMAction 用于指定当 PV 源质量报告为不良时,PPID 指令所使用的设定值、控制变量值和回路模式。
PPID 指令应接收到一个信号,指示 PPID 驱动的下游对象(驱动电机的模拟输出指令 SZ_31)是否处于活动状态,并且是否正确响应 PPID 指令的 CV。换言之,如果控制回路未打开,PPID 指令应收到信号。
如果 SZ_31 的 CV 输出饱和(SZ_31.Sts_WindupHi=1 或 SZ_31.Sts_WindupLo=1),PPID 指令将失控。为防止积分饱和,SZ_31.Sts_WindupHi 和 SZ_31.Sts_WindupLo 需连接到 LIC_31.Inp_WindupHi 和 LIC_31.Inp_WindupLo。
如果泵电机(SZ_31 驱动的设备)处于故障状态 (M31_Fail=1),则回路也会断开,SZ_31 和 LIC_31 应遵循实际设备状态,以避免在恢复控制时出现任何撞击。测量实际的电机 rpm,rpm 原始信号通过模拟输入指令 SI_31 缩放为工程单位,缩放的 rpm 值 (SI_31.Val) 作为反馈信号连接到 SZ_31.Inp_PosFdbk。
如果服务人员将泵电机置于手控模式 (M31_Hand=1),则实际速度在连接到 SZ_31.Inp_HandFdbk 的 M31_Fdbk 标签中单独提供。
设备状态在模拟输出指令 SZ_31 中进行收集,并向上游传输给 PPID 指令。PPID 指令应得知,控制回路在下游某处断开,因此 SZ_31 不可用于 LIC_31。将 SZ_31.Sts_Available 连接到 LIC_31.Inp_InnerAvailable 以将信息传递给 PPID。控制回路断开时,应向 PPID 提供实际的速度参考以进行跟踪。将 SZ_31.Val_CVOut 连接到 LIC_31.Inp_CVTrack。通信或设备故障等其他下游问题也应反馈回 PPID,以便指令采取配置的响应操作。将 SZ_31.Sts_IOFault 与 SZ_31.Sts_DeviceFault 合并,将结果连接到 LIC_31.Inp_CVIOFault,并使用 LIC_31.Cfg_CVFailSPAction 和 LIC_31.Cfg_CVFailCVAction 配置 PPID,以进行后续操作。
最后,更新 PPID 的报警通知,并向上游传播 SZ_31 所发出的最高严重性通知。将 SZ_31.Sts_eNotifyAll 连接到 LIC_31.Inp_CVNotify。

该示例在所有三个语言编辑器中显示。
梯形图



功能块图

结构化文本
LI_30.Inp_PVData := LI_30_raw;
LI_30.Inp_ModFault := LevelAnalogModuleFault;
LI_30.Inp_OutOfSpec := LevelOutOfSpec;
PAI(LI_30,0);
LIC_31.Inp_PV := LI_30.Val;
LIC_31.Inp_CVTrack := SZ_31.Val_CVOut;
LIC_31.Inp_PVSrcQ := LIC_31.Inp_PVSrcQ;
LIC_31.Inp_PVNotify := LI_30.Sts_eNotifyAll;
LIC_31.Inp_CVNotify := SZ_31.Sts_eNotifyAll;
LIC_31.PSet_SP := LIC_31_SP;
LIC_31.Inp_WindupHi := SZ_31.Sts_WindupHi;
LIC_31.Inp_WindupLo := SZ_31.Sts_WindupLo;
LIC_31.Inp_CVIOFault := SZ_31.Sts_IOFault OR SZ_31.Sts_DeviceFault;
PPID(LIC_31,0);
SI_31.Inp_PVData := SI_31_raw;
PAI(SI_31,0);
SZ_31.PSet_CV := LIC_31.Val_CVOut;
SZ_31.Inp_PosFdbk := SI_31.Val;
SZ_31.Inp_HandFdbk := M31_Fdbk;
SZ_31.Inp_DeviceFault := M31_Fail;
SZ_31.Inp_Hand := M31_Hand;
PAO(SZ_31,0);
SZ_31_raw := SZ_31.Out_CVData;
示例 2:级联控制
当受控变量经常遭受外部干扰,进而导致所控制的过程变量遭受干扰时,级联控制非常有用。例如,尝试通过调节送入罐周围加热套中的蒸汽量来控制罐中液体的温度。如果由于某个上游过程导致蒸汽流量骤降,罐中液体的温度最终也会下降,PPID 指令随即打开蒸汽阀来补偿温度下降。

在本例中,级联回路可以在蒸汽流量下降导致罐液体温度下降前打开蒸汽阀,从而实现更好的控制。要实现级联回路,可使用 PPID 指令来根据蒸汽流量变送器的过程变量信号控制蒸汽阀开关。这是级联对的内回路。另一条 PPID 指令(称为外回路或主回路)使用液体温度作为过程变量,并将其 CV 输出发送到内回路的设定值。通过这种方法,外温度回路可以向内蒸汽流量回路请求特定的蒸汽流量。随后,蒸汽流量回路负责提供温度回路所请求的蒸汽量,从而保持恒定的液体温度。
要使一对级联回路正常工作,内回路的过程响应速度必须比主回路快。原因在于,在任何干扰对外回路的过程造成影响之前,内回路的过程必须能够先对这些干扰进行补偿。在本例中,如果蒸汽流量下降,内控制器必须在液体温度受到影响之前操作,以便增加蒸汽流量。
要设立一对级联 PPID 指令,请设置内回路中的 Cfg_HasCasc 输入参数。这样可使内回路进入级联/比率模式。接下来,将外回路的 Val_CVOut 连接到内回路的 Inp_CascSP 参数。当内回路进入级联/比率模式时,Inp_CascSP 值将用作内回路的 SP。外回路中 Val_CVOut 的工程单位范围应当与内回路中 PV 的工程单位范围一致。这样,外回路便可以将其 CV 的 0-100% 值转换为内回路上设定值所用的相应工程单位。
PPID 指令还具有其他多种功能,从而更有效地支持级联控制。将内回路 PPID 的 Sts_CascAvailable 输出连接到外回路 PPID 的 Inp_InnerAvailable 输入,将内回路的 Val_SP 输出连接到外回路的 Inp_CVTrack 输入。这样,会将外回路的 Val_CVOut 值设为当内回路不处于级联/比率模式时跟踪内回路的 SP。从而在将内回路重新切换为级联/比率模式时实现平滑转换。同样,将内回路的 Sts_WindupHi 和 Sts_WindupLo 输出连接到外回路的 Inp_WindupHi 和 Inp_WindupLo 输入。因此,外回路在内回路达到 SP 限值或 CV 限值时会停止增大或减小(视情况而定)Val_CVOut 值,并且在发生上述情况时消除外回路上的任何积分饱和。
该示例显示两个版本的 FBD,分别包含最短布线和延长布线。延长布线显示在外部和内部 PID 之间传递报警通知,使信号质量输入引脚可见,以便在应用程序中立即使用。
功能块图


示例 3:比率控制
比率控制通常用于按设定比例将一种液体添加到另一种液体中。例如,如果要按恒定比率将两种反应物(例如 A 和 B)添加到罐中,而由于上游过程的某些干扰,反应物 A 的流速可能随时间发生变化,这时便可以使用比率控制器自动调节反应物 B 的添加速率。在本例中,反应物 A 通常称为非可控或自然流,因为它不受 PPID 指令控制。而反应物 B 的流则称为受控流。

要使用 PPID 指令执行比率控制,需设置 Cfg_HasCasc 和 Cfg_HasRatio 参数。将非可控流连接到 Inp_CascSP 输入参数。处于级联/比率模式时,将非可控流乘以 OSet_Ratio(在操作员控制模式下)或 PSet_Ratio(在程序模式下),得出的乘积会由 PPID 指令用作设定值。
该示例显示在 FBD 中。
功能块图

示例 4:前馈控制
前馈控制是一种干扰抑制策略,用于处理负载变化。与仅在某些负载变化使过程变量偏离设定值后才依靠反馈对过程进行纠正性更改不同,具有前馈的控制方案监控相关负载并使用该信息预先对最终控制元件进行稳定更改,以使过程变量不受影响。
考虑一个控制系统,它将蒸汽流操纵到热交换器,使油的排放温度保持在一个恒定的设定值。如果负载条件发生变化,出口温度将短暂偏离设定值。反馈控制系统最终能够使排放油温恢复到设定值,但在负载导致油温偏离设定值之后无法开始纠正措施。要改进控制,需要在设计中构建前馈操作和反馈操作。前馈操作允许控制系统在过程变量受到影响之前对负载变化采取纠正措施。
在本示例中,系统中的主导负载是油流速率,这是由以油作为燃料的燃烧炉的需求变化引起的。要使此控制系统调整为包括前馈,需要安装油流变送器和增益/偏置功能,为保持温度的 PID 控制器提供前馈操作。在采取前馈控制操作后,蒸汽流速率立即随油流速率变化,先占性地对增加或减少的油料加热需求进行补偿。蒸汽流量变化过程的时间常数大于油流量变化过程的时间常数。
油流量是一个自然变量。前馈控制系统只能处理蒸汽阀位置以响应油流量。帮助控制的最佳方法是加大系统可影响的蒸汽流量变量的时间常数。解决方案是将用户指定的超前功能的输出 FY_32 连接到 PPID 的 Inp_FF。

现在,当这种热交换器的油流速率突然增大时,超前功能会向前馈信号添加浪涌,快速打开蒸汽阀并向交换器发送蒸汽浪涌,以帮助克服油温对蒸汽流量变化的自然缓慢响应。添加此超前功能后,前馈操作并不十分理想,但它将比没有向前馈信号中添加动态补偿时好得多。
该示例显示在 FBD 中。
功能块图

示例 5:分程控制
分程控制允许使用单个 PID 控制变量驱动多个最终控制元件。下图显示的是一个应用示例。

在 CV=0 (Val_CVOut=0) 处,两个阀均关闭。当 CV 为正数时,压力控制阀打开,排气阀处于关闭状态。如果 PPID 指令配置了 CV 缩放限值,Cfg_CVEUMax = 100 且 Cfg_CVEUMin=-100,则在 CV=100 处,压力控制阀完全敞开。当 CV 为负值时,排气阀打开,压力控制阀关闭。在 CV=-100 处,排气通路敞开。CV 拆分是通过过程模拟扇出 (Process Analog Fanout, PFO) 指令进行的。
利用 Cfg_CVEUMin=-100 与 Cfg_CVEUMax=100 配置 PPID,并利用 Cfg_CVEUMin=-100、Cfg_CVEUMax=100、Cfg_CV1Ratio=1、Cfg_CV1Offset=0、Cfg_CV1HiLim=100、Cfg_CV1LoLim=0、Cfg_CV2Ratio=-1、Cfg_CV2Offset=0、Cfg_CV2HiLim=100、Cfg_CV2LoLim=0 配置 PFO。
PPID 指令必须接收一个表明其下游对象是否可控的指示。如果下游对象没有为 PPID 指令做好准备,则指令应跟踪下游块对此情况定义的内容。将 PFO 指令从其下游对象接收的初始化请求 (Out_CVInitializeReq) 取反结果连接到 PPID 指令的 Inp_InnerAvailable。此外,将 PFO 指令的 Out_CVInitializationVal 连接到 PPID 指令的 Inp_CVTrack。当下游功能块未准备好进行 PPID 控制时,PPID 指令将跟踪该值。如果下游对象再次可用,PPID 指令将恢复控制,不会出现任何干扰。
该示例显示在 FBD 中。
功能块图

示例 6:覆盖选择控件
请考虑下图中的输油管线泵站。在本例中,系统测量吸入压力 (41)、排出压力 (73) 和电机电流 (60)。要控制排出压力,请使用泵上的变量速度驱动器。面临的挑战是,如果吸入压力变低,泵就会空吸。如果电机电流过大,驱动器将脱扣,镦粗压力沿管线向下输送。这两种约束作用于同一方向。如果吸入压力变低,泵就需要减速,直至恢复。如果电机电流过高,则降低泵速会降低功率,从而降低电机电流。

主回路为泵站排出压力。吸入压力和电机电流为覆盖回路。“低选”挑选最低 CV 值以发送给驱动器速度参考。吸入压力和电机电流回路的设定值均设置为约束阈值(即开始作用的值)。当接近约束时,该回路的误差会变小,其输出会下降并会被选中。所选 CV 将反馈回全部三个回路。控制方案利用 Inp_CVTrack 跟踪最终 CV。
跟踪参数的建议设置:
- 关联增益 (Cfg_Dependent = 1)。设置 Cfg_CVTrackGain = Cfg_IGain。
- 独立增益 (Cfg_Dependent = 0)。设置 Cfg_CVTrackGain = Cfg_IGain/Cfg_PGain。
此设置导致所选(活动)CV 与未选(跟踪)CV 之间的稳态差异等于 Cfg_PGain x 误差,从而使所选控制器适当的控制余地,而无需频繁切换到另一个控制器。
该示例显示在 FBD 中。
功能块图

示例 7:PID 增益规划
请考虑下图中的输油管线泵站。在本例中,系统测量吸入压力 (41)、排出压力 (73) 和电机电流 (60)。要控制排出压力,请使用泵上的变量速度驱动器。面临的挑战是,如果吸入压力变低,泵就会空吸。如果电机电流过大,驱动器将脱扣,镦粗压力沿管线向下输送。这两种约束作用于同一方向。如果吸入压力变低,泵就需要减速,直至恢复。如果电机电流过高,则降低泵速会降低功率,从而降低电机电流。
在本例中,增益规划技术用于实时补偿过程动态变化。标准温度控制器 TIC_41 读取出口温度 TT_41 (PV),并计算蒸汽流量控制回路 (CV) 的参考值,以将产品温度保持在设定值。PPID 由关联增益 (TIC_41.Cfg_Dependent=1) 配置,总体增益 TIC_41.Cfg_PGain 随产品流 FT_40 变化。PGain 计算的公式特定于应用。在本例中,PGain 在 PIDGainScheduler AOI 中计算为具有偏差的产品流速的线性函数。

该示例显示在 FBD 中。
功能块图

提供反馈