共计 1032 个字符,预计需要花费 3 分钟才能阅读完成。
背景痛点
在工业自动化现场,200smart 编码器高速计数时经常遇到两个致命问题:信号抖动和脉冲丢失。传统解决方案往往只关注单一层面,比如单纯增加硬件滤波或简单调高采样频率。实际测试发现,当转速超过 800RPM 时,仅靠 10KΩ 电阻 +0.1μF 电容的常规滤波电路,脉冲丢失率仍高达 0.3%。更麻烦的是,强电磁干扰环境下(比如变频器附近),普通双绞线传输会导致信号幅值衰减 40% 以上。

技术方案
硬件层:RC 滤波黄金参数
- 阻抗匹配计算 :
- 编码器输出阻抗典型值 120Ω
- 目标截止频率公式:fc=1/(2πRC)
-
实测推荐值:R=4.7KΩ,C=22nF(截止频率约 1.5kHz)
-
接线规范 :
- 必须使用屏蔽双绞线,屏蔽层单端接地
- 信号线远离动力线 30cm 以上
- 电源端增加 TVS 二极管(如 SMBJ5.0CA)
软件层三重防护
- 中断服务程序优化 :
- 将 OB35 默认周期从 10ms 调整为 5ms
-
添加周期抖动检测(SM0.5 监控)
-
移动平均滤波算法 :
// 10 点移动平均滤波 MOV_W LW0, LW10 // 原始值 MOV_W LW2, LW12 // 滑动窗口 MATH LW10+LW12, LW14 // 累加 MOV_W LW14/10, LW16 // 平均值 -
脉冲补偿逻辑 :
- 建立转速 - 脉冲丢失率对应表
- 当连续 3 个周期无变化时自动补偿
完整代码实现
// HSC 初始化
LD SM0.1
MOV_B 16#FC, SMB37 // 模式 6 + 复位输入
MOV_DW +0, SMD38 // 预置值
HDEF 0, 0 // 定义 HSC0
HSC 0 // 启动
// 滤波处理
LD M0.0
EU
MOV_W HC0, VW100 // 读取原始值
CALL FILTER_MA // 调用滤波子程序
// 异常检测
LD SM0.5
TON T37, 100 // 超时检测
性能验证
| 测试条件 | 原始误差率 | 优化后误差率 |
|---|---|---|
| 500RPM 无干扰 | 0.08% | 0.02% |
| 1000RPM 变频器旁 | 1.2% | 0.15% |
示波器对比显示,信号峰峰值抖动从原来的±1.2V 降低到±0.3V。
避坑指南
- 电源干扰问题 :
- 症状:计数器无故跳变
-
方案:编码器电源加装 π 型滤波器(10μH+100μF)
-
线缆长度限制 :
- 普通电缆:≤50 米
- 带信号放大器:≤300 米
-
关键参数:衰减≤3dB/100m
-
OB35 周期设置 :
- 最小周期 = 扫描时间×1.2
- 典型值:5-20ms
实施建议
建议先进行离线仿真,用 PLCSIM Advanced 模拟不同转速下的脉冲输入。现场调试时,务必用示波器监测 HSC 输入端子波形。最后提醒,定期检查编码器联轴器机械间隙——我们曾遇到因 0.5mm 轴向窜动导致周期性计数误差的案例。
正文完
发表至: 未分类
近两天内
