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
运行与验证
- 将上述两个文件保存到同一目录(如
~/linuxcnc/configs/servo_axis/),确保文件名与[EMC]MACHINE一致。 - 启动LinuxCNC并加载该配置:
linuxcnc servo_axis.ini - 在Axis界面中,先点击“机器”菜单下的“开启机器”(或按F1),观察驱动器是否使能(驱动器面板上使能指示灯亮起)。
- 手动输入X轴移动命令(如MDI中输入
G0 X10),确认电机按预期方向移动10mm。 - 点击“回原点”按钮(或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信号状态)。
以上配置实现了单轴伺服驱动的最小闭环。实际应用时需根据驱动器型号调整电子齿轮比、脉冲极性等参数,但整体信号链路与配置逻辑保持一致。