跳到主要内容

冲压自动化生产线

1. 设备简介

冲压是金属制品 (汽车覆盖件、家电外壳、电器五金、屏蔽罩) 行业的核心成形工艺。 自动化冲压线通常由 "开卷机 → 矫平机 → 送料机 → 冲床 (多台连线) → 出料台" 组成, 关键指标是 冲次/分钟 (SPM)送料精度

本案例为某山东家电外壳供应商的 2000 吨闭式冲床生产线, 由 Darra 平台把 开卷 / 矫平 / 送料 / 飞剪 / 两台冲床协同全部统一到一套控制器。核心工艺是 虚轴 + 电子凸轮 + 飞剪 + 张力控制四大工艺对象的组合应用。

主要工位流程:

  1. 开卷机卷料展开 → 张力伺服闭环 (根据卷径自适应)
  2. 矫平机三辊伺服, 辊距随板厚 1.2mm 动态调整
  3. 送料伺服跟随虚拟主轴 (电子齿轮 1:1), 每次推进 420mm
  4. 飞剪伺服在送料不停机的前提下切断 2500mm 长板
  5. 两台冲床伺服跟随虚轴 (电子凸轮), 冲床 B 相位偏移 180° 错峰冲击
  6. 每冲记录吨位曲线 + 能耗 + 模具计数 → MES

关键能力: 40 SPM, 送料精度 ±0.15 mm, 飞剪精度 ±0.3 mm, 主从冲床同步误差 < 0.5°, 张力波动 ≤ ±3%, 换模 ≤ 8 分钟。


2. 项目模块组成

层次模块职责
机械开卷机卷料展开, 张力伺服闭环
机械矫平机三辊伺服, 消除板料应力
机械送料机伺服推进, 跟随虚轴
机械飞剪切断瞬间速度匹配, 不停机
机械冲床 A/B2000T 闭式冲床, 相位错峰
电气EtherCAT 主干1ms, 7 个伺服 + 2 个编码器 + IO + 电能表
电气张力 + 卷径检测张力传感器 4~20mA + 激光卷径
电气安全 Cat 4双手启动 + 光幕 + 皮尔兹继电器
软件虚轴VirtMaster 恒速源, 40 SPM × 420mm = 16800 mm/min
软件电子齿轮送料跟随虚轴 1:1
软件电子凸轮冲床 A/B 各一张凸轮表, B 相位偏移 180°
软件飞剪FB_FlyingShear 处理切断瞬间速度匹配
软件张力控制FB_TensionControl + 卷径自适应 PID
软件OEM 冲床协议小松 / 会田 / 扬锻 / 徐锻 预置
软件能源模块每台电机 / 电能表数据汇总, 每万件能耗 kWh

3. 机械装配架构

装配要点:

  • 开卷机卷径激光 (倍加福 VDM28) 实时测量, 用于张力 PID 的卷径补偿
  • 矫平机三辊间距可伺服调整 (板厚 ≥ 1.0mm 用粗档, < 1.0mm 用细档)
  • 送料辊用 1000 ppr 编码器, 精度 0.1mm/脉冲
  • 飞剪刀架采用双导轨 + 气动压料, 切断瞬间 160ms 完成
  • 两台冲床纵向间距 = 送料步距整数倍 (实际 2×420=840mm)
  • 冲床下止点 (BDC) 用绝对值编码器, 机械角度 0°=TDC, 180°=BDC
  • 皮尔兹 PSENopt II 安全光幕 Cat 4 PL e 保护冲床前方

4. 程序架构

4.1 OB/FB 调用树

4.2 主状态机流转

任务调度:

  • OB1 (1ms): 主状态机、飞剪调度、MES、配方切换
  • OB35 (250us): 安全光幕 + 双手启动监控 + BDC 硬件锁存
  • OB100: 虚轴 + 凸轮 + 电子齿轮初始化

5. 硬件 BOM

单位: 人民币, 2026 年 3 月山东参考价。

序号分类品牌 / 型号规格数量单价 (¥)小计 (¥)
1工控机研华 ARK-3520Pi7-8700T / 16G / 512SSD112,80012,800
2操作员屏昆仑通态 MCGS 17"1280×1024 电容13,2003,200
3送料伺服汇川 SV820NEtherCAT 5.5kW18,8008,800
4送料电机汇川 ISMH3-555.5kW 2500ppr15,6005,600
5开卷伺服汇川 SV820N3.7kW16,8006,800
6矫平伺服汇川 SV660N1.5kW33,2009,600
7飞剪伺服汇川 SV820N7.5kW111,20011,200
8大功率电机汇川 ISMH5/7.5kW36,50019,500
9冲床编码器库伯勒 8.5000绝对值 EtherCAT22,8005,600
10卷径检测倍加福 VDM28激光距离13,2003,200
11张力传感器TEAC TC-LCT500 kg ×222,6005,200
12远程 IO汇川 AM600 CPU1608TP64DI+64DO+8AI+4AO24,2008,400
13光电 / 接近邦纳 / 欧姆龙多种202805,600
14电能表安科瑞 DTSD1352EtherCAT 3 相41,4505,800
15电磁阀 / 气动件SMC / 亚德客气缸 + 阀岛16,8006,800
16冲床安全接口西门子 3SK + 接触器Cat 418,2008,200
17安全光幕皮尔兹 PSENopt IICat 4 PL e25,80011,600
18工业交换机华三 S1224F24 口千兆11,8001,800
19UPS山特 C6K6kVA15,2005,200
20机柜 / 线缆威图 + 动力电缆-122,00022,000
21双手启动按钮皮尔兹 PITestopCat 421,6003,200
合计¥170,100

6. IO 模块配置 (IDE 操作流程)

6.1 选择 IO 模块

  1. 工程 → IO 设备向导 → "EtherCAT 主站"
  2. 扫描从站: AM600 ×2 (节点 12), SV820N ×3 (节点 35: 送料/开卷/飞剪), SV660N ×3 (节点 68: 矫平), 库伯勒编码器 ×2 (节点 910), 电能表 ×4 (节点 11~14)
  3. 工程 → 工艺对象 → 创建:
    • VirtMaster (虚拟主轴, 速度源模式)
    • AxisFeed / AxisUnwind / AxisShear (绑定对应伺服)
    • AxisPunchA / AxisPunchB (外部编码器轴, 绑定库伯勒)
    • CamTab_PunchA / CamTab_PunchB / CamTab_Shear (电子凸轮表)
  4. 工程 → 协议配置 → 冲床 OEM 驱动选择 (Komatsu / Aida / Yangduan)

6.2 IO 地址分配表

模块通道地址方向类型别名
AM600_1 DICh0I0.0DIBOOLSEN_MatEnd (料尾)
AM600_1 DICh1I0.1DIBOOLSEN_CoilOK (开卷到位)
AM600_1 DICh2I0.2DIBOOLSEN_FeedAtHome
AM600_1 DICh3I0.3DIBOOLSEN_PunchA_BDC (冲床 A 下止点)
AM600_1 DICh4I0.4DIBOOLSEN_PunchB_BDC
AM600_1 DICh5I0.5DIBOOLSEN_SafetyOK
AM600_1 DICh6I0.6DIBOOLSEN_DoubleStart1
AM600_1 DICh7I0.7DIBOOLSEN_DoubleStart2
AM600_1 DOCh0Q0.0DOBOOLACT_UnwindBrake
AM600_1 DOCh1Q0.1DOBOOLACT_PunchA_Go
AM600_1 DOCh2Q0.2DOBOOLACT_PunchB_Go
AM600_1 DOCh3Q0.3DOBOOLACT_ShearEnable
AM600_1 DOCh4Q0.4DOBOOLACT_Oiler
AM600_1 AOCh0AQ0AOREALTensionSet_A (4~20mA)
AM600_1 AICh0AI0AIREALTensionFB_A
AM600_1 AICh1AI1AIREALTensionFB_B
AM600_1 AICh2AI2AIREALCoilDiameter (卷径 mm)
AM600_1 AICh3AI3AIREALTonnageAI_A (吨位传感器)
AM600_1 AICh4AI4AIREALTonnageAI_B
SV820N_FeedPDO-AXIS_REFAxisFeed
SV820N_UnwPDO-AXIS_REFAxisUnwind
SV820N_ShrPDO-AXIS_REFAxisShear
SV660N_Lv1~3PDO-AXIS_REFAxisLevel1~3
Kuebler_APDO-外部编码器AXIS_REFAxisPunchA
Kuebler_BPDO-外部编码器AXIS_REFAxisPunchB
DTSD1352_×4PDO-电能表-KWH_Feed/Punch/Total

6.3 IO 用途分工

组别用途参与设备
物料感知料尾 / 卷到位 / 送料原点SEN_MatEnd / CoilOK / FeedAtHome
冲床监控下止点 + 吨位 AISEN_PunchA/B_BDC, TonnageAI_A/B
张力4~20mA 反馈 + 激光卷径TensionFB_A/B, CoilDiameter
安全回路Cat 4 双手启动 + 光幕SEN_SafetyOK, DoubleStart1/2
执行机构开卷制动、冲床启动、飞剪、润滑ACT_UnwindBrake / PunchA_Go / ShearEnable / Oiler
能源监控每台电机能耗EtherCAT 电能表 ×4
运动同步虚轴/送料/飞剪/冲床编码器VirtMaster, AxisFeed, AxisShear, AxisPunchA/B

6.4 数据绑定到机器人/运动组

本工站无独立机器人, 但冲床下料后可选挂码垛机器人 (选配)。送料+飞剪+冲床 4 个运动实体在 Darra 里构成**"运动组" (Motion Group)**:

(* 运动组定义 *)
Group.Master := VirtMaster;
Group.Slaves[1] := AxisFeed; (* 电子齿轮 *)
Group.Slaves[2] := AxisPunchA; (* 电子凸轮 *)
Group.Slaves[3] := AxisPunchB; (* 电子凸轮 +180° *)
Group.Slaves[4] := AxisShear; (* 飞剪 *)

(* 启停整组 *)
Group.Start(); (* 所有从轴同时入组 *)
Group.Stop(); (* 同时退组, 平滑减速 *)

绑定规则 (IDE "运动组配置"):

从轴主轴关系配置文件
AxisFeed电子齿轮 1:1gear_feed.cfg
AxisPunchA电子凸轮 (0~360° 下行-上行)cam/punchA.cam
AxisPunchB电子凸轮 +180° 相位cam/punchB_180phase.cam
AxisShear飞剪凸轮 (90150° 切断, 150360° 回零)cam/shear_fly.cam

7. 核心数据结构 UDT + DB

// 单次冲压周期 UDT
TYPE UDT_StampCycle :
STRUCT
PartID : UDINT;
MoldID : STRING[16];
FeedLen_mm : LREAL;
FeedErr_mm : LREAL; // 送料误差
Tonnage_kN : REAL; // 实际吨位
PunchTime_ms : UDINT;
SPM_Actual : REAL;
Energy_Wh : REAL;
Success : BOOL;
END_STRUCT
END_TYPE

// 产线累计指标 UDT
TYPE UDT_LineMetric :
STRUCT
TotalParts : UDINT;
RejectCount : UDINT;
Tonnage_Avg : REAL;
Tonnage_Max : REAL;
EnergyCum_kWh: REAL;
Coil_No : STRING[16];
Coil_Len_m : REAL;
Coil_Wt_kg : REAL;
END_STRUCT
END_TYPE

// 模具配方 UDT
TYPE UDT_MoldConfig :
STRUCT
MoldID : STRING[16];
FeedStep_mm : LREAL; // 送料步距 (常用 420mm)
CutLength_mm : LREAL; // 飞剪长度 (常用 2500mm)
TargetSPM : REAL;
MaxTonnage : REAL; // 吨位保护上限
LifeWarn : UDINT; // 寿命预警冲次
LifeMax : UDINT; // 寿命强制停止冲次
TensionTarget : REAL; // 张力目标 N
CamFileA, CamFileB, CamFileShear : STRING[32];
PunchBrand : STRING[16]; // "Komatsu" / "Aida" / ...
END_STRUCT
END_TYPE

VAR_GLOBAL
CurCycle : UDT_StampCycle;
LineMetric : UDT_LineMetric;
MoldConfig : UDT_MoldConfig;
PunchCounter : UDINT;
END_VAR

8. 核心程序代码

8.1 虚轴 + 多冲床电子凸轮 + 电子齿轮

PROGRAM PRG_Init
VAR
VirtMaster : AXIS_REF;
AxisFeed : AXIS_REF;
AxisPunchA : AXIS_REF;
AxisPunchB : AXIS_REF;
AxisShear : AXIS_REF;
AxisUnwind : AXIS_REF;
END_VAR

(* 虚拟主轴恒速: 40 SPM × 420 mm/次 = 16,800 mm/min *)
MC_SetTargetVelocity(
Axis := VirtMaster,
Velocity := MoldConfig.TargetSPM * MoldConfig.FeedStep_mm
);

(* 送料跟随虚轴 (电子齿轮 1:1) *)
MC_GearIn(
MasterAxis := VirtMaster,
SlaveAxis := AxisFeed,
RatioNumerator := 1,
RatioDenominator := 1
);

(* 冲床 A 电子凸轮 *)
MC_CamTableSelect(
MasterAxis := VirtMaster,
SlaveAxis := AxisPunchA,
CamTable := MoldConfig.CamFileA
);
MC_CamIn(VirtMaster, AxisPunchA, StartMode := ABSOLUTE);

(* 冲床 B 电子凸轮 (相位偏移 180°, 错峰冲击) *)
MC_CamTableSelect(VirtMaster, AxisPunchB, MoldConfig.CamFileB);
MC_CamIn(VirtMaster, AxisPunchB, StartMode := ABSOLUTE);

8.2 飞剪工艺对象

PROGRAM PRG_FlyShear
VAR
FlyShear : FB_FlyingShear; (* Darra 内置 *)
CumFeed : LREAL;
END_VAR

FlyShear(
MasterAxis := AxisFeed, (* 送料主 *)
SlaveAxis := AxisShear, (* 刀具从 *)
CutLength := MoldConfig.CutLength_mm,
CutSpeed := 2800.0, (* 切刀线速 mm/s *)
ReturnSpeed := 5000.0, (* 快速回零 *)
Enable := ACT_ShearEnable,
Done => CutDone,
Error => CutError,
ActualCutPos => LastCutPos
);

(* 累计送料长度, 触发 MES *)
CumFeed := CumFeed + AxisFeed.DeltaPos;
IF FlyShear.CutDone THEN
LineMetric.TotalParts := LineMetric.TotalParts + 1;
CurCycle.FeedLen_mm := MoldConfig.CutLength_mm;
CurCycle.FeedErr_mm := FlyShear.ActualCutPos - MoldConfig.CutLength_mm;
IF ABS(CurCycle.FeedErr_mm) > 0.5 THEN
Alarm(4001, '飞剪偏差超限');
END_IF
MES.UploadCycle(CurCycle);
END_IF

8.3 张力工艺对象 (卷径自适应)

PROGRAM PRG_Tension
VAR
Tension : FB_TensionControl; (* Darra 内置 *)
CoilDia : LREAL;
END_VAR

(* 卷径激光实时读取 (mm) *)
CoilDia := CoilDiameter_AI * 10.0;

Tension(
UnwindAxis := AxisUnwind,
TargetForce_N := MoldConfig.TensionTarget,
FeedbackForce := AIToForce(TensionFB_A),
CoilDiameter := CoilDia, (* 卷径补偿 *)
Kp := 2.4, Ki := 0.8, Kd := 0.05,
Output => TensionSet_A
);

(* 剩余料长估算 (用于提前换卷) *)
LineMetric.Coil_Len_m := EstimateRemainLen(CoilDia, MoldConfig.FeedStep_mm);
IF LineMetric.Coil_Len_m < 10.0 THEN
Alarm(5001, '料尾接近, 准备换卷');
END_IF

8.4 冲床吨位 + 模具寿命

PROGRAM PRG_ToolLife
VAR
TonnageNow : REAL;
PunchATrig : R_TRIG;
END_VAR

PunchATrig(CLK := SEN_PunchA_BDC);
IF PunchATrig.Q THEN
PunchCounter := PunchCounter + 1;
TonnageNow := AIToTonnage(TonnageAI_A);
CurCycle.Tonnage_kN := TonnageNow;
CurCycle.PunchTime_ms := UDINT(DT#NOW - CurCycle.CycleStart);
CurCycle.Energy_Wh := KWH_Punch.DeltaEnergy;

LineMetric.Tonnage_Max := MAX(LineMetric.Tonnage_Max, TonnageNow);
LineMetric.Tonnage_Avg := (LineMetric.Tonnage_Avg * 0.99) + (TonnageNow * 0.01);

IF TonnageNow > MoldConfig.MaxTonnage THEN
Alarm(3001, '吨位超限');
State := STATE_STOP;
END_IF

IF PunchCounter >= MoldConfig.LifeWarn THEN
Alarm(3002, '模具接近寿命, 请准备换模');
END_IF

IF PunchCounter >= MoldConfig.LifeMax THEN
Alarm(3003, '模具寿命到, 停机');
State := STATE_STOP;
END_IF
END_IF

8.5 冲床 OEM 协议桥接

FUNCTION_BLOCK FB_PunchOEMDriver
VAR_INPUT
Brand : STRING[16]; (* "Komatsu" / "Aida" / "Yangduan" / "Xuduan" *)
Enable : BOOL;
END_VAR
VAR_OUTPUT
BDC_Sig : BOOL;
TDC_Sig : BOOL;
Tonnage_kN: REAL;
Temp_C : REAL; (* 离合器温度 *)
Ready : BOOL;
Alarm : UINT;
END_VAR
VAR
Komatsu : FB_Komatsu_Modbus;
Aida : FB_Aida_EthernetIP;
Yduan : FB_Yangduan_ModbusTCP;
Xduan : FB_Xuduan_ModbusTCP;
END_VAR

CASE Brand OF
'Komatsu': Komatsu(Enable := Enable); (* ... *)
'Aida': Aida(Enable := Enable);
'Yangduan': Yduan(Enable := Enable);
'Xuduan': Xduan(Enable := Enable);
END_CASE
END_FUNCTION_BLOCK

9. 运行与调试

9.1 上电启动流程

  1. OB100 初始化: 虚轴启动 (恒速 0) + 送料/飞剪/冲床 A/B 入凸轮 / 齿轮
  2. 张力 PID 启动, 等反馈稳定 (3 秒)
  3. 卷径激光校准: 初始卷径写入 Recipe
  4. 安全回路自检: 光幕 + 急停 + 双手按钮逐一确认
  5. HMI 按 "启动", 虚轴逐步加速到目标 SPM

9.2 调试要点

环节调试方法
凸轮曲线IDE CAM Editor 可视化, 检查峰加速度 < 伺服能力
虚轴加减速首次启动用 1 SPM 低速, 逐步提高到 40 SPM, 观察各从轴跟随误差
飞剪精度试切 50 片, 千分尺测长度, 期望 ±0.3mm 内
张力稳定HMI 张力曲线, 卷径变化时波动应 < ±3%
两冲床同步示波器同时观察 BDC_A 和 BDC_B, 相位差应稳定 180° ±0.5°
模具寿命每次换模 HMI 清零 PunchCounter, 到 LifeWarn 提前 10% 预警
能耗每万件 kWh 对比基准, 波动 > 10% 检查润滑/模具间隙

9.3 HMI 画面

  1. 主界面: 虚轴速度仪表 + SPM 实时 + 班产计数 + 张力曲线
  2. 凸轮曲线: A/B 冲床凸轮实时运行轨迹, 同步误差红线
  3. 吨位监控: 最近 100 次吨位柱状图 + SPC 控制限
  4. 能源: 每台电机实时功率 + 日/周/月能耗
  5. 模具: 冲次累计 + 寿命进度条 + 换模历史
  6. 报警: 按等级过滤, 可导出 CSV
  7. 配方: 模号切换 + 参数微调 + Git 版本

9.4 日志位置

日志路径
PLC 日志Darra IDE 日志窗口 (StampMain / FlyingShear / Tension)
凸轮跟随误差D:/DarraPLC/logs/cam_error_*.csv (每 10ms 记录)
吨位历史D:/DarraPLC/history/tonnage.sqlite
MES 队列D:/DarraPLC/queue/mes_stamp.db
能耗报表D:/DarraPLC/energy/monthly_*.csv

10. Darra 功能对照表

需求Darra 对应功能说明
虚轴同步MC_SetTargetVelocity + VirtMaster工艺对象
电子齿轮MC_GearIn 1:1工艺对象
电子凸轮MC_CamTableSelect + MC_CamIn工艺对象, 双凸轮独立
飞剪FB_FlyingShear 内置切断瞬间速度匹配, 快回
张力控制FB_TensionControl + 卷径补偿内置 PID
外部编码器库伯勒 EtherCAT 绝对值 → 轴工艺对象
冲床 OEM 协议FB_PunchOEMDriver (Komatsu/Aida/Yangduan/Xuduan)预置
吨位 SPCHMI 趋势图 + 控制限内置
模具寿命冲次累计 + 阈值报警内置
能源管理电能表 EtherCAT + Energy 模块内置
MES 对接OPC UA / REST + SQLite 离线内置
HMIDarra HMI Designer静态按钮
安全 Cat 4外接皮尔兹 PNOZ, Darra 不做安全 PLC-
远程运维DarraSync24×7 厂家接入

11. 项目总结

11.1 交付成果

  • 冲次: 实际 42 SPM, 超目标 (40) 5%
  • 送料精度: ±0.12 mm (目标 0.15)
  • 飞剪精度: ±0.22 mm (目标 0.30)
  • 两冲床同步: 相位差 ±0.3° (目标 < 0.5°)
  • 张力波动: ±2.4% (目标 ≤ 3%)
  • 每万件能耗: 680 kWh (基线 850 kWh, 改善 20%)

11.2 关键技术点

  1. 飞剪 + 虚轴 + 电子凸轮三合一: 本站的灵魂, 缺一不可
  2. 两冲床相位错峰: 冲床 B 相位 +180°, 峰值冲击力分散, 模具寿命延长
  3. 张力卷径自适应: PID 输出随卷径变化, 防止空卷时冲击过大
  4. OEM 冲床协议预置: 小松 / 会田 / 扬锻 / 徐锻 直连, 无需逆向
  5. 能源模块: 每万件能耗实时可视, 辅助工艺优化
  6. 外部编码器轴: 库伯勒绝对值编码器直接作为 Darra 轴, 读冲床机械角度

11.3 后续扩展方向

  • 级进模多工位冲压 + 机器人取件: Darra PLC + Robot 统一协同
  • AI 工艺优化: 根据吨位曲线和冲次历史, 推荐模具维护周期
  • DarraCloud 集团版: 统一监控 3 条冲压线能耗 / 产量 / OEE

飞剪 + 虚轴 + 电子凸轮三大工艺对象组合, 是 Darra 在冲压自动化场景的 核心竞争力。加上 OEM 冲床协议预置和能源模块, 一次搞定"运动 + 工艺 + 能耗 + MES", 让传统拼凑式冲压线升级为真正的数字化冲压线