4. 运动控制指令体系与编程基础

在 Studio 5000 Logix Designer 中,运动控制不是靠一条“万能指令”完成的,而是由一组分工明确的指令协同工作。理解这套指令体系的关键,是先分清两类角色:轴状态控制指令负责让轴进入或退出可运动状态,运动执行指令负责真正产生位移、速度或扭矩。前者是“开关和使能”,后者是“动作本身”。如果混淆这两类,最常见的现象就是指令报错 16#0001(轴未使能)或 16#0004(轴未就绪)。

一、轴状态控制:MSO 与 MSF

MSO(Motion Servo On)用于使能伺服轴。它并不产生任何位移,只是把轴从“未使能”推进到“伺服使能”状态,使驱动器上电、抱闸释放、轴进入可接受运动指令的就绪状态。MSO 的典型参数包括:Axis(目标轴,如 Axis_01)、Motion Control(指令标签,如 MSO_01)、Execute(上升沿触发)、Done、Error、ErrorID。使用时必须用 Execute 的上升沿触发,且要等 Done 置位后再下发运动指令。

MSF(Motion Servo Off)与 MSO 相反,用于关闭伺服使能。它常用于急停后的安全处理、维护前断电、或切换到手动模式。MSF 有一个重要参数 Disable,用于选择是否同时禁用轴;若只关使能而保留轴配置,通常保持默认。MSF 执行后轴会失去保持力矩,垂直轴可能因重力下滑,因此工程上常配合抱闸或先执行 MAS 停止。

MSO 与 MSF 是“状态类”指令,它们改变的是轴的使能状态,不改变轴的位置。任何 MAM、MAJ、MAG 指令执行前,轴必须处于 Servo On 状态。

二、运动执行指令:MAJ、MAM、MAG、MAS

MAJ(Motion Axis Jog)用于点动。它让轴以设定的速度持续运动,直到收到停止条件。关键参数有 Speed(点动速度,单位与轴配置一致,如 mm/s 或 °/s)、Direction(方向,0 为正向、1 为反向)、Jog 或 Execute 触发方式。MAJ 常用于调试阶段手动找原点、验证方向定义、检查限位。使用 MAJ 时必须确认软限位已配置,否则可能撞到机械硬限位。

MAM(Motion Axis Move)是最常用的定位指令,用于执行一次点到点运动。它的核心参数包括:Move Type(绝对/相对)、Position(目标位置)、Speed(目标速度)、Accel/Decel(加减速)、Jerk(加加速度,用于平滑)、Profile(梯形或 S 曲线)。MAM 的 Execute 上升沿触发一次运动,Done 表示到位,PC(Process Complete)表示规划完成,Error 与 ErrorID 用于诊断。绝对运动以轴的原点为基准,相对运动以当前位置为基准,二者切换必须明确参照系。

MAG(Motion Axis Gearing)用于电子齿轮同步。它让从动轴按设定的齿轮比跟随主动轴运动,参数包括 Master Axis、Slave Axis、Gear Ratio(如 2:1)、Master Reference(主轴位置来源)。MAG 常用于飞剪、同步输送、卷绕等需要速度比例关系的场合。与 MAM 不同,MAG 是持续性的同步关系,直到执行 MGS(Motion Axis Gear Stop)才解除。

MAS(Motion Axis Stop)用于停止轴运动。它有三种停止模式:Stop Type 可选 Immediate(立即停止,可能失步)、Ramp(按减速斜率停止)、Jog(停止点动)。MAS 是安全链中非常关键的一环,通常与急停、限位、故障处理逻辑绑定。执行 MAS 后轴仍保持使能,只是不再运动。

运动控制指令体系:状态控制与运动执行的分工 轴状态控制指令 改变使能状态,不产生位移 MSO 伺服使能 · Servo On MSF 伺服关闭 · Servo Off 轴就绪状态 Servo On · 抱闸释放 可接受运动指令 运动执行指令 产生位移 / 速度 / 同步关系 MAJ 点动 · Jog Speed / Direction MAM 定位 · Move Position / Speed / Accel MAG 电子齿轮 · Gearing Master / Slave / Ratio MAS 停止 · Stop Immediate / Ramp / Jog 执行顺序约束 1. MSO 使能轴 2. 等待 Done 置位 3. 下发 MAM / MAJ / MAG 4. 需要时 MAS 停止 5. MSF 关闭使能 违反顺序 → ErrorID 16#0001 关键参数速查 Axis:目标轴标签 Motion Control:指令标签 Execute:上升沿触发 Speed / Position:目标值 Accel / Decel / Jerk:加减速 Move Type:绝对 / 相对 Done / PC / Error:状态反馈 ErrorID:故障代码

三、参数与使用场景对照

下面这张表把六条指令的核心参数、触发方式和典型场景放在一起,便于在编程时快速选型。注意:所有运动指令的 Axis 参数必须指向同一个已配置的轴对象,且轴名称要与 Axis Properties 中的名称完全一致。

指令 功能 关键参数 触发方式 典型场景
MSO 伺服使能 Axis、Execute Execute 上升沿 上电后使能轴
MSF 伺服关闭 Axis、Disable Execute 上升沿 维护、急停后断电
MAJ 点动 Speed、Direction Jog 保持 调试找原点、验证方向
MAM 定位运动 Position、Speed、Accel、Move Type Execute 上升沿 点到点定位、取放料
MAG 电子齿轮 Master、Slave、Gear Ratio Execute 上升沿 飞剪、同步输送
MAS 停止 Stop Type Execute 上升沿 急停、限位、故障处理

四、编程示例:一次完整的定位动作

假设轴 Axis_01 已配置为线性轴,单位 mm,软限位 0~500 mm。下面是一段典型的梯形图逻辑对应的结构化文本描述,用于完成“使能 → 绝对定位到 300 mm → 停止 → 关闭使能”的流程。示例参数为教学假设值,实际项目需按机械参数整定。

// 1. 使能轴
MSO_01(Axis := Axis_01, Execute := Start_Enable);
// 等待 MSO_01.Done 为 1 后,再触发运动

// 2. 绝对定位到 300 mm
MAM_01(Axis := Axis_01,
       Motion Control := MAM_01,
       Move Type := 0,        // 0 = 绝对
       Position := 300.0,     // 目标位置 mm
       Speed := 100.0,        // 速度 mm/s
       Accel := 500.0,        // 加速度 mm/s²
       Decel := 500.0,        // 减速度 mm/s²
       Jerk := 5000.0,        // 加加速度
       Execute := Start_Move);

// 3. 到位判断
IF MAM_01.Done THEN
    Move_Complete := 1;
END_IF;

// 4. 停止(按斜坡减速)
MAS_01(Axis := Axis_01,
       Stop Type := 1,        // 1 = Ramp
       Execute := Stop_Cmd);

// 5. 关闭使能
MSF_01(Axis := Axis_01, Execute := Shutdown_Cmd);

这段逻辑中有两个容易出错的点。第一,MSO_01.Done 必须作为 MAM 触发的前置条件,否则 MAM 会立即报 16#0001。第二,MAM_01.Done 表示轴已到达目标位置并稳定,但若使用 S 曲线,PC 会先于 Done 置位,此时轴仍在减速段,不能立即执行下一个动作。工程上通常用 Done 作为“可以执行下一步”的判断依据。

MAS 的 Stop Type 选择 Immediate 时,轴会以最大减速度停止,可能造成机械冲击或位置丢失。除非是安全急停场景,否则优先使用 Ramp 模式。

五、指令选型的判断逻辑

面对一个运动需求,可以按以下顺序判断该用哪条指令:如果轴还没使能,先用 MSO;如果需要手动移动观察,用 MAJ;如果需要精确到达某个位置,用 MAM;如果需要从动轴跟随主动轴的速度比例,用 MAG;如果需要停止正在进行的运动,用 MAS;如果整个设备要断电或维护,用 MSF。这个判断顺序本身就是运动控制程序的基本骨架。

掌握这六条指令的功能边界和参数含义,是后续编写运动控制程序、处理轴故障、实现多轴同步的基础。实际编程时,建议把每条指令的 Error 和 ErrorID 都接入报警逻辑,而不是只依赖 Done 判断成功。