3. 单轴点动与回零模式实现

任务目标与运动序列

本例在已配置好的单轴(虚拟伺服轴)上,用 PLCopen 运动控制功能块实现两种基本运动:点动(Jog)与主动回零(Homing)。核心是掌握 MC_Jog 与 MC_Home 的调用方式,并正确设置回零速度、爬行速度与偏移量,最后通过位置反馈判断回零是否完成。

回零采用“主动回零”方式:轴先以回零速度快速接近参考开关,碰到开关后减速,再以爬行速度缓慢脱离开关,在开关下降沿处锁定参考点,最后叠加偏移量把轴定位到用户定义的零点位置。整个过程的位置状态由 Axis.fActPosition 与 Axis.bHomeDone 反映。

单轴点动与主动回零运动序列 点动模式 MC_Jog JogForward / JogBackward Velocity = 50 mm/s 松开按钮 → 立即停止 主动回零 MC_Home 运动序列 ① 快速接近 回零速度 100 mm/s ② 碰到开关 减速停止 ③ 爬行脱离 爬行速度 10 mm/s ④ 锁定 参考点 ⑤ 叠加偏移量 Offset = 20 mm 最终零点 = 参考点 + 20 mm 回零完成后的位置状态与验证 Axis.bHomeDone TRUE → 回零完成 Axis.fActPosition = 20.0 mm(偏移后零点) Axis.nAxisState = 4(Synchronized) 验证:回零完成后执行 MC_MoveAbsolute(Position:=0) 应回到偏移后零点;再次回零结果应一致(重复精度) 若 bHomeDone 未置位,检查参考开关信号、回零速度与爬行速度设置是否合理

功能块调用与参数设置

点动使用 MC_Jog,回零使用 MC_Home。两者都通过 Axis 引用轴对象,并需要先使能轴(MC_Power)。以下为关键调用逻辑(结构化文本示例):

(* 轴使能 *)
MC_Power(Axis:=Axis1, Enable:=TRUE, bRegulatorOn:=TRUE, bDriveStart:=TRUE);

(* 点动:按住按钮持续运动,松开停止 *)
MC_Jog(Axis:=Axis1,
       JogForward:=bJogFwd,
       JogBackward:=bJogBwd,
       Velocity:=50.0,
       Acceleration:=200.0,
       Deceleration:=200.0);

(* 主动回零 *)
MC_Home(Axis:=Axis1,
        Execute:=bHomeStart,
        Position:=20.0,          (* 偏移量 Offset *)
        HomingMode:=0,           (* 主动回零,参考开关 *)
        Velocity:=100.0,         (* 回零速度 *)
        CreepVelocity:=10.0);    (* 爬行速度 *)
参数说明:
Velocity:快速寻找参考开关的速度,过大可能撞限位,过小则回零时间长。
CreepVelocity:碰到开关后脱离时的低速,用于提高参考点重复精度。
Position:偏移量,参考点锁定后轴会移动到该位置作为零点。

回零状态判断与常见问题

  • 回零完成判断:观察 Axis.bHomeDone 是否变为 TRUE,同时 Axis.fActPosition 应稳定在偏移量设定值附近。
  • 参考开关信号:若轴一直找不到参考点,检查参考开关输入是否正常触发,以及回零方向是否正确。
  • 速度设置:回零速度过高可能导致过冲,爬行速度过高会降低重复精度;建议回零速度 ≤ 轴最大速度的 30%,爬行速度 ≤ 回零速度的 10%。
  • 偏移量方向:偏移量正负号决定零点在参考点的哪一侧,需与机械坐标系定义一致。
回零过程中若触发限位开关,轴会报错停止。建议在回零前确认软限位或硬限位设置,并确保参考开关位于行程中间区域。