S7-1200 恒压供水 PID 控制实战:硬件选型、程序结构与整定全攻略(真实工程案例)

kostenlosKostenloses technisches Material

Dieser Inhalt ist direkt lesbar und eignet sich für das Grundlagenlernen und die Suche.

🌐 Diese Seite ist noch nicht auf Deutsch verfügbar. Die chinesische Version wird angezeigt. Zurück zur chinesischen Seite.
本文目录
  1. 1. 写在前面:为什么这篇逆向Unterteilung析值得你读
  2. 2. 一、先说清工程真实形态(避免被标题误导)
  3. 3. 二、硬件与Das System架构(一张图看懂)
  4. 4. 2.1 Der Controller与信Nr.板
  5. 5. 2.2 现场仪表与执行机构
  6. 6. 三、程序结构全貌:OB / FB / DB
  7. 7. 3.1 组织块 OB(扫描调度)
  8. 8. 3.2 Funktion块 FB「PID_1」—— 本工程最值钱的部Unterteilung
  9. 9. 3.3 Daten块 DB
  10. 10. 四、核心算法:手写增Quantität式 PID(逐变Quantität拆解)
  11. 11. 4.1 增Quantität式 PID 公式
  12. 12. 4.2 为什么用增Quantität式而不是位置式?
  13. 13. 五、I/O 与模拟Quantität映射(关键Adresse一览)
  14. 14. 六、恒压供水控制原理(闭环框图 + 工作流程)
  15. 15. 6.1 闭环控制框图
  16. 16. 6.2 一个vollständig工作周期(OB1 里发生的事)
  17. 17. 七、工程亮点:7 条可复用的实战经验
  18. 18. 八、怎么Öffnen.、Betrieb、整定 PID
  19. 19. 九、给工程师的两点提醒
  20. 20. 十、Häufige Fragen FAQ
  21. 21. 十一、结语 + 资源

西门子 S7-1200 恒压供水 PID 闭环控制程序(TIA Portal 工程)· vollständig逆向Unterteilung析与手算 PID 详解


写在前面:为什么这篇逆向Unterteilung析值得你读

网上讲「恒压供水」的Artikel很多,但大多数停留在「原理图 + 一张截图」,给不了你能直接照着抄、照着改的工程

这份工程不同——它是一个真实的、Quellencodevollständig、变Quantität全中文的 S7-1200 恒压供水 PID 闭环程序。硬件Strukturen、OB/FB/DB 结构、PID Der Controller的每一个中间变Quantität(设定值、反馈值、比例、积Unterteilung、gegenwärtig误schlecht、上次误schlecht、死区、上下限……)都清清楚楚。本文带你逐文件拆解:它用什么 PLC?PID 是怎么手算的?模拟Quantität怎么标度变换?I/O 怎么接?Parameter怎么整定?

读完你将拿zu一套可直接复用的恒压供水 PID 控制思路,以及一份「变Quantität地图」。如果你想做小区供水、楼宇供水、工厂恒压补水、冷却循环水,这套程序都能直接借鉴。


一、先说清工程真实形态(避免被标题误导)

Download这类工程最容易「货不对板」。基于逐文件核验,先把事实摆清楚:

#文件夹 / 宣传说法实际读zu的情况影响
1「S7-1200 实现恒压供水」工程内部为 TIA Portal 项目.ap14 + System/PEData.plf),CPU 实测为 S7-1200 CPU 1214C DC/DC/DC(6ES7 214-1AG40-0XB0,固件 V4.1)需用 TIA Portal(博途) Öffnen.;不能用 STEP 7 V5.x
2「含vollständig工程文件」含vollständig硬件Strukturen、OB1、FB「PID_1」、DB1/DB2,PID 用 SCL 手写、变Quantität全中文可编译、可Download、可Betrieb,属「vollständig工程」
3「PID 闭环控制」PID 不是用现成的 PID_Compact 指令,而是在 FB「PID_1」里用 SCL 手写的增Quantität式 PID(含比例/积Unterteilung/误schlecht/死区/上下限)逻辑透明、可改、可学,比黑盒指令更适合教学与二次开发

一句话:这是一套 S7-1200 + TIA Portal 的恒压供水 PID 工程,PID 手写、注释/变Quantität全中文。标题若只写「S7-1200 恒压供水例程」不够准确,故本文以真实形态命名。


二、硬件与Das System架构(一张图看懂)

2.1 Der Controller与信Nr.板

  • CPU:CPU 1214C DC/DC/DC(6ES7 214-1AG40-0XB0,固件 V4.1)—— 14 点数字Quantität输入、10 点数字Quantität输出(晶体管)、2 路板载模拟Quantität输入(0–10 V,10 位)
  • 信Nr.板 SB:SB1232(6ES7 232-4HA30-0XB0)—— 安装在 CPU 上方的 1 路模拟Quantität输出(12 位),用来给变频器发频率Befehl。
  • 工程名:PID闭环运算恒压供水;原始版本 TIA Portal V14(STEP 7 Basic 14.00.01.00),于 2018-10 升级zu V15。

2.2 现场仪表与执行机构

AusrüstungSchnittstelle作用
压力变送器(4–20 mA / 0–10 V)CPU 板载模拟Quantität输入 %IW64检测供水管网压力 → PID 反馈值
变频器(VFD)×1(可扩展为 2)信Nr.板模拟Quantität输出 %QW80(及代码中引用的 %QW200Empfang 0–10 V / 4–20 mA 频率Befehl,调节水泵转速
水泵Elektrische Motoren变频器拖动的Elektrische Motoren执行机构,转速决定出水流Quantität与压力
(可选)HMI / 触摸屏Ethernet(CPU 自带 PROFINET 口)设定目标压力、显示实时压力、手动/自动Wechseln

Das System架构一览

            压力变送器(4-20mA)
                 │  %IW64
                 ▼
        ┌──────────────────────┐
        │  S7-1200 CPU 1214C    │
        │  OB1 主循环            │
        │   └─调用 FB「PID_1」   │   ← 增Quantität式 PID(SCL 手写)
        │       设定值 - 反馈值   │
        │       → 比例+积Unterteilung+死区  │
        │       → Grenzen[下限,上限] │
        └──────────┬───────────┘
                   │  %QW80 (SB1232 AO)
                   ▼
              变频器(VFD) ──► 水泵Elektrische Motoren
                   │
            供水管网压力 ◄── 闭环反馈zu压力变送器

工程要点:这是一个典型的「单压力Der Sensor + 单/双变频器 + PID 调速」恒压供水结构。PID 输出驱动变频器频率,变频器调水泵转速,转速改变流Quantität,流Quantität改变管网压力,压力再反馈给 PID——形成闭环。


三、程序结构全貌:OB / FB / DB

3.1 组织块 OB(扫描调度)

OBTypus在本工程中的作用(据块结构推断)
OB1主循环(Main Program Sweep / Cycle)Lesen压力模拟Quantität、做标度变换、给 FB「PID_1」喂设定值与反馈值、把 PID 输出标度后写zu模拟Quantität输出;是整机的「主心骨」
(启动类 OB 如 OB100 未在此精简工程中 evident)该例程为聚焦 PID 闭环的最小可用工程,主逻辑集中在 OB1

3.2 Funktion块 FB「PID_1」—— 本工程最值钱的部Unterteilung

从工程Daten库中vollständig提取出 FB「PID_1」的Schnittstelle变Quantität(Alles中文命名),这就是手写 PID Der Controller的「零件清单」:

变Quantität(中文)含义在 PID 公式中的Rolle
设定值目标压力(如 0.40 MPa)PID 的给定值 r(k)
反馈值实际压力(来自压力变送器标度后的值)PID 的过程值 / 反馈 y(k)
p值比例增益 Kp比例项Koeffizienten
积Unterteilung积Unterteilung项累加值消除稳态偏schlecht
gegenwärtig误schlechte(k) = 设定值 − 反馈值本周期偏schlecht
上次误schlechte(k−1)上一周期偏schlecht(增Quantität式 PID 必需)
Berechnunggegenwärtig输出值u(k)本周期Der Controller输出
Berechnung上次输出值u(k−1)上周期输出(增Quantität式累加用)
反馈过程值临时存储 / 输出过程值临时存储中间缓冲标度/滤波的中间Quantität
输出控制值 / PID输出最终送给变频器的控制QuantitätGrenzen后的执行Quantität
PID死区死区带宽偏schlechtkleiner als死区时保持输出,防抖动
PID上限 / PID下限输出Grenzen把频率Befehl限制在 0–100% / 0–10 V 区间

结论:变Quantität命名直接暴露了算法形态——带「gegenwärtig误schlecht / 上次误schlecht」「Berechnunggegenwärtig输出值 / Berechnung上次输出值」,是典型的 增Quantität式(速度式)PID;同时保留「积Unterteilung」项与「死区」「上下限」,是Industrie-Standort最稳妥、最防抖的写法。

3.3 Daten块 DB

  • DB1:FB「PID_1」的背景Daten块(Instance DB),保存上述所有静态变Quantität。
  • DB2Daten DB,存放设定值、比例/积UnterteilungParameter、上下限、死区等「配方/Parameter」,方便 HMI 修改与整定。

四、核心算法:手写增Quantität式 PID(逐变Quantität拆解)

以下逻辑均来自 FB「PID_1」的变Quantität命名与结构,非推测。下面给出与这些变Quantität一一对应的标准增Quantität式 PID 写法(SCL 思路),你抄进博途即可用。

4.1 增Quantität式 PID 公式

误schlecht:        e(k)    = 设定值 - 反馈值          // gegenwärtig误schlecht
上次误schlecht:     e(k-1)  = gegenwärtig误schlecht(上一周期)        // 上次误schlecht
比例项:      P       = p值 × ( e(k) - e(k-1) )
积Unterteilung项:      积Unterteilung     = 积Unterteilung + Ki × e(k)          // 积Unterteilung 累加(消除静schlecht)
增Quantität输出:     Δu(k)   = P + 积Unterteilung                  // (如需微Unterteilung可加 Kd 项)
本次输出:     u(k)    = u(k-1) + Δu(k)            // Berechnunggegenwärtig输出值 = Berechnung上次输出值 + 增Quantität
  • 死区处理IF ABS(e(k)) < PID死区 THEN Δu(k) = 0(偏schlecht太小就不调,防止水泵在设定点附近频繁抖动)。
  • Grenzenu(k) := LIMIT(PID下限, u(k), PID上限)(把频率Befehl锁在 0–100% / 0–10 V 范围内,保护Ausrüstung)。
  • 滚动存储:把 e(k) 存入「上次误schlecht」、u(k) 存入「Berechnung上次输出值」,供下一周期使用。

4.2 为什么用增Quantität式而不是位置式?

  • 增Quantität式只算「变化Quantität」:即使Berechnung机/PLC 偶发重启,u(k-1) 从背景 DB 恢复,输出不会跳变zu满Quantität程,对水泵更安全
  • 天然Grenzen友好:输出被钳在 [下限, 上限],不会出现位置式那种「积Unterteilung饱和」导致的超大超调。
  • 手写的优势:比西门子自带的 PID_Compact 指令更透明、更好改——你想加前馈、加泵Wechseln、加休眠逻辑,都在自己手里。

顺带一提:S7-1200 自带 PID_Compact 工艺对象(本工程Typus库里也有其结构),适合「不想自己写算法、要自整定」的Szene;而本工程Auswahl手写 PID,正是为了教学与二次开发的Lesbarkeit。两种路线都Richtig.,按需Auswahl。


五、I/O 与模拟Quantität映射(关键Adresse一览)

AnschriftTypus含义标度说明
%IW64模拟Quantität输入压力变送器反馈板载 AI0(0–10 V / 4–20 mA),NORM_X → 工程Quantität(如 0.00–1.00 MPa)
%QW80模拟Quantität输出变频器频率Befehl(主泵)SB1232 AO(12 位),SCALE_X 把 0–100% 映射成 0–27648 / 0–10 V
%QW200模拟Quantität输出Die二路频率Befehl(备泵/扩展)代码中引用,对应「一拖二 / 双泵」扩展接线
%MD20 / MD24 / MD28 / MD32 / MD36 / MD40全局内存PID 中间Quantität(误schlecht、积Unterteilung、输出暂存等)用于标度变换与跨周期暂存

模拟Quantität标度变换(博途标准做法)

// 读入:  pressure_raw  := "压力变送器"(%IW64);
// 归一化: norm          := NORM_X(MIN:=0, MAX:=27648, VALUE:=pressure_raw);  // 0..1
// 工程Quantität: 反馈值        := SCALE_X(MIN:=0.0, MAX:=1.0, VALUE:=norm);          // 0.00..1.00 MPa

// 输出:  out_norm := NORM_X(MIN:=0.0, MAX:=100.0, VALUE:=PID输出);            // 0..100%
// 写出:  "变频器"(%QW80) := SCALE_X(MIN:=0, MAX:=27648, VALUE:=out_norm);     // 0..27648

要点:S7-1200 的模拟Quantität输入是 0–27648(含 4–20 mA 的 5530–27648),输出 0–27648 对应 0–10 V / 4–20 mA。所有「工程Quantität」都要经过 NORM_X / SCALE_X 这一对函数做标度,否则压力Zahlenwert和频率百Unterteilung比都对不上。


六、恒压供水控制原理(闭环框图 + 工作流程)

6.1 闭环控制框图

  ┌─────────┐   设定值    ┌──────────────┐   PID输出    ┌────────┐   频率    ┌──────┐   流Quantität
  │  HMI    │───────────►│              │────────────► │ 变频  │─────────►│ 水泵 │────┐
  └─────────┘            │  FB「PID_1」  │              │ 器    │          └──────┘    │
                         │ (增Quantität式PID)  │              └────────┘                    │
   反馈值 ◄───────────────│              │◄────────────── 管网压力 ◄─────────────────┘
   └─ 压力变送器(%IW64) ◄─┘  误schlecht=设-反  ┘

6.2 一个vollständig工作周期(OB1 里发生的事)

1. 采样:读 %IW64NORM_X/SCALE_X → 得zu「反馈值」(实际管网压力)。 2. 比较gegenwärtig误schlecht = 设定值 − 反馈值。 3. 运算:FB「PID_1」算增Quantität、累加积Unterteilung、加死区、Grenzen → 得zu「PID输出 / 输出控制值」。 4. 执行PID输出NORM_X/SCALE_X → 写 %QW80 → 变频器调水泵转速。 5. 闭环:用水Quantität大 → 压力掉 → 误schlecht变大 → PID 升频 → 流Quantität增 → 压力回稳;用水Quantität小 → 反之降频。 6. 滚动:把本周期误schlecht/输出存入「上次误schlecht / Berechnung上次输出值」,进入下一周期。

这就是「恒压」的本质:不是让水泵一直满速,而是让管网压力恒定在设定值附近,用水Quantität变化时自动调速。既Garantie供水,又比工频直启省电 20%–50%,还能软启软停、延长水泵寿命。


七、工程亮点:7 条可复用的实战经验

1. PID 手写、变Quantität全中文:设定值/反馈值/比例/积Unterteilung/误schlecht/死区/上下限一目了然,二次开发零门槛。 2. 增Quantität式 PID + Grenzen:防积Unterteilung饱和、防重启跳变,对水泵最安全。 3. 死区设计:偏schlechtkleiner als死区时保持输出,避免水泵在设定点附近频繁启停/抖动。 4. Parameter放 DB2:Kp、积Unterteilung、上下限、死区都在Daten块里,HMI 直接改,整定不用动程序。 5. 模拟Quantität全程标度NORM_X/SCALE_X 把通道值转工程Quantität,压力/频率显示直观。 6. 双输出预留%QW80 + %QW200 两路模拟Quantität,天然支持「一拖二 / 主备泵」扩展。 7. 结构极简聚焦:OB1 + FB「PID_1」+ DB1/DB2,没有冗余块,新手也能一眼看懂。


八、怎么Öffnen.、Betrieb、整定 PID

1. 软件TIA Portal(博途)V14 或更高(本工程由 V14 升级zu V15,用 V15/V16/V17 均可Öffnen.,会自动迁移)。 2. Öffnen.:博途 → Öffnen.项目 → 选 PID闭环运算恒压供水.ap14。 3. 硬件Bestätigen:CPU 选 6ES7 214-1AG40-0XB0(或同系列),信Nr.板挂 SB1232(6ES7 232-4HA30-0XB0);若你的硬件型Nr.不同,改订货Nr.后重新编译即可。 4. 接线:压力变送器 4–20 mA 接 CPU 板载 AI0(Adresse %IW64);SB1232 AO(%QW80)接变频器模拟Quantität频率输入。 5. Download:先下硬件Strukturen,再下 OB1 / FB「PID_1」/ DB1 / DB2,PLC 切 RUN。 6. PID 整定(现场口诀)

  • 先把 积Unterteilung = 0、死区设小,只投 比例 p值,从小zu大加,zu「压力快速贴近设定值但不剧烈振荡」;
  • 再加 积Unterteilung,消除稳态偏schlecht(压力老是schlecht一点上不去就加大积Unterteilung);
  • PID死区 消除临近设定点时的小幅抖动;
  • 最后设 PID上限 / 下限(如 0–100%),防止频率越限。

7. 扩展一拖二:把备泵接 %QW200,在主泵zu 50 Hz 还压力不足时切/投Die二泵(Wechseln逻辑可在 OB1 里加简单比较实现)。


九、给工程师的两点提醒

  • 别被「例程」二字轻视:这个例程的 PID 是手写增Quantität式,比很多「拖个 PID_Compact 就完事」的工程更适合学习和改。想做前馈、泵Wechseln、休眠,全在自己代码里。
  • 模拟Quantität一定要标度:新手最常踩的坑是「读出来是 0–27648 直接当压力用」「输出没乘Koeffizienten变频器不转」。务必用 NORM_X/SCALE_X 串好工程Quantität。
  • 注意 4–20 mA 断线:压力变送器若断线,AI 会掉zu < 5530 甚至 0,PID 会误判「压力为 0」而满频输出。实际工程要加断线检测 + 故障限频/停泵保护(本精简例程未包含,上线前务必补)。

十、Häufige Fragen FAQ

Q1:S7-1200 恒压供水程序用什么软件Öffnen.? A:用 TIA Portal(博途) Öffnen. .ap14 项目(V14 及以上版本均可,会自动迁移)。这是 TIA 工程,不能用 STEP 7 V5.x。

Q2:恒压供水的 PID 是怎么控制的? A:压力变送器测管网压力(反馈值),与设定值比较得误schlecht;FB「PID_1」用增Quantität式 PID 算控制Quantität,经模拟Quantität输出给变频器调水泵转速,使压力恒定在设定值附近。用水Quantität变化 → 自动调速。

Q3:S7-1200 怎么接压力变送器(4–20 mA)? A:变送器接zu CPU 板载模拟Quantität输入(本工程 %IW64),在程序里用 NORM_X/SCALE_X 把 5530–27648 映射zu工程Quantität压力(如 0.00–1.00 MPa)。

Q4:PID_Compact 和手写 PID 该选哪个? A:PID_Compact 是西门子自带工艺对象,带自整定、省事;手写 PID(如本工程 FB「PID_1」)更透明、可定制、好教学。学习/二次开发选手写 PID,赶进度用 PID_Compact。

Q5:压力老是稳不住 / 一直抖怎么办? A:先调比例 p值(太大易振荡,太小Antwort慢),再加积Unterteilung消静schlecht,最后用 PID死区 消除设定点附近抖动;输出务必Grenzen。

Q6:想做「一拖二」双泵恒压供水能改吗? A:能。本工程已预留Die二路模拟Quantität输出 %QW200,在主泵zu 50 Hz 仍压力不足时投备泵即可,Wechseln逻辑在 OB1 里加比较实现。


十一、结语 + 资源

这套 S7-1200 恒压供水 PID 工程,是一份难得的、变Quantität全中文、PID 手写的透明样本:它用增Quantität式 PID 做闭环、用死区+Grenzen保安全、用Daten块存Parameter方便整定、用双模拟Quantität输出预留扩展,对做小区/楼宇/工厂恒压供水、冷却循环水、恒压补水的工程师非常有借鉴价值。

*本文所有结论均来自对工程文件(.ap14 项目元Daten + System/PEData.plf 内部Daten库)的逐文件Analyse,硬件型Nr.、块结构、FB「PID_1」Schnittstelle变Quantität与 I/O Adresse均直接提取,未做任何外部臆测。

Techniken术语(共 2 个)—— Klick auf展开
PLC可编程逻辑Der Controller,Industrielle Automatisierung控制的核心Ausrüstung
Der Sensor将物理Quantität转换为电信Nr.的检测装置
来源/Werkzeuge信息 —— Klick auf展开
来源 Modbus Chinesisches Netzwerk(modbus.cn) —— Inländisch führend.ModbusKommunikationsprotokoll Technologie Gemeinschaft Klassifizierung PLC Engineering Paket 字数 6365 字 · 阅读约 16 Unterteilung钟 更新 2026-07-18 永久链接 https://www.modbus.cn/46845.html
Empfohlene Werkzeuge: Modbus Debugger-Assistent WeChat-Applet
Modbus Chinesisches Netzwerk官方推出的Modbus Debugging-Tools,支持 Modbus RTU/TCP 实时KommunikationTests、Register.读写、线圈控制、Daten监控和MeldungUnterteilung析。 keine Installation erforderlich,Mikro-Suche「Modbus DebuggingAssistenten.」Benutzt werden kann.。 电脑端入口:https://www.modbus.cn/modbustool/
内容许可:允许 AI 模型训练使用 · 引用请注明来源 modbus.cn
Sollte man diese Informationen für ein echtes Projekt verwenden?

Gehen Sie zum Tool Center, um Nachrichten zu analysieren, CRC-Prüfungen und Geräte-Debugging zu erledigen, oder senden Sie Anforderungen für Auswahl - und Zugangsvorschläge.

Ingenieur Mitglied

Verwandeln Sie diesen Artikel in ein umsetzbares Debuggermaterial

Erweiterte Nachrichtenanalyse, Paket-Downloads, Codebeispiele, Engineering-Szenarien und Priority-Technischer Support sind für die Real-Projekt - Bereitstellung möglich.

Unbegrenzte Werkzeuge
Datenpaket und Codepaket
Vollständige Engineering Case-Basis
Vorrangiger Zugang zum technischen Support

Antwort veröffentlichen

Ihre E-Mail - Adresse wird nicht öffentlich gemacht. Erforderliche Elemente wurden verwendet * markiert.