跳到主要内容

脉冲步进

Darra PLC 通过 PulseDriver 支持脉冲/方向 (Pulse/Direction) 方式控制步进电机和伺服驱动器,适用于不需要实时总线的简单运动控制场景。

工作原理

信号类型

信号模式说明接线
Pulse + Direction脉冲=步进, 方向=正/反2 线
CW + CCW正转脉冲 + 反转脉冲2 线
A + B 差分正交编码输出2 线

配置

var pulse = new PulseDriver();
pulse.Configure(new PulseConfig {
PulseOutput = "%QX0.0", // 脉冲输出端口
DirectionOutput = "%QX0.1", // 方向输出端口
EncoderInput = "%IX0.0", // 编码器反馈 (可选)
PulsesPerRevolution = 10000, // 每转脉冲数
MaxFrequency = 500000, // 最大脉冲频率 (Hz)
AccelTime = 200, // 加速时间 (ms)
DecelTime = 200 // 减速时间 (ms)
});

运动控制

PulseDriver 实现 IAxisDriver 接口,支持标准 PLCopen 运动功能块:

功能块说明
MC_MoveAbsolute绝对位置运动
MC_MoveRelative相对位置运动
MC_MoveVelocity速度模式
MC_Home回原点
MC_Stop停止运动
(* SCL 程序示例: 绝对定位 *)
MC_MoveAbsolute(
Axis := Axis1,
Position := 1000.0, (* 目标位置 (脉冲) *)
Velocity := 50000.0, (* 速度 (脉冲/s) *)
Execute := TRUE
);

速度规划

PulseDriver 内置梯形速度规划:

速度
^
| ┌──────────┐
| / \
| / \
| / \
|──/ \──
+─────────────────────────→ 时间
加速 匀速 减速
参数说明范围
起始速度启动频率100~10000 Hz
目标速度运行频率1000~500000 Hz
加速时间从起始到目标10~5000 ms
减速时间从目标到停止10~5000 ms
S 曲线加减速

对于需要平滑运动的场景,可在运动功能块中启用 S 曲线加减速,减少机械冲击和振动。

回原点

支持多种回原点方式:

方式说明
正向限位正向运动直到触发限位开关
负向限位负向运动直到触发限位开关
原点开关寻找原点近接开关
Z 相利用编码器 Z 相信号
当前位置将当前位置设为零点

限制

性能限制

脉冲输出受限于 IO 刷新速率。软件脉冲输出最大频率约 500kHz,高速场景建议使用带硬件脉冲发生器的 IO 模块或 EtherCAT 伺服。

对比项脉冲步进EtherCAT 伺服
最大轴数4~8 轴32 轴
同步精度~1ms< 1μs
反馈分辨率取决于编码器取决于编码器
电子齿轮不支持支持
适用场景简单定位多轴联动

脉冲输出硬件方案

Darra 支持三种脉冲输出:

1. 高速 DO (软件脉冲)

直接用普通数字输出模块, 由 PLC 程序按周期拉高拉低:

  • 优点: 不需要额外硬件
  • 缺点: 受扫描周期限制, 最高 ~500 Hz, 抖动大
  • 适合: 非运动场景 (如呼吸灯、步进电机慢速点动)

2. 专用脉冲模块

EtherCAT / Modbus 总线上的专用脉冲输出模块:

模块路数最大频率特点
Beckhoff EL22622500 kHzEtherCAT, 高速
Wago 750-5112100 kHzModbus / CANopen
ZMC 步进控制43 MHz专用卡, PCIe
  • 优点: 硬件产生脉冲, 精确稳定
  • 缺点: 增加硬件成本
  • 适合: 中低速运动 (< 500 kHz)

3. EtherCAT 脉冲/步进从站

从站内置脉冲产生逻辑, PLC 只需发目标位置:

  • 优点: 与伺服使用方式一致, MC FB 直接用
  • 缺点: 依赖有这种从站的产品线

细分与分辨率

步进电机厂商标的细分 (Microstep) 决定脉冲数与角度的换算:

细分每步角度每转脉冲数
1 (全步)1.8°200
20.9°400
80.225°1600
160.1125°3200
320.056°6400
640.028°12800
1280.014°25600

细分高 = 运动平滑, 但驱动器频率需求高。1.8° 电机常用 16 或 32 细分。

配置参数详解

{
"pulseOutput": "%QX10.0",
"directionOutput": "%QX10.1",
"enableOutput": "%QX10.2",
"alarmInput": "%IX10.0",
"limitPositive": "%IX10.1",
"limitNegative": "%IX10.2",
"homeSwitch": "%IX10.3",
"encoder": {
"channelA": "%IX11.0",
"channelB": "%IX11.1",
"channelZ": "%IX11.2"
},
"mechanics": {
"pulsesPerRevolution": 10000,
"reducerRatio": 10,
"leadScrewPitch": 5.0,
"unit": "mm"
},
"motion": {
"maxVelocity": 100000,
"maxAcceleration": 500000,
"maxJerk": 10000000,
"jogVelocity": 5000,
"homingVelocity1": 2000,
"homingVelocity2": 500
}
}

单位转换

配置好机械参数后, PLC 程序直接用工程单位:

// 移动到 250 mm 位置, 速度 50 mm/s
MC_MoveAbsolute(
Axis := Axis1,
Position := 250.0, // mm
Velocity := 50.0, // mm/s
Acceleration := 100, // mm/s²
Execute := TRUE
);

底层自动换算为脉冲:

脉冲 = 250 mm × (10000 脉冲/转) × (10 齿轮比) / (5 mm/转) = 5,000,000 脉冲

闭环与开环

开环

只发脉冲, 不读编码器:

  • 成本低
  • 失步不可检测
  • 适合负载稳定的场合

闭环 (伪闭环)

发脉冲 + 读编码器反馈:

  • 能检测失步 (位置偏差超过阈值报警)
  • PLC 程序可以主动重新定位
  • 但实时性不如真伺服闭环

真闭环 (伺服)

用伺服驱动器 + 伺服电机, 内置位置环:

  • 最高精度和响应
  • 推荐用 EtherCAT 连接 (CSP 模式)

多轴协调

脉冲方式的多轴协调精度约 1 ms (扫描周期级别), 适合:

  • 顺序动作 (A 轴到位后 B 轴运动)
  • 独立轴 (各走各的)

不适合:

  • 插补运动 (两轴严格同步的圆弧)
  • 电子凸轮 / 电子齿轮

这些高级功能需要伺服和 EtherCAT。

点动操作

MC_Jog FB 用于手动点动:

MC_Jog(
Axis := Axis1,
JogForward := PositiveButton,
JogBackward := NegativeButton,
Velocity := 10.0 (* mm/s *)
);

按下正向按钮电机正转, 松开停止。适合调机/对位。

限位保护

必须配置硬限位 + 软限位:

硬限位 (外部 DI)

  • 正向限位开关 (%IX10.1)
  • 负向限位开关 (%IX10.2)
  • 触发后立即停止, 不允许继续往限位方向移动
  • 反方向可以脱离

软限位

在配置里设:

"softLimits": {
"positive": 500.0,
"negative": -10.0
}

PLC 层拒绝超过这些值的指令, 是硬限位之前的保护。

回原点流程

经典流程:

  1. 快速反向搜索原点开关 (高速)
  2. 碰到原点开关, 反向低速退出
  3. 再正向低速搜索原点开关 (精确定位)
  4. 找到后, 清零当前位置
  5. (可选) 搜索 Z 相, 以 Z 相为精确零点

每台机器的具体步骤由 MC_Home FB 参数决定。

加减速曲线

梯形加速:

  • 加速段: a = max_acc
  • 匀速段: v = max_vel
  • 减速段: a = -max_acc

S 曲线加速:

  • 加加速 (Jerk) 限制, 曲线有 7 段
  • 启停更平滑, 机械冲击小
  • 但到位时间略长

选择:

  • 大惯量负载: 用 S 曲线
  • 轻负载 + 需快速: 梯形

排错

症状处理
电机不动检查 Enable 信号; 驱动器报警复位
反方向转交换方向信号接线或配置反向
位置偏差越来越大开环失步, 改用闭环或降低加速度
到位不准细分数或齿轮比填错
限位触发但电机继续限位信号取反 (常开 vs 常闭)
高频时电机卡顿驱动器频率上限, 降低细分或降速