注塑机周边自动化工站
1. 设备简介
注塑加工中, 注塑机本体由整机厂家 (海天 / 震雄 / 泰德 / 住友 / 恩格尔等) 内置控制器, 但取件机械手 / 振盘 / 模内贴标 (IML) / 嵌件 / 水口剪切 / AOI 检测 / 码垛 等周边设备 通常由系统集成商单独配套。这些周边设备需要与注塑机精准握手, 并在多厂家、 多机型、多工艺之间做兼容。
本案例为某江苏消费电子外壳注塑工厂, 横跨海天 MA 系列 (国产)、震雄 Ai 系列、 住友 SE-EV (日系) 三大品牌共 40 台机, 由 Darra 平台统一周边控制, 通过标准 Euromap 67 硬线 或 Euromap 77 OPC UA 与主机握手。
主要工位流程 (以 IML 模内贴标为例):
- 注塑机开模到位 → 发 ZA2 信号
- 机械手带标签伸入模腔 → 放标签 (真空释放)
- 机械手退出 → 发 ZB1 "允许关模"
- 模具关闭 → 注塑 → 冷却 → 顶出 (ZA3)
- 机械手再次伸入 → 取件 (真空吸附) → 退出 → 发 ZB4 "允许顶退"
- 机械手把成品放到后道输送带 / 码垛台
- MES 记录 "机台 + 模号 + 批号 + 生产时间 + 周期"
关键能力: 握手周期 ≤ 10 ms (硬线), 取件 ≤ 2.5 s, IML ≤ 1.8 s, 机械手精度 ±0.1 mm, 支持 5 家以上注塑机品牌, 40 台站用同一模板项目。
2. 项目模块组成
| 层次 | 模块 | 职责 |
|---|---|---|
| 机械 | 3+1 轴机械手 | X/Y/Z 定位 + 旋转放件 |
| 机械 | 真空吸盘 | 零件吸附 (6 吸盘) + 标签吸附 (1 吸盘) |
| 机械 | 静电消除棒 | 消除塑件静电, 防止吸尘 |
| 机械 | 异物检测 | 超声 UB800 扫描模腔, 防压模 |
| 电气 | EtherCAT 主干 | 1ms, 伺服 + IO + 阀岛 |
| 电气 | EM67 24pin 硬线 | 与注塑机 Z 信号 (ZA/ZB/ZC) 互联, 10ms 级 |
| 电气 | OPC UA (EM77) | 与新式注塑机, 读取工艺参数 |
| 软件 | FB_Euromap67 | 内置硬线握手状态机 |
| 软件 | FB_IMMDriver | 多品牌注塑机协议切换 (Modbus/OPCUA/TCP) |
| 软件 | FB_IMLSequence | 模内贴标 10 状态时序库 |
| 软件 | 3D 插补工艺对象 | 机械手 X/Y/Z 直线插补 + 软限位 |
| 软件 | 配方引擎 | 模号参数 + 取件点 + IML 参数 |
| 软件 | DarraCloud | 40 台集中监控 |
3. 机械装配架构
装配要点:
- 机械手采用侧入式, X 轴沿注塑机纵向, Y 轴横向 (跨越模板)
- Z 轴长行程 600mm, 覆盖模腔深度
- 旋转轴用于"立放 ↔ 平放"切换, 便于后道码垛
- 真空吸盘分组: 零件组 (6 个 ZPT20 硅胶) + 标签组 (1 个 VP 软性)
- 静电消除棒悬挂在机械手末端, 每次取件前通电 50ms
- 异物检测探头固定在机械手入模路径上方
4. 程序架构
4.1 OB/FB 调用树
4.2 IML 状态机流转
任务调度:
- OB1 (1ms): 主状态机、EM67 逻辑、机械手运动、MES
- OB35 (500us): EM67 位级信号刷新 (硬线防抖)
- OB100: 机械手回零、伺服使能、EM67 握手初始化
5. 硬件 BOM (单站)
单位: 人民币, 2026 年 3 月长三角参考价。批量 40 套可压至 ¥38,000/套。
| 序号 | 分类 | 品牌 / 型号 | 规格 | 数量 | 单价 (¥) | 小计 (¥) |
|---|---|---|---|---|---|---|
| 1 | 工控机 | 研华 UNO-137 | i3-1215U / 8G / 256SSD 无风扇 | 1 | 5,800 | 5,800 |
| 2 | 触摸屏 | 威纶通 TK6071iP | 7" 电阻 | 1 | 1,600 | 1,600 |
| 3 | 机械手驱动 | 汇川 SV660N | EtherCAT 750W | 3 | 1,980 | 5,940 |
| 4 | 机械手电机 | 汇川 ISMH2-75C | 750W 带抱闸 | 3 | 1,520 | 4,560 |
| 5 | 旋转伺服 | 汇川 SV630N | 400W | 1 | 1,680 | 1,680 |
| 6 | 远程 IO | 汇川 AM600 CPU1608TP | 32DI + 24DO | 1 | 3,200 | 3,200 |
| 7 | Euromap 67 电缆 | 标准 24 pin 航插 | 符合 VDMA | 1 | 650 | 650 |
| 8 | 真空发生器 | SMC ZB0610 × 4 | 含真空开关 | 4 | 380 | 1,520 |
| 9 | 真空吸盘 | SMC ZPT20 × 6 + VP ×1 | 硅胶 + 软性 | 7 | 60 | 420 |
| 10 | 光电传感器 | 邦纳 BGS | 漫反射 M12 | 6 | 320 | 1,920 |
| 11 | 异物检测 | 倍加福 UB800 | 超声 | 1 | 1,200 | 1,200 |
| 12 | 电磁阀岛 | 亚德客 4V | EtherCAT 12 联 | 1 | 2,200 | 2,200 |
| 13 | 静电消除器 | SMC IZS30 | 棒状 | 1 | 980 | 980 |
| 14 | 安全继电器 | 西门子 3SK1 | Cat 3 PL d | 1 | 850 | 850 |
| 15 | 安全光幕 | 嘉准 JH-LG-900 | 16 光轴 | 1 | 1,600 | 1,600 |
| 16 | 工业交换机 | 研华 EKI-2525 | 5 口 | 1 | 980 | 980 |
| 17 | 机架 / 线缆 | 铝型材 2 m + 线束 | - | 1 | 3,800 | 3,800 |
| 18 | 机械手臂 | 外购标准 3kg 负载 | 800 mm 行程 | 1 | 9,800 | 9,800 |
| 合计 | ¥48,700 |
6. IO 模块配置 (IDE 操作流程)
6.1 选择 IO 模块
- 工程 → IO 设备向导 → 选 "EtherCAT 主站"
- 扫描从站: AM600 (节点 1), SV660N ×3 (节点 2~4, X/Y/Z), SV630N (节点 5, 旋转), 亚德客阀岛 (节点 6)
- 工程 → 机器人配置 → 新建 "Robot_Injection" (SCARA 4 轴)
- 工程 → 协议配置 →
- Euromap 67: 选择 AM600 DI/DO 映射 24 个信号 (VDMA 标准)
- Euromap 77 OPC UA: 填入注塑机 OPC UA Server 地址 (如
opc.tcp://192.168.1.10:4840)
- 工程 → 注塑机驱动 → 选择品牌模板 (Haitian / Chenhsong / Sumitomo), 自动配置读写节点
6.2 IO 地址分配表
| 模块 | 通道 | 地址 | 方向 | 类型 | 别名 | Euromap 信号 |
|---|---|---|---|---|---|---|
| AM600 DI | Ch0 | I0.0 | DI | BOOL | EM67_ZA1_MoldClosed | ZA1 |
| AM600 DI | Ch1 | I0.1 | DI | BOOL | EM67_ZA2_MoldOpen | ZA2 |
| AM600 DI | Ch2 | I0.2 | DI | BOOL | EM67_ZA3_EjectorFwd | ZA3 |
| AM600 DI | Ch3 | I0.3 | DI | BOOL | EM67_ZA4_EjectorBack | ZA4 |
| AM600 DI | Ch4 | I0.4 | DI | BOOL | EM67_ZC1_MachineEStop | ZC1 |
| AM600 DI | Ch8 | I1.0 | DI | BOOL | SEN_VacOK | (机械手侧) |
| AM600 DI | Ch9 | I1.1 | DI | BOOL | SEN_IMLLoaded | - |
| AM600 DI | Ch10 | I1.2 | DI | BOOL | SEN_PartOK | - |
| AM600 DI | Ch11 | I1.3 | DI | BOOL | SEN_ForeignMatter | - |
| AM600 DO | Ch0 | Q0.0 | DO | BOOL | EM67_ZB1_AllowClose | ZB1 |
| AM600 DO | Ch1 | Q0.1 | DO | BOOL | EM67_ZB3_AllowEject | ZB3 |
| AM600 DO | Ch2 | Q0.2 | DO | BOOL | EM67_ZB4_AllowEjectBack | ZB4 |
| AM600 DO | Ch3 | Q0.3 | DO | BOOL | EM67_ZC2_RobotEStop | ZC2 |
| AM600 DO | Ch8 | Q1.0 | DO | BOOL | ACT_VacPart | - |
| AM600 DO | Ch9 | Q1.1 | DO | BOOL | ACT_VacLabel | - |
| AM600 DO | Ch10 | Q1.2 | DO | BOOL | ACT_IonizerOn | - |
| SV660N_X | PDO | - | 轴 | AXIS_REF | AxisX | - |
| SV660N_Y | PDO | - | 轴 | AXIS_REF | AxisY | - |
| SV660N_Z | PDO | - | 轴 | AXIS_REF | AxisZ | - |
| SV630N_R | PDO | - | 轴 | AXIS_REF | AxisRot | - |
6.3 IO 用途分工
| 组别 | 用途 | 参与设备 |
|---|---|---|
| Euromap 67 输入 | 注塑机机械状态 (关/开/顶进/顶退) | ZA1/ZA2/ZA3/ZA4/ZC1 |
| Euromap 67 输出 | 机械手权限 (允许关/允许顶进/顶退/急停) | ZB1/ZB3/ZB4/ZC2 |
| 机械手感知 | 真空确认、标签装载、零件就位、异物 | SEN_VacOK/IMLLoaded/PartOK/ForeignMatter |
| 机械手执行 | 零件真空、标签真空、静电消除 | ACT_VacPart/VacLabel/IonizerOn |
| 运动控制 | X/Y/Z/旋转 四轴 | AxisX/Y/Z/Rot |
| 可选 EM77 | 新式注塑机工艺参数 | OPC UA Client (压力/温度/周期数) |
6.4 数据绑定到机器人
Darra 把 4 轴绑定为SCARA 机器人 "Robot_Injection", 所有运动指令走机器人接口:
(* 机器人点位定义 (从配方加载) *)
Robot.HomePos := Pose(0, 0, 0, 0);
Robot.IMLStackPos := Pose(CurRecipe.LabelX, CurRecipe.LabelY, CurRecipe.LabelZ, 0);
Robot.IMLInsertPos := Pose(CurRecipe.MoldX, CurRecipe.MoldY, CurRecipe.IMLZ, 0);
Robot.PickPos := Pose(CurRecipe.MoldX, CurRecipe.MoldY, CurRecipe.PickZ, 0);
Robot.DropPos := Pose(CurRecipe.DropX, CurRecipe.DropY, CurRecipe.DropZ,
CurRecipe.DropRot);
(* 带软限位的 3D 插补 *)
Robot.MoveL(Target := Robot.PickPos, Vel := 2500, Acc := 15000);
绑定规则 (在 IDE "机器人配置" 里):
| Robot 通道 | Darra 轴 | 物理对应 | 软限位 |
|---|---|---|---|
| J1 | SV660N 节点 2 (X) | 横走 | [-50, MoldBoundary-5] mm |
| J2 | SV660N 节点 3 (Y) | 纵走 | [0, 500] mm |
| J3 | SV660N 节点 4 (Z) | 升降 | [-600, 10] mm |
| J4 | SV630N 节点 5 (旋转) | 零件朝向 | [-180, 180] ° |
7. 核心数据结构 UDT + DB
// 注塑周期 UDT
TYPE UDT_MoldCycle :
STRUCT
CycleID : UDINT;
MachineID : STRING[16];
MoldID : STRING[16];
LotNo : STRING[32];
CycleStart : DT;
MoldClosedT : DT;
MoldOpenedT : DT;
PartPickedT : DT;
LabelPlacedT : DT;
CycleTime_ms : UDINT;
Success : BOOL;
PartCount : USINT; // 一模几腔
ErrorCode : UINT;
END_STRUCT
END_TYPE
// 注塑机状态 UDT
TYPE UDT_IMMStatus :
STRUCT
Brand : STRING[16];
InjectionPress : REAL; // 注射压力 MPa
MeltTemp : REAL; // 熔体温度 ℃
CycleCount : UDINT;
AlarmCode : UINT;
Connected : BOOL;
END_STRUCT
END_TYPE
// 配方 UDT (模号对应)
TYPE UDT_Recipe :
STRUCT
MoldID : STRING[16];
MachineBrand : STRING[16];
LabelX, LabelY, LabelZ : LREAL; // 标签取放点
MoldX, MoldY : LREAL; // 模腔中心
IMLZ, PickZ : LREAL; // IML/取件 Z 深度
DropX, DropY, DropZ : LREAL; // 后道放置
DropRot : LREAL;
PartCount : USINT;
END_STRUCT
END_TYPE
VAR_GLOBAL
Cur : UDT_MoldCycle;
IMM : UDT_IMMStatus;
CurRecipe : UDT_Recipe;
END_VAR
8. 核心程序代码
8.1 Euromap 67 握手 + IML 主状态机
PROGRAM PRG_IMLMain
VAR
State : INT := 0;
TON_t : TON;
EM67 : FB_Euromap67; (* Darra 内置 *)
Robot : FB_RobotMotion;
END_VAR
EM67(
ZA1 := EM67_ZA1_MoldClosed,
ZA2 := EM67_ZA2_MoldOpen,
ZA3 := EM67_ZA3_EjectorFwd,
ZA4 := EM67_ZA4_EjectorBack,
ZC1 := EM67_ZC1_MachineEStop,
ZB1 => EM67_ZB1_AllowClose,
ZB3 => EM67_ZB3_AllowEject,
ZB4 => EM67_ZB4_AllowEjectBack,
ZC2 => EM67_ZC2_RobotEStop
);
CASE State OF
0: (* 等开模完成 *)
IF EM67.MoldOpen AND NOT EM67.EStop THEN
Cur.CycleID := Cur.CycleID + 1;
Cur.CycleStart := DT#NOW;
Cur.MoldOpenedT := DT#NOW;
Cur.MoldID := CurRecipe.MoldID;
Cur.LotNo := MES.CurrentLot;
State := 1;
END_IF
1: (* IML 取标签 *)
Robot.MoveL(Target := Pose(CurRecipe.LabelX, CurRecipe.LabelY, CurRecipe.LabelZ, 0),
Vel := 2500, Acc := 15000);
IF Robot.Done THEN
ACT_VacLabel := TRUE;
TON_t(IN := TRUE, PT := T#100ms);
IF TON_t.Q AND SEN_IMLLoaded THEN
TON_t(IN := FALSE);
State := 2;
END_IF
END_IF
2: (* 放标签到模腔 *)
Robot.MoveL(Target := Pose(CurRecipe.MoldX, CurRecipe.MoldY, CurRecipe.IMLZ, 0),
Vel := 1500, Acc := 10000);
IF SEN_ForeignMatter THEN
State := 99; (* 异物停机 *)
ELSIF Robot.Done THEN
ACT_VacLabel := FALSE; (* 释放标签 *)
Cur.LabelPlacedT := DT#NOW;
State := 3;
END_IF
3: (* 退出, 允许关模 *)
Robot.MoveL(Target := Robot.HomePos, Vel := 2500, Acc := 15000);
IF Robot.Done THEN
EM67.AllowClose := TRUE; (* ZB1 *)
State := 4;
END_IF
4: (* 等模具关闭 + 注塑 + 顶针进 *)
IF EM67.MoldClosed THEN
Cur.MoldClosedT := DT#NOW;
END_IF
IF EM67.EjectorFwd THEN
State := 5;
END_IF
5: (* 取件: 伸入模腔 *)
Robot.MoveL(Target := Pose(CurRecipe.MoldX, CurRecipe.MoldY, CurRecipe.PickZ, 0),
Vel := 2000, Acc := 15000);
IF SEN_ForeignMatter THEN
State := 99;
ELSIF Robot.Done THEN
ACT_VacPart := TRUE;
TON_t(IN := TRUE, PT := T#150ms);
IF TON_t.Q AND SEN_VacOK THEN
TON_t(IN := FALSE);
Cur.PartPickedT := DT#NOW;
EM67.AllowEjectBack := TRUE; (* ZB4 *)
State := 6;
END_IF
END_IF
6: (* 退出, 放到后道 *)
Robot.MoveL(Target := Pose(CurRecipe.DropX, CurRecipe.DropY, CurRecipe.DropZ,
CurRecipe.DropRot), Vel := 2500, Acc := 15000);
IF Robot.Done THEN
ACT_VacPart := FALSE;
Cur.CycleTime_ms := UDINT(DT#NOW - Cur.CycleStart);
Cur.Success := TRUE;
MES.UploadCycle(Cur);
Robot.MoveL(Target := Robot.HomePos, Vel := 2500, Acc := 15000);
State := 0;
END_IF
99: (* 异物 / 真空失败, 紧急停 *)
EM67.RobotEStop := TRUE;
Robot.Stop();
Alarm(9001, '周期异常停机');
(* 等操作员复位 *)
END_CASE
END_PROGRAM
8.2 多品牌注塑机协议桥接
FUNCTION_BLOCK FB_IMMDriver
VAR_INPUT
Brand : STRING[16]; (* "Haitian" / "Chenhsong" / "Sumitomo" / "Engel" / "Yizumi" *)
Enable : BOOL;
END_VAR
VAR_OUTPUT
Status : UDT_IMMStatus;
Connected : BOOL;
END_VAR
VAR
Modbus_Haitian : FB_Haitian_Modbus;
OPCUA_Chenhsong : FB_Chenhsong_OPCUA;
TCP_Sumitomo : FB_Sumitomo_TCP;
OPCUA_Engel : FB_Engel_EM77;
Modbus_Yizumi : FB_Yizumi_Modbus;
END_VAR
CASE Brand OF
'Haitian':
Modbus_Haitian(Enable := Enable);
Status := Modbus_Haitian.Status;
'Chenhsong':
OPCUA_Chenhsong(Enable := Enable);
Status := OPCUA_Chenhsong.Status;
'Sumitomo':
TCP_Sumitomo(Enable := Enable);
Status := TCP_Sumitomo.Status;
'Engel':
OPCUA_Engel(Enable := Enable);
Status := OPCUA_Engel.Status;
'Yizumi':
Modbus_Yizumi(Enable := Enable);
Status := Modbus_Yizumi.Status;
END_CASE
Connected := Status.Connected;
END_FUNCTION_BLOCK
8.3 机械手 3D 插补 + 软限位
(* 三轴直线插补 - Darra 内置工艺对象 *)
MC_MoveLinearAbsolute3D(
AxisX := AxisX,
AxisY := AxisY,
AxisZ := AxisZ,
Position := Point3D(CurRecipe.MoldX, CurRecipe.MoldY, CurRecipe.PickZ),
Velocity := 2500.0,
Acceleration := 15000.0,
Jerk := 80000.0
);
(* 动态软限位: 模腔边界距离根据模号变化 *)
MC_SoftLimit(
Axis := AxisX,
Min := -50.0,
Max := CurRecipe.MoldBoundary_X - 5.0
);
8.4 Euromap 77 OPC UA 读取工艺参数 (可选)
(* 新式注塑机支持 EM77, 可读更多工艺数据 *)
IF UseEuromap77 THEN
IMM.InjectionPress := OPCUA.Read('ns=2;s=IMM.InjPress');
IMM.MeltTemp := OPCUA.Read('ns=2;s=IMM.MeltTemp');
IMM.CycleCount := OPCUA.Read('ns=2;s=IMM.CycleCount');
(* MES 数据更丰富, 可做 SPC 趋势分析 *)
END_IF
9. 运行与调试
9.1 上电启动流程
OB100初始化: 伺服使能 → 机械手回零 (Z 先抬起 → X/Y 回零)- EM67 信号自检:
ZA1~ZA4初始状态读取,ZC1急停链确认 FB_IMMDriver根据配方的MachineBrand启动对应协议驱动- HMI 显示 "准备就绪", 等操作员按 "启动"
9.2 调试要点
| 环节 | 调试方法 |
|---|---|
| EM67 信号延迟 | 示波器同时观察机台 ZA2 和 AM600 I0.1, 应 < 10ms |
| 机械手进入模腔精度 | 试模时关激光闭环, 慢速进入, 确认不碰模 |
| IML 标签吸附 | 标签太薄 → 减真空度; 标签偏 → 调吸盘对位 |
| 异物检测灵敏度 | UB800 灵敏度电位器, 放 5mm 金属片可检出 |
| 多品牌切换 | HMI "机型选择" → 配方自动切换协议 + 轴参数 |
| 周期节拍 | HMI 显示 "上周期/均值/最短/最长", 找瓶颈 |
| 断网恢复 | MES 上传队列持久化 SQLite, 恢复后自动补传 |
9.3 HMI 画面 (6 页)
- 主界面: EM67 信号状态灯 + 机械手轨迹图 + 产量计数
- 时序示波器: 1s 窗口, 显示 ZA/ZB 信号波形 (调试握手死锁用)
- 配方: 模号切换 + 点位微调 + 真空/延时参数
- 报警: 最近 200 条报警, 按严重度过滤
- MES: 最近 50 条上传记录 + 离线队列大小
- 远程维护: DarraSync 状态 + 厂家接入日志
9.4 日志位置
| 日志 | 路径 |
|---|---|
| PLC 日志 | Darra IDE → 日志窗口 (IMLMain / Euromap67 / IMMDriver) |
| EM67 时序录波 | D:/DarraPLC/logs/em67_waveform_*.csv |
| MES 队列 | D:/DarraPLC/queue/mes_mold.db |
| DarraCloud 40 站 | Cloud 控制台 "机台监控" 页 |
10. Darra 功能对照表
| 需求 | Darra 对应功能 | 说明 |
|---|---|---|
| Euromap 67 硬线握手 | FB_Euromap67 内置 FB | 即拖即用 |
| Euromap 77 OPC UA | 内置 OPC UA Client | 免 TF6100 授权 |
| 海天 Modbus | FB_Haitian_Modbus | 预置驱动 |
| 震雄 OPC UA | FB_Chenhsong_OPCUA | 预置驱动 |
| 住友 TCP | FB_Sumitomo_TCP | 预置驱动 |
| 恩格尔 EM77 | FB_Engel_EM77 | 预置驱动 |
| 伊之密 Modbus | FB_Yizumi_Modbus | 预置驱动 |
| 机械手 3D 插补 | MC_MoveLinearAbsolute3D + 软限位 | 工艺对象 |
| IML 时序库 | FB_IMLSequence | 10 状态模板 |
| 模板化工程 | 配方 + 模板克隆 + Git 版本化 | IDE 内置 |
| MES 对接 | OPC UA / REST + SQLite 离线 | 内置 |
| DarraCloud | 40 台集中监控 | 云侧功能 |
| 配方管理 | JSON + 在线切换 | 内置 |
| 远程维护 | DarraSync 加密隧道 | 厂家远程调机 |
11. 项目总结
11.1 交付成果
- 单模周期: 从 32 s 降至 28 s (IML + 取件合并后), 提产 14%
- 握手延迟: EM67 硬线实测 4~6 ms (目标 ≤ 10 ms)
- 40 站改造周期: 5.5 个月 (同模板复制, 新增站 2~3 天)
- MTBF: 从 45 小时提升到 240 小时
- 备件收敛: 28 种混杂备件 → 3 种 (SV660N / AM600 / Darra 工控机)
11.2 关键技术点
- EM67 + EM77 双通道: 老式机台用硬线, 新式机台用 OPC UA, 同模板支持
- 多品牌驱动库: Haitian/Chenhsong/Sumitomo/Engel/Yizumi 预置,
FB_IMMDriver根据 Brand 字段自动切换 - IML 10 状态时序库: 覆盖 "取标 → 放标 → 允许关模 → 等注塑 → 取件 → 允许顶退 → 放件"
- 机械手 3D 插补:
MC_MoveLinearAbsolute3D+ 动态软限位, 避免撞模 - 模板化工程: 40 站同模板, 新机型只改配方 + 协议选择
11.3 后续扩展方向
- 注塑 + 喷涂联线: 注塑后直接机器人喷涂, 省搬运
- DarraCloud 集团版: 3 个工厂 120 台注塑机集中监控
- AI 工艺助手: 基于历史模号参数推荐新模开模首模参数
Darra 平台的 Euromap 67 / 77 内置 + 多品牌驱动 + 统一模板化工程, 让注塑周边从 "每台一个样" 变成 "40 台一个样", 这是传统 PLC 无法企及的标准化红利。