高速贴标机 (Labeling Station)
面向饮料、日化、医药、化妆品全自动不停机高速贴标场景。Darra 内置 色标跟踪 + 电子齿轮同步 + 飞剪 + 触发探针 (TouchProbe) 工艺对象, 在 500 µs 周期内完成"瓶座—标签带—色标"三轴同步并做实时相位补偿。
1. 设备简介
贴标机把标签带按色标逐枚切开并粘贴到瓶身, 关键在于 瓶子自转角度 ↔ 标签带线速 ↔ 色标相位 三者严格一致。典型指标:
| 项目 | 参数 |
|---|---|
| 产能 | 250 瓶 / 分钟 (实测 260) |
| 贴标精度 | ±0.5 mm (实测 ±0.3 mm) |
| 色标跟踪误差 | < 1 mm (实测 0.6 mm) |
| 标签利用率 | > 98% (实测 99.1%) |
| 换标时间 | < 3 分钟 |
| EtherCAT 周期 | 500 µs, 抖动 < 10 µs |
| 工艺模式 | 圆瓶 / 方瓶 / 双面 / 顶部 / 套标撕贴 |
| 不良剔除 | 视觉 + 气动剔除 |
整机工艺: 进瓶 → 瓶夹夹紧 → 瓶座自转 → 标签带同步供送 → 色标触发相位修正 → 压贴滚轮 → 视觉检测 → 合格出瓶 / 不良剔除。
2. 项目模块组成
| 层 | 项目 | 职责 |
|---|---|---|
| 实时驱动 | DarraRT.sys + DarraRT_Eth.sys + DarraRT_PLC.sys | EtherCAT + PLC VM |
| 服务层 | Darra.PLC.Service | 永驻, EtherCAT SDK 调度 |
| 用户层 | Darra.PLC.Panel + Darra.PLC.IDE | 操作 + 开发 |
| 视觉层 | 海康 SDK + Darra 视觉桥接 | 剔除判定 |
PLC 项目单元:
| 单元 | 周期 | 说明 |
|---|---|---|
| PRG_MAIN | 10 ms | 状态机 |
| PRG_FEED | 1 ms | 进瓶节拍 |
| PRG_GEAR_FRONT | 500 µs | 前标电子齿轮 + 色标 |
| PRG_GEAR_REAR | 500 µs | 后标电子齿轮 + 色标 |
| PRG_CUT | 500 µs | 标带飞剪 |
| PRG_VISION | 10 ms | 视觉触发 / 判定 |
| PRG_REJECT | 10 ms | 剔除节拍 |
3. 机械装配架构
[进瓶输送带 (变频)]
↓
[瓶夹上料 → 瓶座 (自转伺服)] ← 瓶子自转主轴 MasterBottle
↓ ↓
+-----+-----+ +---------+---------+
| | | |
[前标模组] [后标模组]
----------------- -----------------
· 标带盘 (恒张力) · 标带盘
· 牵引伺服 (从) · 牵引伺服 (从)
· 剥离板 · 剥离板
· 压贴滚轮 (气缸) · 压贴滚轮
· 色标传感器 → 伺服 TouchProbe · 色标传感器 → 伺服 TouchProbe
· 飞切刀辊 (分离单枚标签)
↓ ↓
\______ ______/
[视觉检测工位]
↓
合格 → 出瓶 / 不良 → [剔除气缸]
轴汇总:
| 轴 | 功能 | 规格 |
|---|---|---|
| Axis_Bottle | 瓶座自转 (主) | SV660N 400 W |
| Axis_LabelF | 前标带 (从, 电子齿轮) | SV660N 750 W + TouchProbe1 |
| Axis_LabelR | 后标带 (从, 电子齿轮) | SV660N 750 W + TouchProbe1 |
| MTR_Conv | 进瓶输送带 | 1.5 kW 变频 |
4. 程序架构
Darra.PLC.IDE
| 下装
v
Darra.PLC.Service <---> Panel (HMI)
| IOCTL |
v | 视觉 TCP
DarraRT_PLC.sys =GlobalIO= DarraRT_Eth.sys <── 海康相机 GigE
| EtherCAT
v
AM600 → DI/DO → SV660N × 3 → 电磁阀岛
色标传感器 → 直连伺服驱动 DI (TouchProbe)
核心亮点: 色标传感器不进 EtherCAT PDO, 直接接到伺服驱动的探针输入脚, 硬件锁存位置, 响应 < 1 µs。主站通过 MC_TouchProbe 读取锁存值。
任务调度:
- 500 µs:
PRG_GEAR_FRONT/PRG_GEAR_REAR/PRG_CUT - 1 ms:
PRG_FEED - 10 ms:
PRG_MAIN/PRG_VISION/PRG_REJECT
5. 硬件 BOM (国产化)
| 类别 | 型号 | 品牌 | 数量 | 单价 (¥) | 小计 |
|---|---|---|---|---|---|
| 工控机 | ARK-1124H | 研华 | 1 | 4,500 | 4,500 |
| HMI | TK6071iQ 7 寸 | 威纶通 | 1 | 1,280 | 1,280 |
| 伺服驱动 (瓶座) | SV660N 400 W | 汇川 | 1 | 2,100 | 2,100 |
| 伺服驱动 (前标) | SV660N 750 W | 汇川 | 1 | 2,380 | 2,380 |
| 伺服驱动 (后标) | SV660N 750 W | 汇川 | 1 | 2,380 | 2,380 |
| 伺服电机 (400 W + 750 W × 2) | ISMH1 系列 | 汇川 | 3 | ~2,000 | 6,000 |
| 变频器 (进瓶) | MS300 1.5 kW | 台达 | 1 | 780 | 780 |
| EtherCAT IO 主 | AM600-CPU1608TP | 汇川 | 1 | 1,800 | 1,800 |
| DI 模块 | AM600-1600END | 汇川 | 1 | 580 | 580 |
| DO 模块 | AM600-1600ETN | 汇川 | 1 | 580 | 580 |
| 色标传感器 | BC50-E1 双通道 | 奥普 | 2 | 780 | 1,560 |
| 瓶到位光电 | E3F-DS30 | 欧姆龙国产 | 6 | 65 | 390 |
| 标带线速编码器 | 2500 ppr 增量 | 雷赛 | 2 | 480 | 960 |
| 视觉相机 | 130 万像素 USB3 | 海康 | 1 | 3,200 | 3,200 |
| 视觉光源 + 镜头 | 25 mm + 条形 LED | 奥普 | 1 套 | 800 | 800 |
| 剔除气缸 | SC ø32×100 | 亚德客 | 1 | 240 | 240 |
| 电磁阀岛 | EtherCAT 8 联 | 亚德客 | 1 | 1,800 | 1,800 |
| 主机架 + 瓶座 + 输送 | 铝型材 + 不锈钢 | 自制 | 1 | 12,000 | 12,000 |
| 贴标模组 (机械) | 标带盘 + 剥离板 + 压轮 | 自制 | 2 | 8,000 | 16,000 |
| 安全光幕 | 600 mm 10 光轴 | 舜驰 | 1 | 800 | 800 |
| 电控柜 | 600×600×1800 | 威图国产 | 1 | 2,400 | 2,400 |
| 端子 / 线缆 | - | - | 1 套 | 1,500 | 1,500 |
| 合计 | ¥63,530 |
6. IO 模块配置
6.1 配置步骤
- IDE → 设备视图 → 扫描 EtherCAT, 确认从站: AM600 CPU → DI → DO → SV660N ×3 → 电磁阀岛
- 3 台 SV660N 别名:
Axis_Bottle,Axis_LabelF,Axis_LabelR - 关键: 在每台标带伺服的参数里配置 TouchProbe:
0x60B8.0= 1 (使能探针 1)0x60B8.4= 1 (上升沿触发)0x60BA= 读取锁存位置
- 色标传感器 24 V 信号直接接到伺服驱动的 DI 探针脚 (不经过 AM600)
- 视觉相机走 USB3 到工控机, 不占 EtherCAT 带宽
- IO 表自动生成
6.2 IO 清单
| 地址 | 符号 | 说明 |
|---|---|---|
| I0.0 | SEN_BottleIn | 进瓶光电 |
| I0.1 | SEN_BottleClamp | 瓶夹到位 |
| I0.2 | SEN_LabelF_Out | 前标用完 |
| I0.3 | SEN_LabelR_Out | 后标用完 |
| I0.4 | SEN_VisionTrigger | 视觉触发信号反馈 |
| I0.5 | SEN_RejectHome | 剔除气缸原位 |
| I0.6 | SEN_LightCurtain | 光幕 |
| I1.0..3 | SB_Start/Stop/EStop/Reset | 按钮 |
| Q0.0 | MTR_Conv | 输送带变频使能 |
| Q0.1 | SOL_Clamp | 瓶夹气缸 |
| Q0.2 | SOL_CutF | 前标飞剪 |
| Q0.3 | SOL_CutR | 后标飞剪 |
| Q0.4 | SOL_Reject | 剔除气缸 |
| Q0.5 | SOL_Vision_Light | 视觉光源 |
| Q0.6 | LAMP_Run | 运行灯 |
| Q0.7 | LAMP_Fault | 故障灯 |
| 伺服 TP | TP_FrontColorMark | 前标色标 (伺服锁存) |
| 伺服 TP | TP_RearColorMark | 后标色标 (伺服锁存) |
6.3 视觉触发链
瓶子到视觉工位光电 I0.4 (SEN_VisionTrigger)
↓
PLC 发送相机触发命令 (TCP 到工控机本地海康 SDK)
↓
相机拍照 → AI 模型判定 (合格 / 标歪 / 无标)
↓
10 ms 内结果回传到 PLC 的 gVisionResult
↓
剔除工位光电 I0.5 到达前 PLC 决定是否驱动 Q0.4
7. 核心数据结构
TYPE RECIPE_LABEL :
STRUCT
Name : STRING(32);
BottleDiameter : LREAL;
BottleHeight : LREAL;
LabelLength : LREAL; // mm
LabelPitch : LREAL; // 色标间距
LabelOffsetF : LREAL; // 前标贴标偏移
LabelOffsetR : LREAL; // 后标贴标偏移
BottleLineSpeed : LREAL; // mm/s
GearRatioF : LREAL; // 前标齿轮比 (默认 1.0)
GearRatioR : LREAL; // 后标齿轮比
TrackingEnable : BOOL;
TrackingKp : LREAL;
TrackingLimit : LREAL; // ± mm
END_STRUCT
END_TYPE
TYPE VISION_RESULT :
(
Unknown, Pass, Skew, Missing, Double, Other
);
END_TYPE
VAR_GLOBAL
gState : MACHINE_STATE := MACHINE_STATE#Idle;
gRecipe : RECIPE_LABEL;
gVisionResult : VISION_RESULT;
gBottleCount : UDINT;
gRejectCount : UDINT;
END_VAR
8. 核心程序代码
8.1 主状态机
PROGRAM PRG_MAIN
CASE gState OF
MACHINE_STATE#Idle:
IF SB_Start AND NOT SB_EStop AND SEN_LightCurtain THEN
gState := MACHINE_STATE#Homing;
END_IF
MACHINE_STATE#Homing:
HomeBottleAxis();
IF Axis_Bottle.Homed THEN
gState := MACHINE_STATE#Running;
END_IF
MACHINE_STATE#Running:
RunFeed();
RunLabelGear();
RunTracking();
RunVision();
RunReject();
IF SB_Stop THEN gState := MACHINE_STATE#Paused; END_IF
MACHINE_STATE#Paused:
StopAllAxes();
IF SB_Reset THEN gState := MACHINE_STATE#Idle; END_IF
MACHINE_STATE#Fault:
EmergencyStop();
END_CASE
END_PROGRAM
8.2 工艺对象 — 电子齿轮同步
FUNCTION_BLOCK FB_LabelGear
VAR_INPUT
Execute : BOOL;
Ratio : LREAL;
END_VAR
VAR_IN_OUT
Master : AXIS_REF; // 瓶座
Slave : AXIS_REF; // 标带
END_VAR
VAR
gearIn : MC_GearIn;
END_VAR
gearIn(
Master := Master,
Slave := Slave,
RatioNumerator := DINT_TO_LREAL(1),
RatioDenominator := Ratio,
Acceleration := 5000,
Deceleration := 5000,
Jerk := 50000,
Execute := Execute
);
END_FUNCTION_BLOCK
8.3 工艺对象 — 色标跟踪 (核心亮点)
FUNCTION_BLOCK FB_ColorMarkTracking
VAR_INPUT
Enable : BOOL;
TargetPhase : LREAL; // 配方 LabelOffset
Kp : LREAL := 0.8;
LimitMin : LREAL := -3.5;
LimitMax : LREAL := +3.5;
END_VAR
VAR_IN_OUT
LabelAxis : AXIS_REF;
ProbeUnit : AXIS_PROBE;
END_VAR
VAR
probe : MC_TouchProbe;
phase : MC_PhasingRelative;
errPhase : LREAL;
corr : LREAL;
END_VAR
// 1. 启动硬件探针 (首次触发完成后会保持 Done)
probe(Axis := LabelAxis, Probe := ProbeUnit, Execute := Enable);
IF probe.Done THEN
// 2. 相位误差 = 实际锁存位置 - 期望位置
errPhase := probe.RecordedPosition - TargetPhase;
// 3. 比例控制 + 限幅
corr := -errPhase * Kp;
corr := LIMIT(LimitMin, corr, LimitMax);
// 4. 注入相位偏移
phase(Master := LabelAxis, Slave := LabelAxis,
PhaseShift := corr, Velocity := 500,
Acceleration := 10000, Execute := TRUE);
// 5. 重新启动探针准备下一次锁存
probe(Axis := LabelAxis, Probe := ProbeUnit, Execute := FALSE);
probe(Axis := LabelAxis, Probe := ProbeUnit, Execute := TRUE);
END_IF
END_FUNCTION_BLOCK
8.4 工艺对象 — 飞切标带
FUNCTION_BLOCK FB_LabelCut
VAR_INPUT
Trigger : BOOL;
END_VAR
VAR
pulseT : TP;
END_VAR
pulseT(IN := Trigger, PT := T#50ms);
SOL_CutF := pulseT.Q; // 50 ms 脉冲驱刀辊
END_FUNCTION_BLOCK
8.5 视觉 + 剔除
PROGRAM PRG_VISION
VAR
shotPulse : R_TRIG;
END_VAR
shotPulse(CLK := SEN_VisionTrigger);
IF shotPulse.Q THEN
VisionClient.Trigger(); // 调用海康 SDK TCP 接口
END_IF
IF VisionClient.ResultReady THEN
gVisionResult := VisionClient.Result;
VisionClient.Ack();
IF gVisionResult <> VISION_RESULT#Pass THEN
gRejectCount := gRejectCount + 1;
ELSE
gBottleCount := gBottleCount + 1;
END_IF
END_IF
END_PROGRAM
PROGRAM PRG_REJECT
VAR
q : TP;
END_VAR
q(IN := (gVisionResult <> VISION_RESULT#Pass) AND SEN_BottleIn, PT := T#120ms);
SOL_Reject := q.Q;
END_PROGRAM
8.6 剔除节拍 (延时驱动)
剔除气缸距离视觉工位 1 个工位长度, 约 120 ms 节拍, 用移位寄存器跟踪瓶位:
FUNCTION_BLOCK FB_RejectShifter
VAR_INPUT
Trigger : BOOL; // 瓶进入视觉工位
VisionPass : BOOL; // 视觉判定结果
END_VAR
VAR_IN_OUT
RejectOut : BOOL; // 剔除气缸
END_VAR
VAR
fifo : ARRAY[0..5] OF BOOL; // 6 瓶缓冲
head : INT;
step : R_TRIG;
END_VAR
step(CLK := Trigger);
IF step.Q THEN
// 新瓶入队
fifo[head] := NOT VisionPass;
head := (head + 1) MOD 6;
// 队尾瓶到剔除工位
RejectOut := fifo[head];
END_IF
END_FUNCTION_BLOCK
8.7 全局故障汇总
FUNCTION AnyCriticalFault : BOOL
AnyCriticalFault :=
Axis_Bottle.Fault OR
Axis_LabelF.Fault OR
Axis_LabelR.Fault OR
(NOT SEN_LightCurtain) OR
SEN_LabelF_Out OR
SEN_LabelR_Out;
END_FUNCTION
9. 运行与调试
9.1 上电首检
- 气压 0.5 MPa, 视觉光源常亮无闪烁
- EtherCAT 扫描从站数一致 (6 个)
- 色标传感器直流输出用示波器观察, 上升沿整齐
- 标带盘张力弹簧预紧 2 N
- 视觉相机实时预览画面清晰, 标签前缘对比度 > 30%
- Panel → 诊断 → 3 个轴位置反馈跳动 < 0.02 mm
9.2 电子齿轮标定
- HMI 给齿轮比初值 1.0
- 瓶座转 10 圈, 测量标带走的长度 (应该 = 周长 × 10)
- 若偏差 +1%, 把齿轮比调成 1.010
- 再试 10 圈, 误差 < 0.1% 通过
9.3 色标跟踪标定
- HMI → 工艺页 →
TrackingEnable = FALSE, 运行 5 瓶观察色标停止位 - 读取平均位置设成
TargetPhase - 打开 Tracking, Kp 从 0.3 开始上调到 0.8
- 实测贴标位置离散 < 0.5 mm 通过
9.4 视觉训练
- 采集 500 张合格 + 200 张不良样本
- Darra 视觉桥接调用海康 AI 训练器生成模型
- 模型部署到工控机, PRG_VISION 直接调用
9.5 换标流程
在线换标不停机:
- HMI 按 "请求换标", 当前标带盘剩余不足时
SEN_LabelF_Out触发 - PLC 自动把进瓶变频降到 30%, 瓶流分流到另一工位
- 工人换上新标带, 按 "接续完成"
- PLC 恢复全速, 5 秒内收敛
9.6 凸轮表 (圆瓶贴标)
圆瓶贴标其实是 1:1 电子齿轮而非凸轮, 但在方瓶 / 椭圆瓶场景必须用凸轮:
- 方瓶: 贴标只在一个平面上, 瓶子转到该平面时标带全速, 其余空程 → 凸轮 4 段
- 椭圆瓶: 沿椭圆周长变速, 用 36 点多项式凸轮拟合
9.7 关键日志
| 日志 | 路径 |
|---|---|
| 贴标计数 / 剔除 | %AppData%/DarraPLC/logs/labeling_*.log |
| 视觉响应时间 | %AppData%/DarraPLC/logs/vision_*.log |
| EtherCAT 帧 | Darra_EtherCAT_Master/debug_info.txt |
| 色标探针命中 | %AppData%/DarraPLC/logs/touch_probe_*.log |
9.8 常见故障
| 现象 | 可能根因 |
|---|---|
| 标签贴歪 ±2 mm | Kp 过小或标带张力不稳 |
| 标签缺失 | 飞剪时序偏, SOL_CutF 提前 50 ms |
| 连贴双标 | 标带剥离板间隙过大 |
| 视觉误报 | 光源漂移, 重标定模板 |
10. Darra 功能对照表
| 工艺需求 | Darra 功能 |
|---|---|
| 瓶座 ↔ 标带 1:1 同步 | MC_GearIn (电子齿轮) |
| 色标硬件锁存 | 伺服 TouchProbe + MC_TouchProbe |
| 相位实时补偿 | MC_PhasingRelative + P 控制 |
| 标签飞切 | TP 脉冲驱动气缸刀辊 |
| 视觉触发 / 剔除 | Darra 视觉桥接 + DI/DO 气缸 |
| 瓶型切换 | RECIPE_LABEL + HMI 配方页 |
| 状态机 | SCL CASE + Fault 自检 |
| 数据上云 | Service 内置云 Agent |
9.9 瓶型切换 (高频操作)
化妆品代工厂一天要切 3~5 次瓶型:
- HMI → 配方页 → 选新瓶型 (例: "面霜方瓶 50 ml")
- PLC 加载
RECIPE_LABEL新值 - 机械手动调: 瓶夹宽度、压轮高度、剥离板位置 (3 分钟)
- 启动试贴 3 瓶, 人工目视合格放行
9.10 季度保养清单
| 项目 | 周期 | 说明 |
|---|---|---|
| 标带盘轴承 | 90 天 | 6004 轴承加油 |
| 压贴滚轮硅胶更换 | 180 天 | 发硬即换 |
| 色标传感器镜头 | 30 天 | 无尘布 + IPA |
| 视觉光源寿命 | 12 个月 | LED 模块定期更换 |
| 瓶座编码器 | 180 天 | 粉尘清理 |
9.11 OEM License 管理
- 出厂时用 Darra IDE 的
License 绑定工具把该机 CPU 指纹写入授权文件 - 云端记录该机 ID + 客户 ID + 到期日
- 到期前 15 天 HMI 弹窗提示续费
- 过期后 PLC 自动进
Paused状态, 拒绝Running
11. 项目总结
- 整机 BOM ¥6.4 万: 机械自制占大头, 控制系统仅 ¥2.5 万左右
- 核心工艺 2 块积木: 电子齿轮 + 色标 TouchProbe, 主代码 < 250 行
- 精度: 贴标 ±0.3 mm, 色标跟踪 0.6 mm, 达高端化妆品标准
- 产能: 实测 260 瓶/min, 超目标 4%
- OEM 友好: Darra 按机器指纹发放 License, 适合给代工厂批量交付
- 可扩展: 加第三标工位 (顶标) 只需多一台 SV660N 和色标探头, 软件复制粘贴
下一步: 用云端的贴标样本数据训练更强的视觉模型, 把剔除率降到 0.1% 以下。