伺服热压机如何实现 ±1% 压力控制?分段 PID、积分分离与死区补偿的工程实践
在伺服热压机的压力控制中,把压力“压到目标值”通常并不是最困难的事情。
真正具有挑战性的是同时实现:
- 快速升压
- 较低的压力超调
- 长时间稳定保压
- 不同材料及温度条件下仍具有较好的重复性
特别是在燃料电池电堆、储能电堆、复合材料热压、精密压装等应用中,材料刚度、温度以及液压系统状态都会发生变化。
如果整个压力控制过程只使用一组固定 PID 参数,往往很难同时兼顾升压速度和保压稳定性。
结合伺服热压成型设备的实际开发经验,本文介绍一种比较实用的压力控制方案:
分段变增益 PID + 积分分离 + 死区补偿 + 输出斜率限制
并进一步讨论伺服热压机实现 ±1% 压力控制 时需要注意的一些工程问题。
一、为什么伺服热压机的压力不好控制?
热压工艺从流程上看似乎只是:
加压 → 保压 → 卸压
但从控制系统角度来看,它实际上是一个具有明显非线性和时变特性的控制对象。
1. 压力控制窗口比较窄
在燃料电池膜电极、复合材料以及精密压装等工艺中,往往不仅要求设备能够达到设定压力,还要求每一次加载过程具有较高的重复性。
压力过高,可能导致材料过度压缩甚至结构损伤。
压力不足,又可能导致界面结合不充分或者产品厚度一致性下降。
因此,部分设备会提出接近 ±1% 的压力控制指标。
不过这里首先需要明确一个很容易被忽略的问题:
“±1%”究竟是按照什么基准计算?
常见定义包括:
- ±1% F.S.(满量程)
- ±1% Reading(读数)
- ±1% Setpoint(设定值)
这三种定义并不相同。
尤其是在低压力工作区间,不同定义对应的实际控制难度可能存在明显差异。
因此,在设备技术协议或者验收标准中,最好提前明确压力精度的计算基准。
2. 负载刚度存在明显非线性
热压机从快速接近工件,到接触材料,再到最终压实,负载特性会发生明显变化。
接触工件之前:
液压缸接近空载运动,此时主要关注运动速度。
刚接触工件:
压力开始建立,系统从位置运动逐渐进入压力控制状态。
进入压实区域以后:
材料刚度快速增加,很小的油缸位移就可能引起明显的压力变化。
因此,一组固定 PID 参数很难同时满足:
快速升压 + 低超调 + 稳定保压
这也是为什么在实际设备中,采用分段控制通常比单组 PID 更容易获得理想效果。
3. 温度与压力之间存在耦合
热压设备还有一个非常重要的变量:温度。
随着模具和工件温度升高,部分高分子材料、复合材料以及密封结构可能发生:
- 热软化
- 蠕变
- 应力松弛
- 刚度变化
因此,即使液压缸的位置基本没有变化,实际压力仍可能缓慢下降。
需要特别注意:
保压过程中出现掉压,并不一定代表液压系统发生泄漏,也可能来自材料自身的热软化或者应力松弛。
这也是进行压力问题分析时,需要同时记录压力、温度和位移数据的原因。
二、典型压力闭环控制架构
伺服液压热压机的压力闭环可以简化为:
上位机 / HMI
│
▼
PLC / 运动控制器
压力环 / 位置环
│
▼
伺服驱动器
│
▼
伺服电机 + 液压泵
│
▼
液压缸 / 压装工位
│
▼
高精度压力传感器
│
└────────────→ 控制器反馈
基本控制链路为:
```text
目标压力
↓
压力控制器
↓
伺服泵
↓
液压缸
↓
实际压力
↓
压力传感器
└────────→ 闭环反馈
关键硬件选型可以参考下表:
| 部件 | 建议 | 主要原因 |
|---|---|---|
| 压力传感器 | 精度建议 ≤0.1% F.S. | 传感器误差直接影响闭环控制能力 |
| 传感器量程 | 尽量匹配实际工作压力 | 避免大量程造成低压力区有效分辨率不足 |
| 控制器 | 支持高速周期任务 | 减少采样、计算和控制延迟 |
| 执行机构 | 伺服电机 + 泵或高响应伺服液压系统 | 有利于微量补压和低速稳定控制 |
| 压力滤波 | 根据实际信号频谱整定 | 在噪声和控制延迟之间取得平衡 |
这里有一个比较常见的误区:
压力传感器并不是精度越高就一定越好,量程选择同样重要。
例如,设备长期工作压力只有 5~10 MPa,却选择了 0~100 MPa 的压力传感器。
即使传感器标称精度很好,低压力工作区间的有效分辨能力仍然可能受到影响。
三、核心控制策略:分段变增益 PID
经典 PID 控制器可以表示为:
$$
u(t)=K_p e(t)+K_i\int e(t)dt+K_d\frac{de(t)}{dt}
$$
其中:
- $K_p$:比例增益
- $K_i$:积分增益
- $K_d$:微分增益
- $e(t)$:目标值与实际值之间的误差
但对于热压设备来说,快速接近、接触工件、材料压实以及稳定保压阶段的对象特性并不一致。
因此,与其强行寻找一组“万能 PID 参数”,实际项目中更实用的方法是:
分段 PID
根据当前压力与目标压力之间的比例,将压力控制过程划分为多个区间。
| 控制区段 | 压力范围示例 | 主要目标 | 参数特点 |
|---|---|---|---|
| 快速升压段 | 0~90% | 快速接近目标压力 | 较高 Kp,配合输出限制 |
| 缓冲段 | 90~98% | 降速并抑制超调 | 降低 Kp,弱积分 |
| 保压段 | 98~100% | 消除静差、稳定压力 | 低增益、慢积分、死区补偿 |
需要强调:
90% 和 98% 并不是固定值。
实际设备应该结合以下因素进行调整:
- 油缸有效面积
- 工件刚度
- 液压泵排量
- 目标压力
- 加压速度
- 管路及油腔容积
- 系统响应延迟
例如,高刚度工件可能在目标压力的 85% 左右就需要开始减速,而软质材料可能允许更晚进入缓冲区。
四、一个简化的 PID 实现
下面给出一个 C 风格的简化示例。
typedef struct {
float kp;
float ki;
float kd;
float integral;
float prev_feedback;
float out_max;
float out_min;
} pid_t;
float pid_update(pid_t *pid,
float setpoint,
float feedback,
float dt)
{
float err = setpoint - feedback;
/* 积分分离 */
if (fabsf(err) < 0.1f * fabsf(setpoint)) {
pid->integral += pid->ki * err * dt;
} else {
/* 大误差区域削弱积分 */
pid->integral *= 0.98f;
}
/* 积分限幅 */
if (pid->integral > pid->out_max)
pid->integral = pid->out_max;
if (pid->integral < pid->out_min)
pid->integral = pid->out_min;
/*
* 对反馈量求导,
* 减少设定值突变造成的微分冲击
*/
float deriv =
(feedback - pid->prev_feedback) / dt;
pid->prev_feedback = feedback;
float out =
pid->kp * err +
pid->integral -
pid->kd * deriv;
/* 输出限幅 */
if (out > pid->out_max)
out = pid->out_max;
if (out < pid->out_min)
out = pid->out_min;
return out;
}
然后根据当前压力比例选择不同的 PID 参数:
float pressure_loop(float sp,
float fb,
float dt)
{
if (fabsf(sp) < 0.001f)
return 0.0f;
float ratio = fb / sp;
if (ratio < 0.90f) {
return pid_update(
&pid_fast, sp, fb, dt
);
}
else if (ratio < 0.98f) {
return pid_update(
&pid_buffer, sp, fb, dt
);
}
else {
return pid_update(
&pid_hold, sp, fb, dt
);
}
}
实际设备中,建议在 90% 和 98% 两个切换点附近加入一定的 切换滞环(Hysteresis)。
否则,当实际压力刚好位于临界值附近时,控制器可能在两组 PID 参数之间频繁切换,反而引入新的压力波动。
五、三个可能比 PID 参数本身更重要的细节
1. 积分分离:解决升压阶段超调
假设目标压力为 10 MPa,而当前压力只有 2 MPa。
此时:
压力误差 = 10 - 2 = 8 MPa
如果积分器从升压开始就持续累积,当系统逐渐接近 10 MPa 时,虽然瞬时误差已经很小,但之前累积的大量积分仍然会推动系统继续加压。
最终就容易产生明显的压力超调。
因此,更合理的控制方式是:
大误差时冻结或削弱积分,进入目标压力附近以后再逐渐启用积分。
这样可以有效降低积分饱和带来的超调。
2. 死区补偿:改善保压阶段锯齿波
液压系统在保压过程中通常存在:
- 内泄漏
- 密封摩擦
- 静摩擦
- 泵低速死区
- 机械传动死区
当 PID 输出非常小时,控制器虽然已经产生控制量,但执行机构可能并没有发生实际动作。
于是压力曲线容易形成:
压力缓慢下降
↓
误差逐渐积累
↓
控制量超过死区
↓
突然补压
↓
压力再次缓慢下降
最终形成周期性的锯齿波。
可以考虑在一定误差范围内增加微量补偿:
if (fabsf(err) > ERROR_DEADBAND) {
out += (err > 0.0f ? 1.0f : -1.0f)
* DEADZONE_COMP;
}
这里的 DEADZONE_COMP 不能直接照搬其他设备参数,而应该通过实际测试确定。
补偿过小,无法克服系统死区。
补偿过大,又容易造成保压阶段来回振荡。
3. 输出斜率限制:降低压力冲击
即使 PID 参数本身没有问题,如果控制输出瞬间变化过大,仍然可能产生压力尖峰。
因此,升压过程中建议增加:
Rate Limit(变化率限制)
例如可以限制:
- 最大泵转速变化率
- 最大伺服输出变化率
- 最大压力上升速度
在热压工艺中,直接规定允许的最大压力变化率,例如:
MPa/s
很多时候比单纯依靠 PID 控制更直观。
因为工艺真正关心的不只是“最终压力是多少”,还包括:
压力以多快的速度施加到工件上。
六、PID 参数应该怎么整定?
实际调试时,一个比较实用的顺序是:
缓冲段 → 快速升压段 → 保压段
而不是首先把快速升压段调得非常快。
原因是最终超调大小,很大程度上取决于目标压力附近的动态特性。
第一步:调整缓冲段
首先可以设置:
Ki = 0
Kd = 0
然后逐步增加 Kp,重点观察 90%~98% 区域的压力响应。
目标是:
- 不出现明显振荡
- 压力上升速度合适
- 超调量能够接受
之后再逐渐增加少量 Ki,用于消除稳态误差。
第二步:调整快速升压段
快速升压段的主要任务并不是实现最终压力精度,而是:
尽快并且安全地接近目标压力。
因此可以适当提高 Kp,同时增加:
- 最大输出限制
- 泵速限制
- 压力上升速率限制
这个阶段没有必要过分追求瞬时压力精度。
第三步:调整保压段
保压阶段重点关注的是:
长时间压力波动和慢漂移。
如果出现:
缓慢掉压 → 突然补压 → 再次掉压
不要立即通过大幅增加 Ki 来解决。
应该先排查:
- 执行机构是否存在低速死区
- 液压系统是否存在内泄漏
- 材料是否发生热软化
- 材料是否发生蠕变或应力松弛
- 压力传感器是否发生温漂
- 反馈滤波是否过重
确认系统状态以后,再微调:
Kp
Ki
Deadzone Compensation
通常效果会更加稳定。
七、±1% 压力控制应该怎么验证?
调出一条看起来很漂亮的压力曲线,并不能证明设备已经实现稳定的 ±1% 控制。
至少应该验证以下几个指标。
1. 达压超调量
可以定义为:
$$
Overshoot=
\frac{P_{max}-P_{set}}
{P_{set}}
\times 100%
$$
其中:
- $P_{max}$:升压过程中最大压力
- $P_{set}$:目标设定压力
该指标用于衡量升压过程中最大压力超过设定值的程度。
2. 保压压力波动
例如可以定义:
$$
Ripple=
\frac{P_{max}-P_{min}}
{2P_{set}}
\times 100%
$$
需要注意,具体计算方法最好在技术协议或者设备验收标准中提前约定。
3. 达压时间
记录:
开始升压
↓
压力首次进入规定误差带
所需要的时间。
例如规定:
目标压力 ±1%
作为进入稳定区间的判定条件。
实际验收时,还可以进一步规定:
进入误差带后持续一定时间未再次越界,才认为真正达压。
这样比简单记录“第一次进入 ±1%”更加合理。
4. 重复性
压力控制不能只测试一个循环。
建议至少连续执行 10~30 个完整热压循环。
重点比较:
- 第 1 个循环
- 第 5 个循环
- 第 10 个循环
- 连续运行后的热机状态
通过多周期压力曲线才能判断 PID 参数究竟是“偶尔调得好”,还是具有真正的工艺稳定性。
八、一个典型的优化效果对比
下面的数据主要用于说明优化方向,不代表所有设备都能够得到相同结果。
| 指标 | 单组 PID | 分段 PID + 补偿 |
|---|---|---|
| 达压超调 | 6%~8% | <1% |
| 保压压力波动 | ±2.5% | ±0.6% |
| 达压时间 | 4.2 s | 3.5 s |
| 产品切换后的参数调整 | 较多 | 主要微调目标压力附近参数 |
实际结果会受到很多因素影响,例如:
- 工件刚度
- 工作温度
- 油缸面积
- 泵排量
- 压力传感器量程
- 液压管路结构
- 加载速度
- 控制周期
因此:
不建议直接复制其他设备上的 PID 参数。
真正值得复用的是控制思路,而不是某一组具体的 Kp、Ki、Kd 数值。
九、实际调试中比较常见的三个问题
1. 压力反馈点离执行端太远
如果压力传感器距离液压缸较远,中间还存在:
- 长管路
- 阀块
- 蓄能容积
- 较大的液压腔体
那么传感器测量到的动态压力和执行端实际压力之间就可能存在一定差异和延迟。
因此,压力反馈点应尽可能真实反映执行端的压力变化。
2. 把材料软化误判为液压泄漏
这是热压设备中比较容易出现的误判。
如果随着温度持续升高,压力同时缓慢下降,并不能直接判断液压系统发生了泄漏。
因为材料可能正在发生:
热软化
↓
蠕变
↓
应力松弛
↓
厚度变化
↓
压力下降
因此,分析热压设备的保压问题时,建议至少同时记录:
压力 + 温度 + 位移
三条曲线。
单独观察压力曲线,有时很难准确判断问题来自液压系统还是工件本身。
3. 微分和滤波参数设置不合理
如果直接对误差进行微分:
$$
e(t)=SP(t)-PV(t)
$$
当目标压力发生阶跃变化时,误差会瞬间改变,从而导致微分项产生较大的瞬时输出。
也就是常说的:
Derivative Kick(微分冲击)
因此,在工程实现中,可以考虑对反馈值 PV 求导,而不是直接对误差求导。
另外,压力反馈通常需要进行适当滤波,但滤波不能过重。
过低的截止频率虽然会让 HMI 上显示的压力曲线“看起来很平”,但同时也会引入额外的相位滞后。
最终可能造成:
显示曲线更漂亮了,实际控制稳定性反而下降了。
所以压力滤波应该在信号噪声和控制响应速度之间取得平衡。
十、做到 ±1% 以后,压力控制还能做什么?
当压力闭环已经达到较高精度以后,热压设备进一步提升的方向就不应该只是:
“压力还能不能再稳一点?”
更有价值的是建立完整的:
工艺数据追溯体系
例如把每一个热压周期中的:
- 压力曲线
- 温度曲线
- 位移曲线
- 工艺配方
- 产品编号
- 加压时间
- 保压时间
- 检测结果
进行关联和存储。
最终可以形成类似下面的数据结构:
产品编号
│
├── 工艺配方
├── 压力曲线
├── 温度曲线
├── 位移曲线
├── 报警记录
└── 检测结果
这样当产品出现异常时,就能够进一步追溯:
这一模产品在整个热压过程中到底发生了什么?
这也是伺服热压设备从单纯的运动控制设备进一步走向:
工艺控制 + 数据追溯 + 数字化制造
的重要基础。
总结
伺服热压机想要实现稳定的 ±1% 压力控制,关键并不是简单地“把 PID 参数调好”。
从完整的控制系统角度来看,更合理的技术路线应该是:
合理选择压力传感器
↓
匹配实际工作压力的量程
↓
保证压力反馈质量
↓
分段变增益 PID
↓
积分分离
↓
目标压力附近提前缓冲
↓
死区补偿
↓
输出 / 压力变化率限制
↓
压力 + 温度 + 位移联合验证
↓
多循环重复性测试
PID 只是整个压力闭环中的一个环节。
真正决定伺服热压机压力控制能力的,是:
传感器、液压系统、机械结构、控制算法以及实际工艺负载之间的协同。
本文根据顺天装备伺服热压成型设备的工程开发经验整理。
文中的控制区间、算法及参数仅用于说明控制思路,具体 PID 参数、压力切换点、死区补偿量以及控制效果,仍需结合实际设备液压系统和具体工艺进行测试与验证。
欢迎从事 伺服控制、液压控制、PLC、热压成型及工业自动化 的同行交流相关工程经验。

浙公网安备 33010602011771号