PIDE  - 增强型 PID 功能块
PIDE 功能块为标准的PID梯形图语言指令提供了更高级的功能 。另外,它使用PID 算法的速度形式。增益适用于偏差或 PV数值的变化,而不适用于偏差或PV的数值。
当使用这个指令时,我们会看到它有很多不同的输入和输出。要想使功能块按照预想的模式运行,则选择并应用正确的输入是非常重要的。本文档的目的是将这些信息分解成不同的部分,以使用户更容易地进行选择。
操作状态
程序控制
使用应用程序控制所有的模式。
操作员控制
使用HMI系统控制PIDE 功能的正常操作。
1.  操作状态
标记为 “ProgOper”的布尔量输出用于指示PIDE 功能块的运行条件。它提供了这两种模式下功
能块控制状态的数据。如果它被设置为逻辑“1”,PIDE块会处于程序控制状态,如果它被设置为逻辑“0”, PIDE块会处于操作员控制状态。
2 – 带有操作员控制状态输入和输出的PIDE 功能块.
“OperOperReq” 输入
“OperProgReq” 输入
“ProgOperReq” 输入
“ProgProgReq” 输入
“ProgOper” 输出
程序模式
操作员模式
请求操作员模式
X
0
X
X
X
X
0
X
X
X
0
X
X
X
0
X
X
X
0
X
请求程序模式
X
1
X
X
1
X
X
X
1
X
3 – 操作员/程序模式选择.
表3显示了使PIDE功能块处于操作员模式或程序模式而所需的不同输入的逻辑状态。
操作员模式面板
RSLogix5000安装 CD上包括很多面板,它们可以和不同的功能块一起使用。一种面板专为PIDE 功能块而提供。 这个面板可以很容易地使用PIDE 和HMI控制软件包(例如RSView)。
《Process Control and Drives Instruction Manual(过程控制和驱动指令手册)》(出版号:1756-RM006A-EN-P)的第C-17到C-19页对这个面板进行了说明。
运行模式
串级/比率
指令计算CV的变化。指令会调节CV的数值,以使PV保持在SPCascade的数值等级(串级控制)或者保持在SPCascade乘以比率的数值等级。 
自动
指令计算CV的变化。指令会调节CV的数值,以使PV保持在SP的数值等级。
手动
指令不计算CV的变化。CV = CVProgCVOper 取决于操作条件。
覆盖
在这个模式下,指令不计算SP的变化。这个模式通常用于设置回路的安全状态CV数值。无论控制模式如何,CV = CVOverride
手操
指令不计算CV的变化。无论控制模式如何,CV = HandFB。通常当外部手操/自动 工作站控制回路时,使用这个模式。
表 4.  运行模式
当处于程序控制状态时,串级/比率、自动和手动模式可以由用户的程序进行控制,当处于操作员控制状态时,串级/比率、自动和手动模式可以由操作员面板或其它接口进行控制。注意:覆盖手操 模式具有模式请求布尔量输入,它们只能由用户的程序进行控制。这些输入可以运行在程序控制和操作员控制状态。
从功能块的图标上我们可以看到:输入显示在功能块的左手侧,输出显示在功能块的右手侧。布尔量输入用于控制PIDE 功能块的状态,布尔量输出用于状态或反馈指示器。编程人员可以使用功能块图标上的设置箱来选择在程序中需要显示的输入和输出。鉴于此目的,模拟量变量以全部大写字母显示,布尔变量以小写字母显示并且在连接盒的内部有一个圆点。
不同的图例和图7显示了布尔量输入,它们的标签名以“Prog”开头,还有一系列当功能块处于操作员状态时使用的复制输入,它们的标签名以“Oper”开头。这些输入的名字前面显示一个星号。
5.  带自动、手动、手操和覆盖控制功能的PIDE 用于程序控制状态输入和输出
6.  串级和比率控制的额外输入和输出.
图例和表7显示了布尔量输入,它们的标签名以“Prog”开头,还有一系列当功能块处于操作员状态时使用的复制输入,它们的标签名以“Oper”开头。这些输入的名字前面显示一个星号。
表 7显示了如何由不同的输入组合实现PIDE功能块的不同控制模式。状态指示器的状态在右边的列中显示。
ProgHandReq
* ProgManualReg
* ProgAutoReq
ProgOverrideReq
* ProgCasRatReq
AllowCasRat
UseRatio
自动
手动
覆盖
手操
串级
使能手操模式
X
X
使能覆盖模式
X
X
使能手动模式
X
X
使能自动模式
X
X
自动手动
X
X
X
手动自动
X
X
使能串级模式
X
X
X
使能比率模式
X
X
X
X
返回到自动模式
X
X
手动手操
X
X
X
自动手操
X
X
X
覆盖模式到手操
X
X
X
覆盖模式
X
X
X
手操模式
X
X
X
X
7.  控制模式选择和反馈指示器.
状态字1和2
PIDE 控制结构中包含了两个状态字。它们的名称为“状态 1” 和 “状态2”。这些状态字都是DINT类型,并且如果正常运行应该具有零数值。这些状态字的每一位都具有不同的意义,这为在指令设置时的故障处理提供了很大的帮助。在PIDE 控制结构中这些偏差数据以十六进制表示。表 8 和9。
状态1提供了指令状态的信息。当它的数值为零时,代表一切正常。它使用位00到29。每一位具有不同的意义,例如,如果位00等于1,指示已经检测到故障。表8中显示了每个故障位的意义以及对不同数值产生反应的信息。
状态 2 提供了指令定时状态的信息。它使用位2731来指示有效的定时状态。表 9 提供了关于这个状态字每一位意义的信息。
状态字位地址
参数
说明
注释
1.00
InstructFault
检测到指令故障。
1.01
PVFaulted
过程变量 (PV) 无效。
18
1.02
CVFaulted
控制变量 (CV) 无效。
18
1.03
HandFBFaulted
Hand FB 数值无效。
19
1.04
PVSpanInv
PVEUMax <= PVEUMin
1.05
SPProgInv
SPProg < SPLLimitSPProg > SPHLimit
1
1.06
SPOperInv
SPOper < SPLLimitSPOper > SPHLimit
1
1.07
SPCascadeInv
SPCascade < SPLLimitSPCascade > SPHLimit
1
1.08
SPLimitsInv
SPLLimit < PVEUMin, SPHLimit > PVEUMaxSPHLimit < SPLLimit.
2
1.09
RatioProgInv
RatioProg < RatioLLimitRatioProg > RatioHLimit
3
1.10
RatioOperInv
RatioOper < RatioLLimitRatioOper > RatioHLimit
3
1.11
RatioLimitsInv
Low limit < 0High limit < low limit.
1.12
CVProgInv
CVManLimiting 被置位时, CVProg < 0CVProg > 100CVProg < CVLLimitCVProg > CVHLimit.
4
1.13
CVOperInv
CVManLimiting被置位时, CVOper < 0CVOper > 100 CVOper < CVLLimitCVOper > CVHLimit.
4
1.14
CVOverrideInv
CVOverride < 0CVOverride > 100.
4
1.15
CVPreviousInv
当处于自动或串级/比率模式时,CVPrevious < 0CVPrevious > 100 > CVHLimit.
5
1.16
CVEUSpanInv
无效的CVEU 范围
6
1.17
CVLimitsInv
CVLLimit < 0, CVHLimit > 100CVHLimit < CVLLimit.
7
1.18
CVROCLimitInv
CVROCLimit < 0. 
8
1.19
FFInv
FF < -100FF > 100. 
9
1.20
FFPreviousInv
FFPrevious < -100FFPrevious > 100. 
10
1.21
HandFBInv
HandFB < 0HandFB > 100. 
11
1.22
PgainInv
Pgain < 0. 
12
1.23
IGainInv
Igain < 0. 
13
1.24
DGainInv
Dgain < 0. 
14
1.25
ZCDeadbandInv
ZCDeadband < 0 
15
1.26
PVDeadbandInv
PVDeadband < 0
1.27
PVROCLimitsInv
PVROCPostLimit < 0, PVROCNegLimit < 0 PVROCPeriod < 0.
1.28
DevLLimitsInv
Low low limit < 0, Low limit < 0, High limit < 0High high limit < 0.
16
1.29
DevDeadbandInv
偏差死区 < 0.
17
8.  状态 1 – 指令故障
很多故障是由PIDE所使用的不同变量的极限值设置而引起的。确保何时使用极限值以及如何正确地设置它们是非常重要的。
注释:
1. 指令为SP使用极限值。
2. 指令使用SPLLimit 限制数值。
3. 指令为比率使用极限值。
4. 指令为CV使用极限值。
5. 指令为CVn-1使用极限值。
6. 指令使用CVEUMax = CVEUMin时的数值。
7. 如果 CVHLimit < CVLLimit,那么指令会使用CVLLimit限制CV的数值。
8. 指令会禁止 ROC 极限。
9. 指令为FF使用限制值。
10. 指令为FFn-1使用限制值。
11. 指令为CV使用极限值。
12. 指令使用Pgain = 0时的数值。
13. 指令使用 Igain = 0时的数值。
14. 指令使用 Dgain = 0时的数值。
15. 指令会禁止零交叉死区。
16. 指令为无效的极限值使用0值。
17. 指令使用DevDeadband = 0时的数值。
18. 故障位由模拟量输入或输出模块的故障指示器进行置位。
19. 故障位由模拟量输入模块(它从外部自动-手动工作站读取手操 信号)的故障指示器进行置位。
状态字位地址
参数
说明
27
TimingModeInv
无效的TimingMode数值
28
RTSMissed
只能用于实时采样模式。当 ABS[
DeltaT – RTSTime}> 1 (.oo1)时置位.
29
RTSTimeInv
无效的 RTSTime数值.
30
RTSTimeStampInv
无效的 RTSTimeStamp 数值
31
DeltaTInv
无效的 DeltaT数值
表 9.  状态2 – 定时状态错误
指示器
PIDE功能块有很多布尔量输出,它们可以用于状态或报警指示器。通过在功能块中点选或清除相应的复选框,就可以为特定的指示器选择或取消选择某些输出。有些指示器已经在这篇陈述中进行了回顾。如果某些输出没有选择,它们将不在功能块的管脚中显示。
这些指示器以及它们的触发值 在表10中进行说明。
描述
说明
CVInitializing
初始化模式指示器。在指令第一次扫描的过程中,当CVInitReq 被置位时,CVInitializing 被置位,并且执行CVHealth的清除转换(由坏变好)。在指令被初始化完成后并且CVInitReq被清除,CVInitializing才会被清除。
CVHAlarm
CV 高报警指示器。当CV的计算值 > 100CVHLimit时置位。
CVLAlarm
CV 低报警指示器。当CV的计算值< 0CVLLimit时置位。
CVROCAlarm
CV变化速率 报警指示器。当CV的变化速率超过CVROCLimit时置位。
SPHAlarm
设定点高报警指示器。当SP > SPHLimit时置位。
SPLAlarm
设定点低报警指示器。当SP < SPHLimit时置位。
WindupHOut
终止高指示器。当SP highCV highCV low极限(取决于控制动作)达到时置位。这个信号通常由主回路控制器的WindupHIn输入所使用,以防止它的输出终止。
WindupLOut
终止低指示器。当SP high一块操、CV highCV low极限(取决于控制动作)达到时置位。这个信号通常由主回路控制器的WindupLIn输入所使用,以防止它的输出终止。
RatioHAlarm
比率高报警指示器。当比率 > RatioHLimit时置位。
RatioLAlarm
比率低报警指示器。当比率< RatioLLimit时置位。
ZCDeadbandOn
零交叉死区指示器。当置位时,CV的数值将不再变化。如果 ZCOff被置位,那么当偏差处于ZCDeadband 范围之内时,ZCDeadbandOn会置位。如果ZCOff 被清除,那么当偏差穿越零并且仍然处于ZCDeadband 范围之内时,ZCDeadbandOn会置位。当偏差超过死区范围或者当ZCDeadband = 0时,ZCDeadbandOn会被清除。
PVHAlarm
PV 高报警指示器。当PV => PVHLimit时置位。当 PV < (PVHLimit – PVDeadband)时清除。
PVLAlarm
PV 低报警指示器。当PV =< PVLLimit时置位。当PV > (PVLLimit + PVDeadband)时清除。
PVROCPosAlarm
PV正变化速率报警指示器。当PV变化速率的计算值=> PVROCPosLimit时置位。
PVROCNegAlarm
PV 负变化速率报警指示器。当PV变化速率的计算值=< (PVROCNegLimit x –1)时置位。
DevHHAlarm
退出高-高报警指示器。当PV => (SP+DevHHLimit)时置位。当PV > (SP+DevHHLimit – DevDeadband时清除。
DevHAlarm
退出高报警指示器。当PV => (SP+DevHLimit)时置位。当PV > (SP+DevHLimit – DevDeadband时清除。
DevLAlarm
退出低报警指示器。当PV =< (SP-DevLLimit)时置位。当PV > (SP-DevHLimit + DevDeadband)时清除。
DevLLAlarm
退出低-低报警指示器。当PV =< (SP-DevLLLimit)时置位。当PV > (SP-DevHLimit + DevDeadband)时清除。
10 – 报警指示器