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 停止。
二、运动执行指令: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 后轴仍保持使能,只是不再运动。
三、参数与使用场景对照
下面这张表把六条指令的核心参数、触发方式和典型场景放在一起,便于在编程时快速选型。注意:所有运动指令的 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 作为“可以执行下一步”的判断依据。
Stop Type 选择 Immediate 时,轴会以最大减速度停止,可能造成机械冲击或位置丢失。除非是安全急停场景,否则优先使用 Ramp 模式。五、指令选型的判断逻辑
面对一个运动需求,可以按以下顺序判断该用哪条指令:如果轴还没使能,先用 MSO;如果需要手动移动观察,用 MAJ;如果需要精确到达某个位置,用 MAM;如果需要从动轴跟随主动轴的速度比例,用 MAG;如果需要停止正在进行的运动,用 MAS;如果整个设备要断电或维护,用 MSF。这个判断顺序本身就是运动控制程序的基本骨架。
掌握这六条指令的功能边界和参数含义,是后续编写运动控制程序、处理轴故障、实现多轴同步的基础。实际编程时,建议把每条指令的 Error 和 ErrorID 都接入报警逻辑,而不是只依赖 Done 判断成功。