自动调节数值时,积分项会积累持续偏差。若控制输出已经到上限,目标又暂时无法达到,继续积累积分可能让目标降低后输出仍长时间降不下来。
本例每步先用当前误差计算候选积分,再把比例项与候选积分相加,输出限制在零与上限之间。普通版本总接受候选积分;防累积版本在候选输出超上限且误差为正,或低于零且误差为负时拒绝本次积分,改用旧积分重新求输出。
输出上限7,初值3,比例系数1/2、积分系数1/2,初始积分零;前八步高目标,随后降低。
步 | 目标 | 普通积分、输出、下一值 | 防累积积分、输出、下一值 | 是否拒绝积分 0 | 11 | 4.000,7.000,5.000 | 0.000,4.000,3.500 | True 1 | 11 | 7.000,7.000,6.000 | 0.000,3.750,3.625 | True 2 | 11 | 9.500,7.000,6.500 | 0.000,3.688,3.656 | True 3 | 11 | 11.750,7.000,6.750 | 0.000,3.672,3.664 | True 4 | 11 | 13.875,7.000,6.875 | 0.000,3.668,3.666 | True 5 | 11 | 15.938,7.000,6.938 | 0.000,3.667,3.667 | True 6 | 11 | 17.969,7.000,6.969 | 0.000,3.667,3.667 | True 7 | 11 | 19.984,7.000,6.984 | 0.000,3.667,3.667 | True 8 | 1 | 16.992,7.000,6.992 | 0.000,0.000,1.833 | True 9 | 1 | 13.996,7.000,6.996 | 0.000,0.000,0.917 | True 10 | 1 | 10.998,7.000,6.998 | 0.042,0.083,0.500 | False 11 | 1 | 7.999,5.000,5.999 | 0.292,0.542,0.521 | False 12 | 1 | 5.500,3.000,4.500 | 0.531,0.771,0.646 | False 13 | 1 | 3.750,2.000,3.250 | 0.708,0.885,0.766 | False 14 | 1 | 2.625,1.500,2.375 | 0.826,0.943,0.854 | False 15 | 1 | 1.937,1.250,1.812 | 0.898,0.971,0.913 | False 16 | 1 | 1.531,1.125,1.469 | 0.942,0.986,0.949 | False 17 | 1 | 1.297,1.062,1.266 | 0.967,0.993,0.971 | False
记录中的编号只用来区分本例对象,不应与大小排名或另一组记录的身份混淆。先核对单位和边界,再跟随中间值检查结果。空结果、零值与尚未确定是不同状态;分数保留精确含义,显示小数只为方便阅读。
两种版本使用同一目标序列和初值。虚拟被调节量下一步取当前值与实际输出的平均,因此输出受限时高目标可能暂时达不到。记录积分、实际输出和下一步数值,才能解释降低目标后的差异。
观察连续饱和期间积分是否仍增加,再在目标切换后比较恢复过程。防累积只阻止会进一步推向饱和方向的本次更新,并不是把积分永久锁住;当误差方向有助于回到范围时,仍应允许积分变化。
这是明确给定的离散教学模型,不用于现实设备控制,也不承诺任何参数都稳定。没有微分项、测量噪声或延迟;时间步长固定,若改变更新频率,比例与积分参数的含义也需要重新检查。
练习时可以一次只改变一个条件,比较差异从哪个步骤开始。若自己的结果不同,先核对是否采用同样的规则,再定位第一个不一致的中间状态,不要只修改最终答案。输入与运算过程需要一起保存,才能判断结论究竟适用于哪一个具体场景。