# CGL1_singlenode 程序学习指南（钢卷打捆/包装机 PLC 程序）

> 来源：`桌面\Cgl1_singlenode202312111_092141\CGL1_SIN`
> 性质：**Siemens SIMATIC STEP 7（经典 SIMATIC Manager）工程 + WinCC flexible 人机界面**
> 应用：**钢卷打捆/包装机（Umreifungsmaschine / coil strapping & packaging machine）**
> 语言：SCL（结构化文本，带德/英文注释）；部分梯形图
> 形态：**单站（singlenode）**——一个 CPU 站控制整台机器

---

## 1. 这台机器是干什么的

从变量名和注释可以明确：这是一台给**钢卷（coil）打钢带（Band/strap）捆扎**的包装设备。核心机构：

| 德文/代码 | 中文 | 作用 |
|---|---|---|
| Fahrwagen (Umreifen) | 打捆小车/滑架 | 带着打捆头沿钢卷移动到各捆扎位（Pos 1–5） |
| Ausleger (Umreifen/Wickler) | 悬臂/摆臂 | 把打捆头送到钢卷"包"的位置 |
| Wickler | 卷取器/收带器 | 钢带收放 |
| Kopf (UMREIFUNGSKOPF) | 打捆头 | 张紧、压痕(notch)、切断、封口的核心机构 |
| Bandabroller | 放带盘 | 钢带供料，带"张力辊/Dancer Roll" |
| Holzklotzeinschieber | 木垫块推入器 | 相邻钢卷间插入木垫块 |
| Face-Gate | 端面闸门 | 挡料/定位 |
| Sicherheitstueren | 安全门 | 防护门监控 |

---

## 2. 软件与硬件环境

**软件**
- STEP 7（SIMATIC Manager）管理 PLC 程序
- WinCC flexible（内部代号 "Utah"）做 HMI，下装到 **OP177 / TP170** 操作面板

**硬件（从配置字符串推断）**
- 单个 PLC CPU 站（S7-300/400 系列；出现 OB82/85/86/87、SFB4/SFB47、SFC14/15 是典型 S7-300/400 特征）
- **PROFIBUS DP** 现场总线，带 **DP/DP-Koppler（DP/DP 耦合器）** 做分布式 I/O 通信（SFC14/SFC15 = DP 读/写记录）
- **变频器/传动（Umrichter / Drive）** 经 PROFIBUS 控制，含 SLOW/FAST 加减速、制动延时
- 传动模块标识：`P7VR_DRIVE0_MODULE_CT`、`Drive Data`

**工程文件要点**
- `D-147A07.s7p` / `D-147A07.S7S`：项目文件 / **SCL 源容器**（.S7S 里含可读取的 SCL 源码、注释、变量声明）
- `ombstx\offline\00000001~3\SUBBLK.DBF|DBT`：3 个站的离线程序块（OB/FB/FC/DB）
- `omgd\S7GD.DBF`、`pgs\S7GS.DBF`：符号表/站数据
- `HmiEs\PROJECT_1\DEVICE_1`：WinCC flexible HMI 工程

---

## 3. 程序块地图（OB / FB / FC / DB）

> 注：以下编号从二进制块与 SCL 源码中提取。要看完整代码需用 SIMATIC Manager 打开本工程。

### 组织块 OB（循环与中断）
| OB | 作用 |
|---|---|
| **OB1** | 主循环（程序主扫描） |
| **OB100** | 完全再启动（暖启动）初始化 |
| **OB21 / OB22** | 启动 OB；注释明言：掉电/电池故障时用 EPROM 中 **DB18** 重建 RAM 中的 DB（保证参数不丢） |
| **OB82 / OB85 / OB86 / OB87** | 诊断/故障 OB（模块、机架、通信故障，保证单点故障不死机） |
| **OB121 / OB122** | 编程错误/访问错误 OB（容错） |
| OB9 | 出现 1 次，疑为背景循环或时间错误 OB，建议打开工程确认 |

### 功能 FC（关键逻辑）
| FC | 推断作用（来自源码/注释） |
|---|---|
| FC20 | 打捆头在"原位 HOME"信号 |
| FC30 | 钢带导向器在原位 |
| FC50 | 捆扎位 1–5 判定（STRAP AT POSITION x） |
| FC62 | 小车位置信号（Pos1–5、HOME、可通行 transport free） |
| FC80 | 整机在原位（MACHINE IS IN HOME POSITION） |
| FC110 | 自动钢带空 → 整机回原位 |
| FC82 / FC86 | 总线事件/错误（Bus_Ereignis / Bus_Fehler / Fehler_Reset） |
| FC120–FC127 | 打捆顺序"FUNCTION 01–11"对应的执行功能（见下） |

### SCL 顺序功能（FUNCTION 01–11，打捆循环的核心步骤）
```
FUNCTION 01: CLOSE FACE-GATE          关端面闸门
FUNCTION 02: OPEN  FACE-GATE          开端面闸门
FUNCTION 03: PRE-NOTCHING             预压痕
FUNCTION 04: NOTCHING & CUTTING       压痕并切断
FUNCTION 05: STRAP FEEDING            钢带送进
FUNCTION 06: STRAP TENSIONING         钢带张紧
FUNCTION 07: STRAPPING ON MANUAL      手动打捆
FUNCTION 08: STRAPPING ON AUTO        自动打捆
FUNCTION 09: STRAPP.SINGLE STEP       单步打捆
FUNCTION 10: TO HOME POSITION         回原位
FUNCTION 11: RELEASE PRE-NOTCHIN      释放预压痕
```
还有组合功能：`FULL STRAPPING (MANUAL/AUTO/SINGLE STEPS)`、`MECHANIC HOME -> NOTCHING/RELEASE`、`STRAP FEED TIL PRE-NOTCHING`、`STRAP TENSION TIL CUTTING`、`MOVE MACHINE TO HOME`。

### 功能块 FB（机构/传动封装）
- **FB190 / FB191**：打捆头/小车轴传动控制（"HEAD" / "CARRIAGE" 传动，带 SLOW/FAST in/out 延时、制动延时、最大运行时间监控）
- **FB875**：库功能块（疑似传动/轴库）
- **SFB4**（TON 定时器）、**SFB47**（计数/频率）、**SFC1**（读时钟）、**SFC14/15**（DP 读写）

### 数据块 DB（参数与状态）
- **DB18**：EPROM 中的参数备份（掉电后用它重建 RAM 中的工作 DB，注释 "DB-CODE (2468)" 是合法性标志）
- **DB_BETRIEBSMELDUNGEN**：运行消息位 MELDUNG_01…MELDUNG_41
- **DB_FAULT**：故障位（FAULT_xx）
- **DB_OP177_DATEN / DB_OP177_…**：HMI（OP177）交互数据（当前画面号 BN_AKTUELLE_BILDNUMMER 等）
- **DB_CTRL**：控制数据
- **DB11/12/20/47/51/70/71/111/121/491** 等：各机构/传动实例数据
- **DB_FUNCT***：功能管理（创建/删除/读/写 DB，PMC 功能报警等）

---

## 4. 核心工艺流程（自动打捆循环）

每条钢卷的捆扎按"步骤链（Schrittkette）"顺序执行，典型流程：

1. **回/确认原位**：各轴（小车、悬臂、打捆头、压痕器）先回到 Grundstellung（原位/零位）。`MACHINE IS IN HOME POSITION` 是前提。
2. **小车移到捆扎位 1（Pos 1）**：经 SLOW/MIDDLE/FAST 多段调速靠近，靠限位开关（Endschalter）定位，`CARRIAGE IS IN POSITION 1`。
3. **打捆头送到钢卷（feed position）**：`MOVE HEAD IN FEED POSITION TO COIL`。
4. **钢带送进（STRAP FEEDING）**：从放带盘经张力辊送到头。
5. **钢带张紧（STRAP TENSIONING）**。
6. **预压痕 → 压痕并切断（NOTCHING & CUTTING）**：头部咬合、封口、切断钢带。
7. **端面闸门关/开（FACE-GATE）**。
8. **小车移到下一捆扎位（Pos 2…5）**：同一卷上打多道钢带。
9. **全部位完成 → 整机回原位**；期间可插入**木垫块（Holzklotz）**。
10. **钢卷离开（COIL IS GONE）→ 清除位置 → 等待下一卷**。

> 手动模式（Hand）：HMI 上每个轴有独立按钮（Taster），如"小车到 Pos1"、"悬臂回原位"、"打捆头回原位"、"单步打捆"，便于调试/维护。
> 自动模式（Automatik）：上料信号（FROM CUST.）触发，跑完整顺序。

---

## 5. 关键控制逻辑要点

- **传动（Umrichter）控制字/状态字**：`STW1`（控制字）、`ZSW1`（状态字，按位 ZSW1_0…15）、`HIW`/`Hauptsollwert`（设定值）。注释体现：
  - `//Umrichter ist eingeschaltet (EIN-BEFEHL steht an), keine Störung` —— 变频器已使能、无故障
  - `//Einschaltsperre; Wiedereinschalten nur durch AUS1 und anschließend EIN` —— 合闸互锁，须先 AUS1 再 EIN 才能重新合闸
  - `//Rechtslauf / Linkslauf` 正反转、`//Motor Haltebremse` 保持制动
- **参数化延时（KT: …）**：在 DB 中集中管理，如：
  `MAXIMUM MOTOR-RUN-TIME`、`DELAY: MOTOR BRAKE`、`DELAY: START/STOP 'SLOW IN/OUT'`、`DELAY: START/STOP 'FAST IN/OUT'`、`DELAY: DIRECTION CHANGE`、`DELAY: STRAP IS EMPTY`、`DELAY: TOWER IS EMPTY`。改工艺只需改 DB，不动代码。
- **安全（Sicherheit）**：
  - 安全门监控（`SICHERHEITST…`、`bersicht Sicherheitstueren` 画面）
  - 双限位互锁报警：`FAULT_21 ZWEI ENDSCHALTER AUSLEGER`（悬臂两个限位同时动作）、`FAULT_37/38/39`（小车前后限位/终端）、`FAULT_40`（来自小车传动 FU 的错误 -A33）
  - 监控时间（BERWACHUNGSZEIT）超时报警
- **故障/消息系统**：
  - 运行消息 `MELDUNG_01…41`（例：`MELDUNG_01 MASCHINE IST AUSGESCHALTET` 机器已关；`MELDUNG_02 SIGNAL "TRANSPORT STEHT" NICHT VORHANDEN` 无"输送停止"信号；`MELDUNG_03 HAND-BETRIEB NICHT ANGEW` 未选手动）
  - 故障 `FAULT_65 KOPF UMREIFUNGSABBRUCH WG. BANDFEHLER`（因钢带错误中断）、`FAULT_97 UMREIFUNGSANZAHL <= 0`（捆扎数≤0）
  - 自动故障时 `AUTO MOVING FAULT >> MACHINE GO IN HOMEPOSITION`（自动故障→整机回原位，安全收尾）

---

## 6. HMI（WinCC flexible）画面

主菜单（Hauptmenue）下分：
- **Handfunktionen**：手动功能（各轴点动、单步打捆）
- **Automatic**：自动模式
- **Anlage Stop**：停机
- **Service**：维护（放带盘服务）
- **Umreifungs Positionen 1**：捆扎位置 1 操作/监视
- **bersicht Anlage**：设备总览
- **bersicht Einstellungen**：参数设置（延时、电机运行时间等）
- **bersicht Umreifung**：打捆总览
- **bersicht Sicherheitstueren**：安全门总览
- 文本显示：`TEXTANZEIGE OP177: BETRIEBSMELDUNGEN`（OP177 运行消息）、`OP177_LED_ABBILD`（LED 映像）

画面切换由 PLC 通过 `BN_AKTUELLE_BILDNUMMER`（当前画面号）、`BN_AKTUELLER_BILDTYP`（画面类型）等变量与 HMI 联动，HMI 发"Steuerungsauftrag Bildanwahl"（画面选择控制指令）给 PLC。

---

## 7. 怎么上手学这套程序（建议路径）

1. **用 STEP 7 SIMATIC Manager 打开** `D-147A07.s7p`（需对应版本的 STEP 7 + 可能的 SCL 编辑器授权）。
2. 打开 **符号表**（S7GD），先建立"地址 ↔ 中文/德文含义"对照——这是理解 I/O 和内存的第一步。
3. 从 **OB1** 入手，看它 CALL 了哪些 FB/FC，画出调用树。
4. 重点读 **FC120–FC127（FUNCTION 01–11）** 和对应的 **FB190/FB191**——这就是打捆机构与传动的"动作剧本"。
5. 看 **DB18 / DB_BETRIEBSMELDUNGEN / DB_FAULT**——参数与报警的"字典"。
6. 用 **WinCC flexible** 打开 `HmiEs` 工程，把画面按钮 ↔ PLC 变量（如 `FW_UMREIFEN_GRDST`、`BN_AKTUELLE_BILDNUMMER`）对应起来。
7. 在线监控时优先看：原位链（HOME POSITION 各信号）、小车位置（FC62）、打捆头状态（FC20）、消息位（MELDUNG_xx）、故障位（FAULT_xx）。

---

## 8. 已知限制 & 我还能帮你做的

- 本指南是从**二进制工程文件反提取**的可读字符串（SCL 注释、变量名、消息文本、HMI 文本）整理而来，**不是逐网络的反编译**。要看每条指令（STL/LAD）仍需在 STEP 7 里打开。
- 我已经把全部 7241 条可读字符串导出到 `extracted_strings.txt`（与本指南同目录），可全文搜索任意变量/消息。

可继续为你做的：
1. **翻译** 任意 `MELDUNG_xx` / `FAULT_xx` 的德文含义成中文表；
2. **抽取某个具体 FB/FC（如 FC62 小车、FB190 传动）的完整 SCL 源码**贴给你逐行讲；
3. **把符号表/IO 地址**整理成中文对照表；
4. 画一张 **打捆循环的时序/步骤图（SVG）**，方便你照着学。

告诉我从哪一步开始。
