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, 人机界面, 倍福, 制造业自动化, 可编程逻辑控制器, 哈希传递, 定时控制, 工业互联网, 工业控制系统, 工业自动化, 工控安全, 有限状态机, 梯形图, 注塑成型, 注塑机, 状态机, 结构化文本, 自动化控制, 顺序控制