3. 伺服电机驱动配置

伺服电机驱动配置 学习卡片

任务目标

在LinuxCNC中配置伺服驱动器,使其通过脉冲+方向接口工作在位置模式,并完成使能控制与回零功能验证。本案例以常见的步进/伺服脉冲接口驱动器(如雷赛、台达等支持脉冲方向模式的型号)为对象,通过修改LinuxCNC配置文件实现完整控制链路。

环境与依赖

  • LinuxCNC 2.8或更高版本(已安装并配置好实时内核)
  • 支持脉冲+方向输出的接口卡(如并行口、MESA卡、或板载PWM发生器)
  • 伺服驱动器已设置为位置模式(脉冲/方向),电子齿轮比已按机械结构设定
  • 驱动器使能信号接入控制接口(通常为ENA+ / ENA-)

核心配置实现

以下为最小可运行的LinuxCNC配置文件,使用并行口作为脉冲输出,通过stepgen软件发生器产生脉冲/方向信号,并配置回零输入。

# 文件: servo_axis.hal
# 加载并行口驱动(假设使用0x378端口)
loadrt hal_parport cfg="0x378 out"
setp parport.0.pin-00-out-invert 0
setp parport.0.pin-01-out-invert 0

# 加载stepgen(软件脉冲发生器)
loadrt stepgen step_type=0,0

# 连接X轴脉冲/方向信号(stepgen.0对应X轴)
addf parport.0.read base-thread
addf stepgen.make-pulses base-thread
addf stepgen.update-freq base-thread
addf parport.0.write base-thread

# 脉冲输出到并行口引脚
net x-step = stepgen.0.step
net x-dir  = stepgen.0.dir
net x-enable = stepgen.0.enable

# 并行口引脚分配(以常见接线为例)
setp parport.0.pin-02-out 1   # 引脚2输出脉冲
setp parport.0.pin-03-out 1   # 引脚3输出方向
setp parport.0.pin-04-out 1   # 引脚4输出使能

# 使能信号逻辑(高电平使能)
net x-enable => parport.0.pin-04-out

# 回零开关输入(引脚10作为X轴原点)
setp parport.0.pin-10-in 1
net x-home =< parport.0.pin-10-in
# 文件: servo_axis.ini(关键部分)
[EMC]
MACHINE = servo_axis
DEBUG = 0

[DISPLAY]
DISPLAY = axis

[TRAJ]
AXES = 1
COORDINATES = X
HOME = 0 0 0 0 0 0

[AXIS_0]
TYPE = LINEAR
UNITS = mm
MAX_VELOCITY = 100
MAX_ACCELERATION = 500
STEPGEN_MAXVEL = 100
STEPGEN_MAXACC = 500

# 位置模式比例因子(脉冲数/毫米,需按驱动器电子齿轮比计算)
SCALE = 1000

# 回零配置
HOME_IS_SHARED = 0
HOME_SEQUENCE = 1
HOME_USE_INDEX = 0
HOME_INDEX_NO_ENCODER = 1
HOME_INDEX_OFFSET = 0
HOME_OFFSET = 0
HOME_SEARCH_VEL = 5
HOME_LATCH_VEL = 2
HOME_FINAL_VEL = 0
HOME_IGNORE_LIMITS = NO

# 伺服使能逻辑(通过hal引脚控制)
EMC_ENABLE = 1

运行与验证

  1. 将上述两个文件保存到同一目录(如~/linuxcnc/configs/servo_axis/),确保文件名与[EMC]MACHINE一致。
  2. 启动LinuxCNC并加载该配置:linuxcnc servo_axis.ini
  3. 在Axis界面中,先点击“机器”菜单下的“开启机器”(或按F1),观察驱动器是否使能(驱动器面板上使能指示灯亮起)。
  4. 手动输入X轴移动命令(如MDI中输入G0 X10),确认电机按预期方向移动10mm。
  5. 点击“回原点”按钮(或MDI输入G28.1),观察轴是否向原点方向移动并在碰到原点开关后停止。

通过判定标准

  • 使能后电机处于锁定状态,外力无法轻易转动(位置模式特性)。
  • MDI移动命令执行后,实际位移与指令值误差在驱动器精度范围内(通常<0.01mm)。
  • 回零完成后,Axis界面坐标显示为0.000,且原点开关指示灯状态正确。
  • 若移动方向相反,将parport.0.pin-03-out的invert属性设为1即可反转方向。

常见问题

  • 电机不使能:检查net x-enable连接是否完整,以及驱动器ENA信号极性是否与配置匹配(部分驱动器低电平使能,需设置setp parport.0.pin-04-out-invert 1)。
  • 脉冲丢失或位置不准:确认SCALE值与驱动器电子齿轮比一致,并检查并行口输出频率是否超出驱动器最大输入频率。
  • 回零超时:检查HOME_SEARCH_VEL是否过小,以及原点开关接线是否正常(可在HAL中监控x-home信号状态)。
伺服驱动信号连接示意 LinuxCNC stepgen.0 脉冲/方向/使能 并行口 引脚2/3/4 引脚10(输入) 伺服驱动器 位置模式 PUL/DIR/ENA PUL/DIR ENA 原点开关 HOME信号 伺服电机 动力线

以上配置实现了单轴伺服驱动的最小闭环。实际应用时需根据驱动器型号调整电子齿轮比、脉冲极性等参数,但整体信号链路与配置逻辑保持一致。