『7x24小时有问必答』
副标题
: 编码器+伺服,让PLC成为运动控制大脑

一、高速计数:捕捉瞬间的脉冲

1.1 为什么需要高速计数?

普通PLC扫描周期10-50ms,但编码器脉冲频率可达100kHz以上。
[tr][td]场景[/td][td]脉冲频率[/td][td]普通扫描能否捕获[/td][/tr][tr][td]低速传送带[/td][td]100Hz[/td][td] 可以[/td][/tr][tr][td]高速包装线[/td][td]10kHz[/td][td] 会漏计[/td][/tr][tr][td]高速主轴[/td][td]100kHz[/td][td] 严重漏计[/td][/tr]
高速计数模块
:硬件级计数,不依赖扫描周期,精度达微秒级。

1.2 三菱iQ-R高速计数模块

[tr][td]模块型号[/td][td]通道数[/td][td]最高频率[/td][td]计数模式[/td][/tr][tr][td]AJ71-Q16[/td][td]4通道[/td][td]200kHz[/td][td]单相/双相[/td][/tr][tr][td]AJ71-Q16H[/td][td]4通道[/td][td]500kHz[/td][td]单相/双相/正交[/td][/tr][tr][td]AJ71-Q32[/td][td]8通道[/td][td]100kHz[/td][td]单相/双相[/td][/tr]
计数模式
[tr][td]模式[/td][td]输入信号[/td][td]用途[/td][/tr][tr][td]单相1计数[/td][td]A相[/td][td]单向计数[/td][/tr][tr][td]单相2计数[/td][td]A+B相[/td][td]双向计数[/td][/tr][tr][td]双相1计数[/td][td]A/B相[/td][td]正交编码[/td][/tr][tr][td]双相2计数[/td][td]A/B/Z相[/td][td]正交+零位[/td][/tr]

二、高速计数实战:编码器测速

2.1 编码器选型

[tr][td]类型[/td][td]分辨率[/td][td]输出[/td][td]适用场景[/td][/tr][tr][td]增量式[/td][td]100-5000脉冲/转[/td][td]A/B/Z相[/td][td]测速、定位[/td][/tr][tr][td]绝对式[/td][td]12-26位[/td][td]串行/并行[/td][td]断电记忆位置[/td][/tr]

2.2 测速原理

转速(rpm) = 脉冲频率(Hz) × 60 / 编码器分辨率(脉冲/转)
示例:编码器1000脉冲/转,测得频率5000Hz
转速 = 5000 × 60 / 1000 = 300 rpm

2.3 ST语言实现

( 高速计数 - 编码器测速 )
VAR
HC_Count AT %HC0: DINT;        ( 高速计数值 )
HC_Freq: REAL;                 ( 脉冲频率 )
Motor_Speed: REAL;             ( 电机转速 rpm )
Encoder_Res: INT := 1000;      ( 编码器分辨率 )
Time_Sample: TON;              ( 采样定时器 )
Last_Count: DINT;              ( 上次计数值 )
END_VAR
( 主程序 - 每100ms计算一次 )
IF Time_Sample.Q THEN
( 计算脉冲频率 )
HC_Freq := REAL#(HC_Count - Last_Count) / 0.1;
( 计算转速 )
Motor_Speed := HC_Freq * 60.0 / REAL#(Encoder_Res);
( 保存当前值 )
Last_Count := HC_Count;
( 重置定时器 )
Time_Sample(IN:=FALSE);
Time_Sample(IN:=TRUE, PT:=T#100ms);
END_IF;

2.4 避坑指南

[tr][td][/td][td]表现[/td][td]解决方案[/td][/tr][tr][td]计数溢出[/td][td]高速时数值回零[/td][td]使用32位计数器[/td][/tr][tr][td]方向错误[/td][td]正反转计数混乱[/td][td]正确配置正交模式[/td][/tr][tr][td]零点丢失[/td][td]长距离运行位置漂移[/td][td]定期用Z相信号复位[/td][/tr][tr][td]噪声干扰[/td][td]计数跳动[/td][td]使用屏蔽线,硬件滤波[/td][/tr]

三、脉冲输出:驱动伺服与步进

3.1 脉冲输出原理

PLC通过高速脉冲控制伺服/步进电机:
脉冲频率 → 电机转速
脉冲数量 → 电机位置
方向信号 → 电机转向

3.2 三菱iQ-R脉冲输出模块

[tr][td]模块型号[/td][td]通道数[/td][td]最高频率[/td][td]输出类型[/td][/tr][tr][td]AJ71-Q2DAV2[/td][td]2通道[/td][td]200kHz[/td][td]脉冲/方向[/td][/tr][tr][td]AJ71-Q4DAV2[/td][td]4通道[/td][td]500kHz[/td][td]脉冲/方向[/td][/tr][tr][td]AJ71-Q16[/td][td]4通道[/td][td]200kHz[/td][td]脉冲/方向[/td][/tr]

3.3 脉冲输出模式

[tr][td]模式[/td][td]说明[/td][td]用途[/td][/tr][tr][td]脉冲+方向[/td][td]1路脉冲+1路方向[/td][td]伺服、步进[/td][/tr][tr][td]A/B正交[/td][td]2路相位差90°脉冲[/td][td]编码器模拟[/td][/tr][tr][td]CW/CCW[/td][td]正转脉冲+反转脉冲[/td][td]双绕组电机[/td][/tr]

3.4 脉冲输出实战:伺服定位

( 伺服定位 - 脉冲输出 )
VAR
Pulse_Out AT %QX0.0: BOOL;     ( 脉冲输出 )
Dir_Out AT %QX0.1: BOOL;       ( 方向输出 )
Target_Pos: DINT := 10000;     ( 目标位置 )
Current_Pos: DINT;             ( 当前位置 )
Pulse_Count: DINT;             ( 已输出脉冲数 )
Move_Done: BOOL;               ( 移动完成 )
Pulse_Freq: INT := 10000;      ( 脉冲频率 Hz )
END_VAR
( 定位执行 )
IF NOT Move_Done THEN
( 判断方向 )
IF Target_Pos > Current_Pos THEN
Dir_Out := TRUE;           ( 正转 )
Pulse_Count := Pulse_Count + 1;
ELSE
Dir_Out := FALSE;          ( 反转 )
Pulse_Count := Pulse_Count - 1;
END_IF;
( 输出脉冲 )
Pulse_Out := NOT Pulse_Out;
( 检查是否到达 )
IF ABS(Pulse_Count) >= ABS(Target_Pos - Current_Pos) THEN
Move_Done := TRUE;
Pulse_Out := FALSE;
END_IF;
END_IF;

四、定位控制:从点到点的精准移动

4.1 定位控制三要素

[tr][td]要素[/td][td]说明[/td][td]参数[/td][/tr][tr][td]目标位置[/td][td]移动到哪个位置[/td][td]绝对/相对坐标[/td][/tr][tr][td]移动速度[/td][td]移动多快[/td][td]脉冲频率[/td][/tr][tr][td]加减速[/td][td]如何启停[/td][td]加减速时间[/td][/tr]

4.2 定位控制模式

[tr][td]模式[/td][td]说明[/td][td]适用场景[/td][/tr][tr][td]绝对定位[/td][td]移动到绝对坐标[/td][td]多工位定位[/td][/tr][tr][td]相对定位[/td][td]移动相对距离[/td][td]增量调整[/td][/tr][tr][td]回零[/td][td]移动到参考点[/td][td]开机初始化[/td][/tr][tr][td]连续定位[/td][td]连续移动不停顿[/td][td]流水线[/td][/tr]

4.3 S形加减速

[tr][td]加减速类型[/td][td]特点[/td][td]适用[/td][/tr][tr][td]梯形加减速[/td][td]简单,有冲击[/td][td]低速定位[/td][/tr][tr][td]S形加减速[/td][td]平滑,无冲击[/td][td]高速精密定位[/td][/tr][tr][td]指数加减速[/td][td]过渡自然[/td][td]中等速度[/td][/tr]
S形加减速曲线
速度
│     ┌──────┐
│    /        \
│   /          \
│  /            \
│ /              \
└──────────────────→ 时间
加速    匀速    减速

五、深度案例分析:CNC机床的脉冲控制

5.1 背景

某小型CNC机床,X/Y/Z三轴联动,精度要求±0.01mm。

5.2 问题经过

[tr][td]问题[/td][td]表现[/td][td]影响[/td][/tr][tr][td]定位不准[/td][td]偏差0.1mm[/td][td]加工精度不达标[/td][/tr][tr][td]振动明显[/td][td]高速时抖动[/td][td]表面粗糙[/td][/tr][tr][td]回零漂移[/td][td]每次回零位置不同[/td][td]坐标系混乱[/td][/tr]

5.3 解决方案

硬件配置
[tr][td][/td][td]电机[/td][td]编码器[/td][td]模块通道[/td][/tr][tr][td]X轴[/td][td]伺服2000W[/td][td]2500脉冲/转[/td][td]HC0/PO0[/td][/tr][tr][td]Y轴[/td][td]伺服2000W[/td][td]2500脉冲/转[/td][td]HC1/PO1[/td][/tr][tr][td]Z轴[/td][td]伺服1000W[/td][td]2500脉冲/转[/td][td]HC2/PO2[/td][/tr]
控制逻辑
( CNC三轴联动定位 )
VAR
X_Target, Y_Target, Z_Target: DINT;
X_Pos, Y_Pos, Z_Pos: DINT;
X_Move, Y_Move, Z_Move: BOOL;
END_VAR
( 三轴联动 - 同时启动 )
IF Start_Button THEN
X_Move := TRUE;
Y_Move := TRUE;
Z_Move := TRUE;
( 启动三轴脉冲输出 )
Pulse_Out_X(X_Target, Speed, Accel, Decel);
Pulse_Out_Y(Y_Target, Speed, Accel, Decel);
Pulse_Out_Z(Z_Target, Speed, Accel, Decel);
END_IF;
( 三轴同时完成 )
IF X_Move AND Y_Move AND Z_Move THEN
( 等待三轴都完成 )
IF Move_Done_X AND Move_Done_Y AND Move_Done_Z THEN
All_Done := TRUE;
END_IF;
END_IF;

5.4 效果对比

[tr][td]指标[/td][td]优化前[/td][td]优化后[/td][td]提升[/td][/tr][tr][td]定位精度[/td][td]±0.1mm[/td][td]±0.008mm[/td][td]-92%[/td][/tr][tr][td]表面粗糙度[/td][td]Ra3.2[/td][td]Ra0.8[/td][td]-75%[/td][/tr][tr][td]回零重复性[/td][td]±0.05mm[/td][td]±0.002mm[/td][td]-96%[/td][/tr][tr][td]加工效率[/td][td]60%[/td][td]95%[/td][td]+35%[/td][/tr]

六、高速计数与脉冲输出的调试技巧

6.1 调试步骤

[tr][td]步骤[/td][td]操作[/td][td]说明[/td][/tr][tr][td]1[/td][td]模块参数设置[/td][td]频率、计数模式、滤波[/td][/tr][tr][td]2[/td][td]编码器接线检查[/td][td]A/B/Z相正确连接[/td][/tr][tr][td]3[/td][td]手动脉冲测试[/td][td]输出少量脉冲验证方向[/td][/tr][tr][td]4[/td][td]低速运行测试[/td][td]100Hz以下验证定位[/td][/tr][tr][td]5[/td][td]高速运行测试[/td][td]逐步提高频率[/td][/tr][tr][td]6[/td][td]长时间运行[/td][td]验证稳定性[/td][/tr]

6.2 常用诊断

[tr][td]现象[/td][td]可能原因[/td][td]排查[/td][/tr][tr][td]不计数[/td][td]接线错误/模块故障[/td][td]检查A/B相,替换模块[/td][/tr][tr][td]计数反向[/td][td]A/B相接反[/td][td]交换A/B相[/td][/tr][tr][td]脉冲不输出[/td][td]参数未设置[/td][td]检查频率参数[/td][/tr][tr][td]定位偏差[/td][td]机械间隙[/td][td]补偿间隙参数[/td][/tr]

七、核心公式与工具

7.1 脉冲计算速查

脉冲数 = 目标距离(mm) × 编码器分辨率 / 丝杠螺距(mm)
示例:移动10mm,丝杠螺距5mm,编码器2500脉冲/转
脉冲数 = 10 × 2500 / 5 = 5000 脉冲
脉冲频率 = 目标速度(mm/s) × 编码器分辨率 / 丝杠螺距(mm)
示例:速度100mm/s,丝杠螺距5mm,编码器2500脉冲/转
频率 = 100 × 2500 / 5 = 50000 Hz = 50kHz

7.2 选型决策树

需要多高精度?
├─ ±1mm → 步进电机 + 普通计数
├─ ±0.1mm → 伺服电机 + 高速计数
└─ ±0.01mm → 伺服电机 + 闭环反馈
需要多快速度?
├─ <1000Hz → 普通I/O
├─ 1-100kHz → 高速计数模块
└─ >100kHz → 专用运动控制模块

八、金句集锦

本文基于三菱iQ-R PLC高速计数与脉冲输出实战经验整理,涵盖编码器测速、伺服定位、CNC三轴联动等核心主题。
推荐阅读
三菱GX Works3 028:安全PLC编程——SIL2/SIL3安全功能实战
发布于 2026-05-27
三菱 PLC 教程 02:iQ-R 系列硬件组成
发布于 202603
NACHI 机械手教程第 4 章:编程基础
发布于 202603
KEYWORDS
PLC, iQ-R, ST语言, 三菱, 类
如果你觉得这篇文章有帮助,请点个在看,分享给更多需要的人!
关注我,获取更多实用干货~
有问题欢迎评论区留言交流!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

上一主题上一主题         下一主题下一主题
QQ手机版小黑屋粤ICP备17165530号

关于我们·投诉举报· 用户帮助· 联系我们 · 本站服务 · 版权声明· 隐私政策 · 投搞指南

法律保护:PLC技术网,plcjs.com,plcjs.net等字样
Copyright 2010-2030. All rights reserved. 


微信公众号二维码 抖音二维码 百家号二维码 今日头条二维码哔哩哔哩二维码