LED 闪烁与流水灯
1. 设备简介
LED 信号塔控制柜是产线上最朴素也最常见的终端装置, 绿灯亮代表设备正常运行, 红灯闪烁代表需要工人介入, 黄灯常亮代表缺料待补。典型应用于电子组装、食品包装、机加工单元、检测工站等离散制造车间。一个中型工厂往往部署上百个这类信号指示点, 用于工位状态可视化与节拍指引。本入门案例实现 "单灯闪烁 → 8 路流水灯 → 乒乓灯" 三种运行模式, 响应延迟控制在 ≤ 50 ms (1 个扫描周期) 内, 目标是让新工程师 30 分钟内完成第一套 Darra PLC 程序。
2. 项目模块组成
- 机械部分: 控制柜本体 / 信号塔 / 8 路 φ22 LED 指示灯 / 操作面板
- 电气部分: 研华工控机 + 汇川 16DI/16DO IO 从站 + 明纬 24V 电源 + 启停按钮
- 软件部分: Darra IDE 工程包含 OB1 主循环 + FB_LightControl + DB_Config + HMI 画面
3. 机械装配架构
控制柜内部署工控机与 IO 从站, 操作面板 (启动/停止/模式选择) 通过 DI 接入 IO 从站, 8 路 LED 通过 DO 输出直接驱动。信号塔支架安装在产线易观察位置, 支持墙挂或立柱安装。整柜通过一根 EtherCAT 线缆连接主控, 接线量极少, 适合快速部署。
4. 程序架构
OB1 以 50 ms 周期调用 FB_MainControl, 主控功能块根据 HMI 选择的模式 (闪烁/流水/乒乓) 调用 FB_LightControl, 同时 FB_AlarmManager 监视急停与 IO 掉线。所有可调参数存放在 DB_Config 中, 运行态数据存放在 DB_Runtime。
5. 硬件选型 BOM
| 品牌 | 型号 | 数量 | 单价 (¥) | 用途 |
|---|---|---|---|---|
| 研华 | MIO-5272 (Intel i5 8GB) | 1 | 3,000 | 工控机主控 |
| 汇川 | AM600-1616END | 1 | 850 | 16DI/16DO EtherCAT IO |
| 国产通用 | 24V LED 指示灯 φ22 | 8 | 15 | 红/黄/绿指示灯 |
| 正泰 | 按钮盒 (启/停/模式) | 1 | 120 | 操作面板 |
| 明纬 | LRS-100-24 | 1 | 120 | 24V 开关电源 |
| 威纶通 | TK6071iP 7" (可选) | 1 | 1,100 | 本地触摸屏 |
| 国产通用 | CAT5e EtherCAT 专用线 | 1 | 30 | 总线连接 |
注: 若仅使用 Darra 内置浏览器 HMI, 可省去威纶通触摸屏。
6. IO 模块配置
6.1 选择 IO 模块
在 Darra IDE 中打开项目树, 右键 "IO 设备" > 添加 IO 设备 > 从 ESI 库选型:
- 从站 1: 汇川 AM600-1616END (16 DI + 16 DO) — 用于按钮采集与 LED 输出
配置向导中扫描 EtherCAT 网段自动发现从站, 确认 Vendor ID / Product Code 与型号匹配后点击 "确认添加"。从站会自动分配站点编号 1001。
6.2 IO 地址分配
| 地址 | 模块 | 信号 | 用途 |
|---|---|---|---|
| %IX0.0 | 从站 1 | SB_Start | 启动按钮 |
| %IX0.1 | 从站 1 | SB_Stop | 停止按钮 (常闭) |
| %IX0.2 | 从站 1 | SW_Mode0 | 模式选择位 0 |
| %IX0.3 | 从站 1 | SW_Mode1 | 模式选择位 1 |
| %IX0.7 | 从站 1 | SB_EStop | 急停 (常闭) |
| %QX0.0 ~ %QX0.7 | 从站 1 | aLED[0..7] | 8 路 LED 输出 |
| %QX1.0 | 从站 1 | HL_Fault | 故障指示灯 |
6.3 IO 用途分工
- PLC 主控: 全部 DO 由 PLC 直接驱动 LED, DI 采集操作员按钮
- 安全链: 急停按钮接常闭触点, 断线即触发停机, 属于硬件级保护
- 扩展预留: AM600-1616END 预留 8 点 DI 与 8 点 DO, 后续可扩展到 16 路流水灯
7. 核心数据结构
TYPE UDT_LightStation:
STRUCT
bEnable : BOOL; // 系统使能
eMode : INT; // 0=闪烁 1=流水 2=乒乓
tStepSpeed : TIME; // 步进间隔
nCurrentPos : INT; // 当前流水位置
aOutput : ARRAY[0..7] OF BOOL; // 输出镜像
END_STRUCT
END_TYPE
// DB_Config (Retain) —— HMI 可调参数
VAR_GLOBAL RETAIN
gCfg_Mode : INT := 1; // 默认流水模式
gCfg_StepSpeed : TIME := T#200ms; // 默认步速
END_VAR
// DB_Runtime —— 运行态
VAR_GLOBAL
gRun_Light : UDT_LightStation;
gRun_CycleCount : DINT; // 累计循环次数
END_VAR
8. 核心程序代码
FB_MainControl — 模式分发状态机:
FUNCTION_BLOCK FB_MainControl
VAR_INPUT
bStart : BOOL;
bStop : BOOL;
bEStop : BOOL;
END_VAR
VAR
tonStep : TON;
bToggle : BOOL;
bForward : BOOL := TRUE;
i : INT;
END_VAR
// 急停联锁 (失效安全)
IF NOT bEStop THEN
gRun_Light.bEnable := FALSE;
FOR i := 0 TO 7 DO gRun_Light.aOutput[i] := FALSE; END_FOR;
RETURN;
END_IF;
// 启停
IF bStart THEN gRun_Light.bEnable := TRUE; END_IF;
IF NOT bStop THEN gRun_Light.bEnable := FALSE; END_IF;
// 模式 0: 单灯闪烁 (1 Hz)
IF gCfg_Mode = 0 AND gRun_Light.bEnable THEN
tonStep(IN := NOT tonStep.Q, PT := T#500ms);
IF tonStep.Q THEN bToggle := NOT bToggle; END_IF;
gRun_Light.aOutput[0] := bToggle;
END_IF;
// 模式 1: 流水灯
IF gCfg_Mode = 1 AND gRun_Light.bEnable THEN
tonStep(IN := NOT tonStep.Q, PT := gCfg_StepSpeed);
IF tonStep.Q THEN
gRun_Light.nCurrentPos := (gRun_Light.nCurrentPos + 1) MOD 8;
END_IF;
FOR i := 0 TO 7 DO
gRun_Light.aOutput[i] := (i = gRun_Light.nCurrentPos);
END_FOR;
END_IF;
FB_AlarmManager — 报警管理:
FUNCTION_BLOCK FB_AlarmManager
VAR_INPUT
bEStop : BOOL;
bStopBtn : BOOL;
END_VAR
VAR_OUTPUT
bAlarm : BOOL;
sMsg : STRING[40];
END_VAR
IF NOT bEStop THEN
bAlarm := TRUE;
sMsg := '急停按钮已按下';
ELSIF NOT bStopBtn THEN
bAlarm := FALSE;
sMsg := '';
ELSE
bAlarm := FALSE;
END_IF;
9. 运行与调试
- 仿真 Runtime 验证: IDE 内置仿真模式, 不接硬件即可观察 DO 输出
- 下载到 Runtime: IDE 菜单 "部署" → 选择目标 IP → 下载 PLC 程序
- 在线监控: 打开 DB_Runtime, 观察
nCurrentPos按设定速度递增 - 强制信号测试: 强制
%IX0.7 := TRUE(模拟急停复位), 观察 LED 正常亮灭 - 常见报警排查: 若全部 LED 不亮, 优先检查 24V 电源电压 + 从站 RUN 灯 + EtherCAT 链路
10. 用到的 Darra 功能
| 功能模块 | 本案例用到的 | 说明 |
|---|---|---|
| PLC 编程 | SCL + OB1 主循环 + TON 定时器 + FOR 循环 | 行业标准 IEC 61131-3 |
| 工艺对象 | 无 (纯逻辑) | 入门案例 |
| HMI | 本地浏览器 + 手机远程同屏 | 无需额外组态软件 |
| 通讯 | EtherCAT 主站 | 高精度 IO 采集 |
| 服务 | 终端授权管理 | 设备出厂后可远程运维 |
11. 项目总结
- 实测指标: 扫描周期 50 ms, 响应延迟 ≤ 1 个周期, 连续运行 72 小时零丢步
- 扩展方向:
- 增加"按节拍闪烁" (对接 MES 订单节拍信号), 红/黄/绿自动切换
- 增加 16 路灯塔版 + RGB 幻彩 (需换 16DO 模块)
- 对接微信/钉钉 Webhook, 故障灯亮时推送到维修群