在 FPWIN Pro/GR 的 FBD/LD 中,F355_PID 通常以一个带EN/ENO与单一数组输入s的功能(或功能块)出现。 下图为工程化占位图(把数组元素“拆口”方便看线),实际接线以s[ ]赋值为准。
PID(F355_PID)s[0..30] 数组承载参数/IOSP 目标值 → s[1]PV 测量值 → s[2]Control 模式/AT位 → s[0]Kp/Ti/Td/Ts → s[6]/s[7]/s[8]/s[9]Lower/Upper → s[4]/s[5]MV 输出 ← s[3]AT 进度 ← s[10] (1..5)ENO(执行结果)实际块图常显示为 EN/ENO + s(数组)一个口;此图为教学占位| 数组索引 | 名称 | 含义 / 单位 | 典型范围 | 备注 |
|---|---|---|---|---|
| s[0] | Control | 控制模式 + AT触发(MSB=1) | 见下表 | 选择 PI‑D / I‑PD & 正/反作用;AT 置位后自动识别参数并复位 |
| s[1] | SP | 目标值(整数标度) | 0..10000 | 建议与 PV 同标度 |
| s[2] | PV | 测量值(整数标度) | 0..10000 | 通常把 0–10V/4–20mA 缩放到 0..10000 |
| s[3] | MV | 控制输出(模拟量写出) | 0..4000 或 −2000..+2000 | 对应 0–10V 或 ±10V 模块标度 |
| s[4]/s[5] | Lower/Upper | 输出下/上限 | 0..10000 | 用于限幅与AT激励边界 |
| s[6] | Kp | 比例增益 ×0.1 | 1..9999 → 0.1..999.9 | AT 会回写 |
| s[7] | Ti | 积分时间 ×0.1s | 1..30000 → 0.1..3000s | AT 会回写 |
| s[8] | Td | 微分时间 ×0.1s | 1..10000 → 0.1..1000s | AT 会回写 |
| s[9] | Ts | 采样周期 ×0.01s | 1..6000 → 0.01..60.00s | 需与任务周期匹配 |
| s[10] | AT_Progress | 自动整定进度 | 1..5 | 5 表示完成 |
| s[11..30] | 工作区 | 算法内部使用 | — | 无需手动改动 |
| Control(s[0])低 3 位 | 含义 |
|---|---|
| 000b | 反作用(加热) + PI‑D |
| 001b | 正作用(冷却) + PI‑D |
| 010b | 反作用 + I‑PD |
| 011b | 正作用 + I‑PD |
// GVL(全局变量)或程序头部
VAR_GLOBAL
PIDTbl : ARRAY[0..30] OF INT := [
16#0000, (* s0: Control = 反作用 PI-D,无 AT *)
0, (* s1: SP *)
0, (* s2: PV *)
0, (* s3: MV *)
0,10000, (* s4/s5: 下/上限 *)
50, 300, 0, 10, (* s6..s9: Kp=5.0, Ti=30.0s, Td=0, Ts=0.10s *)
0, (* s10: AT_Progress 只读 *)
0,0,0,0,0,0,0,0,0,0, (* s11..s20 工作区 *)
0,0,0,0,0,0,0,0,0,0, (* s21..s30 工作区 *)
];
AI_Raw : INT; // 模拟量输入原码(例如 0..4000 = 0..10V)
AO_Raw : INT; // 模拟量输出原码(写到 AO 通道)
END_VAR
// 1) 读 AI → 缩放到 0..10000 PIDTbl[2] := AI_Raw * 10000 / 4000; // PV // 2) 写 SP(来自 HMI 或固定值) PIDTbl[1] := 6000; // 例:目标 60.00% // 3) 执行 PID F355_PID( s := PIDTbl ); // 4) 输出缩放:0..10000 → 0..4000(0..10V) AO_Raw := LIMIT(0, PIDTbl[3] * 4000 / 10000, 4000);
// ┌───[ 缩放 PV ]──────────────┐ ┌─[ PID ]────────┐ ┌──[ 缩放 MV ]─────┐ // | AI_Raw×10000/4000 → s[2] | ---> | F355_PID(s) | --> | s[3]×4000/10000 | → AO_Raw // └────────────────────────────┘ └─────────────────┘ └──────────────────┘
// 触发一次自动整定(上升沿): IF AT_Start AND NOT AT_Start_M1 THEN PIDTbl[0] := PIDTbl[0] OR 16#8000; // 置位 MSB 启动 AT END_IF; AT_Start_M1 := AT_Start; // 运行: F355_PID( s := PIDTbl ); // 监视 AT 进度:完成后 PIDTbl[0] 的 MSB 会被自动清零,PIDTbl[10]≈5 IF PIDTbl[10] = 5 THEN AT_Done := TRUE; END_IF;
| 现象 | 可能原因 | 处理建议 |
|---|---|---|
| 输出总顶到上/下限 | SP/PV 标度不一致;Kp 过大;积分饱和;负载过重 | 统一标度到 0..10000;先降 Kp、禁用 I;确认机械/工艺上限 |
| 波动/振荡 | Ts 太大;Kp 过高;D 未滤波;PV 噪声大 | 缩小 Ts;降 Kp、适度增 Ti;对 PV 做低通/移动平均 |
| AT 无法完成 | 限幅过窄;工艺无明显响应;信号方向选错 | 适当放宽 Lower/Upper;确认反/正作用;检查传感器与接线 |
注:F355_PID 在不同 PLC 机型/固件上的可用性与显示名称可能不同;FP7 等新平台亦可通过库 FB 以类似参数使用。请以机型对应的官方“编程/指令/模拟量模块”手册为准。