什么地方并不紧要,只要不是太高或太低就行。但是,从缓冲容器流向下游装置 的流量要尽可能稳定,否则下游装置会受到不必要的扰动。 死区PD对这样的控制问题是最合适的。但是天下没有免费的午餐。死区 PD的前提是液位在一般情况下会“自动”稳定在死区内,如果死区设置不当,或 系统经常受到大幅度的扰动,死区内的“无控”状态会导致液位不受限制地向死区 边界“挺进”,最后进入“受控区时,控制作用过火,液位向相反方向不受限制地 挺进”,最后的结果是液位永远在死区的两端振荡,而永远不会稳定下来,业内 叫hunting(打猎?打什么?打鹿?)。双增益PID也有同样的问题,只是比死 区PD好一些,毕竟只有“强控制”和弱控制”的差别,而没有“无控区”。在实用 中,双增益的内外增益差别小于2:1没有多大意义,大于5:1就要注意上述的 持续振荡或hunting的问题。 双增益或死区PD的问题在于增益的变化是不连续的,控制作用在死区边 界上有一个突然的变化,容易诱发系统的不利响应,平方误差PD就没有这个 问题。误差一经平方,控制量对误差的曲线就成了抛物线,同样达到“小偏差小 增益、大偏差大增益”的效果,还没有和突然的不连续的增益变化。 但是误差平方有两个问题:一是误差接近于零的时候,增益也接近于零,回 到上面死区PD的问题;二是很难控制抛物线的具体形状,或者说,很难制定 增益在什么地方拐弯。对于第一个问题,可以在误差平方PD上加一个基本的 线性PD,是零误差是增益不为零;对于后一个问题,就要用另外的模块计算一 个连续变化的增益了。具体细节比较琐碎,将偏差送入一个分段线性化(也就是 折线啦)的计算单元,然后将计算结果作为比例增益输出到PD控制器,折线 的水平段就对应予不同的增益,而连接不同的水平段的斜线就对应于增益的连续 变化。通过设置水平段和斜线段的折点,可以任意调整变增益的曲线。要是“野 心”大一点,再加几个计算单元,可以做出不对称的增益,也就是升温时增益低 一点,降温时增益高一点,以处理加热过程中常见的升温快、降温慢的问题。 双增益或误差平方都是在比例增益上作文章,同样的勾当也可以用在积分和 微分上。更极端的一种PD规律叫积分分离PID,其思路是这样的:比例控制的
什么地方并不紧要,只要不是太高或太低就行。但是,从缓冲容器流向下游装置 的流量要尽可能稳定,否则下游装置会受到不必要的扰动。 死区 PID 对这样的控制问题是最合适的。但是天下没有免费的午餐。死区 PID 的前提是液位在一般情况下会“自动”稳定在死区内,如果死区设置不当,或 系统经常受到大幅度的扰动,死区内的“无控”状态会导致液位不受限制地向死区 边界“挺进”,最后进入“受控”区时,控制作用过火,液位向相反方向不受限制地 “挺进”,最后的结果是液位永远在死区的两端振荡,而永远不会稳定下来,业内 叫 hunting(打猎?打什么?打鹿?)。双增益 PID 也有同样的问题,只是比死 区 PID 好一些,毕竟只有“强控制”和“弱控制”的差别,而没有“无控区”。在实用 中,双增益的内外增益差别小于 2:1 没有多大意义,大于 5:1 就要注意上述的 持续振荡或 hunting 的问题。 双增益或死区 PID 的问题在于增益的变化是不连续的,控制作用在死区边 界上有一个突然的变化,容易诱发系统的不利响应,平方误差 PID 就没有这个 问题。误差一经平方,控制量对误差的曲线就成了抛物线,同样达到“小偏差小 增益、大偏差大增益”的效果,还没有和突然的不连续的增益变化。 但是误差平方有两个问题:一是误差接近于零的时候,增益也接近于零,回 到上面死区 PID 的问题;二是很难控制抛物线的具体形状,或者说,很难制定 增益在什么地方拐弯。对于第一个问题,可以在误差平方 PID 上加一个基本的 线性 PID,是零误差是增益不为零;对于后一个问题,就要用另外的模块计算一 个连续变化的增益了。具体细节比较琐碎,将偏差送入一个分段线性化(也就是 折线啦)的计算单元,然后将计算结果作为比例增益输出到 PID 控制器,折线 的水平段就对应予不同的增益,而连接不同的水平段的斜线就对应于增益的连续 变化。通过设置水平段和斜线段的折点,可以任意调整变增益的曲线。要是“野 心”大一点,再加几个计算单元,可以做出不对称的增益,也就是升温时增益低 一点,降温时增益高一点,以处理加热过程中常见的升温快、降温慢的问题。 双增益或误差平方都是在比例增益上作文章,同样的勾当也可以用在积分和 微分上。更极端的一种 PID 规律叫积分分离 PID,其思路是这样的:比例控制的
稳定性好,响应快,所以偏差大的时候,把PD中的积分关闭掉:偏差小的时 候,精细调整、消除余差是主要问题,所以减弱甚至关闭比例作用,而积分作用 切入控制。概念是好的,但具体实施的时候,有很多无扰动切换的问题。 这些变态的PD在理论上很难分析系统的稳定性,但在实用中解决了很多困难 的问题。大言不惭一句,这些PD本人在实际中都用过。 (八)复杂结构PID 打仗时,如果敌人太顽固,要么换更大的炮,把敌人轰倒:要么采用更巧妙 的战术,把敌人晕倒。控制也是一样,单回路PD难以解决的问题,常常可以 通过更巧妙的回路结构来解决。 单一的PD回路当然可以实现扰动抑制,但要是主要扰动在回路中,而且 是明确的,加一个内回路作帮手是一个很不错的主意。还记得洗热水澡的例子 吗?要是热水压力不稳定,老是要为这个而调整热水龙头,那很麻烦。要是有一 个人专门负责根据热水压力调节热水流量,把热水压力稳定下来,而且稳定在标 定值,那洗澡的时候,水温就容易控制多了,只要告诉那个人现在需要多少热水 流量,而不必烦心热水压力对热水流量的影响。这个负责热水流量的控制回路就 是内回路,也叫副回路,而洗澡的温度就是外回路,也叫主回路,当然是主回路 指挥副回路,就像自动化指挥机械化、学自控的人指挥学机电的人打住打住,再 扯远了要挨鹿踹了,或者马瑞、牛踹、驴踹。这种主回路套副回路的结构叫串级 控制(cascade control),曾经是单回路PID后工业上第一种“先进过程控制, 现在串级己经用得很多了,也不再有人叫它“先进过程控制”了。 串级控制最主要的功用是抑制回路内的扰动,增强总体控制性能。不过串级 也不能乱用。如果主回路和副回路的相应速度差不多,或者主回路的相应速度甚 至慢于副回路(通过变态的调试是可以做到的),这样的串级要出问题。理论上 可以用共振频率什么的分析,但是不用费那个事,用膝盖想想就知道,一个急性 子的头儿把一个温吞水的下属指挥得团团转,结果只能是大家都精疲力竭,事情 还办砸了。相反,一个镇定自若的头儿指挥一个手脚麻利的下属,那事情肯定办 得好。 如果主要扰动在回路以外,但是可以预知,那就要用另一个办法,就是马鹿
稳定性好,响应快,所以偏差大的时候,把 PID 中的积分关闭掉;偏差小的时 候,精细调整、消除余差是主要问题,所以减弱甚至关闭比例作用,而积分作用 切入控制。概念是好的,但具体实施的时候,有很多无扰动切换的问题。 这些变态的 PID 在理论上很难分析系统的稳定性,但在实用中解决了很多困难 的问题。大言不惭一句,这些 PID 本人在实际中都用过。 (八)复杂结构 PID 打仗时,如果敌人太顽固,要么换更大的炮,把敌人轰倒;要么采用更巧妙 的战术,把敌人晕倒。控制也是一样,单回路 PID 难以解决的问题,常常可以 通过更巧妙的回路结构来解决。 单一的 PID 回路当然可以实现扰动抑制,但要是主要扰动在回路中,而且 是明确的,加一个内回路作帮手是一个很不错的主意。还记得洗热水澡的例子 吗?要是热水压力不稳定,老是要为这个而调整热水龙头,那很麻烦。要是有一 个人专门负责根据热水压力调节热水流量,把热水压力稳定下来,而且稳定在标 定值,那洗澡的时候,水温就容易控制多了,只要告诉那个人现在需要多少热水 流量,而不必烦心热水压力对热水流量的影响。这个负责热水流量的控制回路就 是内回路,也叫副回路,而洗澡的温度就是外回路,也叫主回路,当然是主回路 指挥副回路,就像自动化指挥机械化、学自控的人指挥学机电的人打住打住,再 扯远了要挨鹿踹了,或者马踹、牛踹、驴踹。这种主回路套副回路的结构叫串级 控制(cascade control),曾经是单回路 PID 后工业上第一种“先进过程控制”, 现在串级已经用得很多了,也不再有人叫它“先进过程控制”了。 串级控制最主要的功用是抑制回路内的扰动,增强总体控制性能。不过串级 也不能乱用。如果主回路和副回路的相应速度差不多,或者主回路的相应速度甚 至慢于副回路(通过变态的调试是可以做到的),这样的串级要出问题。理论上 可以用共振频率什么的分析,但是不用费那个事,用膝盖想想就知道,一个急性 子的头儿把一个温吞水的下属指挥得团团转,结果只能是大家都精疲力竭,事情 还办砸了。相反,一个镇定自若的头儿指挥一个手脚麻利的下属,那事情肯定办 得好。 如果主要扰动在回路以外,但是可以预知,那就要用另一个办法,就是马鹿
前面说到的前馈了。还是用洗热水澡的例子。如果冷水管和同一个水房的抽水马 桶功用,你在洗澡,别人一抽水,那你就变煮熟的龙虾了(本想说猴子PP的, 但是那个不雅,我们要五讲四美不是?)。这个时候,要使那个人在抽水的同时 告诉你一声,你算好时间,算好量,猛减热水,那温度还是可以大体不变的。 这就是所谓前馈控制(feed-forward control)。前馈控制有两个要紧的东西:一 是定量的扰动对被控变量的影响,也就是所谓前馈增益:二是扰动的动态,别人 抽水到洗澡龙头的水温变热,这里面有一个过程,不是立时三刻的。 如果可以精确知道这两样东西,那前馈补偿可以把可测扰动完全补偿掉。但 实际上没有精确知道的事情,要是指望前馈来完全补偿,弄巧成拙是肯定的。所 以前馈通常和反馈一起用,也就是在PD回路上再加一个前馈。一般也只用静 态前馈,也就是只补偿扰动对被控变量的静态影响,而忽略扰动的动态因素,主 要是为了静态前馈已经把前馈80%的好处发掘出来了,动态前馈既复杂又不可 靠,在PD回路里很少有人用。理论上的前馈都是在PD的控制作用上再加一 个前馈作用,实际上也可以乘一个控制作用。乘法前馈的作用太猛,我从来没有 用过,一般都是用加法。 在实施中,前馈是和扰动的变化(也就是增量)成比例的,所以扰动变量不 变了,前馈作用就消失,否则,整定前馈控制增益会对PD主回路造成扰动。 前馈增益可以根据粗略计算得到,比如说,抽水的量会造成温度下降多少、需要 调整多少热水流量才能维持温度,这不难从热量平衡算出来。不想费这个事的话, 也可以从历史数据中推算。一般算出来一个前馈增益后,打上7折甚至5折再用, 保险一点,不要矫枉过正。 前馈作用一般是用作辅助控制作用的,但是在特殊情况下,前馈也可以作 为预加载”(pre-loading)作为基准控制作用。比如说,在一个高压系统的启动 过程中,压力可以从静止状态的常压很快地升到很高的压力。高压系统不容许阀 门大幅度运动,所以控制增益都比较低,但是这样一来,启动升压过程中,压力 控制的反应就十分迟缓,容易造成压力过高。这时用压缩机的转速或高压进料的 流量作前馈,将压力控制阀预先”放到大概的位置,然后再用反馈慢慢调节,就 可以解决这个问题
前面说到的前馈了。还是用洗热水澡的例子。如果冷水管和同一个水房的抽水马 桶功用,你在洗澡,别人一抽水,那你就变煮熟的龙虾了(本想说猴子 PP 的, 但是那个不雅,我们要五讲四美不是?)。这个时候,要使那个人在抽水的同时 告诉你一声 ,你算好时间,算好量,猛减热水,那温度还是可以大体不变的。 这就是所谓前馈控制(feed-forward control)。前馈控制有两个要紧的东西:一 是定量的扰动对被控变量的影响,也就是所谓前馈增益;二是扰动的动态,别人 抽水到洗澡龙头的水温变热,这里面有一个过程,不是立时三刻的。 如果可以精确知道这两样东西,那前馈补偿可以把可测扰动完全补偿掉。但 实际上没有精确知道的事情,要是指望前馈来完全补偿,弄巧成拙是肯定的。所 以前馈通常和反馈一起用,也就是在 PID 回路上再加一个前馈。一般也只用静 态前馈,也就是只补偿扰动对被控变量的静态影响,而忽略扰动的动态因素,主 要是为了静态前馈已经把前馈 80%的好处发掘出来了,动态前馈既复杂又不可 靠,在 PID 回路里很少有人用。理论上的前馈都是在 PID 的控制作用上再加一 个前馈作用,实际上也可以乘一个控制作用。乘法前馈的作用太猛,我从来没有 用过,一般都是用加法。 在实施中,前馈是和扰动的变化(也就是增量)成比例的,所以扰动变量不 变了,前馈作用就消失,否则,整定前馈控制增益会对 PID 主回路造成扰动。 前馈增益可以根据粗略计算得到,比如说,抽水的量会造成温度下降多少、需要 调整多少热水流量才能维持温度,这不难从热量平衡算出来。不想费这个事的话, 也可以从历史数据中推算。一般算出来一个前馈增益后,打上 7 折甚至 5 折再用, 保险一点,不要矫枉过正。 前馈作用一般是用作辅助控制作用的,但是在特殊情况下,前馈也可以作 为“预加载”(pre-loading)作为基准控制作用。比如说,在一个高压系统的启动 过程中,压力可以从静止状态的常压很快地升到很高的压力。高压系统不容许阀 门大幅度运动,所以控制增益都比较低,但是这样一来,启动升压过程中,压力 控制的反应就十分迟缓,容易造成压力过高。这时用压缩机的转速或高压进料的 流量作前馈,将压力控制阀“预先”放到大概的位置,然后再用反馈慢慢调节,就 可以解决这个问题