跳到主要内容

分切复卷机 — N 条子卷循环实例化

一句话: 16 条子卷同时分切, 每条 独立卷径 + 独立锥度 + 独立转矩前馈 + 独立断料处理。Darra 用 FB_Winder × 16 循环实例化 + FB_FlyShearMulti 多通道飞剪 在一台 i9 工控机的 500 µs 周期内跑通 36 轴伺服。


1. 设备简介

分切复卷机是把一卷"母卷"沿纵向切成 N 条窄"子卷"的设备, 主要用途:

  • 锂电隔膜: 母卷宽 1500 mm, 分切成 816 条窄带, 宽度 30200 mm;
  • BOPP 电容膜: 母卷宽 2000 mm, 切成 10~24 条;
  • 锂电极片: 涂布后分切, 50~400 mm 宽;
  • 铝箔/铜箔: 15~500 mm;
  • 不干胶标签/胶带: 10~600 mm。

机械基本结构:

  • 放卷 × 1 → 牵引主轴 × 1 → 圆刀轴(上下各 1 刀片阵列) → 子卷小收卷 × N(每条一个独立伺服)
  • 关键难点: 每条子卷卷径不一致(因延伸率不同), 必须独立计算; 一条断料不能影响其他; 16 条同时换卷必须时序完全一致

本案例无锡锂电装备厂的 锂电隔膜分切复卷机:

1.1 产品矩阵

材料厚度宽度张力锥度速度
锂电隔膜9~20 µm30~200 mm3~8 N70%400 m/min
BOPP 电容膜4~12 µm20~150 mm2~6 N60%600 m/min
锂电极片120~250 µm50~400 mm15~45 N75%120 m/min
铝箔20~80 µm15~500 mm5~20 N50%500 m/min
铜箔8~35 µm15~400 mm3~18 N50%400 m/min
BOPP 印刷膜20~40 µm50~800 mm8~30 N40%600 m/min
不干胶标签80~150 µm20~600 mm15~50 N60%300 m/min
胶带30~100 µm10~300 mm5~20 N55%250 m/min

1.2 关键工艺指标

指标要求
最大分切速度800 m/min
最大条数16
分切宽度范围15~1600 mm
分切位置精度±0.1 mm
单条张力精度±1%
条间张力均匀度±2%
刀具定位精度±0.05 mm
16 条同时换卷时间< 90 s
EtherCAT 周期500 µs
单条断料响应< 50 ms, 仅停该条

2. 项目模块组成

模块功能Darra 组件
工艺对象主轴斜坡牵引线速度FB_Ramp
工艺对象子卷卷绕 × 16循环实例化FB_Winder
工艺对象母卷放卷磁粉制动或伺服FB_Brake
工艺对象多通道飞剪16 条同时换卷FB_FlyShearMulti
工艺对象刀具定位绝对值伺服MC_MoveAbsolute
工艺对象条间张力 AI每 30 s 重新均衡FB_AI_Predict
工艺对象刀具寿命 AI按公里数预测FB_AI_Predict
功能模块单条断料处理UDT 独立状态机FOR 循环内 CASE
功能模块气涨轴充放气2 组上下差动PRG_AirShaft
功能模块静电消除离子棒电流 AI 自适应PRG_Ion
数据模块通道 UDT16 条通道TYPE_CHANNEL
数据模块配方 UDT16 宽度数组TYPE_RECIPE

2.1 扫描周期

程序周期说明
PRG_Main10 ms安全 / 状态机
PRG_MainAxis500 µs牵引斜坡
PRG_MultiRewind500 µsFB_Winder × 16 循环
PRG_Unwinder1 ms母卷 FB_Brake
PRG_KnifePosition10 ms16 路刀具定位
PRG_FlyShearMulti1 ms多通道换卷
PRG_AI30 s条间张力均衡
PRG_Alarm20 ms三级报警

3. 机械装配架构

            母卷放卷(气涨 3", 伺服 11 kW)


[牵引主轴 7.5 kW]


┌────────────────────┐
│ 上刀轴(3.7 kW) │
│ 下刀轴(3.7 kW) │ ← 圆刀阵列 × 16 副
└────────────────────┘


────┬───┬───┬───┬───┬───┬───┬───┬─── 16 条
│ │ │ │ │ │ │ │
┌────▼┐ ┌▼───┐ ┌▼───┐ ┌▼───┐ ...
│子卷1│ │子卷2│ │子卷3│ │子卷4│
│1.5kW│ │1.5kW│ │1.5kW│ │1.5kW│ × 16
└─────┘ └─────┘ └─────┘ └─────┘
上下气涨轴 × 2 组 (交错分布, 偶数上 / 奇数下)

3.1 机械关键部件

  • 母卷气胀轴: 3" 铝合金, 气压 0.6 MPa, 自动张紧卷芯;
  • 上下刀轴 分别 3.7 kW 伺服 + 减速机, 刀片为硬质合金圆刀 Ф150 mm;
  • 刀具定位: 每把刀一台 0.75 kW 伺服 + 滚珠丝杠 + 绝对值编码器, 宽度通过 IDE 配方一键下发;
  • 子卷气胀轴(上下错位): 16 个 1.5 kW 直驱扭矩伺服, 通过偶数上/奇数下错位布置解决相邻条间干涉;
  • 上下压辊: 气缸 0.3 MPa, 保证子卷表面平整;
  • 离子风棒: SIMCO 4 m 直流离子棒 × 4 根, 电流 AI 反馈;
  • 负压吸尘: 除尘风机 + HEPA 过滤。

4. 程序架构

PRG_Main (10 ms)
├── 安全: ESTOP / DOOR / 光栅 / 气压 / 气胀压力 / 吸尘
└── 状态机 IDLE → HOMING → READY → RUNNING → SWAPPING → STOPPING

PRG_MainAxis (500 µs)
└── FB_Ramp(Recipe.LineSpeed) → rampedSpeed → Servo_Traction

PRG_MultiRewind (500 µs) —— 核心
FOR ch := 1 TO 16 DO
IF NOT Enabled[ch] THEN 零转矩; CONTINUE;
IF dio_break[ch] THEN 单条暂停; CONTINUE;
chWinder[ch](...) ← 调 FB_Winder 实例
Channels[ch].LengthRun_m += LineSpeed × 0.0005
END_FOR

PRG_KnifePosition (10 ms)
└── FOR ch := 1 TO 16 DO MC_MoveAbsolute(Recipe.SlitWidths[ch] + AccumX(ch))

PRG_FlyShearMulti (1 ms)
└── FB_FlyShearMulti ChannelCount=16
├── NewSpoolSpeedUpMs
├── GlueMs / CutDelayMs
└── TensionCompMs

PRG_AI (30 s)
└── FB_AI_Predict('SlitterTensionBalance') → TrimFactor[1..16]

PRG_Ion (10 ms)
└── 根据 humidity / speed / material → ION_CURR AI 调 0~100%

5. 硬件 BOM

设备型号数量单价(¥)小计(¥)
工控机研华 IPC-7120 + i9-12900 / 64 GB / 1 TB115 00015 000
放卷伺服汇川 SV660N-11KW113 50013 500
牵引主轴伺服汇川 SV660N-7.5KW18 5008 500
上/下刀轴伺服汇川 SV660N-3.7KW25 50011 000
小收卷伺服汇川 SV660N-1.5KW(直驱扭矩)164 50072 000
刀具定位伺服汇川 SV660N-0.75KW + 绝对值163 50056 000
EtherCAT 耦合器 + IO汇川 AM6004 组4 50018 000
气涨轴上海晟铭铝合金 3" 气涨轴2 组12 00024 000
张力传感器(母卷)南京澳强 LM-200N 称重辊23 5007 000
子卷张力传感器台湾大成 LK-50N1680012 800
CPC 光电纠偏威纶通 EPC-20015 0005 000
离子风棒日本 SIMCO ION 4 m43 50014 000
负压吸尘除尘风机 + 过滤器1 套8 0008 000
HMI威纶通 cMT-FHD-220 21.5"112 00012 000
工业交换机汇川 EtherCAT 冗余 16 口23 5007 000
安全模块欧姆龙 G9SX-GS SIL31 套4 5004 500
UPSAPC SUA300016 5006 500
硬件合计294 800
Darra 授权(16 核)PLC + Motion + HMI 一体永久1120 000120 000
总计414 800

6. IO 模块配置

6.1 选模块

4 个 AM600-ECAT 耦合器分布在不同柜体, 避免线缆过长:

耦合器模块用途
EC1 (主柜)16DI + 16DO + 4AI + 2AO主令 + 报警 + 张力(母卷) + 辅助
EC2 (刀区)32DI + 32DO + 16AI16 路断料 + 刀下降 + 吸尘 + 16 子卷张力
EC3 (收卷区)32DI + 16DO16 路子卷到位 + 16 路压臂
EC4 (辅助区)16DI + 16DO + 8AI + 4AO气胀 / 离子风棒 / 纠偏 / 静电

6.2 核心地址映射

地址名称说明
I0.0START启动
I0.1STOP停止
I0.2ESTOP急停(双 SIL3)
I0.3DOOR_OK安全门
I0.4UW_OK母卷到位
I0.5~I0.6AIR_EX_OK / AIR_EX_OK2气涨上/下
I0.7EPC_OK纠偏就绪
I1.0~I1.15BREAK[1..16]16 条断料光电
I2.0LENGTH_DONE长度到位
I2.1SWAP_REQ换卷请求
Q0.0RUN_LAMP运行指示
Q0.1CUT_DOWN分切刀下降
Q0.2CUT_UP分切刀上升
Q0.3~Q0.4PRESS_UP / PRESS_DN压辊
Q0.5~Q0.6AIR_EX_ON / AIR_EX_OFF气胀
Q0.7ION_ON静电消除
Q1.0DUST_ON吸尘风机
Q1.1ALARM报警
AI0TEN_MAIN_UP牵引前张力
AI1TEN_MAIN_DN牵引后张力
AI2~AI17TEN_CH[1..16]16 条子卷张力
AI18ION_CURR离子风棒电流反馈

6.3 分工与绑定

  • EC2 刀区 集中放 16 路断料光电 + 16 条子卷张力 AI, 线路最短 (< 2 m), 最大抗干扰;
  • EC3 收卷区 处理 16 子卷气胀反馈 + 16 压臂, 离执行器近;
  • 子卷张力 AI 选 420 mA 而非 010 V, 长距离抗干扰更好, 断线时 < 4 mA 即报警;
  • IO 向导 支持数组绑定: BREAK[1..16] 一次分配 16 个 DI 连续通道, SCL 里 FOR ch := 1 TO 16 DO IF dio_break[ch] ... 直接对应;
  • 子卷张力 AI 通道按相同规则绑定 AI_Tension_CH[1..16], 方便循环访问。

7. 核心数据结构

(* 子卷通道 —— 16 条独立实例 *)
TYPE TYPE_CHANNEL :
STRUCT
Id : INT; (* 1..16 *)
Enabled : BOOL;
Width_mm : REAL;
PosX_mm : REAL; (* 刀具位置 *)
CoreDia_mm : REAL;
FullDia_mm : REAL;
CurrentDia_mm : REAL;
StartTension_N : REAL;
TaperFactor : REAL;
TrimFactor : REAL; (* AI ±5% *)
TargetTension_N : REAL;
ActualTension_N : REAL;
Omega_rpm : REAL;
LengthRun_m : REAL;
Weight_kg : REAL;
BatchId : STRING[32]; (* 子卷独立批号 *)
Status : INT; (* 0=待机 1=运行 2=暂停 3=故障 *)
AlarmCode : INT;
END_STRUCT
END_TYPE

(* 工艺配方 *)
TYPE TYPE_RECIPE :
STRUCT
Id : INT;
Material : STRING[16];
MotherWidth_mm : REAL;
SlitWidths : ARRAY[1..16] OF REAL;
ChannelEnable : ARRAY[1..16] OF BOOL;
StartTension : ARRAY[1..16] OF REAL;
TaperFactors : ARRAY[1..16] OF REAL;
LineSpeed_mpmin : REAL;
Length_m : REAL;
IonCurrent_mA : REAL;
END_STRUCT
END_TYPE

VAR_GLOBAL
Channels : ARRAY[1..16] OF TYPE_CHANNEL;
Recipe : TYPE_RECIPE;
Recipes : ARRAY[1..32] OF TYPE_RECIPE;
LineSpeed_fb : REAL;
State : INT;

STATUS_RUNNING : INT := 1;
STATUS_PAUSED : INT := 2;
STATUS_FAULT : INT := 3;
ALM_BREAK : INT := 101;
END_VAR

8. 核心程序代码

8.1 主速度轴

PROGRAM PRG_MainAxis
VAR
rampedSpeed : REAL;
ramp : FB_Ramp;
END_VAR

ramp(
Input := Recipe.LineSpeed_mpmin / 60.0,
SlopeUp := 0.5,
SlopeDn := 1.0,
Enable := State = STATUS_RUNNING,
Output => rampedSpeed
);

Servo_Traction.TargetVelocity := rampedSpeed * TRACTION_RPM_FACTOR;
LineSpeed_fb := Servo_Traction.ActualVelocity / TRACTION_RPM_FACTOR;

8.2 16 条子卷循环(FB_Winder 实例化)

PROGRAM PRG_MultiRewind
VAR
chWinder : ARRAY[1..16] OF FB_Winder;
ch : INT;
END_VAR

FOR ch := 1 TO 16 DO
IF NOT Channels[ch].Enabled THEN
Servo_RW[ch].TargetTorque := 0.0;
CONTINUE;
END_IF;

(* 单条断料处理 —— 不影响其他 15 条 *)
IF dio_break[ch] THEN
Channels[ch].Status := STATUS_PAUSED;
Channels[ch].AlarmCode := ALM_BREAK;
Servo_RW[ch].TargetTorque := 0.0;
CONTINUE;
END_IF;

(* 卷绕对象 *)
chWinder[ch](
LineSpeed_ms := LineSpeed_fb,
TensionFb_N := Tension_CH[ch],
Omega_rpm := Servo_RW[ch].ActualVelocity,
ActiveFlag := Channels[ch].Status = STATUS_RUNNING,

CoreDia_mm := Channels[ch].CoreDia_mm,
FullDia_mm := Channels[ch].FullDia_mm,
Width_mm := Channels[ch].Width_mm,
StartTension_N := Channels[ch].StartTension_N *
(1.0 + Channels[ch].TrimFactor),
TaperFactor := Channels[ch].TaperFactor,
Inertia_kgm2 := JRoll(Channels[ch].CurrentDia_mm, Channels[ch].Width_mm),

Kp := 2.0, Ti := T#0.6s, Td := T#30ms,

TorqueCmd => Servo_RW[ch].TargetTorque,
DiaCalc_mm => Channels[ch].CurrentDia_mm,
TensionCalc_N => Channels[ch].TargetTension_N
);

Channels[ch].LengthRun_m := Channels[ch].LengthRun_m + LineSpeed_fb * 0.0005;
END_FOR;

8.3 刀具定位(绝对值编码器)

PROGRAM PRG_KnifePosition
VAR
ch : INT;
allInPos : BOOL;
MoveKnife : ARRAY[1..16] OF MC_MoveAbsolute;
END_VAR

IF State = 1 (* HOMING *) THEN
FOR ch := 1 TO 16 DO
IF Recipe.ChannelEnable[ch] THEN
MoveKnife[ch](
Position := Recipe.SlitWidths[ch] + AccumX(ch),
Velocity := 100.0,
Execute := TRUE,
Axis := AxisRef_Knife[ch]
);
END_IF;
END_FOR;

allInPos := TRUE;
FOR ch := 1 TO 16 DO
IF Recipe.ChannelEnable[ch] AND NOT MoveKnife[ch].Done THEN
allInPos := FALSE; EXIT;
END_IF;
END_FOR;

IF allInPos THEN State := 2; (* READY *) END_IF;
END_IF;

8.4 同步飞剪(16 条同时)

PROGRAM PRG_FlyShearMulti
VAR
multiCut : FB_FlyShearMulti;
END_VAR

multiCut(
Trigger := AutoSwap OR UserSwapRequest,
ChannelCount := 16,
LineSpeed_ms := LineSpeed_fb,

NewSpoolSpeedUpMs := 800,
GlueMs := 200,
CutDelayMs := 80,
TensionCompMs := 300,

CmdGlueAll => GLUE_ACT,
CmdCutAll => CUT_ACT,
CmdAirExchange => AIR_EX_ON,
Done => SwapDone
);

8.5 条间张力 AI 均衡

PROGRAM PRG_AI
VAR
aiBalance : FB_AI_Predict;
lastRunMs : DWORD;
tensionArr : ARRAY[1..16] OF REAL;
ch : INT;
END_VAR

IF (CURRENT_TIME_MS() - lastRunMs) > 30000 AND State = STATUS_RUNNING THEN
FOR ch := 1 TO 16 DO
tensionArr[ch] := Channels[ch].ActualTension_N;
END_FOR;

aiBalance(
Model := 'SlitterTensionBalance',
InputArr := tensionArr
);

FOR ch := 1 TO 16 DO
Channels[ch].TrimFactor := LIMIT(aiBalance.OutputArr[ch], -0.05, 0.05);
END_FOR;

lastRunMs := CURRENT_TIME_MS();
END_IF;

8.6 长度到达自动停 + 触发换卷

IF Channels[1].LengthRun_m >= Recipe.Length_m THEN
ramp.Input := 0.0;
IF LineSpeed_fb < 0.05 THEN
State := STOPPING;
AutoSwap := TRUE;
END_IF;
END_IF;

8.7 静电 AI 自适应

PROGRAM PRG_Ion
VAR
aiIon : FB_AI_Predict;
END_VAR

IF ION_ON THEN
aiIon(
Model := 'StaticRisk',
Inputs[0]:= EnvHumidity_pct,
Inputs[1]:= LineSpeed_fb,
Inputs[2]:= Recipe.Material_id
);
(* AI 输出 0~100% → AQ 0~100 mA *)
IonCurrent_Target := aiIon.Output[0];
AQ_ION_CURR := IonCurrent_Target / 100.0 * 27648.0;
END_IF;

9. 运行与调试

9.1 上电流程

  1. 工控机 + 主柜 UPS 上电, Darra Service 自启;
  2. EtherCAT 主站扫描 36 伺服 + 4 IO 耦合器;
  3. 所有刀具伺服 MC_Power 上使能后读绝对值位置, IDE 读到物理位置;
  4. 配方加载 → HOMING 阶段: 16 把刀按 SlitWidths[1..16] + AccumX 依次定位, 中间间隙误差自动补偿;
  5. 操作员挂母卷, 气胀轴上气, 穿线到 16 条子卷气胀轴;
  6. 按 START 进入 RUNNING。

9.2 首件调试

  • 母卷速度从 50 m/min 起步, 观察:
    • 16 条子卷张力曲线应成串 偏差不超过 ±3%;
    • Channels[i].CurrentDia_mm 卷径应逐步增长, 16 条的增长斜率应 基本同步;
    • 刀具定位稳定后, 不再有任何位置微调;
  • 开启 AI 条间均衡, 等 30 s 后观察 TrimFactor[i] 是否收敛到 ±2% 以内;
  • 模拟单条断料: 临时遮挡 BREAK[5] 光电, 应仅停第 5 条, 其他 15 条继续;
  • 速度提到 400 m/min, 稳定 10 分钟, 观察单条张力精度 < ±1%。

9.3 换卷联调

  1. 一条子卷长度到达 Recipe.Length_m, 自动平滑减速;
  2. 停稳后触发 AutoSwap, 进入 FB_FlyShearMulti:
    • t=0: NewSpoolSpeedUpMs=800 ms, 待机卷加速;
    • t=+800: GlueMs=200 ms, 全部 16 条同时喷胶;
    • t=+880: CutDelayMs=80 ms, 全部剪切;
    • t=+1180: TensionCompMs=300 ms, 张力补偿;
    • t=+1300: Done;
  3. 操作员取下满卷, 总时间 ≤ 90 s 完成全部 16 条换卷。

9.4 常见问题

现象原因处理
某条张力明显偏低/偏高气胀压力不足 / 张力传感器零点漂HMI 空辊归零 + 气压检查
16 条卷径增速不同分切后各条延伸率不同AI TrimFactor 会自动补偿
刀具定位重复误差绝对值编码器电池低更换编码器电池
边缘粘连静电大 / 湿度低ION_CURR AI 提升 20%, 加湿度
单条断料误判光电反光加遮光罩 + 软件去抖 30 ms

9.5 三级报警

报警级别动作
A_ESTOP全部 MC_Stop + 切刀上升 + 刀轴抱闸
A_BREAK_CH[i]单条 Status=PAUSED, 其他继续
A_BREAK_MAIN整机停, 16 条全部夹紧
A_TEN_DEV_CH[i]提示, 连续 3 s 超 ±5% 停该条
A_KNIFE_LIFEAI 预测, 达阈值 HMI 提示换刀

10. Darra 功能对照表

业务需求Darra 对应功能所在模块
16 条独立卷绕FB_Winder × 16 循环实例化IDE → 运动工艺对象
多通道飞剪FB_FlyShearMultiIDE → 运动工艺对象
36 轴运动控制Darra Motion(不按轴授权)IDE → 运动
单条断料处理UDT + FOR + CASESCL 标准
条间张力 AI 均衡FB_AI_PredictIDE → AI 助手
刀具寿命预测FB_AI_PredictIDE → AI 助手
静电 AI 自适应FB_AI_PredictIDE → AI 助手
刀具定位MC_MoveAbsolute × 16PLCopen MC
配方管理表格式 + 订单对接IDE → 配方
子卷独立追溯每条独立 BatchIdDarra Service
HMI 分屏 16 条HMI DesignerIDE → HMI
三级报警内置报警系统IDE → 报警
历史曲线本地 SQLite + 云端 InfluxDBDarra Service
远程运维Darra CloudCloud

11. 项目总结

11.1 实施周期

阶段工时备注
方案设计2 周驻厂
硬件采购4 周汇川 / 威纶通国产现货
首台调试4 周含 AI 训练
第二台起1 周/台程序模板化
首台合计10 周

11.2 投产效果

指标设计实测
单条张力精度±1%±0.7%
条间均匀度±2%±1.3%
分切位置精度±0.1 mm±0.05 mm
单条断料不影响其他支持支持
16 条同时换卷< 90 s62 s
边缘粘连率< 0.5%0.3%
刀片寿命预测准确率92%

11.3 推广价值

  • 锂电隔膜 / 铝箔 / 铜箔 / 电容膜 / BOPP 印刷膜 / 胶带 / 标签 全行业通用;
  • FB_Winder 循环实例化 是真正的核心竞争力, 把过去 "一条一个独立控制器" 的架构彻底重构;
  • 子卷独立批号 + 独立曲线, 让下游电池厂可以追溯到具体哪台分切机哪一班次;
  • 可直接扩展到 横切机 / 印刷机 / 涂布机 / 复合机 等多轴卷材装备;
  • Darra Cloud 沉淀"母卷特征 → 16 条张力曲线 → 良率" 的数据链, 持续反哺 AI 模型。

FB_Winder × 16 循环实例化 + FB_FlyShearMulti 多通道飞剪 + AI 条间均衡, 让一台 36 轴分切复卷机在 500 µs 周期内平稳运行, 这是 Darra 在高端卷材分切领域的核心实战能力。