电机启停与点动控制
1. 设备简介
电机启停控制柜用于驱动三相异步电机, 广泛应用于机床辅助、化工搅拌、污水泵站、建材传输、食品加工等行业, 覆盖 ≤ 5.5 kW 小功率场景。本案例面向控制柜成套厂与 OEM, 以一台 0.75 kW 三相电机为控制对象, 实现 "启动 + 停止 + 正转 + 反转 + 点动 + 急停 + 过载保护" 七项联锁功能, 严格遵循 失效安全 (Fail-Safe) 原则, 急停/停止/过载全部使用常闭触点, 线路断开即触发停机。目标是做到正反转切换零相间短路、急停响应 ≤ 10 ms, 累计运行小时数可追溯。
2. 项目模块组成
- 机械部分: 控制柜 + 三相电机 + 6 键按钮站 (启/停/正/反/点动/急停)
- 电气部分: 研华工控机 + 汇川 IO + 正泰接触器 × 2 + 热继电器 + 电源
- 软件部分: OB1 主循环 + FB_MotorControl + FB_AlarmManager + DB_MotorStats
3. 机械装配架构
操作员在按钮站选择正转/反转/点动, PLC 接收后通过 DO 驱动 KM1/KM2 接触器, 接触器再驱动三相电机。热继电器串联在电机主回路, 过载时常闭触点断开反馈到 DI, PLC 立即停机。KM1 与 KM2 机械互锁 (出厂自带) 作为硬件级第二道保护。
4. 程序架构
OB1 以 10 ms 周期扫描, FB_MotorControl 实现方向互锁 + 500 ms 切换延时, FB_AlarmManager 合并急停与过载信号, DB_MotorStats (Retain) 累计运行时间与启动次数。
5. 硬件选型 BOM
| 品牌 | 型号 | 数量 | 单价 (¥) | 用途 |
|---|---|---|---|---|
| 研华 | MIO-5272 工控机 | 1 | 3,000 | 主控 |
| 汇川 | AM600-1616END | 1 | 850 | 16DI/16DO EtherCAT IO |
| 正泰 | NC1-0910 交流接触器 | 2 | 45 | KM1 正转 / KM2 反转 |
| 正泰 | NR2-25/Z 热继电器 | 1 | 60 | 过载保护 |
| 正泰 | 6 键按钮站 | 1 | 150 | 启/停/正/反/点动/急停 |
| 佳木斯 | Y2-801-4 0.75kW 三相 | 1 | 650 | 电机 |
| 明纬 | LRS-100-24 | 1 | 120 | 24V 电源 |
6. IO 模块配置
6.1 选择 IO 模块
在 IDE 中 项目树 > IO 设备 > 右键 > 添加 IO 设备 扫描 EtherCAT 网段, 确认汇川 AM600-1616END 的 Vendor ID / Product Code 后添加。
- 从站 1: 汇川 AM600-1616END — 按钮采集 + 接触器控制
6.2 IO 地址分配
| 地址 | 模块 | 信号 | 用途 |
|---|---|---|---|
| %IX0.0 | 从站 1 | SB_Start | 启动按钮 (常开) |
| %IX0.1 | 从站 1 | SB_Stop | 停止按钮 (常闭) |
| %IX0.2 | 从站 1 | SB_Fwd | 正转选择 |
| %IX0.3 | 从站 1 | SB_Rev | 反转选择 |
| %IX0.4 | 从站 1 | SB_Jog | 点动按钮 |
| %IX0.5 | 从站 1 | SB_EStop | 急停 (常闭) |
| %IX0.6 | 从站 1 | FR_OL | 热继电器反馈 (常闭) |
| %QX0.0 | 从站 1 | KM_Fwd | 正转接触器 |
| %QX0.1 | 从站 1 | KM_Rev | 反转接触器 |
| %QX0.2 | 从站 1 | HL_Run | 运行灯 |
| %QX0.3 | 从站 1 | HL_Fault | 故障灯 |
6.3 IO 用途分工
- PLC 主控: KM1/KM2 互锁逻辑、正反转切换延时、点动保持逻辑
- 安全链: 急停 + 热继电器全部使用常闭触点 (失效安全), 串联接入 DI
- 硬件辅助: KM1/KM2 本体自带机械互锁作为第二道保护
7. 核心数据结构
TYPE UDT_Motor:
STRUCT
bRunning : BOOL; // 运行中
bFault : BOOL; // 故障
bFwdCmd : BOOL; // 正转指令
bRevCmd : BOOL; // 反转指令
bSwitching : BOOL; // 正反切换中
nRunHours : DINT; // 累计运行小时 (Retain)
nStartCount : DINT; // 启动次数 (Retain)
END_STRUCT
END_TYPE
VAR_GLOBAL RETAIN
gStats_Motor : UDT_Motor;
END_VAR
8. 核心程序代码
FB_MotorControl — 方向互锁 + 切换延时:
FUNCTION_BLOCK FB_MotorControl
VAR_INPUT
bStart, bStop, bFwd, bRev, bJog, bEStop, bOverLoad : BOOL;
END_VAR
VAR
tonSwitch : TON;
tSwitchTime : TIME := T#500ms;
END_VAR
// 故障合并 (急停 OR 过载)
gStats_Motor.bFault := NOT bEStop OR NOT bOverLoad;
IF gStats_Motor.bFault THEN
gStats_Motor.bRunning := FALSE;
gStats_Motor.bFwdCmd := FALSE;
gStats_Motor.bRevCmd := FALSE;
END_IF;
// 启停
IF bStart AND NOT gStats_Motor.bFault AND NOT gStats_Motor.bSwitching THEN
gStats_Motor.bRunning := TRUE;
gStats_Motor.nStartCount := gStats_Motor.nStartCount + 1;
END_IF;
IF NOT bStop THEN gStats_Motor.bRunning := FALSE; END_IF;
// 正反转互锁 (软件 + 延时)
IF gStats_Motor.bRunning AND NOT gStats_Motor.bSwitching THEN
IF bFwd AND NOT bRev THEN
IF gStats_Motor.bRevCmd THEN
gStats_Motor.bRevCmd := FALSE;
gStats_Motor.bSwitching := TRUE;
ELSE
gStats_Motor.bFwdCmd := TRUE;
END_IF;
END_IF;
END_IF;
// 500 ms 切换延时
tonSwitch(IN := gStats_Motor.bSwitching, PT := tSwitchTime);
IF tonSwitch.Q THEN
gStats_Motor.bSwitching := FALSE;
IF bFwd THEN gStats_Motor.bFwdCmd := TRUE; END_IF;
IF bRev THEN gStats_Motor.bRevCmd := TRUE; END_IF;
END_IF;
FB_MainControl — 点动与输出映射:
// 点动优先 (保持式: 按住转, 松手停)
IF bJog AND NOT gStats_Motor.bFault AND NOT gStats_Motor.bRunning THEN
KM_Fwd := TRUE; KM_Rev := FALSE;
ELSIF gStats_Motor.bRunning THEN
KM_Fwd := gStats_Motor.bFwdCmd AND NOT gStats_Motor.bRevCmd;
KM_Rev := gStats_Motor.bRevCmd AND NOT gStats_Motor.bFwdCmd;
ELSE
KM_Fwd := FALSE; KM_Rev := FALSE;
END_IF;
HL_Run := gStats_Motor.bRunning OR bJog;
HL_Fault := gStats_Motor.bFault;
// 累计运行小时
tonHour(IN := gStats_Motor.bRunning, PT := T#1h);
IF tonHour.Q THEN
gStats_Motor.nRunHours := gStats_Motor.nRunHours + 1;
tonHour(IN := FALSE);
END_IF;
9. 运行与调试
- 仿真验证: 在 IDE 仿真 Runtime 中强制 DI, 观察 KM_Fwd/KM_Rev 与预期一致
- 下载部署: 断电接线确认 → 通电下载 → 在线监控 DB_MotorStats
- 现场调试顺序: 先手动测试急停 (断 24V 模拟) → 测试过载 (按热继电器 Test 按钮) → 再启动电机
- 强制测试: 在线强制
bFwd := TRUE, 观察 Q0.0 输出正常 + 电机正转 - 常见报警: 接触器不吸合 → 检查 24V 电源与接触器线圈; 运行中突然停 → 查看
bFault与故障灯
10. 用到的 Darra 功能
| 功能模块 | 本案例用到的 | 说明 |
|---|---|---|
| PLC 编程 | SCL + UDT 结构体 + Retain 变量 + TON | IEC 61131-3 标准 |
| HMI | 本地 + 手机端故障推送 | 运行时间/启动次数远程查看 |
| 通讯 | EtherCAT 主站 | IO 采集与接触器控制 |
| 数据记录 | 运行小时 / 启动次数 Retain | OEM 可按时长计费 |
| 服务 | 终端授权 + 故障推送微信 | 售后效率提升 |
11. 项目总结
- 实测指标: 急停响应 8 ms (1 扫描周期), 正反切换延时 500 ms 零相间短路, 连续 30 天无误动作
- 扩展方向:
- 接入变频器 (Modbus RTU) 实现软启动 + 调速, 功率扩展到 15 kW
- 增加振动/温度传感器, 实现预测性维护, 超阈值推送维保告警 (工单由上层系统生成)
- 多台电机组控版本 (水泵组/风机组), 支持轮换与备用切换