模拟量与 PID 控制
模拟量基础
标准信号
| 信号类型 | 范围 | 精度 | 用途 |
|---|---|---|---|
| 电压 | 0~10V / ±10V | 12/16 bit | 传感器 |
| 电流 | 0~20mA / 4~20mA | 12/16 bit | 工业仪表 |
⚠️ 4~20mA 比 0~20mA 更好:0mA 可表示断线,4mA 可用于零点检测。
换算公式
工程值 = (当前值 / 最大值) × 量程范围 + 偏移
例如:测量 0~100°C,输出 4~20mA
当前电流 12mA → 温度 = (12-4)/(20-4) × 100 = 50°C1
2
3
4
2
3
4
西门子模拟量处理
txt
// 读取标准化值 0~27648 对应 4~20mA
raw_value := IW64;
// 转换为实际工程值(0~100°C)
IF raw_value > 0 THEN
temperature := (raw_value / 27648.0) * 100.0;
ELSE
temperature := 0.0;
END_IF;1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
三菱模拟量处理(FX5U 内置)
txt
// 读取内置 AD 转换值(0~4000 对应 0~10V)
raw_ad := FROM(K0, H3, D100, K1);
// 标定(0~4000 → 0~10V)
voltage := raw_ad * 10.0 / 4000.0;1
2
3
4
5
2
3
4
5
PID 控制
PID(比例-积分-微分)用于精确的过程控制,如恒温、恒压、恒流。
PID 公式
输出 = Kp × 偏差 + Ki × 偏差积分 + Kd × 偏差微分1
| 环节 | 作用 | 参数过大表现 |
|---|---|---|
| P(比例) | 响应速度 | 振荡加剧 |
| I(积分) | 消除稳态误差 | 超调增大 |
| D(微分) | 抑制超调 | 对噪声敏感 |
PID 参数调节口诀
"参数整定找最佳,从小到大顺序查;先是比例后积分,最后再把微分加。"
西门子 PID(PID_Compact)
txt
// 配置 PID 指令
"PID_Compact_1"(
Setpoint := 50.0, // 目标温度 50°C
Input := temperature, // 当前温度
Output := valve_cmd, // 阀门命令输出
ManualValue := 0.0, // 手动值(=0 时自动)
Kp := 1.0, // 比例系数
Ti := T#20S, // 积分时间
Td := T#0S // 微分时间
);1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
参数调节步骤
- 置 Ki=0, Kd=0,Kp 从小到大逐渐增大,直到出现振荡
- 固定 Kp,逐渐增大 Ki,消除稳态误差
- 适当加入 Kd,抑制超调(如需要)
常见应用
| 场景 | 被控量 | 执行器 |
|---|---|---|
| 恒温控制 | 温度 | 加热器/冷却水阀 |
| 恒压控制 | 压力 | 变频器/调节阀 |
| 恒流控制 | 流量 | 变频器/调节阀 |
| 张力控制 | 张力 | 张力控制器 |