4. 单轴速度与位置控制实战

单轴运动控制是西门子PLC多轴工程的起点。无论后续做插补、同步还是凸轮,最底层都离不开四种基本运动:点动(Jog)、回零(Homing)、绝对定位(MC_MoveAbsolute)和相对定位(MC_MoveRelative)。本节以S7-1500搭配工艺对象(TO_PositioningAxis)为对象,把四种运动的编程与调试一次讲透。

一、先明确坐标与方向约定

在编程前必须固定参照系,否则正负号会混乱。本节统一约定:以丝杠水平轴为例,电机正转驱动滑台向右移动,位置值增大,即向右为正、向左为负;位置单位mm,速度单位mm/s,加速度单位mm/s²。回零后原点位置为0,绝对定位的TargetPosition均以该原点为基准。切换参照系(如改为以负限位为基准)必须重新回零并说明。

二、四种运动的本质区别

点动是速度控制,PLC只给方向和速度,轴持续运动直到松开指令;回零是寻找机械基准,把编码器或增量值绑定到物理原点;绝对定位是位置控制,轴运动到相对原点的确定坐标;相对定位是位置增量控制,轴在当前实际位置基础上再走一段距离。理解这四者的输入量差异,是正确选型指令的关键。

单轴四种基本运动的输入量与运动结果 +X -X 原点 0 点动 Jog 输入:方向 + 速度 Velocity=50 mm/s 松开即停,无目标位置 用于手动找位、对刀 回零 Homing 输入:回零模式 + 速度 找参考点开关/编码器零脉冲 结果:原点=0,坐标生效 上电后必须执行一次 绝对定位 输入:目标坐标 TargetPosition=120.0 mm 结果:停在绝对坐标120 与当前位置无关 相对定位 输入:增量距离 Distance=+30.0 mm 结果:当前位置+30 用于步进、补偿 运动结果对比(假设当前实际位置 = 100.0 mm) 0 100 120 130 当前100 绝对→120 相对+30→130 注:绝对定位从100直接到120;相对定位从100再走+30到130。两者结果不同,选错指令会导致撞机或位置偏差。

三、工艺对象与指令调用

在TIA Portal中先添加工艺对象“PositioningAxis”,配置驱动、编码器、机械参数(丝杠导程、减速比)和限位开关。之后在OB1或循环中断OB中调用运动控制指令。四种运动对应的指令为:MC_Power(使能)、MC_Home(回零)、MC_MoveJog(点动)、MC_MoveAbsolute(绝对定位)、MC_MoveRelative(相对定位)。所有指令的Axis引脚绑定工艺对象DB,Execute上升沿触发。

// 使能轴(必须最先执行)
MC_Power(
  Axis      := "Axis_1",
  Enable    := TRUE,
  EnablePos := TRUE,
  EnableNeg := TRUE,
  Status    => #stPower,
  Busy      => #bPowerBusy,
  Error     => #bPowerErr);

// 回零:模式3=主动回零,找参考点开关
MC_Home(
  Axis      := "Axis_1",
  Execute   := #bHomeTrig,
  Position  := 0.0,
  Mode      := 3,
  Done      => #bHomeDone,
  Busy      => #bHomeBusy,
  Error     => #bHomeErr);

// 绝对定位:走到120.0 mm
MC_MoveAbsolute(
  Axis           := "Axis_1",
  Execute        := #bAbsTrig,
  Position       := 120.0,
  Velocity       := 80.0,
  Acceleration   := 500.0,
  Deceleration   := 500.0,
  Direction      := 0,
  Done           => #bAbsDone,
  Busy           => #bAbsBusy,
  Error          => #bAbsErr);

// 相对定位:在当前基础上再走+30.0 mm
MC_MoveRelative(
  Axis           := "Axis_1",
  Execute        := #bRelTrig,
  Distance       := 30.0,
  Velocity       := 60.0,
  Acceleration   := 400.0,
  Deceleration   := 400.0,
  Done           => #bRelDone,
  Busy           => #bRelBusy,
  Error          => #bRelErr);

四、点动编程要点

点动通常用两个按钮分别控制正、负方向。MC_MoveJog的JogForward和JogPositive引脚为TRUE时轴按设定速度运动,为FALSE时按JogDeceleration减速停止。注意点动速度不宜过高,建议设为额定速度的10%~20%,例如50 mm/s,便于观察。点动前必须已使能轴,且未触发硬限位。

五、回零的调试与判断

回零是后续定位的前提。以主动回零模式3为例,轴先以回零速度向参考点开关方向运动,碰到开关后减速,再反向寻找编码器零脉冲,找到后把该点设为Position(通常为0)。调试时观察:轴是否朝正确方向找开关、碰到开关后是否减速、最终Done位是否置1。若轴一直找不到开关,检查参考点开关接线、回零方向和回零速度是否过高等。回零完成后,ActualPosition应稳定显示0.0 mm。

六、绝对与相对定位的调试

绝对定位调试时,先确认已回零,再给TargetPosition=120.0,观察轴是否准确停在120.0 mm。用游标卡尺或光栅尺复核实际位置,偏差应在工艺允许范围内(如±0.05 mm)。相对定位调试时,先记录当前ActualPosition,再触发Distance=+30.0,运动后ActualPosition应增加30.0。若方向相反,检查Distance正负号或机械方向定义。

调试顺序建议:先使能→再点动确认方向→然后回零→最后做绝对/相对定位。每一步Done位正常后再进行下一步,避免带故障运行。

七、常见故障与排查

现象可能原因排查方法
轴不动未使能或EnablePos/Neg为FALSE检查MC_Power的Status和Error
回零找不到原点参考点开关未接、方向错、速度过高监控开关输入点,降低回零速度
绝对定位位置偏差未回零、机械间隙、编码器分辨率错重新回零,检查机械参数配置
相对定位方向反Distance符号与机械方向不一致核对正方向定义,修正符号
运动到限位急停目标位置超程或限位开关触发检查软限位配置和目标坐标

八、参数示例与结果判断

以某丝杠轴为例:导程10 mm/r,减速比1:1,编码器分辨率10000脉冲/r,则1 mm对应1000脉冲。设定Velocity=80 mm/s、Acceleration=500 mm/s²。执行绝对定位到120.0 mm,理论运动时间约1.5 s(含加减速)。调试时用Trace功能记录ActualPosition曲线,观察是否平滑到达目标、有无超调。若超调过大,适当降低加速度或提高减速比。最终判断标准:Done位置1、ActualPosition稳定在120.0±0.05 mm、无Error报警。

绝对定位和相对定位的Execute必须用上升沿触发,若保持TRUE,轴只执行一次;再次触发需先复位再置位。多个运动指令不能同时Execute,否则会报错。

掌握这四种基本运动的编程与调试,就具备了单轴控制的完整能力。实际工程中,点动用于手动调整,回零建立基准,绝对定位用于确定工位,相对定位用于步进补偿,四者配合构成单轴运动控制的基础框架。