西门子 S7-200 PLC 搭配接近开关测量电机转速是工业现场低成本、高可靠的方案,核心原理是通过接近开关采集电机轴 / 联轴器的脉冲信号,PLC 统计单位时间内的脉冲数,换算为转速。以下是从 “硬件选型→接线→程序设计→调试优化→故障排查” 的全流程指南,覆盖基础计数和精准测速场景:
一、核心原理与硬件选型
1. 测速原理
2. 关键硬件选型
| 组件 | 选型要求 | 示例 |
|---|---|---|
| 接近开关 | ① 类型:NPN/PNP 常开(匹配 PLC 输入);② 响应频率≥电机最高转速对应的脉冲频率(如 3000rpm→50Hz,选 100Hz 以上);③ 供电:DC24V | 欧姆龙 E2E-X5ME1(NPN 常开,响应频率 1kHz) |
| 检测片 | 金属材质(铁 / 钢),数量 1~6 个(数量越多,测速精度越高) | 1 个 φ10mm 金属片,固定在电机联轴器 |
| S7-200 PLC | 需支持高速计数器(所有 200 型号均支持,如 CPU224、CPU226) | CPU224 CN(自带 6 路高速计数器) |
二、硬件接线(核心,避免信号丢失)
1. 接近开关与 PLC 接线(以 NPN 常开为例,最常用)
| 接近开关引脚 | 功能 | 接线至 PLC / 电源 |
|---|---|---|
| V+ | 电源正极 | DC24V 正极(PLC 自带 24V 或外接) |
| V- | 电源负极 | DC24V 负极(PLC 1M 端子) |
| OUT | 信号输出 | PLC 高速计数器输入端(如 I0.0,对应 HSC0) |
⚠️ 关键注意:
2. 供电建议
三、程序设计(Step7-Micro/WIN,分 2 种场景)
场景 1:基础测速(1 秒统计 1 次,精度满足大部分场景)
核心逻辑:高速计数器累计脉冲→定时 1 秒清零计数器→换算转速,步骤如下:
步骤 1:初始化高速计数器(HSC0,I0.0 输入)
ladder
// 网络1:初始化高速计数器(仅首次扫描执行) LD SM0.1 // 首次扫描脉冲 MOVB 16#F8, SMB37 // HSC0控制字节:允许计数、复位无效、启动无效、增计数、16位模式 HDEF 0, 0 // 定义HSC0为模式0(增计数,无复位/启动) MOVW 0, C0 // 清空计数器C0 HSC 0 // 启动HSC0
步骤 2:1 秒定时统计脉冲(用定时器 T32,1ms 精度)
ladder
// 网络2:1秒定时触发 LD SM0.0 TON T32, 1000 // 1000ms=1秒,T32为1ms高精度定时器 // 网络3:定时到后读取脉冲数,换算转速 LD T32 MOVW HC0, VW100 // 将HSC0当前值存入VW100(1秒内的脉冲数) MOVW 0, HC0 // 清零高速计数器,准备下一次统计 // 网络4:转速换算(1个检测片) LD SM0.0 MUL VW100, 60, VW102 // VW102=脉冲数×60 → 转速(rpm)
场景 2:高精度测速(多检测片 + 平均滤波,减少波动)
若需更高精度(如误差≤1rpm),优化点:
示例程序(6 个检测片,2 秒统计,平均滤波):
ladder
// 网络1:初始化(同场景1,略) // 网络2:2秒定时 LD SM0.0 TON T32, 2000 // 2秒定时 // 网络3:读取脉冲并换算 LD T32 MOVW HC0, VW100 // 2秒脉冲数 MOVW 0, HC0 DIV VW100, 2, VW101 // 平均1秒脉冲数=VW100/2 MUL VW101, 60, VW102 DIV VW102, 6, VW104 // VW104=转速=(1秒脉冲数×60)/6个检测片 // 网络4:滤波(取3次平均值) LD SM0.0 XCH VW104, VW106 // 缓存本次转速至VW106 XCH VW106, VW108 // 上一次转速至VW108 XCH VW108, VW110 // 上上次转速至VW110 ADD VW104, VW106, VW112 ADD VW112, VW108, VW112 DIV VW112, 3, VW114 // VW114=最终滤波后转速
关键参数说明
| 变量 | 含义 | 备注 |
|---|---|---|
| HC0 | 高速计数器当前值 | 存储脉冲数,16 位最大计数值 32767 |
| VW102 | 未滤波转速 | 基础场景直接使用 |
| VW114 | 滤波后转速 | 高精度场景使用 |
| T32/T96 | 高精度定时器(1ms) | 普通定时器 T37(10ms)精度不足,不推荐 |
四、调试与优化(避免测速不准)
1. 静态调试(电机不转)
2. 动态调试(电机运行)
3. 精度优化要点
五、常见故障 & 排查
| 故障现象 | 原因分析 | 解决方法 |
|---|---|---|
| 转速显示 0 | 接近开关未触发 / 接线错误 | 检查接近开关供电、OUT 接线至 I0.0,手动触发测试 |
| 转速波动大(±50rpm) | 干扰 / 检测片数量少 | 屏蔽线接地,增加检测片数量,加滤波 |
| 转速偏高 / 偏低 | 检测片数量设置错误 | 核对程序中检测片数量(如 6 个设成 1 个,转速会 ×6) |
| 计数不连续 | 接近开关响应频率不足 | 更换高响应频率接近开关(≥1kHz) |
| 高速计数器不计数 | 初始化程序错误 | 检查 SMB37 赋值、HDEF 指令是否执行 |
六、进阶应用(可选)
1. 转速报警
添加转速上下限报警逻辑,如转速<500rpm(低转速报警)、>3000rpm(超速报警):
ladder
// 网络5:超速报警(>3000rpm) LD VW114 > 3000 = Q0.0 // 超速报警灯 // 网络6:低转速报警(<500rpm) LD VW114 < 500 = Q0.1 // 低转速报警灯
2. 通信上传转速
通过 Modbus RTU(PLC 200 的 PORT0)将转速值(VW114)上传至触摸屏 / 上位机,地址映射为 40001。
3. 频率补偿(适配变频电机)
若电机由变频器驱动,可将测速值反馈至变频器,实现转速闭环控制(需变频器支持外部脉冲输入)。
七、关键注意事项
按以上步骤,S7-200 可实现电机转速的稳定测量,精度满足风机、泵、传送带等大部分工业场景;若需更高精度(如≤0.1rpm),可更换增量式编码器(替代接近开关),程序仅需调整高速计数器模式,核心逻辑一致。

