苏州相城区一家注塑厂的老问题:料筒设定 220℃,开机升温冲到 235℃ 才慢慢回落,超调 15℃ 持续近十分钟。对 PC 料来说,这个温度区间已经接近降解边缘,开机头几模产品发黄只能报废。温控器本身没坏,问题出在默认 PID 参数与这台机的加热特性不匹配,且没有抗积分饱和处理。这篇记录我们整改的完整过程:阶跃响应整定、积分分离、输出限幅,附可直接套用的 C# 增量式 PID 代码。

一、先搞清楚:超调的锅该谁背

升温超调大,现场最常见的三个根因,排查顺序不能乱:

根因1:积分饱和

升温初期偏差大,积分项疯狂累积;温度到位时积分已经"攒过头",只能靠超调把积分耗回去。开机过冲的典型元凶。

根因2:Kp 偏大

比例增益过大,接近设定值时输出收不住。特征:升温快、过冲后回落也快,来回振荡两三次才稳。

根因3:传感器滞后

热电偶没贴紧料筒壁或装得太深,测到的温度滞后于真实料温,控制器"看到"的永远慢半拍。硬件问题,改参数没用。

这台机的情况:热电偶安装位置检查过没问题,温控器用的是出厂默认参数(通用值,没针对加热圈功率和料筒热容做过整定)。所以整改方向明确:离线整定 + 软件侧抗饱和

二、阶跃响应法:一次实验拿到三个特征参数

整定方法我们选阶跃响应法(也叫反应曲线法),比试凑法快,比继电反馈法信息量大。步骤:

  1. 料筒处于室温稳定状态,手动给加热圈一个固定输出(比如 40%),开环加热;
  2. 上位机以 1 秒周期记录温度,画出升温曲线;
  3. 在曲线拐点作切线,读出三个特征参数:纯滞后时间 τ、时间常数 T、稳态温升对应的增益 K
  4. 按经验公式算出 Kp、Ti、Td 初值,再上机微调。

这台 250T 注塑机料筒中段实测:τ ≈ 45 秒,T ≈ 210 秒,按公式算出的初值 Kp=6.2、Ti=135s、Td=34s。整定过程一定要留记录,我们用的表格格式:

轮次KpTi (s)Td (s)超调量稳定时间备注
出厂默认8.024060+15℃>10min开机过冲严重
阶跃初值6.213534+6℃7min有改善,仍超调
加积分分离6.213534+2.5℃6min开机过冲基本消除
终版微调5.815038+1.5℃5.5min验收通过,±1.5℃ 稳态

▲ 整定记录表必须存档:换料换色、季节变化导致环境温差大时,按这张表回调参数比重新整定快得多。

三、积分分离 + 抗积分饱和:开机过冲的软件解法

光整定参数还不够。升温初期偏差动辄上百摄氏度,积分项持续累加,等温度接近设定值时积分已经饱和——这就是"积分饱和",超调是它耗散能量的必然结果。两个标准对策:

积分分离:偏差大于阈值时(比如 |e| > 20℃)暂停积分累积,只用比例+微分把温度拉到大致区间;偏差进入阈值后再启用积分消除静差。

抗积分饱和(Back-Calculation):输出被限幅截断时,把截断量反馈回来修正积分项,不让积分继续往死里攒。

我们用的是增量式 PID,输出变化量而非绝对量,无扰切换和限幅处理都更干净:

public class PidController
{
    private double _kp, _ki, _kd;      // 由整定结果填入
    private double _e1, _e2;           // 前两次偏差
    private double _output;            // 当前输出(0~100%)
    private double _integralGate = 20; // 积分分离阈值(℃)

    public double Calc(double setpoint, double pv)
    {
        double e = setpoint - pv;
        // 增量式:Δu = Kp*(e-e1) + Ki*e + Kd*(e-2e1+e2)
        double delta = _kp * (e - _e1) + _kd * (e - 2 * _e1 + _e2);
        // 积分分离:偏差大时不累加积分项,防开机过冲
        if (Math.Abs(e) < _integralGate)
            delta += _ki * e;
        _output += delta;
        // 输出限幅:0~100%,同时做抗饱和——被截断时输出不再累加
        _output = Math.Clamp(_output, 0, 100);
        _e2 = _e1; _e1 = e;
        return _output;
    }
}
周期必须固定。增量式 PID 的 Ki、Kd 隐含了采样周期,控制周期抖动会让增益悄悄变化。我们放在 500ms 的独立控制线程里跑,采集显示线程不碰它;周期从 1s 改 500ms 时,Ki 要按比例重算,这点最容易忘。

四、输出侧两道保险:限幅与变化率限制

温控系统除了"控得准",还要"控得安全"。上位机输出到 PLC 之前加两道限制:

  • 输出限幅:加热圈功率上限按设备铭牌设,这台机设为 85%(留 15% 余量给固态继电器寿命);
  • 变化率限制:相邻两个周期输出变化不超过 15%,防止传感器瞬间跳变导致输出猛冲——温度信号先做 3 点中值滤波,再进 PID;
  • 超温硬保护:料筒温度超过设定值 +10℃ 持续 5 秒,上位机直接强制输出清零并报警。这条逻辑写在软件里,但现场同时保留了机械式超温保护器,软件保护永远不能替代硬件保护。
传感器断线检测必须做。热电偶断线时温度读数会瞬间掉到室温或冲到量程上限,PID 会误判为"温度太低"而全功率加热——这是温控系统最危险的故障模式。我们的处理:相邻周期温度变化超过物理可能值(这台机判 8℃/秒)即判定传感器异常,输出清零、报警、切手动。

五、整改结果与验收口径

终版参数运行一周后的验收数据:开机升温超调 +1.5℃,5 分半进入 ±1.5℃ 稳态带;连续生产 8 小时,四段料筒温度波动 ±1℃ 以内;开机头两模产品不再发黄,工艺员把开机废模数从"固定报废 3 模"改成了 1 模。

最后总结成三句话:超调先查积分饱和,整定先做阶跃实验,安全靠限幅加硬件兜底。温控是慢系统,参数整定急不得,但一次整定到位省的是客户每天开机时的真金白银。