ShreyanMehta/PLC-for-Injection-Moulding-
GitHub: ShreyanMehta/PLC-for-Injection-Moulding-
基于TwinCAT平台构建的注塑机PLC控制系统仿真项目,实现了完整的梯形图状态机逻辑与可视化HMI交互。
Stars: 1 | Forks: 0
# 💉 注塑机 – PLC 控制系统
## 📋 项目概述
本项目实现了一套完整的注塑机**基于 PLC 的控制系统**,完全在 **TwinCAT 3** 中进行仿真,无需物理硬件 I/O。机器逻辑构建为一个**顺序的、定时器驱动的状态机**,主程序使用梯形图 (LD),HMI 辅助计算使用结构化文本 (ST)。
所有输入均来自 HMI 按钮的按压,所有输出驱动 HMI 显示元素——这使其成为一个纯软件演示,能够在连接实际 I/O 之前独立验证控制逻辑。
## 🔄 状态机
机器循环经历 **8 个生产状态**和 **1 个故障状态**:
```
STATE 0 → STATE 2 → STATE 4 → STATE 5 → STATE 6 → STATE 8 → STATE 9 → STATE 0
IDLE MOLD INJECTION HOLD/PACK COOLING MOLD EJECTION IDLE
CLOSING +PLASTICIZE OPENING
↑
Any State → STATE 99 (FAULT) via E-Stop
→ STATE 0 on Alarm Acknowledge
```
| 状态 | 名称 | 定时器 | 默认值 |
|-------|------|-------|---------|
| 0 | IDLE | — | — |
| 2 | Mold Closing | `tonMoldClose` | 3 s |
| 4 | Injection | `tonInject` | 3 s |
| 5 | Hold / Pack | `tonHold` | 5 s |
| 6 | Plasticize + Cooling | `tonCool` | 15 s |
| 8 | Mold Opening | `tonMoldOpen` | 3 s (复用 `tSP_MoldClose`) |
| 9 | Ejection (Fwd + Retract) | `tonEject` | 2 s |
| 99 | FAULT | — | E-Stop 触发 |
## 📁 仓库结构
```
├── PRG_LD/ # Main Ladder Diagram program (TwinCAT project)
├── ST_Helper.st # Structured Text POU – progress bar, sim temp/pressure, alarms
├── LadderLogic_Reference.txt # ASCII ladder rung reference (all 20 rungs documented)
├── docs/
│ ├── SA_InjectionMolding_Report.pdf # Full project report
│ └── IO_Assignment_LadderLogic_Reference.docx
└── README.md
```
## 🪜 梯形图逻辑摘要
主程序 `PRG_LD` 包含 **20 个梯级**,涵盖:
| 梯级 | 功能 |
|-------|----------|
| 1 | E-Stop 与安全门报警 |
| 2 | 超温报警 (区域 1–3 + 喷嘴) |
| 3 | 主报警 (所有报警标志的 OR 运算) |
| 4 | 加热器控制 – 各区域 Bang-Bang 控制 |
| 5 | 机器就绪条件 |
| 6 | 启动周期 (自动模式) |
| 7–14 | 状态转换:Mold Close → Inject → Hold → Cool → Mold Open → Eject |
| 15 | 安全联锁 – 门强制 (RESET 电磁阀) |
| 16 | 注射联锁 – 模具必须关闭 |
| 17 | 故障状态 – 报警确认 |
| 18–19 | 手动模式 – 锁模 / 注射 |
| 20 | 就绪指示灯与报警指示灯线圈 |
所有状态间的转换均使用**自锁 SET 线圈**,因此低优先级的梯级无法覆盖正在进行的激活转换。
## 📊 变量参考
### 输入 (HMI 按钮与设定值)
| 变量 | 类型 | 默认值 | 描述 |
|----------|------|---------|-------------|
| `bHMI_Start` | BOOL | FALSE | 绿色 START 按钮 |
| `bHMI_Stop` | BOOL | FALSE | 红色 STOP 按钮 |
| `bHMI_EStop` | BOOL | FALSE | E-Stop — 触发 FAULT (状态 99) |
| `bHMI_AckAlarm` | BOOL | FALSE | 报警确认 → 返回 IDLE |
| `tSP_MoldClose` | TIME | T#3S | 模具闭合/打开定时器设定值 |
| `tSP_Inject` | TIME | T#3S | 注射填充时间 |
| `tSP_Hold` | TIME | T#5S | 保压/压实阶段持续时间 |
| `tSP_Cool` | TIME | T#15S | 塑化 + 冷却持续时间 |
| `tSP_Eject` | TIME | T#2S | 顶针前进 + 后退 |
| `rSP_BarrelTemp` | REAL | 220.0 °C | 料筒温度设定值 |
| `rSP_InjPressure` | REAL | 1000.0 bar | 注射压力设定值 |
| `rSP_HoldPressure` | REAL | 600.0 bar | 保压压力设定值 |
### 输出 (HMI 显示元素)
| 变量 | 类型 | 描述 |
|----------|------|-------------|
| `eState` | INT | 当前状态机数值 |
| `sStateName` | STRING | 人类可读的状态标签 |
| `rCycleProgress` | REAL | 0.0–100.0 % 周期进度条 |
| `nShotCounter` | INT | 本次会话生产的部件数 |
| `bAlarmActive` | BOOL | 主报警标志 |
| `sAlarmMsg` | STRING | 报警描述文本 |
| `bReadyLight` | BOOL | 绿色就绪指示灯 |
| `bAlarmLight` | BOOL | 红色报警指示灯 |
| `rSim_Temp` | REAL | 仿真料筒温度 |
| `rSim_Pressure` | REAL | 仿真注射压力 |
## 🖥️ HMI 概述
TwinCAT HMI 替代了所有物理面板硬件,包括:
- **控制面板** — START、STOP、E-STOP 和 ACK ALARM 按钮
- **状态显示** — 当前状态名称 + 数字状态指示器
- **状态指示灯** — 绿色 READY 指示灯,红色 ALARM 指示灯
- **进度条** — 每个状态 0–100% 的定时器完成度
- **过程仪表** — 仿真料筒温度 (°C) 和注射压力 (bar)
- **注射计数器** — 本次会话完成的周期总数
- **设定值输入** — 可实时调节的定时器和模拟量设定值(无需更改代码)
- **报警面板** — 带有颜色变化的纯文本故障信息
## ⚙️ ST 辅助 POU (`ST_Helper.st`)
`ST_Helper` 结构化文本 POU 在每次 PLC 扫描时调用,负责处理:
1. **料筒温度仿真** — 以 0.5 °C/扫描 的速率将 `rSim_Temp` 趋向 `rSP_BarrelTemp`
2. **压力仿真** — 根据状态将 `rSim_Pressure` 设置为注射 (1000 bar)、保压 (600 bar) 或 0 bar
3. **周期进度计算** — 根据定时器已用时间与预设时间计算 `rCycleProgress` (0–100%)
4. **状态名称字符串** — 为 HMI 标签写入人类可读的 `sStateName`
5. **已用时间显示** — 跟踪激活状态定时器的 `tElapsed`
6. **报警信息处理** — 在 `bAlarmActive` 为 TRUE 时,根据状态写入 `sAlarmMsg`;正常时清除
## 🚀 开始使用
### 前置条件
- TwinCAT 3.1 (Build 4024 或更高版本)
- TwinCAT HMI (用于操作员界面)
### 步骤
1. 克隆此仓库。
2. 在 TwinCAT XAE 中打开 TwinCAT 解决方案 (`.sln`)。
3. 激活配置并将 PLC 设置为 **Run** 模式。
4. 打开 HMI 项目并启动 HMI 服务器。
5. 在 HMI 上按 **START CYCLE** 开始注塑序列。
## 📄 许可证
本项目是作为 Nirma 大学 **2EI104CC23** 课程的一项学术作业而开发的。仅供教育目的使用。
标签:Beckhoff, HMI开发, ICS, impacket, IoT安全, LD, NTLM Relay, OT安全, PKINIT, PLC仿真, PLC控制系统, PLC编程, SCADA, ST, TwinCAT, 人机界面, 倍福, 制造业自动化, 可编程逻辑控制器, 哈希传递, 定时控制, 工业互联网, 工业控制系统, 工业自动化, 工控安全, 有限状态机, 梯形图, 注塑成型, 注塑机, 状态机, 结构化文本, 自动化控制, 顺序控制